Skip to main content

ROSbot 3 / 3 PRO - quick start

ROSbot 3 / ROSbot 3 PRO is an indoor mobile robot platform, purpose-built for research and education. Powered by a Raspberry Pi 5 and constructed with a durable 1.5mm alloy chassis, it offers robust performance and reliability. The ROSbot 3 features a SLAMTEC C1 LIDAR and Luxonis OAK-D Lite camera, while the ROSbot 3 PRO is equipped with an enhanced SLAMTEC S2 LIDAR and OAK-D Pro camera for superior perception and SLAM capabilities.

The open-source ROS 2 drivers are pre-installed and configured, enabling out-of-the-box operation without additional setup. Users can start interacting with the ROSbot through a web-based interface or a gamepad—no coding required—making it an ideal platform for beginners and experts alike. With four DC motors, each equipped with independent quadrature encoders, ROSbot 3 provides precise motion control for navigating complex indoor environments, accelerating your research and development in robotics.

ROSbot 3 preview


How to get it?

If you don't have ROSbot 3 or ROSbot 3 PRO yet, you can get it from the online store.

Looking for a manual?
OS version

This guide is based on the newest OS system image for ROSbot 3.

To upgrade to the OS, download the ROSbot 3 Jazzy System Image (2024-10-25). Use Etcher to burn the image onto a microSD card, then insert it into the microSD card slot located on the side panel of ROSbot 3.

Unboxing

What's in the box:

  • carrying case
  • ROSbot 3 with 3D camera and LiDAR already assembled
  • Wi-Fi 2.4GHz / 5GHz antenna
  • 3x 18650 Li-Ion rechargeable batteries
  • a universal charger with power adapter
  • charging cable
  • microSD card with the OS system image
  • USB to Ethernet adapter

Additionally, to launch the robot for the first time, you will need:

  • a screwdriver
  • USB-HDMI cable, mouse and keyboard OR Ethernet cable

Inserting Li-ION batteries and mounting Wi-Fi antenna

Your ROSbot is assembled, but to get it ready to work, you need to provide a power supply and attach the antenna.

To mount the batteries:

  • turn ROSbot upside down
  • unscrew the battery cover mounted with two screws
  • remove the battery cover
  • place the batteries accordingly to the symbols, keeping the black strip under the batteries
  • place the battery cover back in position and mount it with screws.

To charge the batteries, follow this guide.

To attach the antenna, simply screw it to the SMA antenna connector on the rear panel of ROSbot.

Accessing ROSbot's Linux terminal

To perform the initial network configuration, you need to access ROSbot's Linux terminal first. There are two options of doing that:

Option 1: Using display, mouse and keyboard

ROSbot is basically a computer running Ubuntu, so let's open it like a standard PC.

  1. Plug in a display with HDMI, mouse and keyboard into the USB port on the rear panel of the ROSbot.
  2. Turn on the robot and wait until it boots.
  3. Open the terminal with the Ctrl + Alt + t shortcut
info

ROSbot's graphical desktop environment requires about 3 minutes to start during first boot. Subsequent boots require only about 1 minute after power on.

Option 2: Using an Ethernet adapter

In the ROSbot set, there is one USB-Ethernet card.

  1. Turn on the robot and wait until it boots.

  2. Plug in the Ethernet adapter (included in a set) to a USB port on the rear panel of the ROSbot.

  3. Plug one end of the Ethernet cable into your computer and another one to the adapter.

  4. To connect to the ROSbot via ssh, type in your terminal application:

    user@mylaptop:/home/user$
    ssh husarion@192.168.77.2

    The default password for user husarion is also husarion.

ROSbot 3 terminal

Connecting ROSbot to the Wi-Fi network

Netplan

ROSbot 3 / 3 PRO uses netplan instead of a graphical Wi-Fi manager. It allows you to have all physical network interfaces configured from a single text file.

To find available Wi-Fi networks, use the following Linux command:

husarion@rosbot3:/home/husarion$
nmcli dev wifi

