Edit on GitHub

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.

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).

Raspberry Pi 4 does not support Ubuntu 16.04 nor Debian Jessie, therefore, ROS1 Kinetic is not available for Raspberry Pi 4.

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.

Download Raspberry Pi Imager from raspberrypi.org

  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 exsisting 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 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 TurtleBot3 SBC Image

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

For setting up the Raspberry Pi 4 with the Raspberry Pi 4 image, please refer to the SBC Setup instructions of the Kinetic.

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.

Download Raspberry Pi Imager from raspberrypi.org

  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 exsisting 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.

ROS1 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 ROS1 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_rp3.sh
    $ chmod 755 ./install_ros_melodic_rp3.sh
    $ bash ./install_ros_melodic_rp3.sh
    

    If the above installation fails, please refer to the official ROS1 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. ROS1 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.

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.

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.

Download Raspberry Pi Imager from raspberrypi.org

  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.

ROS1 Network Configuration

NOTE : If you encounter apt failures about the ROS GPG key (due to the exsisting 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 ROS1 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_rp3.sh
    $ chmod 755 ./install_ros_noetic_rp3.sh
    $ bash ./install_ros_noetic_rp3.sh
    

    If the above installation fails, please refer to the official ROS1 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. ROS1 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

You need a micro SD card reader to burn the OS image on your PC or laptop.

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

  3. Burn the image file(.img) to the microSD card.
    • Use Restore Disk Image option in the Disks utility in Ubuntu.
    • Run the utility and select the restore image, then burn to the selected micro SD card.

Other micro SD card burning methods?

You can also use the Raspberry Pi Imager that supports Windows, Linux, and Mac OSX.

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

  1. Log in with default username(ubuntu) and password(ubuntu). After logged in, system will ask you to change the password.

  2. Open automatic update setting file.
    $ sudo nano /etc/apt/apt.conf.d/20auto-upgrades
    
  3. 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.

  4. Enter below command to configure the WiFi network setting.
    $ sudo nano /etc/netplan/50-cloud-init.yaml
    
  5. 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.

  6. Apply all configuration for the renderers, and then reboot the Raspberry Pi.
    $ sudo netplan apply
    $ reboot
    
  7. 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
    
  8. Disable Suspend and Hibernation
    $ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
    
  9. Install and enable the SSH
    $ sudo apt install ssh
    $ sudo systemctl enable --now ssh
    $ reboot
    
  10. 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 Dashing Diademata

  1. Open a terminal on SBC

  2. Update and upgrade your software
    $ sudo apt update && sudo apt upgrade
    
  3. Setup locale
    $ 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
    
  4. Setup sources
    $ sudo apt update && sudo apt install curl gnupg2 lsb-release
    $ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
    $ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
    
  5. Install ROS 2 packages
    $ sudo apt update
    $ sudo apt install ros-dashing-ros-base
    

Install 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

Environment Setup

Domain ID Allocation

In DDS communication, ROS_DOMAIN_ID must be matched between Remote PC and TurtleBot3 for wireless 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 set as 0.
  • To configure the ROS_DOMAIN_ID of Remote PC and SBC in TurtleBot3 to 30 is recommendable.
  1. Open a terminal on SBC
  2. Use the following commands.
    $ 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 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 TurtleBot3 SBC Image

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

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.

Download Raspberry Pi Imager from raspberrypi.org

  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 exsisting 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_rp3.sh
    $ chmod 755 ./install_ros2_foxy_rp3.sh
    $ bash ./install_ros2_foxy_rp3.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.