Skip to content

Troubleshooting Guide

Robots can encounter a variety of issues during setup and operation. This guide provides solutions to some common problems you may face while working with the Autonomous Driving Platform.

The first step in any troubleshooting process is to ensure you have the latest version of the code. On an F1TENTH car, the setup script updates everything and rebuilds, leaving alone any repository with changes of your own:

sudo ~/ot_orin_ros2/scripts/bootstrap.sh --update

On another machine, see Updating the Code.

If you've made changes to local packages, you can use git to temporarily stash your changes before pulling the latest code.

The Airfield troubleshooting list covers problems with the workspace itself, and Car Bring-Up covers problems setting up a car.

Problems Building the Workspace

If you encounter errors while building the workspace, first try a clean rebuild:

cd ~/roboracer_ws
rm -rf .airfield/workspace/build .airfield/workspace/install
scripts/build

If the problem persists, check the stacktrace, which is a detailed error message printed in the terminal. Look for lines that indicate missing dependencies or compilation errors. You may need to install additional packages or fix code issues based on the error messages. To add a missing dependency, add it to dependencies: in the package's airfield.yaml (see Dependencies), then run scripts/build <package> again.

If the build fails with "ROS_VERSION is not defined" or other errors in code you didn't change, the car's code is probably behind GitHub. Update it as described above.

On the older layout: make and ./container

If you encounter errors while building the ROS 2 workspace with make, first, try cleaning the workspace and rebuilding:

./container shell
cd ~/roboracer_ws
make clean
make

In case you need to install missing ROS 2 packages, add the dependencies to the ~/roboracer_ws/scripts/ros2_deps.sh file and then rebuild the container with:

cd ~/roboracer_ws
./container build

If you run into issues building the docker container, you can build the container without caching by using the command:

./container build --no-cache

DDS Participant Index Error

The error message below indicate a problem with the DDS (Data Distribution Service) communication, specifically related to the CycloneDDS RMW implementation being unable to create a domain for the node. This may occur when the car changes networks or IP addresses.

Example Error Message

$ ros2 node list
1762805922.048036 [0]       ros2: Failed to find a free participant index for domain 0
[ERROR] [1762805922.048204243] [rmw_cyclonedds_cpp]: rmw_create_node: failed to create domain, error Error

>>> [rcutils|error_handling.c:108] rcutils_set_error_state()
This error state is being overwritten:

  'error not set, at ./src/rcl/node.c:263'

with this new error message:

  'rcl node's rmw handle is invalid, at ./src/rcl/node.c:415'

rcutils_reset_error() should be called after error handling to avoid this.
<<<
[ERROR] [1762805922.048310136] [rcl]: Failed to fini publisher for node: 1
error creating node: rcl node's rmw handle is invalid, at ./src/rcl/node.c:415

Potential Solutions

The first things to try when this occurs are: - Wait a moment and try again. - Open a new tmux pane and try again. - Restart the plan: scripts/down, then scripts/up <plan>. On the older layout, exit all panes and run the tmuxinator command in the appropriate folder. - On the older layout, restart the container shell by exiting the container and running ./container restart, then re-launching your tmuxinator configuration. - Restart the car