Edit on GitHub

SBC Setup

WARNING

  • Raspberry Pi 4, Jetson Nano do not support ROS Kinetic.
  • This process may take long time. Please do not use battery while following this section.
  • An HDMI monitor and input devices such as a keyboard and a mouse will be required to complete this setup.

If you are using Intel Joule, please refer to Intel Joule Setup instruction.

Prepare microSD Card and Reader

If you PC do not have a microSD slot, please use a microSD card reader to burn the recovery image.

Download TurtleBot3 SBC Image

Download the correct image file for your hardware and ROS version.
Kinetic version images use Raspberry Pi OS(Raspbian OS).

Download Raspberry Pi 3B+ ROS Kinetic image

SHA256 : eb8173f3727db08087990b2c4e2bb211e70bd54644644834771fc8b971856b97

The recovery image files can be modified without a prior notice.

Raspberry Pi 4 does not support Ubuntu 16.04 nor Debian Jessie, therefore, ROS Kinetic is not supported.

Unzip the downloaded image file

Extract the .img file and save it in the local disk.

Burn the image file

You can use various image burning tools.
For example, Raspberry Pi Imager or Linux Disks utility can be used.
Choose your preferred tool to burn the image to microSD.

Raspberry Pi Imager

Please refer to this article to find more information about Raspberry Pi Imager.

  1. Click CHOOSE OS.
  2. Click Use custom and select the extracted .img file from local disk.
  3. Click CHOOSE STORAGE and select the microSD.
  4. Click WRITE to start burning the image.

Disks Utility

Disks utility is included in recent Ubuntu Desktop. Search for “Disks” and launch the app.

  1. Select the microSD card in the left panel.
  2. Select Restore Disk Image option.
  3. Open the .img file from local disk.
  4. Click Start Restoring... > Restore button.

Click to expand : Instructions for Intel Joule 570x

In case you use Intel Joule 570x, please follow the instructions below.
Intel Joule is discontinued in 2017, and additional support is unavailable.

  1. Download Ubuntu 16.04 image for Intel® Joule™
  2. Create a bootable USB with the downloaded image.
  3. Install Ubuntu from the USB

Boot Up the Raspberry Pi

  1. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi.
  2. Connect input devices to the USB port of Raspberry Pi
  3. Insert the microSD card.
  4. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi.

Configure the Raspberry Pi

NOTE : If you encounter apt failures about the ROS GPG key (due to the existing GPG expiration), you may need to update GPG key. Please see ROS GPG Key Expiration Incident, and proceed to the given solution.

  1. After Raspbian OS is up and running, connect to the WiFi network that is connected with the PC.
  2. Find the assigned IP address for Raspberry Pi with the command below. Usually wireless IP address for Raspberry Pi can be found under the wlan0 section.
    $ ifconfig
    
  3. From your PC, open the terminal and connect to the Raspberry Pi with its IP address.
    The default password is set as turtlebot.
    $ ssh pi@{IP_ADDRESS_OF_RASPBERRY_PI}
    
  4. Once logged in to the Raspberry Pi, execute the commands below to sync time.
    $ sudo apt-get install ntpdate
    $ sudo ntpdate ntp.ubuntu.com
    
  5. Load Raspberry Pi configuration interface.
    $ sudo raspi-config
    
  6. Select Advanced Options > Expand Filesystem and exit.
  7. Network configuration for ROS
    $ nano ~/.bashrc
    
  8. Go to the end of file with Ctrl+END or Alt+/, then modify the IP adddresses of ROS_MASTER_URI and the ROS_HOSTNAME.
    export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311
    export ROS_HOSTNAME={IP_ADDRESS_OF_RASPBERRY_PI_3}
    
  9. Save the file and exit the nano editor.
  10. Apply changes with the command below.
    $ source ~/.bashrc
    

SBC Setup

WARNING

  • This process may take long time. Please do not use battery while following this section.
  • An HDMI monitor and input devices such as a keyboard and a mouse will be required to complete this setup.
  • In order to use the webOS Robotics Platform, please refer to webOS Robotics Platform instruction. Packages will be cross-compiled using OpenEmbedded on a higher performance PC and an image file is created.

Prepare microSD Card and Reader

If you PC do not have a microSD slot, please use a microSD card reader to burn the recovery image.

Download TurtleBot3 SBC Image

Download the correct image file for your hardware and ROS version.
Melodic version images are created based on Ubuntu 18.04.

Download Raspberry Pi 3B+ ROS Melodic image

SHA256 : 312e1a5ad78447b901ae401ba31b2aaf94c1c760bdcafc60e2312df14e342640

Download Raspberry Pi 4B (2GB or 4GB) ROS Melodic image