To connect your ROSbot to a Wi-Fi network, edit /etc/netplan/01-network-manager-all.yaml file, e.g. with nano:

husarion@rosbot3:/home/husarion$
sudo nano /etc/netplan/01-network-manager-all.yaml

And modify lines 25-26 by replacing "PLACE_YOUR_WIFI_SSID_HERE" with your SSID (Wi-Fi network name) and "PLACE_YOUR_WIFI_PASSWORD_HERE" with your Wi-Fi password:

See the Netplan configuration file
/etc/netplan/01-network-manager-all.yaml
network:
version: 2
renderer: NetworkManager

ethernets:

all-eths:
match:
name: eth*
dhcp4: no
dhcp6: no
optional: true
addresses:
- 192.168.77.2/24

wifis:
# ========================================
# standard Wi-Fi config (client)
# ========================================
wlan0:
dhcp4: true
dhcp6: true
optional: true
access-points:
"PLACE_YOUR_WIFI_SSID_HERE":
password: "PLACE_YOUR_WIFI_PASSWORD_HERE"

# ========================================
# access point Wi-Fi config
# replace "channel" with the number permitted in your country
# https://en.wikipedia.org/wiki/List_of_WLAN_channels
# ========================================
# wlan0:
# dhcp4: yes
# addresses:
# - 192.168.78.1/24
# access-points:
# "rosbotap":
# band: "5GHz"
# channel: "149"
# mode: "ap"
# password: "husarion"

then save the file (with ctrl+o if using nano) and apply the new network setup:

husarion@rosbot3:/home/husarion$
sudo netplan -d apply

You can check to which Wi-Fi network your ROSbot is connected by using this command:

husarion@rosbot3:/home/husarion$
sudo iwgetid

To find your IP address (for the wlan0 network interface) type:

husarion@rosbot3:/home/husarion$
ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'

ROSbot 3 IP address

Save this IP address for the next step.

Complex Wi-Fi setups

If your Wi-Fi network setup is more complex (eg. if you want to connect to Eduroam based Wi-Fi that is popular in many universities), visit netplan configuration examples and netplan documentation.

Remote access

OPTION 1: in a local network

While ROSbot is connected to a Wi-Fi network, you can access it by using its IPv4 address by SSH:

user@mylaptop:/home/user$
ssh husarion@<ROSBOT_IP>

OPTION 2: over the Internet (VPN)

If LAN access is not enough, you can access the ROSbot over the Internet using Husarnet.

Install Husarnet VPN both on your robot with:

husarion@rosbot3:/home/husarion$
curl -s https://install.husarnet.com/install.sh | sudo bash

And follow the guide from here.

Flashing the firmware

Access your ROSbot's terminal and run:

husarion@rosbot3:/home/husarion$
sudo rosbot.flash

The default root password is husarion.

Accessing ROS 2 interface

The ROS 2 driver is already launched on the system. You can find the available ROS 2 topics with:

husarion@rosbot3:/home/husarion$
ros2 topic list

ROS2 topic list

Controlling the robot

OPTION 1: Manual ROSbot driving with teleop_twist_keyboard

Now launch a teleop_twist_keyboard ROS node for manual ROSbot control:

husarion@rosbot3:/home/husarion$
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -p stamped:=true

After running the command, you will see the usage instruction:

ROSbot teleop

tip

You can launch the teleop node even simpler, directly from the rosbot snap:

husarion@rosbot3:/home/husarion$
rosbot.teleop

OPTION 2: Using a Logitech F710 Gamepad

You can also control ROSbot without coding by using a Logitech F710 gamepad (not included in the standard set).

To get started:

  • Connect the USB dongle to a USB-A port on the ROSbot’s rear panel.
  • Set the mode switch on the gamepad to D.
  • Hold down the LB button (dead man switch) and use the control sticks to drive the robot.

OPTION 3: Using the Web User Interface

The web-based user interface is ready to use out-of-the-box. Simply open the following URL in your web browser:

http://<ROSBOT_IO>/ui

ROSbot 3 Web User Interface

warning

If you can't see the image from the camera, restart the camera service with:

