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.
If you don't have ROSbot 3 or ROSbot 3 PRO yet, you can get it from the online store.
This is a quick start guide. If you need a manual instead, you can find it here.
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.
- Plug in a display with HDMI, mouse and keyboard into the USB port on the rear panel of the ROSbot.
- Turn on the robot and wait until it boots.
- Open the terminal with the
Ctrl
+Alt
+t
shortcut
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.
-
Turn on the robot and wait until it boots.
-
Plug in the Ethernet adapter (included in a set) to a USB port on the rear panel of the ROSbot.
-
Plug one end of the Ethernet cable into your computer and another one to the adapter.
-
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 alsohusarion
.
Connecting ROSbot to the Wi-Fi network
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:
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
:
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
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:
sudo netplan -d apply
You can check to which Wi-Fi network your ROSbot is connected by using this command:
sudo iwgetid
To find your IP address (for the wlan0
network interface) type:
ip -4 addr show wlan0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
Save this IP address for the next step.
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:
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:
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:
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:
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:
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -p stamped:=true
After running the command, you will see the usage instruction:
You can launch the teleop node even simpler, directly from the rosbot
snap:
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
If you can't see the image from the camera, restart the camera service with:
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.
The reference projects are based fully on Docker - before running them you need to stop the background services running from snaps:
sudo rosbot.stop
sudo husarion-webui.stop
sudo husarion-depthai.stop
sudo husarion-rplidar.stop
Find available projects below:
link | description |
---|---|
rosbot-gamepad | Control the robot manually using a Logitech F710 gamepad |
rosbot-autonomy | A 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.
ROS / ROS 2 Tutorials
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:
- rosbot
- husarion-webui
- husarion-depthai
- husarion-rplidar
Starting all snaps
sudo rosbot.start
sudo husarion-depthai.start
sudo husarion-rplidar.start
sudo husarion-webui.start
Stopping all snaps
sudo rosbot.stop
sudo husarion-depthai.stop
sudo husarion-rplidar.stop
sudo husarion-webui.stop
List all snap params
sudo snap get rosbot
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:
sudo snap get rosbot ros
If you would like to change the ROS_DOMAIN_ID
in the rosbot
snap to 123
just run:
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:
sudo snap set rosbot ros.transport=whatever
Now, if you would like to set the udp-lo
setup, just run:
sudo snap set rosbot ros.transport=udp-lo
To display the DDS setup config file, run:
cat /var/snap/rosbot/common/dds-config-udp-lo.xml
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:
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:
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:
/var/snap/rosbot/common/manage_ros_env.sh