SHA256 : 676bbcfc27fc6990bdf1e026247008f0525d344ccfaa106dca6c53d0bf7f4de8

  • Please note that this image may not compatible with Raspberry Pi 4B with 8GB RAM.

Download Raspberry Pi 4B (2GB or 4GB) ROS Melodic image(Raspberry Pi OS based)

SHA256 : 73546c63d3056bfc5538acc187f54dab6c1601096df320e60e0842bcb1b03d34

  • ROS Melodic recovery image based on Ubuntu 18.04 above is recommended.
  • Please note that this image may not compatible with Raspberry Pi 4B with 8GB RAM.

The recovery image files can be modified without a prior notice.

Unzip the downloaded image file

Extract the .img file and save it in the local disk.

Burn the image file

You can use various image burning tools.
For example, Raspberry Pi Imager or Linux Disks utility can be used.
Choose your preferred tool to burn the image to microSD.

Raspberry Pi Imager

Please refer to this article to find more information about Raspberry Pi Imager.

  1. Click CHOOSE OS.
  2. Click Use custom and select the extracted .img file from local disk.
  3. Click CHOOSE STORAGE and select the microSD.
  4. Click WRITE to start burning the image.

Disks Utility

Disks utility is included in the recent Ubuntu Desktop. Search for “Disks” and launch the app.

  1. Select the microSD card in the left panel.
  2. Select Restore Disk Image option.
  3. Open the .img file from local disk.
  4. Click Start Restoring... > Restore button.

Resize the Partition

In order to reduce the size of recovery image file and to decrease the time to burn the image onto microSD, the recovery partition is minimized.
Please resize the partition to use the unallocated space.

Be aware of selecting an incorrect disk or a partition. Partitioning a system disk of your PC may cause a serious system malfunction.

Download or install GParted GUI tool

  1. Select microSD card from the menu (mounted location may vary by system).
  2. Right click on the yellow partition.
  3. Select Resize/Move option.
  4. Drag the right edge of the partition to all the way to the right end.
  5. Click Resize/Move button.
  6. Click the Apply All Operations green check button at the top.

Configure the WiFi Network Setting

NOTE : If you encounter apt failures about the ROS GPG key (due to the existing GPG expiration), you may need to update GPG key. Please see ROS GPG Key Expiration Incident, and proceed to the given solution.

  1. Open a terminal window with Alt+Ctrl+T and go to the netplan directory in the microSD card.
    Start editing the 50-cloud-init.yaml file with a superuser permission sudo.
    $ cd /media/$USER/writable/etc/netplan
    $ sudo nano 50-cloud-init.yaml
    

    When the editor is opened, replace the WIFI_SSID and WIFI_PASSWORD with your wifi SSID and password.

    Save the file with Ctrl+S and exit with Ctrl+X.

If “No such file or directory” is returned, make sure the microSD is mounted to the system.

  1. Boot Up the Raspberry Pi
    a. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi.
    b. Connect input devices to the USB port of Raspberry Pi.
    c. Insert the microSD card.
    d. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi.
    e. Login with ID ubuntu and PASSWORD turtlebot.

HDMI cable has to be connected before powering the Raspberry Pi, or else the HDMI port of the Raspberry Pi will be disabled.

ROS Network Configuration

Please follow the instructions below on the SBC (Raspberry Pi).

  1. Confirm the WiFi IP address.
    $ ifconfig
    
  2. Edit the .bashrc file.
    $ nano ~/.bashrc
    
  3. Find the ROS_MASTER_URI and ROS_HOSTNAME setting section, then modify the IP adddresses accordingly.
    export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311
    export ROS_HOSTNAME={IP_ADDRESS_OF_RASPBERRY_PI_3}
    
  4. Save the file with Ctrl + S and exit the nano editor with Ctrl + X.

  5. Apply changes with the command below.
    $ source ~/.bashrc
    

This is it! Now you are done with SBC setup :)
Next Step : OpenCR Setup

Click to expand : Manual SBC Setup Instructions

