Turtlebot 4 - Setup

1. Flashing image to SD card

Download SD card image from: http://download.ros.org/downloads/turtlebot4/ and flash it with rpi-imager.

If you need rpi-imager install it with:

sudo pacman -S rpi-imager

2. Connect Turtlebot 4 to WiFi network

2.1 Connect to Turtlebot 4’s WiFi hotspot

2.2 SSH into Turtlebot 4

ssh ubuntu@10.42.0.1

2.3 Connect Turtlebot 4 to WiFi network

Run:

turtlebot4-setup
        graph LR
    turtlebot-setup[**TurtlebotSetup**] -- Wi-Fi Setup --> wifi-setup[**WiFi Setup**] --> wifi-mode{{WiFI Mode: **Client**}};
    wifi-setup --> ssid{{SSID: ***wifi_ssid***}};
    wifi-setup --> passwod{{Password: ***wifi_password***}};
    wifi-setup --> save[**Save**];
    turtlebot-setup --> apply[**Apply Settings**] --> yes[**Yes**]
    

Turtlebot 4 is now connected to WiFi network.

3. Turtlebot 4 setup

3.1 SSH into Turtlebot 4

Run:

ssh ubuntu@<TURTLEBOT4_IP_ADDRESS>

3.1.1 Find Turtlebot 4’s IP

Install arp-scan if you haven’t already:

sudo pacman -S arp-scan

than run

sudo arp-scan -l

Example output:

Interface: wlan0, type: EN10MB, MAC: 60:45:2e:14:11:03, IPv4: 192.168.8.247
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.8.1	94:83:c4:0a:d0:2d	GL Technologies (Hong Kong) Limited
192.168.8.109	d8:3a:dd:08:54:aa	Raspberry Pi Trading Ltd
192.168.8.166	14:85:7f:58:d0:72	Intel Corporate

5 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.955 seconds (130.95 hosts/sec). 4 responded

In above example Turtlebot 4’s Raspberry Pi is detected with IP 192.168.8.109.

3.2 Update Turtlebot 4

Turtlebot4 User Manual: Updating the TurtleBot 4

Now it’s a good idea to update the Turtlebot 4:

sudo apt update
sudo apt -y upgrade

3.3 Update Create 3

Access Create 3 user interface: <TURTLEBOT4_IP_ADDRESS>:8080

Download the correct firmware from: https://iroboteducation.github.io/create3_docs/releases/overview/

Attention

If you are using ROS 2 Jazzy, make sure you install firmware with version I.*.*. Firmware versions starting with G or H are not compatible with Jazzy.

Unlike previous versions, the Create® 3 firmware I.*.* does not support switching between FastDDS and CycloneDDS. Instead there are two separate versions of the firmware available, each supporting one RMW implementation. When installing the firmware on your Create® 3 you must use the firmware that corresponds to the middleware you intend to use.

For ROS 2 Jazzy, the default is FastDDS. Unless you have specific reasons for using CycloneDDS, it is recommended to use the FastDDS firmware on your Create® 3.

Than ugrade the firmware on Create 3.

        graph LR
    create3[**Create 3 UI**] --> update[**Update**] --> browse[**Browse**] --> firmware{{*select downloaded firmware*}}
    update --> upload[**Upload file and update**]
    

4. Networking configuration

Turtlebot4 User Manual: Networking

4.1 Discovery Server

4.1.1 Create3 Setup

  1. Update to latest firmware: see 3.3

  2. Factory reset Create 3

        graph LR
    create3[**Create 3 UI**] --> about[**About**] --> factory-reset[**Factory reset URL**<br>at the end of the page]
    

4.1.2 Raspberry Pi Setup

SSH into the Turtlebot 4 and run:

turtlebot4-setup
        graph LR
    turtlebot-setup[**TurtlebotSetup**] -- ROS Setup --> 
    ros-setup[**ROS Setup**] -- Bash Setup --> bash-setup[**Bash Setup**] --> robot-namespace{{ROBOT_NAMESPACE:<br>***robot_namespace***}}
    bash-setup --> save[**Save**]
    ros-setup -- Discovery Server --> discovery-server[**Discovery Server**] --> enabled{{Enabled: **True**}};
    discovery-server --> server-id{{Onboard Server<br>Server ID:<br>***robot_id***}}
    discovery-server --> save2[**Save**];
    turtlebot-setup --> apply[**Apply Settings**] --> yes[**Yes**];
    turtlebot-setup --> exit[**Exit**]
    

than run:

turtlebot4-source

and

turtlebot4-daemon-restart

4.1.3 PC Setup

Run:

wget -qO - https://raw.githubusercontent.com/turtlebot/turtlebot4_setup/jazzy/turtlebot4_discovery/configure_discovery.sh | bash <(cat) </dev/tty

Settings:

  • ROS_DOMAIN_ID: <ros_domain_id>

  • Discovery Server ID: <robot_id> (selected in step 4.1.2)

  • Discovery Server IP: <raspberry_pi_IP>

  • Discovery Server Port: leave default

When finished run:

source ~/.bashrc
ros2 daemon stop; ros2 daemon start

and test configuration with:

ros2 topic list