husarion@rosbot3:/home/husarion$
sudo husarion-depthai.restart

Reference projects

Running ROS natively is fine for relatively small projects. For more complex ones, the full dockerized setup is a good approach.

warning

The reference projects are based fully on Docker - before running them you need to stop the background services running from snaps:

husarion@rosbot3:/home/husarion$
sudo rosbot.stop
sudo husarion-webui.stop
sudo husarion-depthai.stop
sudo husarion-rplidar.stop

Find available projects below:

linkdescription
rosbot-gamepadControl the robot manually using a Logitech F710 gamepad
rosbot-autonomyA combination of mapping and navigation projects allowing simultaneous mapping and navigation in unknown environments.

Here is an example map generated with the rosbot-autonomy project.

map example

ROS / ROS 2 Tutorials

warning

Our ROS 2 tutorials were initially created for ROSbot 2 that had Orbbec Astra camera insteaf of Luxonis OAK-D like in ROSbot 3. ROS 2 camera topics will have different names

ROS 2 (Robot Operating System 2) provides libraries and tools to help software developers create robotic applications. We've put together a series of ROS 2 Tutorials dedicated for this platform that serve as a practical introduction to ROS 2. You can run them on any of our ROSbots, either on a physical robot or in the simulation environment. These step-by-step guides are tailored to accommodate both beginners embarking on their ROS 2 journey and experienced users looking to deepen their understanding of robot navigation.

Snap Cheatsheet

ROSbot operates on Ubuntu 24.04 with ROS 2 Jazzy preinstalled. The ROS 2 drivers for the mobile platform, LIDAR, camera, and web user interface are available as snaps, which can be found in the Snapcraft Store.

Preinstalled snaps:

Starting all snaps

husarion@rosbot3:/home/husarion$
sudo rosbot.start
sudo husarion-depthai.start
sudo husarion-rplidar.start
sudo husarion-webui.start

Stopping all snaps

husarion@rosbot3:/home/husarion$
sudo rosbot.stop
sudo husarion-depthai.stop
sudo husarion-rplidar.stop
sudo husarion-webui.stop

List all snap params

husarion@rosbot3:/home/husarion$
sudo snap get rosbot

ROSbot ROS 2 envs

Managing ROS 2 envs

ROS 2 environment variables in snaps are managed from ros parameter. You can list all ROS 2 envs used by snaps with this command:

husarion@rosbot3:/home/husarion$
sudo snap get rosbot ros

ROSbot ROS 2 envs

If you would like to change the ROS_DOMAIN_ID in the rosbot snap to 123 just run:

husarion@rosbot3:/home/husarion$
sudo snap set rosbot ros.domain-id=123

Husarion snaps support both rmw_fastdds_cpp and rmw_cyclonedds_cpp DDS implementations, including the custom setups. To list all available DDS setups run:

husarion@rosbot3:/home/husarion$
sudo snap set rosbot ros.transport=whatever

ROSbot available DDS setups

Now, if you would like to set the udp-lo setup, just run:

husarion@rosbot3:/home/husarion$
sudo snap set rosbot ros.transport=udp-lo

To display the DDS setup config file, run:

husarion@rosbot3:/home/husarion$
cat /var/snap/rosbot/common/dds-config-udp-lo.xml

ROSbot udp-lo dds setup

If you would like to create your own setup, create the file /var/snap/rosbot/common/dds-config-mysetup.xml, paste your own config there, save it, and select with:

husarion@rosbot3:/home/husarion$
sudo snap set rosbot ros.transport=mysetup

If you want to interface your ROS 2 nodes running directly on the host operating system layer, you need to have the same DDS setup as in your snap. You can set all required ROS 2 environment variables on your host OS with the /var/snap/rosbot/common/ros.env file:

husarion@rosbot3:/home/husarion$
source /var/snap/rosbot/common/ros.env

You can also add source envs from snap, directly from ~/.bashrc. To modify the ~/.bashrc file, run the utility script:

husarion@rosbot3:/home/husarion$
/var/snap/rosbot/common/manage_ros_env.sh