Please be aware that this manual setup takes a lot more time than burning the recovery image file, but allows flexible choice of package installation. This instruction is not recommended for the beginners.

  1. Download the ubuntu-18.04.4-preinstalled-server-arm64+raspi3.img.xz image on your PC.
  2. Extract the downloaded file.

  3. Burn the .img file to the microSD card. You can use various image burning tools.
    For example, Raspberry Pi Imager or Linux Disks utility can be used. Choose your preferred tool to burn the image to microSD.

    a. Click CHOOSE OS.
    b. Click Use custom and select the extracted .img file from local disk.
    c. Click CHOOSE STORAGE and select the microSD.
    d. Click WRITE to start burning the image.

  4. Boot Up the Raspberry Pi
    a. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi.
    b. Connect input devices to the USB port of Raspberry Pi.
    c. Insert the microSD card.
    d. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi.

  5. Configure the Raspberry Pi
    a. Log in with default username(ubuntu) and password(ubuntu). After logged in, system will ask you to change the password.
    b. Open automatic update setting file.
    $ sudo nano /etc/apt/apt.conf.d/20auto-upgrades
    
  6. Change the update settings as below.
    APT::Periodic::Update-Package-Lists "0";
    APT::Periodic::Unattended-Upgrade "0";
    

    a. Save the file with Ctrl+S and exit with Ctrl+X.

  7. Enter below command to configure the WiFi network setting.
    $ sudo nano /etc/netplan/50-cloud-init.yaml
    
  8. When the editor is opened, append below contents at the end of the file.
    Replace the WIFI_SSID and WIFI_PASSWORD with your wifi SSID and password.

    Save the file with Ctrl+S and exit with Ctrl+X.

  9. Reboot the Raspberry Pi.
    $ sudo reboot
    
  10. Set the systemd to prevent boot-up delay even if there is no network at startup. Run the command below to set mask the systemd process using the following command.
    $ systemctl mask systemd-networkd-wait-online.service
    
  11. Disable Suspend and Hibernation
    $ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    
  12. After rebooting the Raspberry Pi, if you wish to work from the Remote PC using SSH, use below command from the remote PC terminal. The default password is ubuntu.
    $ ssh ubuntu@{IP Address of Raspberry PI}
    
  13. Install ROS Melodic Morenia Enter below commands to the terminal one at a time.
    In order to check the details of the easy installation script, please refer to the script file.
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_melodic_rpi.sh
    $ chmod 755 ./install_ros_melodic_rpi.sh
    $ bash ./install_ros_melodic_rpi.sh
    

    If the above installation fails, please refer to the official ROS Melodic installation guide.

  14. Install and Build ROS Packages.
    $ sudo apt install ros-melodic-rosserial-python ros-melodic-tf
    $ mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src
    $ sudo apt install ros-melodic-hls-lfcd-lds-driver
    $ sudo apt install ros-melodic-turtlebot3-msgs
    $ sudo apt install ros-melodic-dynamixel-sdk
    $ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
    $ cd ~/catkin_ws/src/turtlebot3
    $ rm -r turtlebot3_description/ turtlebot3_teleop/ turtlebot3_navigation/ turtlebot3_slam/ turtlebot3_example/
    $ cd ~/catkin_ws/
    $ echo 'source /opt/ros/melodic/setup.bash' >> ~/.bashrc
    $ source ~/.bashrc
    $ cd ~/catkin_ws && catkin_make -j1
    $ echo 'source ~/catkin_ws/devel/setup.bash' >> ~/.bashrc
    $ source ~/.bashrc
    
  15. USB Port Setting
    $ rosrun turtlebot3_bringup create_udev_rules
    
  16. ROS Network Configuration Confirm the WiFi IP address and edit the .bashrc file
    $ nano ~/.bashrc
    
  17. Modify the IP adddresses of ROS_MASTER_URI and the ROS_HOSTNAME.
    export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311
    export ROS_HOSTNAME={IP_ADDRESS_OF_RASPBERRY_PI_3}
    
  18. Save the file and exit the nano editor.

  19. Apply changes with the command below.
    $ source ~/.bashrc
    

SBC Setup

WARNING

  • This process may take long time. Please do not use battery while following this section.
  • An HDMI monitor and input devices such as a keyboard and a mouse will be required to complete this setup.

Prepare microSD Card and Reader

If you PC do not have a microSD slot, please use a microSD card reader to burn the recovery image.

Download TurtleBot3 SBC Image

Download the correct image file for your hardware and ROS version.
Noetic version images are created based on Ubuntu 20.04.

Download Raspberry Pi 3B+ ROS Noetic image

SHA256 : a7c57e20f2ee4204c95315866f4a274886094f7c63ed390b6d06d95074830309

Download Raspberry Pi 4B (2GB or 4GB) ROS Noetic image

SHA256 : 9d48925a78381885916a6f3bb77891adbfae2b271b05fe2ae9a9b7ebd12c46cc

  • Please note that this image may not compatible with Raspberry Pi 4B with 8GB RAM.

The recovery image files can be modified without a prior notice.

Unzip the downloaded image file

Extract the .img file and save it in the local disk.

Burn the image file

You can use various image burning tools.
For example, Raspberry Pi Imager or Linux Disks utility can be used.
Choose your preferred tool to burn the image to microSD.

Raspberry Pi Imager

Please refer to this article to find more information about Raspberry Pi Imager.

  1. Click CHOOSE OS.
  2. Click Use custom and select the extracted .img file from local disk.
  3. Click CHOOSE STORAGE and select the microSD.
  4. Click WRITE to start burning the image.

Disks Utility

Disks utility is included in the recent Ubuntu Desktop. Search for “Disks” and launch the app.

  1. Select the microSD card in the left panel.
  2. Select Restore Disk Image option.
  3. Open the .img file from local disk.
  4. Click Start Restoring... > Restore button.

Resize the Partition

In order to reduce the size of recovery image file and to decrease the time to burn the image onto microSD, the recovery partition is minimized.
Please resize the partition to use the unallocated space.

Be aware of selecting an incorrect disk or a partition. Partitioning a system disk of your PC may cause a serious system malfunction.

Download or install GParted GUI tool

  1. Select microSD card from the menu (mounted location may vary by system).
  2. Right click on the yellow partition.
  3. Select Resize/Move option.
  4. Drag the right edge of the partition to all the way to the right end.
  5. Click Resize/Move button.
  6. Click the Apply All Operations green check button at the top.

Configure the WiFi Network Setting

  1. Open a terminal window with Alt+Ctrl+T and go to the netplan directory in the microSD card.
    Start editing the 50-cloud-init.yaml file with a superuser permission sudo.
    $ cd /media/$USER/writable/etc/netplan
    $ sudo nano 50-cloud-init.yaml
    

    When the editor is opened, replace the WIFI_SSID and WIFI_PASSWORD with your wifi SSID and password.

    Save the file with Ctrl+S and exit with Ctrl+X.

If “No such file or directory” is returned, make sure the microSD is mounted to the system.

  1. Boot Up the Raspberry Pi
    a. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi.
    b. Connect input devices to the USB port of Raspberry Pi.
    c. Insert the microSD card.
    d. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi.
    e. Login with ID ubuntu and PASSWORD turtlebot.

HDMI cable has to be connected before powering the Raspberry Pi, or else the HDMI port of the Raspberry Pi will be disabled.

ROS Network Configuration

NOTE : If you encounter apt failures about the ROS GPG key (due to the existing GPG expiration), you may need to update GPG key. Please see ROS GPG Key Expiration Incident, and proceed to the given solution.

Please follow the instructions below on the SBC (Raspberry Pi).

  1. Confirm the WiFi IP address.
    $ ifconfig
    
  2. Edit the .bashrc file.
    $ nano ~/.bashrc
    
  3. Find the ROS_MASTER_URI and ROS_HOSTNAME setting section, then modify the IP adddresses accordingly.
    export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311
    export ROS_HOSTNAME={IP_ADDRESS_OF_RASPBERRY_PI_3}
    
  4. Save the file with Ctrl + S and exit the nano editor with Ctrl + X.

  5. Apply changes with the command below.
    $ source ~/.bashrc
    

This is it! Now you are done with SBC setup :)
Next Step : OpenCR Setup

Click to expand : Manual SBC Setup Instructions

