This page is NOT intended for student use. This page is designed for course staff to build and maintaining the turtlebots. If you are a student, please ensure you have permission from course staff before making any of the changes detailed on this page to any of the turtlebots.
This initial Turltlebot4 setup is meant to take a new Turtlebot4 or a recently re-imaged Turtlebot4 and set it up for use in the course. Follow these steps to set up the Turtlebot4:
10.42.0.1 on the digital display.Turtlebot4).ssh ubuntu@10.42.0.1turtlebot4.intro-robo Wi-Fi network
turtlebot4-setup
intro-robo Wi-Fi network.intro-robo Wi-Fi network. Check to make sure the IP address listed on the digital display matches the one listed in the Turtlebot4 status spreadsheet.[robot-ip-address]:8080:
H.1.2 on the Update page. If the firmware version is H.2.6, you do not need to update the firmware, if it is a version less than that, you will need to update it. H.2.6), follow these steps:
H.2.6.H.2.6).turtlebot4): ssh ubuntu@[robot-ip-address]sudo apt update
sudo apt upgrade -yturtlebot4): ssh ubuntu@[robot-ip-address]turtlebot4-setup
sudo systemctl daemon-reload && sudo systemctl start turtlebot4
turtlebot4-source
ros2 daemon stop; ros2 daemon start
ros2 topic list
You should see an output similar to the image below (the example below is for TB11, so you can see topics appearing with the prefix /tb11/):
If you're either setting up the Turtlebot4 for the first time or you find yourself in a sticky situation where the the Turtlebot4's networking setup isn't working properly (e.g., IP address change, discovery server settings change), you may want to re-image the RaspberryPi. First you'll need to access the SD card in the RaspberryPi.
FIRST before removing the SD card, make sure the Turtlebot4 is OFF.
To remove the SD card from the RaspberryPi, you'll first need to remove the top plate of the Turtlebot4 (see below) by removing the 4 screws on the top plate.
Next, remove the 4 vertical posts by unscrewing them with your hand:
Now you can lift the top plate (see photo below) and you can see the SD card coming out of the front of the RaspberryPi:
You'll now need to remove the SD card from the RaspberryPi. There are two ways to do this. One way is to use a pair of needle-nose pliers to gently pull the SD card out of the slot (see below).
If that doesn't work for you, you can also access the SD card by pulling up the black plastic siding surrounding the RaspberryPi. You'll need to remove the 8 screws shown in the image below.
To access the SD card, pull up the black plastic siding in the front of the robot to reveal the SD card (see below). You may need needle nose pliers to pull the SD card out of the RaspberryPi.
Follow the steps below to re-image the SD card (these steps were adapted from the Turtlebot4 User Manual):
turtlebot4_humble_standard_1.0.5 )..img file.
dcfldd:/dev/sda: Read-only file system, check the lock switch on the microSD to SD card adapter (see image above). If it's in the locked position, the OS will treat it as read-only. Slide it to the unlocked position.
lsblk -d -e7
sda, sdb, or mmcblk0.dcfldd:
sudo apt install dcfldd
turtlebot4_setup and flash the SD card:
wget https://raw.githubusercontent.com/turtlebot/turtlebot4_setup/humble/scripts/sd_flash.sh
bash sd_flash.sh /path/to/downloaded/image.img
Now, place the SD card back in the RaspberryPi and replace all of the screws, posts, and top plate. You can now turn on the Turtlebot4 and continue with the setup.
You'll need the following materials to attach the OpenManipulatorX arm to the Turtlebot4 for the first time:
First, attach the custom 3D printed mounting plate to the OpenManipulatorX arm (make sure you're attaching it in the right direction - see image below).
When attaching the mounting plate, ensure that you're feeding the cable through that will connect with the U2D2 Power Hub later on. If the cable hanging out of the base of the arm is from the original OpenManipulatorX assembly (has a longer 3-wire JST cable), remove it and attach the shorter 3-wire JST cable (that Sarah put with the assembly materials).
Once you have the mounting plate in position, detach the back cap of the Dynamixel motor.
Next, cut or bend-cut the two small side panels following the seam. These small panels are designed to be removable for wires to thread from outside of the motor to the inside:
Pop the plug. You can use your finger to pop it out from the other side.
Thread the wire through the center hole.
Use 16 M2.5x8mm screws to attach the mounting plate to the OpenManipulatorX arm with 4 screws on each side.
Once you've attached the mounting plate to the OpenManipulatorX arm, the result should look like the image below. Remember to check the orientation of the mounting plate and Dynamixel motor at the base of the arm.
Next, grab the U2D2 and U2D2 Power Hub.
Attach the U2D2 to the U2D2 Power Hub using the 4 black snap rivets that came in the bag with the U2D2.
Your U2D2 and U2D2 Power Hub should now look like the image below:
Attach the white spacers to the U2D2 Power Hub using the 4 spacers and 4 nuts that came in the bag with the U2D2 Power Hub.
Attach the following cables to the U2D2 and U2D2 Power Hub as shown in the image below:
Attach the U2D2 Power Hub to the custom Turtlebot4 top plate using the 4 M3x8mm screws.
Make sure the switch on the U2D2 board is ON.
Feed the OpenManipulatorX cable through the hole in the Turtlebot4 top plate. Attach the OpenManipulatorX arm to the Turtlebot4 top plate on the OPPOSITE SIDE from the U2D2 Power Hub using the 4 M2.5x16mm screws and 4 M2.5 nuts.
After the 3D printed mount is mounted onto the plate, the wire should come out directly from the motor to the hole on the plate.
The 3 wire cable from the OpenManipulatorX arm should now be dangling down out of the Turtlebot4 top plate, attach it to the U2D2 Power Hub as shown in the image below.
Unscrew the old top plate for the Turtlebot4 and replace it with the new top plate with the OpenManipulatorX arm and U2D2 Power Hub attached.
Plug in the USB-A end of the micro USB to USB-A cable into the top left port on the RaspberryPi (see image below).
Attach a hook velcro strip (scratchy side) to the Turtlebot4 top plate as shown in the image below.
Attach a loop velcro strip (soft side) to the LiPo battery and attach it to the robot. Also attach the LiPo battery to the power cable (T-plug end). Finally, use a cable tie to secure the power cable to one of the vertical posts on the Turtlebot4.
You're hardware setup of the OpenManipulatorX arm attachment to the Turtlebot4 is now complete!
After attaching the arm, the RaspberryPi will need some additional software to be able to control the arm. Follow these steps (derived from the OpenManipulatorX user manual to set up the software for the OpenManipulatorX arm:
$ set_robot_num [robot_num]
$ ssh ubuntu@$ROBOT_IP
sudo apt install \
ros-humble-ros2-control \
ros-humble-moveit* \
ros-humble-ros2-controllers \
ros-humble-controller-manager \
ros-humble-position-controllers \
ros-humble-joint-state-broadcaster \
ros-humble-joint-trajectory-controller \
ros-humble-gripper-controllers \
ros-humble-hardware-interface \
ros-humble-xacro
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws/src
$ git clone -b humble https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ git clone -b humble https://github.com/ROBOTIS-GIT/open_manipulator.git
$ git clone -b humble https://github.com/ROBOTIS-GIT/dynamixel_hardware_interface.git
$ git clone -b humble https://github.com/ROBOTIS-GIT/dynamixel_interfaces.git
$ cd ~/ros2_ws
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src -r -y
$ colcon build --symlink-install --event-handlers console_direct+ --packages-skip open_manipulator open_manipulator_x_gui
$ source ~/ros2_ws/install/setup.bash
$ echo 'source ~/ros2_ws/install/setup.bash' >> ~/.bashrc
open_manipulator_x_gui package. We're skipping it because it takes over 15 minutes to install and we don't need it on the RaspberryPi.ERROR: the following rosdeps failed to install
apt: command [sudo -H apt-get install -y ros-humble-gazebo-ros] failed
apt: Failed to detect successful installation of [ros-humble-gazebo-ros].bashrc
$ echo "alias bringup_arm='ros2 launch open_manipulator_x_bringup hardware.launch.py'" >> ~/.bashrc
$ echo "alias start_moveit='ros2 launch open_manipulator_x_moveit_config move_group.launch.py'" >> ~/.bashrc
$ source ~/.bashrc
$ ros2 run open_manipulator_x_bringup create_udev_rules
The Turtlebot4 assembly with arm was made possible by Kendrick Xie and Danny Lingen, who helped to configure the Turtlebot4 and integrate the arm. Chi Wang helped significantly with laser cutting the custom top plates and 3D printing the custom mounts for the OpenManipulatorX arm. Willa Yang also helped to refine the Turtlebot4 assembly process.