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


Helpful links
OS version

This guide is based on the latest OS ROSbot 3 Jazzy System Image (2024-10-25).

Read more about OS reinstallation.

Preparation

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

Connect Batteries and 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.

Setting up

Access the Robot Terminal

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

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
Boot time

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

Wi-Fi Setup

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.

Usage

Remote Access

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>

Flash Firmware

Access your ROSbot's terminal and run:

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

The default root password is husarion.

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

Robot Control

The robot is controlled by sending a cmd_vel topic with information about the desired speed. This can be done in many ways, including:

Manual ROSbot driving with teleop_twist_keyboard

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

Helpful Resources

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 2 Tutorials

warning

Our ROS 2 tutorials were initially created for ROSbot 2 that had Orbbec Astra camera instead 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:

Start Snaps

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

Stop Snaps

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

List Snap Params

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

ROSbot ROS 2 envs

Manage 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