Please be aware that this manual setup takes a lot more time than burning the recovery image file, but allows flexible choice of package installation. This instruction is not recommended for the beginners.

  1. Download the proper Ubuntu 20.04.1(Focal) Preinstalled Server image on your PC.
  2. Extract the downloaded file.

  3. Burn the .img file to the microSD card. You can use various image burning tools.
    For example, Raspberry Pi Imager or Linux Disks utility can be used. Choose your preferred tool to burn the image to microSD.

    a. Click CHOOSE OS.
    b. Click Use custom and select the extracted .img file from local disk.
    c. Click CHOOSE STORAGE and select the microSD.
    d. Click WRITE to start burning the image.

  4. Boot Up the Raspberry Pi
    a. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi.
    b. Connect input devices to the USB port of Raspberry Pi.
    c. Insert the microSD card.
    d. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi.

  5. Configure the Raspberry Pi
    a. Log in with default username(ubuntu) and password(ubuntu). After logged in, system will ask you to change the password.
    b. Open automatic update setting file.
    $ sudo nano /etc/apt/apt.conf.d/20auto-upgrades
    
  6. Change the update settings as below.
    APT::Periodic::Update-Package-Lists "0";
    APT::Periodic::Unattended-Upgrade "0";
    

    a. Save the file with Ctrl+S and exit with Ctrl+X.

  7. Enter below command to configure the WiFi network setting.
    $ sudo nano /etc/netplan/50-cloud-init.yaml
    
  8. When the editor is opened, append below contents at the end of the file.
    Replace the WIFI_SSID and WIFI_PASSWORD with your wifi SSID and password.

    Save the file with Ctrl+S and exit with Ctrl+X.

  9. Reboot the Raspberry Pi.
    $ sudo reboot
    
  10. Set the systemd to prevent boot-up delay even if there is no network at startup. Run the command below to set mask the systemd process using the following command.
    $ systemctl mask systemd-networkd-wait-online.service
    
  11. Disable Suspend and Hibernation
    $ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    
  12. After rebooting the Raspberry Pi, if you wish to work from the Remote PC using SSH, use below command from the remote PC terminal. The default password is ubuntu.
    $ ssh ubuntu@{IP Address of Raspberry PI}
    
  13. Install ROS Noetic Ninjemys Enter below commands to the terminal one at a time.
    In order to check the details of the easy installation script, please refer to the script file.
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic_rpi.sh
    $ chmod 755 ./install_ros_noetic_rpi.sh
    $ bash ./install_ros_noetic_rpi.sh
    

    If the above installation fails, please refer to the official ROS Noetic installation guide.

  14. Install and Build ROS Packages.
    $ sudo apt install ros-noetic-rosserial-python ros-noetic-tf
    $ mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src
    $ sudo apt install ros-noetic-hls-lfcd-lds-driver
    $ sudo apt install ros-noetic-turtlebot3-msgs
    $ sudo apt install ros-noetic-dynamixel-sdk
    $ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
    $ cd ~/catkin_ws/src/turtlebot3
    $ rm -r turtlebot3_description/ turtlebot3_teleop/ turtlebot3_navigation/ turtlebot3_slam/ turtlebot3_example/
    $ cd ~/catkin_ws/
    $ echo 'source /opt/ros/noetic/setup.bash' >> ~/.bashrc
    $ source ~/.bashrc
    $ cd ~/catkin_ws && catkin_make -j1
    $ echo 'source ~/catkin_ws/devel/setup.bash' >> ~/.bashrc
    $ source ~/.bashrc
    
  15. USB Port Setting
    $ rosrun turtlebot3_bringup create_udev_rules
    
  16. ROS Network Configuration Confirm the WiFi IP address and edit the .bashrc file
    $ nano ~/.bashrc
    
  17. Modify the IP adddresses of ROS_MASTER_URI and the ROS_HOSTNAME.
    export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311
    export ROS_HOSTNAME={IP_ADDRESS_OF_RASPBERRY_PI_3}
    
  18. Save the file and exit the nano editor.

  19. Apply changes with the command below.
    $ source ~/.bashrc
    

SBC Setup

WARNING

  • This SBC Setup section is specifically written for Raspberry Pi 3B+ which is the current official TurtleBot3 SBC.
  • This process may take long time. Please do not use battery while following this section.
  • An HDMI monitor and input devices such as a keyboard and a mouse will be required to complete this setup.
  • In order to use the webOS Robotics Platform, please refer to webOS Robotics Platform instruction. Packages will be cross-compiled using OpenEmbedded on a higher performance PC and an image file is created.

Prepare microSD Card and Reader

If you PC do not have a microSD slot, please use a microSD card reader to burn the recovery image.

Download SBC OS Image

Download the correct image file for your hardware and ROS version.
ROS2 Dashing requires Ubuntu 18.04.

Unzip the downloaded image file

Extract the .img file and save it in the local disk.

Burn the image file

You can use various image burning tools.
For example, Raspberry Pi Imager or Linux Disks utility can be used.
Choose your preferred tool to burn the image to microSD.

Raspberry Pi Imager

Please refer to this article to find more information about Raspberry Pi Imager.

  1. Click CHOOSE OS.
  2. Click Use custom and select the extracted .img file from local disk.
  3. Click CHOOSE STORAGE and select the microSD.
  4. Click WRITE to start burning the image.

Disks Utility

Disks utility is included in the recent Ubuntu Desktop. Search for “Disks” and launch the app.

  1. Select the microSD card in the left panel.
  2. Select Restore Disk Image option.
  3. Open the .img file from local disk.
  4. Click Start Restoring... > Restore button.

Boot Up the Raspberry Pi

  1. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi.
  2. Connect input devices to the USB port of Raspberry Pi
  3. Insert the microSD card.
  4. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi.
  5. Login with ID ubuntu and PASSWORD ubuntu.
    Once logged in, the system will request to change the password.

HDMI cable has to be connected before powering the Raspberry Pi, or else the HDMI port of the Raspberry Pi will be disabled.

