Skip to main content

ROSbot 2 PRO - quick start

ROSbot 2 PRO is an autonomous, open source robot platform for research and quick prototyping use cases. It can be used as a learning platform for Robot Operating System (ROS) as well as a base for a variety of robotic applications like inspection robots, custom service robots etc.

If you don't have one, you can get it here.


What's in the box:

  • carrying case
  • ROSbot 2 (with optional 3D camera and LiDAR already assembled)
  • Wi-Fi 2.4GHz antenna
  • 3x 18650 Li-Ion rechargeable batteries
  • universal charger with power adapter
  • charging cable
  • USB to Ethernet adapter

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 batteries:

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

To charge the batteries, follow this guide.

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

Installing ROSbot's system image


ROSbot 2 PRO is shipped with pre-installed ROS Melodic OS image. If you have just received your brand new ROSbot and you need ROS Melodic you can go to the next step.

Download one of the following operating system images for ROSbot 2 PRO:


NOTE for ROSbot 2 PRO users

Make sure that you have right BIOS settings:

  1. Connect a keyboard and a monitor to the robot and turn it on
  2. Press ESC during system booting to enter BIOS settings
  3. Keep password input field empty and press ENTER
  4. Go to Chipset -> South Bridge -> SCC eMMC Support
  5. Set to" PCI mode"

Please find OS reinstalation guide in ROSbot 2 PRO manual

Connecting ROSbot to your Wi-Fi network

At first ROSbot need to be connected to your Wi-Fi network.

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 USB port in the rear panel of ROSbot.
  2. Turn on the robot and wait until it boots.
  3. Connect to a Wi-Fi network using Ubuntu GUI.
  4. Open Linux terminal and type ifconfig to find your IP address. Save it for later.

Option 2: Using Ethernet adapter

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

  1. Turn on the robot and wait until it boots.
  2. Plug in Ethernet adapter (included in set) to USB port in the rear panel.
  3. Plug in one end of the Ethernet cable into your computer and another one to the adapter.
  4. To connect with ROSbot via ssh, type in your terminal application: ssh husarion@ and password husarion.
  5. Connect to a Wi-Fi network.
  • In the terminal, type nmtui and press Enter. You should see:

  • Go to Active a connection and tap Enter

  • Chose your Wi-Fi network and tap Enter one more time. Enter your password, confirm it and tap Esc to get back to main menu.

  • Use Quit to close nmtui.
  1. Type ifconfig to find your IP address. Save it for later.

Remote access in LAN

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


It's the simplest way to access ROSbot if you don't need to use graphic tools. You just have to type:

ssh husarion@<ROSBOT_IP>

Virtual Desktop (VNC)

1. Enable VNC server on the robot

ssh husarion@<ROSBOT_IP>
vncserver -localhost no -geometry 1280x720

you should see a similar output:

New 'ubuntu:1 (husarion)' desktop at :1 on machine ubuntu

Starting applications specified in /home/husarion/.vnc/xstartup
Log file is /home/husarion/.vnc/ubuntu:1.log

Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /home/husarion/.vnc/passwd ubuntu:1 to connect to the VNC server.

Note that, the desktop number is :1, we will use it in the following step

2. Install VNC client on your laptop to access the remote desktop of the robot:

sudo apt-get install tigervnc-viewer 
xtigervncviewer <ROSBOT_IP>:1

after you type the password (the default one is husarion) you should see the desktop of your ROSbot:

remote desktop for ROSbot

Remote access over the Internet (VPN)

Instead of using a local IPv4 address, you can access the robot by using its hostname - both in LAN and over the Internet. You just need to set up a VPN connection (Husarnet VPN client is pre-installed)

Find the Join Code

To connect your devices to the same Husarnet VPN network, you need to use the Join Code associated with that network.

You will find your Join Code in your account at

-> Click on the desired network
-> Add element button
-> Join Code tab

Connecting your ROSbot

sudo systemctl enable husarnet
sudo systemctl start husarnet
sudo husarnet join PASTE_YOUR_JOIN_CODE_HERE rosbot

Connecting your laptop

Install Husarnet VPN client on your laptop:

