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.
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:
- Local Access
- Ethernet Access
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.
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
.
Wi-Fi Setup
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.
Usage
Remote Access
- LAN
- Husarnet VPN
While ROSbot is connected to a Wi-Fi network, you can access it by using its IPv4 address by SSH:
ssh husarion@<ROSBOT_IP>
Flash Firmware
Access your ROSbot's terminal and run:
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:
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:
- Teleop
- Gamepad
- WebUI
Manual ROSbot driving with teleop_twist_keyboard
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
You can 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.
The web-based user interface is ready to use out-of-the-box. Simply open the following URL in your web browser:
http://<ROSBOT_IP>:8080/ui
cmd_vel
messages are checked for validity by default. Messages may be considered outdated when the time on which the WebUI is running differs from the robot's time. It is worth synchronizing the time between devices.- If you can't see the image from the camera, restart the camera service with:
sudo husarion-depthai.restart
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.
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 2 Tutorials
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:
- rosbot
- husarion-webui
- husarion-depthai
- husarion-rplidar
Start Snaps
sudo rosbot.start
sudo husarion-depthai.start
sudo husarion-rplidar.start
sudo husarion-webui.start
Stop Snaps
sudo rosbot.stop
sudo husarion-depthai.stop
sudo husarion-rplidar.stop
sudo husarion-webui.stop
List Snap Params
sudo snap get rosbot
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:
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