Configure the Raspberry Pi

  1. Open automatic update setting file.
    $ sudo nano /etc/apt/apt.conf.d/20auto-upgrades
    
  2. Edit to disable automatic update settings as below.
    APT::Periodic::Update-Package-Lists "0";
    APT::Periodic::Unattended-Upgrade "0";
    

    Save the file with Ctrl+S and exit with Ctrl+X.

  3. Enter below command to configure the WiFi network setting.
    $ sudo nano /etc/netplan/50-cloud-init.yaml
    
  4. When the editor is opened, append below contents at the end of the file.
    Replace the WIFI_SSID and WIFI_PASSWORD with your wifi SSID and password.

    Save the file with Ctrl+S and exit with Ctrl+X.

  5. Apply all configuration for the renderers, and then reboot the Raspberry Pi.
    $ sudo netplan apply
    $ reboot
    
  6. Set the systemd to prevent boot-up delay even if there is no network at startup. Run the command below to set mask the systemd process using the following command.
    $ systemctl mask systemd-networkd-wait-online.service
    
  7. Disable Suspend and Hibernation
    $ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    
  8. Install and enable the SSH
    $ sudo apt install ssh
    $ sudo systemctl enable --now ssh
    $ reboot
    
  9. After rebooting the Raspberry Pi, if you wish to work from the Remote PC using SSH, use below command from the remote PC terminal. The default password is ubuntu.
    $ ssh ubuntu@{IP Address of Raspberry PI}
    

Add Swap Space

  1. Enter the command below to create 2GB swap space.
    $ sudo swapoff /swapfile
    $ sudo fallocate -l 2G /swapfile
    $ sudo chmod 600 /swapfile
    $ sudo mkswap /swapfile
    $ sudo swapon /swapfile
    $ sudo nano /etc/fstab
    

    You can ignore below error when entering swapoff /swapfile command.

    swapoff: /swapfile: swapoff failed: No such file or directory
    
  2. When the editor opens the fstab file, append below contents at the end of the file.
    /swapfile swap swap defaults 0 0
    
  3. Check if 2GB of swap space is correctly configured.
    $ sudo free -h
                  total        used        free      shared  buff/cache   available
    Mem:           912M         97M        263M        4.4M        550M        795M
    Swap:          2.0G          0B        2.0G
    

Install ROS 2 Dashing Diademata

Reference: Official ROS 2 Dashing Installation Guide

  1. Open a terminal on SBC

  2. Setup locale
    $ sudo apt update && sudo apt install locales
    $ sudo locale-gen en_US en_US.UTF-8
    $ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
    $ export LANG=en_US.UTF-8
    
  3. Setup sources
    $ sudo apt update && sudo apt install curl gnupg2 lsb-release
    $ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
    $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
    
  4. Install ROS 2 packages
    $ sudo apt update
    $ sudo apt install ros-dashing-ros-base
    
  5. Install and Build ROS Packages.
    $ sudo apt install python3-argcomplete python3-colcon-common-extensions libboost-system-dev build-essential
    $ sudo apt install ros-dashing-hls-lfcd-lds-driver
    $ sudo apt install ros-dashing-turtlebot3-msgs
    $ sudo apt install ros-dashing-dynamixel-sdk
    $ mkdir -p ~/turtlebot3_ws/src && cd ~/turtlebot3_ws/src
    $ git clone -b dashing-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
    $ cd ~/turtlebot3_ws/src/turtlebot3
    $ rm -r turtlebot3_cartographer turtlebot3_navigation2
    $ cd ~/turtlebot3_ws/
    $ echo 'source /opt/ros/dashing/setup.bash' >> ~/.bashrc
    $ source ~/.bashrc
    $ colcon build --symlink-install --parallel-workers 1
    $ echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc
    $ source ~/.bashrc
    
  6. USB Port Setting for OpenCR
    $ sudo cp `ros2 pkg prefix turtlebot3_bringup`/share/turtlebot3_bringup/script/99-turtlebot3-cdc.rules /etc/udev/rules.d/
    $ sudo udevadm control --reload-rules
    $ sudo udevadm trigger
    
  7. ROS Domain ID Setting In ROS2 DDS communication, ROS_DOMAIN_ID must be matched between Remote PC and TurtleBot3 for communication under the same network environment. Following commands shows how to assign a ROS_DOMAIN_ID to SBC in TurtleBot3.
    • A default ID of TurtleBot3 is 30.
    • Configuring the ROS_DOMAIN_ID of Remote PC and SBC in TurtleBot3 to 30 is recommended.
$ echo 'export ROS_DOMAIN_ID=30 #TURTLEBOT3' >> ~/.bashrc
$ source ~/.bashrc

WARNING : Do not use an identical ROS_DOMAIN_ID with others in the same network. It will cause a conflict of communication between users under the same network environment.

SBC Setup

WARNING

  • This process may take long time. Please do not use battery while following this section.
  • An HDMI monitor and input devices such as a keyboard and a mouse will be required to complete this setup.
  • In order to use the webOS Robotics Platform, please refer to webOS Robotics Platform instruction. Packages will be cross-compiled using OpenEmbedded on a higher performance PC and an image file is created.

Prepare microSD Card and Reader

If you PC do not have a microSD slot, please use a microSD card reader to burn the recovery image.

Download TurtleBot3 SBC Image

Download the correct image file for your hardware and ROS version.
Foxy version images are created based on Ubuntu 20.04.

Download Raspberry Pi 3B+ ROS2 Foxy image

SHA256 : e1916b75573e3944c72552664ee1e32e9be32a026bd5b4323d0a4b5778243a1e

Download Raspberry Pi 4B (2GB or 4GB) ROS2 Foxy image

SHA256 : 8b8b54ad80c7a02ae35da8e9e5d9750fdf21ec6098052a804986ab22ce10ba7e

  • Please note that this image may not compatible with Raspberry Pi 4B with 8GB RAM.

The recovery image files can be modified without a prior notice.

Unzip the downloaded image file

Extract the .img file and save it in the local disk.

Burn the image file

You can use various image burning tools.
For example, Raspberry Pi Imager or Linux Disks utility can be used.
Choose your preferred tool to burn the image to microSD.

Raspberry Pi Imager

Please refer to this article to find more information about Raspberry Pi Imager.

  1. Click CHOOSE OS.
  2. Click Use custom and select the extracted .img file from local disk.
  3. Click CHOOSE STORAGE and select the microSD.
  4. Click WRITE to start burning the image.

Disks Utility

Disks utility is included in the recent Ubuntu Desktop. Search for “Disks” and launch the app.

  1. Select the microSD card in the left panel.
  2. Select Restore Disk Image option.
  3. Open the .img file from local disk.
  4. Click Start Restoring... > Restore button.

Resize the Partition

In order to reduce the size of recovery image file and to decrease the time to burn the image onto microSD, the recovery partition is minimized.
Please resize the partition to use the unallocated space.

Be aware of selecting an incorrect disk or a partition. Partitioning a system disk of your PC may cause a serious system malfunction.

Download or install GParted GUI tool

  1. Select microSD card from the menu (mounted location may vary by system).
  2. Right click on the yellow partition.
  3. Select Resize/Move option.
  4. Drag the right edge of the partition to all the way to the right end.
  5. Click Resize/Move button.
  6. Click the Apply All Operations green check button at the top.

Configure the WiFi Network Setting

NOTE : If you encounter apt failures about the ROS GPG key (due to the existing GPG expiration), you may need to update GPG key. Please see ROS GPG Key Expiration Incident, and proceed to the given solution.

  1. Open a terminal window with Alt+Ctrl+T and go to the netplan directory in the microSD card.
    Start editing the 50-cloud-init.yaml file with a superuser permission sudo.
    $ cd /media/$USER/writable/etc/netplan
    $ sudo nano 50-cloud-init.yaml
    

    When the editor is opened, replace the WIFI_SSID and WIFI_PASSWORD with your wifi SSID and password.

    Save the file with Ctrl+S and exit with Ctrl+X.

If “No such file or directory” is returned, make sure the microSD is mounted to the system.

  1. Boot Up the Raspberry Pi
    a. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi.
    b. Connect input devices to the USB port of Raspberry Pi.
    c. Insert the microSD card.
    d. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi.
    e. Login with ID ubuntu and PASSWORD turtlebot.

HDMI cable has to be connected before powering the Raspberry Pi, or else the HDMI port of the Raspberry Pi will be disabled.

ROS2 Network Configuration

In ROS2 DDS communication, ROS_DOMAIN_ID must be matched between Remote PC and TurtleBot3 for communication under the same network environment.
The default ROS Domain ID for TurtleBot3 is set to 30 in the .bashrc file.
Please modify the ID to avoid any conflict when there are identical ID in the same network.

ROS_DOMAIN_ID=30 #TURTLEBOT3

WARNING : Do not use an identical ROS_DOMAIN_ID with others in the same network. It will cause a conflict of communication between users under the same network environment.

This is it! Now you are done with SBC setup :)
Next Step : OpenCR Setup

Click to expand : Manual SBC Setup Instructions

Please be aware that this manual setup takes a lot more time than burning the recovery image file, but allows flexible choice of package installation. This instruction is not recommended for the beginners.

  1. Download the latest Ubuntu 20.04 server image for your SBC from the link below.
  2. Extract the downloaded file.

  3. Burn the .img file to the microSD card. You can use various image burning tools.
    For example, Raspberry Pi Imager or Linux Disks utility can be used. Choose your preferred tool to burn the image to microSD.

    a. Click CHOOSE OS.
    b. Click Use custom and select the extracted .img file from local disk.
    c. Click CHOOSE STORAGE and select the microSD.
    d. Click WRITE to start burning the image.

  4. Boot Up the Raspberry Pi
    a. Connect the HDMI cable of the monitor to the HDMI port of Raspberry Pi.
    b. Connect input devices to the USB port of Raspberry Pi.
    c. Insert the microSD card.
    d. Connect the power (either with USB or OpenCR) to turn on the Raspberry Pi.

  5. Configure the Raspberry Pi
    a. Log in with default username(ubuntu) and password(ubuntu). After logged in, system will ask you to change the password.
    b. Open automatic update setting file.
    $ sudo nano /etc/apt/apt.conf.d/20auto-upgrades
    
  6. Change the update settings as below.
    APT::Periodic::Update-Package-Lists "0";
    APT::Periodic::Unattended-Upgrade "0";
    

    a. Save the file with Ctrl+S and exit with Ctrl+X.

  7. Enter below command to configure the WiFi network setting.
    $ sudo nano /etc/netplan/50-cloud-init.yaml
    
  8. When the editor is opened, enter below contents to the file.
    Replace the WIFI_SSID and WIFI_PASSWORD with your wifi SSID and password.

    Save the file with Ctrl+S and exit with Ctrl+X.

  9. Reboot the Raspberry Pi.
    $ sudo reboot
    
  10. Set the systemd to prevent boot-up delay even if there is no network at startup. Run the command below to set mask the systemd process using the following command.
    $ systemctl mask systemd-networkd-wait-online.service
    
  11. Disable Suspend and Hibernation
    $ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    
  12. After rebooting the Raspberry Pi, if you wish to work from the Remote PC using SSH, use below command from the remote PC terminal. Make sure to use the password you set in Step 5.
    $ ssh ubuntu@{IP Address of Raspberry PI}
    
  13. Install ROS2 Foxy Fiztroy
    Enter below commands to the Raspberry Pi terminal one at a time.
    In order to check the details of the easy installation script, please refer to the script file.
    $ sudo apt update
    $ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros2_foxy_rpi.sh
    $ chmod 755 ./install_ros2_foxy_rpi.sh
    $ bash ./install_ros2_foxy_rpi.sh
    

    If the above installation fails, please refer to the official ROS2 Foxy installation guide.

  14. Install and Build ROS Packages.
    $ sudo apt install python3-argcomplete python3-colcon-common-extensions libboost-system-dev build-essential
    $ sudo apt install ros-foxy-hls-lfcd-lds-driver
    $ sudo apt install ros-foxy-turtlebot3-msgs
    $ sudo apt install ros-foxy-dynamixel-sdk
    $ mkdir -p ~/turtlebot3_ws/src && cd ~/turtlebot3_ws/src
    $ git clone -b foxy-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
    $ cd ~/turtlebot3_ws/src/turtlebot3
    $ rm -r turtlebot3_cartographer turtlebot3_navigation2
    $ cd ~/turtlebot3_ws/
    $ echo 'source /opt/ros/foxy/setup.bash' >> ~/.bashrc
    $ source ~/.bashrc
    $ colcon build --symlink-install --parallel-workers 1
    $ echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc
    $ source ~/.bashrc
    
  15. USB Port Setting for OpenCR
    $ sudo cp `ros2 pkg prefix turtlebot3_bringup`/share/turtlebot3_bringup/script/99-turtlebot3-cdc.rules /etc/udev/rules.d/
    $ sudo udevadm control --reload-rules
    $ sudo udevadm trigger
    
  16. ROS Domain ID Setting In ROS2 DDS communication, ROS_DOMAIN_ID must be matched between Remote PC and TurtleBot3 for communication under the same network environment. Following commands shows how to assign a ROS_DOMAIN_ID to SBC in TurtleBot3.
    • A default ID of TurtleBot3 is 30.
    • Configuring the ROS_DOMAIN_ID of Remote PC and SBC in TurtleBot3 to 30 is recommended.
$ echo 'export ROS_DOMAIN_ID=30 #TURTLEBOT3' >> ~/.bashrc
$ source ~/.bashrc

WARNING : Do not use an identical ROS_DOMAIN_ID with others in the same network. It will cause a conflict of communication between users under the same network environment.

SBC Setup

WARNING

  • TurtleBot3 on Windows is running on a single PC assembled on TurtleBot3 instead of Raspberry Pi.
  • If you have replaced Raspberry Pi with UP2 or Intel NUC and followed PC setup section on it, you can bypass this section.