TurtleBot4 Basic Setup
For many development tasks, you will need to ssh
to the RPi on the TB4 from your laptop:
The password is turtlebot4
. Once on the command line, you can use turtlebot4-setup
to configure ROS2, the wifi, etc.
OM1 supports TurtleBot4 running ROS2 Humble (image 1.0.4) and Create3 with H.2.6.
Note: choose TurtleBot4 lite image file if your TurtleBot4 is the lite version.
Important: Make sure your Raspberry Pi 4 is running Ubuntu 22.04.4 LTS (Turtlebot4 Humble image) and that the Create 3 is running H.2.6/Create3-H.2.6.swu. Among other possible problems, running Ubuntu 24 will create compatibility issues with the version of ROS2 and CycloneDDS on the Create3.
API_KEY Go to portal to get a free API key for the OM1 APIs. Enter this API key in the “api_key” field in the /config/turtlebot4.json5
file. You can also provide this API key via your .env
- just enter it as:
UNIVERSAL_ROBOT_ID (URID) Go to “Hello Robots, come join us” to join a decentralized machine<>machine coordination and communication system (FABRIC). Enter machine metadata - currently an arbitrary string - and click “join”. The system will provide a unique URID for your robot. The URIDs all share the same format: they begin with OM
, then 12 alphanumeric characters (numerals and letters), adding up to 14 characters in total. They’re not case sensitive. A unique URID allows multiple robots to communicate with one another, similar to how humans use different phone numbers to help them communicate and coordinate.
Enter the URID in the “URID” field in the /config/turtlebot4.json5
file. You can also provide the URID via your .env - just enter it as:
Note: for testing you can use any short string as the URID, as long as it’s unique for each robot within a team of robots within the same local network.
Once the TurtleBot4 is set up, configure it as follows:
turtlebot4-setup
docker-compose.yaml
fileMake the following ROS_DOMAIN_ID
changes to the TurtleBot4. Use the turtlebot4-setup
tool to access ROS Setup:Bash Setup
and set it to the following:
Click “Save”, “Esc”, and then “Apply Settings”. The TurtleBot4 will reboot.
Once the reboot is complete (wait for chime, 1 min), access the Create3’s App config page at its web server (e.g. 192.168.1.XXX:8080/ros-config
). Change the ROS_DOMAIN_ID to 1 and enter your robot’s URID. The correct settings are:
Basically, you are using the “/c3” prefix to create a unique namespace for the c3. Click Save
and Restart Application. Do not forget to click Restart Application, otherwise the changes will not be applied. Wait for chime (1 min) indicating Create3 reboot.
Finally, on the TurtleBot4’s RPi, install Docker and run sudo docker compose -f docker-compose.yaml up -d
. The docker-compose
should be:
The TurtleBot4 will now be more stable, can discover other computers running Zenoh, send them Zenoh messages, and also, accept Zenoh messages and forward them to ROS2.
You can install and run OM1
For fully autonomous use, install OM1 on the TurtleBot4’s Raspberry Pi. On the RPi terminal command line, follow these instructions. When you see all the right topics listed in ros2 topic list
, your TurtleBot4 is set up and you are ready to install OM1.
uv
- Python package manager.portaudio
, ffmpeg
and other dependenciesConnect a Logitech 270 Webcam (or equivalent).
Unplug the standard TurtleBot4 Depth Camera.
Connect a speaker to RPi with a 3.5 mm audio patch cable (or use bluetooth, depending on your pain threshold and patience with debugging bluetooth issues).
Make sure Identity and Keys are set correctly.
Set Default Input and Output Audio devices
Use pactl
to set your default microphone and speaker. If you get pa_context_connect() failed: Connection refused
, then start the audio daemon manually via pulseaudio --start -D
.
.env
with your OM1 key: vim .env
, “i” to insert, paste in key, “ESC”, ”:”, “wq” to write and exit.git pull
git reset --hard
git checkout -- uv.lock
# checkout a specific filegit checkout BRANCH
# checkout a specific BRANCHgit branch -a
On the RPi4, there will be a lengthy delay before OM1 runs the first time you invoke this command.
Install OM1 and Zenoh on your laptop, following Install OM1 on your laptop and Installing the Zenoh router.
Then, run OM1:
Please make sure that your development machine (e.g. your laptop) is running the same version of the Zenoh bridge (e.g. 1.2.1) as the RPi otherwise you will get errors. When you run OM1 on your laptop, OM1 will use your laptop’s microphone, speaker, and camera inputs/outputs, rather than the sensors on the TurtleBot4.
This is useful for debugging. Inside system_hw_test
, there are several scripts for you to interact with the TurtleBot4. For all these scripts, provide the robot’s URID, such as OM742d35Cc6634
as an argument.
Provide the robot’s URID, such as OM742d35Cc6634
as an argument:
Provide the robot’s URID, such as OM742d35Cc6634
as an argument:
On the TurtleBot4 command line, run ros2 topic list
. Topics with a pi
prefix originate from the RPi, and topics with a c3
prefix are from the Create3. If you do not see any non-prefixed topics, your Create3 is not talking correctly to the RPi.
You can build your own dual bridge docker images using the provided Dockerfile
(see /system_hw_test/turtlebot_zenoh/Dockerfile
):
Useful docker commands
Webcam debugging:
TurtleBot4 Basic Setup
For many development tasks, you will need to ssh
to the RPi on the TB4 from your laptop:
The password is turtlebot4
. Once on the command line, you can use turtlebot4-setup
to configure ROS2, the wifi, etc.
OM1 supports TurtleBot4 running ROS2 Humble (image 1.0.4) and Create3 with H.2.6.
Note: choose TurtleBot4 lite image file if your TurtleBot4 is the lite version.
Important: Make sure your Raspberry Pi 4 is running Ubuntu 22.04.4 LTS (Turtlebot4 Humble image) and that the Create 3 is running H.2.6/Create3-H.2.6.swu. Among other possible problems, running Ubuntu 24 will create compatibility issues with the version of ROS2 and CycloneDDS on the Create3.
API_KEY Go to portal to get a free API key for the OM1 APIs. Enter this API key in the “api_key” field in the /config/turtlebot4.json5
file. You can also provide this API key via your .env
- just enter it as:
UNIVERSAL_ROBOT_ID (URID) Go to “Hello Robots, come join us” to join a decentralized machine<>machine coordination and communication system (FABRIC). Enter machine metadata - currently an arbitrary string - and click “join”. The system will provide a unique URID for your robot. The URIDs all share the same format: they begin with OM
, then 12 alphanumeric characters (numerals and letters), adding up to 14 characters in total. They’re not case sensitive. A unique URID allows multiple robots to communicate with one another, similar to how humans use different phone numbers to help them communicate and coordinate.
Enter the URID in the “URID” field in the /config/turtlebot4.json5
file. You can also provide the URID via your .env - just enter it as:
Note: for testing you can use any short string as the URID, as long as it’s unique for each robot within a team of robots within the same local network.
Once the TurtleBot4 is set up, configure it as follows:
turtlebot4-setup
docker-compose.yaml
fileMake the following ROS_DOMAIN_ID
changes to the TurtleBot4. Use the turtlebot4-setup
tool to access ROS Setup:Bash Setup
and set it to the following:
Click “Save”, “Esc”, and then “Apply Settings”. The TurtleBot4 will reboot.
Once the reboot is complete (wait for chime, 1 min), access the Create3’s App config page at its web server (e.g. 192.168.1.XXX:8080/ros-config
). Change the ROS_DOMAIN_ID to 1 and enter your robot’s URID. The correct settings are:
Basically, you are using the “/c3” prefix to create a unique namespace for the c3. Click Save
and Restart Application. Do not forget to click Restart Application, otherwise the changes will not be applied. Wait for chime (1 min) indicating Create3 reboot.
Finally, on the TurtleBot4’s RPi, install Docker and run sudo docker compose -f docker-compose.yaml up -d
. The docker-compose
should be:
The TurtleBot4 will now be more stable, can discover other computers running Zenoh, send them Zenoh messages, and also, accept Zenoh messages and forward them to ROS2.
You can install and run OM1
For fully autonomous use, install OM1 on the TurtleBot4’s Raspberry Pi. On the RPi terminal command line, follow these instructions. When you see all the right topics listed in ros2 topic list
, your TurtleBot4 is set up and you are ready to install OM1.
uv
- Python package manager.portaudio
, ffmpeg
and other dependenciesConnect a Logitech 270 Webcam (or equivalent).
Unplug the standard TurtleBot4 Depth Camera.
Connect a speaker to RPi with a 3.5 mm audio patch cable (or use bluetooth, depending on your pain threshold and patience with debugging bluetooth issues).
Make sure Identity and Keys are set correctly.
Set Default Input and Output Audio devices
Use pactl
to set your default microphone and speaker. If you get pa_context_connect() failed: Connection refused
, then start the audio daemon manually via pulseaudio --start -D
.
.env
with your OM1 key: vim .env
, “i” to insert, paste in key, “ESC”, ”:”, “wq” to write and exit.git pull
git reset --hard
git checkout -- uv.lock
# checkout a specific filegit checkout BRANCH
# checkout a specific BRANCHgit branch -a
On the RPi4, there will be a lengthy delay before OM1 runs the first time you invoke this command.
Install OM1 and Zenoh on your laptop, following Install OM1 on your laptop and Installing the Zenoh router.
Then, run OM1:
Please make sure that your development machine (e.g. your laptop) is running the same version of the Zenoh bridge (e.g. 1.2.1) as the RPi otherwise you will get errors. When you run OM1 on your laptop, OM1 will use your laptop’s microphone, speaker, and camera inputs/outputs, rather than the sensors on the TurtleBot4.
This is useful for debugging. Inside system_hw_test
, there are several scripts for you to interact with the TurtleBot4. For all these scripts, provide the robot’s URID, such as OM742d35Cc6634
as an argument.
Provide the robot’s URID, such as OM742d35Cc6634
as an argument:
Provide the robot’s URID, such as OM742d35Cc6634
as an argument:
On the TurtleBot4 command line, run ros2 topic list
. Topics with a pi
prefix originate from the RPi, and topics with a c3
prefix are from the Create3. If you do not see any non-prefixed topics, your Create3 is not talking correctly to the RPi.
You can build your own dual bridge docker images using the provided Dockerfile
(see /system_hw_test/turtlebot_zenoh/Dockerfile
):
Useful docker commands
Webcam debugging: