Skip to content

Clearpath Turtlebot 4

User Manual: https://turtlebot.github.io/turtlebot4-user-manual/ — well documented; walking through the setup pages should get you started, and there's a troubleshooting section for common issues.

The Turtlebot 4 is basically a Create 3 base (like a Roomba vacuum cleaner) interfaced with a Raspberry Pi, giving users control and a full, smooth interactive environment using ROS2. For independent documentation and debugging on the base itself, see the Create 3 docs: https://iroboteducation.github.io/create3_docs/hw/face/

Networking (Tested and Working Configuration)

Use a Discovery Server setup (no need to independently connect the Create3 to Wi-Fi; only the RPi is connected to the network, and the Create3 is internally connected to the RPi). Recommended unless you need to control multiple bots via the same remote desktop.

Troubleshooting

Create3 topics not visible. Indicators: usually actuators not working (e.g., the robot doesn't undock when pressing button 2). Solution: connect to the Create3 web server at <rpi_ip>:8080 and go to Update > Restart Application; if that doesn't work, reboot or power-cycle the bot.

Unable to access the Create3 webserver. Put the Turtlebot4 into access mode by simultaneously pressing and holding button 1 and button 2 (see a demonstration video, timestamp 5:01), then connect to the Create3XXD SSID and go to http://192.168.10.1/home from your browser.

Bot is not moving even after reboot. 1. Factory reset the Create3 to disconnect it from all networks. 2. Configure the RPi and Create3 for the Discovery Server per the docs. 3. Check for faulty cables or loose connections. 4. If none of the above works, start from scratch: take out the SD card and reflash the Turtlebot4 image (ensure you download the latest, most compatible image); see https://turtlebot.github.io/turtlebot4-user-manual/setup/basic.html#install-latest-raspberry-pi-image

RPi not connected to Wi-Fi. Ensure your Wi-Fi network is turned on and visible before the bot boots up. If a normal power cycle (via the power button) doesn't work, you may need to open the bot and manually disconnect the RPi from the power cable coming from the Create3, putting the RPi through its own boot cycle independently.

General troubleshooting

  • No scan topic: reboot the bot via the Create3 web server or a power cycle.
  • OAK-D topics not visible on default configuration: ensure the bot is undocked, and wait a few minutes.
  • No topics visible on the remote desktop: ensure firewalls or other restrictions are disabled (sudo ufw disable). Check that the IP route is set properly if using Discovery; if you can't set the IP route by following the docs, make sure you can ping your Raspberry Pi from your PC, then try manually adding the route with sudo ip route add 192.168.186.0/24 via 10.0.0.121, replacing 10.0.0.121 with your Raspberry Pi's IP.
  • Not all topics visible: flash the latest firmware from the Create3 web server (Home > Update > Firmware).
  • No stereo/depth topics: the stereo node is disabled by default.
  • No depth image on OAK-D topics: resolved by changing the launch parameter from oakd_pro to oakd_lite, and switching to oakd_example.launch.py (a temporary solution). To change the launch file, build turtlebot4_robot from source and edit lite.launch.py/standard.launch.py. See "Enabling Depth Camera" (referenced on the source page) for detailed instructions.

Configuring BlazePose with Turtlebot4

When the Turtlebot4 powers on, the turtlebot4 service automatically launches oakd.launch by default. To use the OAK-D Lite camera for skeletal detection with BlazePose, you need to ensure the camera is not being used by the Turtlebot4 in any other way:

  1. Build turtlebot4_robot from source, edit the launch files in turtlebot4_bringup, and set your default workspace to your custom workspace in turtlebot4-setup (see "Enabling Depth Camera" for detailed instructions).
  2. Edit lite.launch.py or standard.launch.py, depending on your model, and remove all references to the camera/OAK-D so that the Turtlebot4 doesn't use it, freeing the device for BlazePose's use.
  3. Add the depthai_blazepose directory to your Python ROS2 script path, and use BlazePose for skeletal detection and tracking.

Changing the Max Speed of the Turtlebot4

You need to override the safety limit externally to set the bot's max speed, either via the Create3 web server or by changing the value of a ROS2 param:

ros2 param set /motion_control safety_override full

The control.yaml file appears to configure parameters for the diffdrive_controller and controller_manager, responsible for the robot's differential drive control; it's found at /opt/ros/humble/share/irobot_create_control/config and contains the maximum speed settings for the robot.

Note: the Turtlebot4 doesn't allow externally changing the max speed; changing the configuration parameter, though it made changes in several differential-drive-related packages, produced no physical change in the hardware. The drive-related motion_control node is also not located in any accessible package by that name. This may need deeper investigation, or it's possible the Create3 doesn't allow changing max speed externally by any means.

Understanding Transformation Frames

The Turtlebot4 has a 360-degree RPi-Lidar that is not aligned with the camera and heading tf; the RPi is oriented at a 90-degree angle to it. For detection or orientation-tracking purposes, adjust the angle offset before using the lidar for distance estimation: add -90 degrees (anti-clockwise) to go from the camera frame (front facing the camera direction) or heading frame (odom) to the lidar frame to get distance.

Migration note: the source page included several images (a transformation diagram, a safety_override parameter reference image) that illustrate the text above; these should be pulled from SharePoint and re-attached to this wiki page.