tutorials vrx_docker_examine - osrf/vrx GitHub Wiki

Examine a Running Container

  • In many cases, it is helpful to be able to open a shell into a running container, so you can use bash commands to understand more about its behavior.
  • This most obvious case for this approach is a scenario in which the container is not exiting early but the WAMV is still not moving.
  • In this tutorial we will walk through opening a bash session into a competitor image while it is in the middle of a trial.

Debugging Steps

Preparation

As in the previous tutorial, open two terminals before you begin:

  • In one terminal, we will run the trial you want to debug, using the testing instructions.
  • In the the other terminal we will open a bash session into your competitor container.

Opening a shell

  • Begin running your trial as described in the testing tutorial, using the command:
    ./run_trial.bash $TEAM $TASK $TRIAL
    
  • Wait for the competitor container to launch (you can use docker container ls to check).
  • Once the competitor container is running, run the following in your other terminal to open an interactive shell:
    docker exec -it vrx-competitor-system bash
    
  • This command will open a shell into the competitor container that will remain open until the container exits at the end of the trial.

Testing basic communication with the server

  • Source the setup.bash file, if necessary:
    source /opt/ros/humble/setup.bash
    
    • Note that in many cases, competitor images may choose not to source setup.bash by default in their login shell, by adding a source command to bashrc.
    • This is not an error since you will not be using a login shell during the competition.
    • But, it means we have to do it manually when debugging.
  • List rostopics:
    ros2 topic list 
    
    Make sure you can see the /vrx/task/info topic and any topics related to the particular task you are running.
  • Check that you can read /vrx/task/info
    ros2 topic echo /vrx/task/info 
    
  • If your WAMV is not moving, try sending a thrust command to verify the setup:
    RATE=1
    CMD=2.0
    ros2 topic pub /wamv/thrusters/right/thrust -r $RATE std_msgs/msg/Float64 data:\ $CMD  
    
    • Check that the command is publishing data as expected:
    ros2 topic echo /wamv/thrusters/right/thrust
    
    • You should receive /wamv/thrusters/right/thrust data (which is set to 2.0 in the script).
    • You should be able to see the effect of this command when playing back the trial.
  • Check environment variables. For example:
    env | grep ROS
    

Testing your system software

  • If the commands in the previous section produce their expected outcomes, this indicates that the competitor container is able to communicate with the server.
  • In this case, it is likely that the container's software is not running or misconfigured.
  • You can use ps -ef or the top command to get a quick sense of what is running on your system.
  • If a process that you expect to be running is not running, you can try to bring it up manually to see whether it executes correctly or produces a useful error message.

Next Steps

  • A disadvantage of the above approach is that VRX trials have a time limit, and the bash session will close at the end of the trial.
  • In addition, if the container is crashing or exiting early, there may not be time to log in and interact with it.
  • The next tutorial provides one way of working around these limitations, by launching the competitor image manually.
Back: Basic Debugging Up: VRX Docker Image Overview Next: Run a Container Manually
⚠️ **GitHub.com Fallback** ⚠️