curl | sudo bash
sudo systemctl restart husarnet
sudo husarnet join PASTE_YOUR_JOIN_CODE_HERE mylaptop

Testing the connection

That's all - now you can use your device hostname instead of IPv4 addr, e.g.:

ssh husarion@myrosbot

to access the robot over SSH, or

xtigervncviewer myrosbot:1

For a virtual desktop.

ROSbot ROS packages

At this stage you should have your ROSbot up and running, with remote (LAN or VPN) connection from your laptop.

You can run ROSbot's ROS packages natively on your ROSbot's host OS, by just cloning and building rosbot_ros repo, however the more convenient way is using Docker images for that.

Pulling basic docker images for ROSbot:

Create a new file /home/husarion/compose.rosbot2pro.core.yaml

nano /home/husarion/compose.rosbot2pro.core.yaml

and paste the following content inside:

# Quick Start
# Type in the ROSbot 2 PRO shell:
# $ docker compose -f compose.rosbot2pro.core.yaml up

x-common-config: &common-config
restart: unless-stopped
network_mode: host
ipc: host


image: husarion/ros:foxy-ros1-bridge
<<: *common-config
command: ros2 run ros1_bridge dynamic_bridge --bridge-all-1to2-topics

image: ros:noetic-ros-core
<<: *common-config
tty: true
command: roscore

image: husarion/rosbot:noetic
<<: *common-config
tty: true
- SERIAL_PORT=/dev/ttyS4
- /dev/ttyS4
command: roslaunch --wait rosbot_bringup rosbot_docker.launch

Press <ctrl + o> and then <ctrl + x> to save and quit.

Pull docker images with:

husarion@rosbot:/home/rosbot$ ...
docker compose -f /home/husarion/compose.rosbot2pro.core.yaml pull

We are using a ROSbot ROS package for ROS 1 Noetic distribution, however we also launch ROS 1 bridge, so the setup will be compatible with ROS 2 Foxy.

Flashing the firmware

Both husarion/rosbot:noetic and husarion/rosbot:melodic docker images include corresponding firmware for STM32F4 (a low level microcontroller that controls motors, GPIO ports and TOF distance sensors).

To flash the right firmware, open ROSbot's terminal and execute one of the following command (if you use ROS noetic tag):

  • for differential drive (regular wheels):

    docker run --rm -it --privileged \
    husarion/rosbot:noetic \
    / /root/firmware_diff.bin
  • for omnidirectional wheeled ROSbot (mecanum wheels):

    docker run --rm -it --privileged \
    husarion/rosbot:noetic \
    / /root/firmware_mecanum.bin

Running the ROSbot Docker image (host mode)

ROSbot Docker image for hardware (ROS Melodic & Noetic)   ROSbot Docker image for simulation (ROS Melodic & Noetic)

To launch ROSbot nodes, paste the following command in the ROSbot's terminal (depending on the OS images you use):

docker compose -f /home/husarion/compose.rosbot2pro.core.yaml up -d

At this point, ROS nodes from the containers are available on the level of the host operating system.

Open a new terminal and check available ROS topics:

ros2 topic list

ROSbot with Navigation2 and Slam Toolbox

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

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

ROSbot with Navigation2 and Slam Toolbox

Autonomous navigation demo

Now you know how to access ROSbot's ROS node from the Linux terminal.

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

We have created a reference project to show you how to run autonomous mapping and navigation on ROSbot using Navigation2 and SLAM Toolbox. Everything is Docker based, so running it is straightforward.


Autonomous navigation demo starts ROSbot's containers in different configuration, so remember to stop the basic setup at first:

docker compose -f /home/husarion/compose.minimal.ros.yaml down
Open Source GitHub Demo

Controlling ROSbot running Navigation2 and SLAM Toolbox from Rviz running on your laptop.

ROSbot with Navigation2 and Slam Toolbox

The demo project contains ROSbot's ROS 1 node, but all others are ROS 2 nodes. Thanks to Docker combining ROS and ROS 2 nodes in the single system is easy and transparent.

Both setups for physical ROSbot and its Gazebo simulation are available.

Find the full demo here: