Skip to main content



ROSbot XL is a 4x4 drive autonomous mobile robot platform equipped with LIDAR, RGB-D camera, IMU, encoders, etc. Powered by ROS / ROS 2.

This is a manual. Would you need a quick start guide instead?

ROSbot is an affordable robot platform for rapid development of autonomous robots. It can be a base for industrial robots, custom service robots, inspection robots and robots working in swarms.

  • Aluminium chassis
  • 4 x DC motors + quadrature encoders
  • IMU
  • Built-in USB hub (2 external and 2 internal ports available)
  • Built-in Li-Ion 3S battery (11.1V 7800mAh 86Wh)
  • Power board with advanced energy management (USB-C Power Delivery compatible, protection circuits, contactless charging option)
  • Selectable power for SBC supply (5V, 12V, 19V)
  • Programmable RGB perimeter LEDs, speaker
  • Ethernet based communication between SBC and STM32F4 based digital controller
  • Variety of compatible SBC (Raspberry Pi, NVIDIA Jetson, Intel NUC i3)
  • Universal mounting plate (for LIDARs, robot arms etc.)

Hardware guide


See more detailed drawing here

Dimensions without camera and LiDAR332 x 284 x 131 mm / 13.1 x 11.2 x 5.2 in [L x W x H]
Chassis materialPowder-coated aluminum plate, 1.5 mm thick, top plate 3 mm
Weight *5380g
Maximum translational velocity0.8 m/s
Maximum rotational velocity180 deg/s (3.14 rad/s)
Maximum load capacity *Up to 10 kg / 352 oz
Battery life2h - 6h

*With mecanum wheels, RPi4 SBC and no sensors.


SBC1User computer: NUC i3-10110U 16GB RAM 250GB SSD or Raspberry Pi 4B 4GB or NVIDIA Jetson Nano 4GB RAM
Digital Board1Real-time controller based on STM32F407 microcontroller.
Power Board1USB-C Power Delivery input (12-20V) which supports simultaneous power delivery and battery charging.
DC motor437 mm DC motor with 50:1 gearbox and 64CPR encoder.
IMU sensor1Intelligent 9-axis absolute orientation sensor BNO055, more details
LIDAR1RPLIDAR S1, 360 degree and up to 40 m range, more details
RGBD camera1Orbbec Astra with RGB image size 640x480 and depth image size 640x480.
Li-Ion Batteries111.1V 7800mAh 86Wh
Antenna1Connected directly to Wi-Fi module.
Speaker1Driven from Digital Board or from SBC (selectable source).

Block diagram

A graphic representation of ROSbot XL components and connections between them. The detailed version: [PDF] ROSbot XL block diagram.

Architecture diagram

Rear panel description

Rear panel description

Antenna connector1 (2)Wi-Fi antenna RP-SMA socket. Required for Wi-Fi connectivity. For some SBCs, 2 antennas are used.
USB2USB 2.0 host ports from SBC.
HDMI1HDMI output from SBC.
Power button1Turns ROSbot ON or OFF. Hold for 1.5 seconds to turn robot on, 0.5 seconds to turn off.
LEDs4LED1(green), LED2(red), LED3(green), LED4(red)
DB Reset1Button used for reset digital board.
PB Reset1Hidden button used for reset power board.
User button1Programmable button.
USB type C power input1USB-C Power Delivery input (15-20V) which supports simultaneous power delivery and battery charging.

LED statuses

LED1greenONFirmware finished booting
LED2redTogglingError of RTOS'a or microROS
Low batredONBatery level is low
CharginggreenTogglingBattery is charging
CharginggreenONBattery is fully charged
Power buttonwhiteONPower is ON
Power buttonwhiteTogglingSystem is shuting down
Pixel panelsRGBProgrammableIn default shows looped animation

Battery & charging


An internal battery is disconnected during transport. Connect the battery plug before the first use. You need to unscrew the battery cover first. See Quick start for more detailed guide.

When you receive the robot, the battery level should be about 30-40%. You do not need to perform any initial procedures, however, we recommend to begin the first software setup with the charger plugged. The battery will charge to a higher level and you avoid draining it to zero, which is not recommended just after the storage/transport period. The current battery voltage can be read from the ROS API. The voltage should never fall under 9V, which is the "0%" level, and should not exceed 12.6V, which is "100%" level.

Battery & charger parameters

Battery typeLi-Ion3S configuration
Battery voltage & capacity11.1V 7800mAh86.5Wh
Max. discharge current8A
Max. charge current2.7Alimited by robot
Charging temp. range0°C - 45°C
Operating temp. range-20°C - 60°C
Charger20V 65WPD2.0/3.0 compatible


ROSbot XL integrates an on-board battery charger. The charging process starts automatically after connecting the power adapter and terminates when the battery is full. The low battery level is indicated by "Low bat" LED on the rear panel.

We strongly recommend to use the power adapter delivered with the robot. However, it is also possible to supply/charge the robot with any adapter that is compatible with Power Delivery (PD2.0/PD3.0) and provides 15V or 20V output with the minimum 3A current (the current draw is internally limited to 2.8A).

There are 4 possible modes of operation:

  • a) Active, battery only.
  • b) Active, battery + power adapter. In this mode the robot can be used and charged simultaneously. The battery is used only when the robot current consumption exceeds the power adapter maximum current.
  • c) Inactive (powered off), battery only. Robot in this state does not draw current from battery and can remain in this state for weeks. The battery state should be checked every 6-8 weeks and recharged if the battery level is below 25%. For a prolonged storage, the best battery level is 40-50%.
  • d) Inactive, battery + power adapter. In this state the battery charges with the maximum speed (2.5A maximum). Robot can be switched on at any time, with transition to mode "b)".

The battery charging process should take about 5-6 hours in d) mode (from 0% to 100%).

User compartment


ROSbot XL allows the user access to its interior by default. This chapter describes the items (connectors, switches, cables) that can be utilized by user. Please read it carefully before making any changes inside the robot. Please keep in mind that despite modifications are allowed, you need to have a basic experience with electronic circuits/boards to avoid damage. The interior is not protected in any way and it is very easy to make a damage to the robot. Damages made by user are not covered by our limited warranty.

Digital board items

A digital board is the big, white PCBA, located on the rear end of the robot.

DIP switch on Digital Board (DIP_SW)

The switch sections are numbered from the left:

SectionFunctionOFF settingON setting
1Speaker sourceaudio source = SBC (via CON19)audio source = MCU
2nonefor future usefor future use
3MCU BOOT0MCU boot from FLASHMCU bootloader active

Analog audio input (AUDIO_IN)

Analog audio input of integrated amplifier and speaker. Designed for SBC audio output connection. DIP_SW section 1 shall be set to OFF when this input is used. If you ordered ROSbot XL with Raspberry Pi 4, this cable is already connected.

PinSignalInput nameSource node
1GNDReference/shield ground-
2IN+Differential input positiveLeft channel
3IN-Differential input negativeGround

Usually SBCs do not have differential audio output. Therefore, please use GND as a shield, IN+ as a signal input and IN- as a ground connection on the SBC side. This "pseudo-differential" connection helps with noise limiting. The connector plug type is JST XHP-3.

Extra GPIO - bank 1 (EXT1)

The EXT1 connector contains a few GPIOs that can be used by more experienced users. All signals are in 3.3V logic and all of them have 220R resistor in series.

PinSignal nameComment
7I2C1_SCLExternal pull-up needed
8I2C1_SDAExternal pull-up needed
12+3V3_PROTPower supply output. OC protection at 500mA
14+5V_PROTPower supply output. OC protection at 500mA

Extra GPIO - bank 2 (EXT2)

The EXT1 connector contains a few GPIOs that can be used by more experienced users. All signals are in 3.3V logic and all of them have 220R resistor in series. In addition, the pins with ADC (Analog-to-Digital Converter) function have 100nF capacitor closer to the MCU.

PinSignal nameComment
2BOOT0pull-down on board
4NRSTpull-up on board
9I2C3_SDAExternal pull-up needed
10I2C3_SCLExternal pull-up needed
11CAN1_TXExternal transceiver needed
12CAN1_RXExternal transceiver needed
14+5V_PROTPower supply output. OC protection at 500mA

The connector type for both EXT1 and EXT2 ports is a commonly-known ribbon IDC cable connector, with pin-to-pin pitch 2.54mm (0.1") and the ribbon cable pitch 1.27mm (0.05"). The example model is Harting 09 18 514 5813 58U.

Power board items

A power board is the vertically oriented, white PCBA, located in parallel to the right side of the robot. Below you can see the fragment of it - the upper left corner.

There are several items which need a better description:

DIP switch on Power Board (SW1)

This switch changes the SBC supply voltage available on SBC supply port (CON9, pin 2) and User supply port (CON8, pin 2). The switch sections are numbered from the left:

SectionFunctionDefault settingComment
1noneOFFdo not change
2noneONdo not change
3SBC supply 19V enableOFFTurn to ON for 19V output. Keep OFF for 12V.

SBC supply port (CON9)

This connector is used to supply the user computer. If you purchased ROXbot XL with the chosen user computer, the power supply for this SBC is already connected here. The pinout may be useful if you would like to install or replace the SBC by yourself.

PinSignalMax currentComment
2+12V/+19V4.75A/3Aset with DIP switch
3Vbat25A9V ... 12.6V

Compatible plug housing: Molex 43025-0400. Compatible plug terminal: Molex 43030-0007

User supply port (CON8)

PinSignalMax currentComment
2+12V/+19V3Aset with DIP switch
3Vbat13A9V ... 12.6V

The connector plug type is JST XHP-4.


The +5V and +12/19V line are shared between CON8 and CON9. The total current for both cannot exceed the maximum current for CON9. The Vbat1/Vbat2 lines are shared with all other circuits, including motors, +5V, +12V/+19V. Therefore, depending on the total power usage, the maximum current on Vbat1/Vbat2 can be lower than specified here.

CAD models

To facilitate the work with the project based on ROSbot XL platform, we have prepared CAD models for download in three extension formats:


Software packages for ROSbot XL are available in the rosbot_xl_ros repository.

Docker containers

The recommended way of running software on ROSbot XL is using docker containers, here you can find the list of available containers.


Use from rosbot_xl_bringup to start all base functionalities for ROSbot XL. It consists of the following parts:

  • scan_to_scan_filter_chain from laser_filters, it subscribes to /scan topic and removes all points that are within the robot's footprint (defined by config laser_filter.yaml in rosbot_xl_bringup package). Filtered laserscan is then published on /scan_filtered topic


    • /scan (sensor_msgs/LaserScan)


    • /scan_filtered (sensor_msgs/LaserScan)
  • ekf_node from robot_localization, it is used to fuse wheel odometry and IMU data. Parameters are defined in ekf.yaml in rosbot_xl_bringup/config. It subscribes to /rosbot_xl_base_controller/odom and /imu_broadcaster/imu published by ros2 controllers and publishes fused odometry on /odometry/filtered topic


    • /rosbot_xl_base_controller/odom (nav_msgs/Odometry)
    • /imu_broadcaster/imu (sensor_msgs/Imu)


    • /tf (tf2_msgs/TFMessage) - base_link->odom transform
    • /odometry/filtered (nav_msgs/Odometry)
  • from rosbot_xl_controller, it loads robot model defined in rosbot_xl_description as well as ros2 control rosbot_hardware_interfaces. It also starts controllers:

    • joint_state_broadcaster
    • rosbot_xl_base_controller - depending on the value of mecanum argument it can be DiffDriveController or MecanumDriveController
    • imu_broadcaster


    • /cmd_vel (geometry_msgs/Twist)
    • /_motors_responses (sensor_msgs/JointState)
    • /_imu/data_raw (sensor_msgs/Imu)


    • /tf (tf2_msgs/TFMessage)
    • /tf_static (tf2_msgs/TFMessage)
    • /_motors_cmd (std_msgs/Float32MultiArray)
    • /rosbot_xl_base_controller/odom (nav_msgs/Odometry)
    • /imu_broadcaster/imu (sensor_msgs/Imu)

Use micro_ros_agent to communicate with Digital Board, it provides the following interface:


  • /_motors_cmd (std_msgs/Float32MultiArray)


  • /_motors_responses (sensor_msgs/JointState)

  • /_imu/data_raw (sensor_msgs/Imu)

  • /battery_state (sensor_msgs/BatteryState)

Operating System image reinstallation

In some cases you will need to restore ROSbot system to its default settings:

  • in case of accidential damage of the system,
  • to update the OS (it can be udpated remotely, but flashing the microSD card can be easier sometimes),
  • to clear all user changes and restore factory settings.

This process will differ depending on ROSbot version that you have. Find the full instruction here

Reference projects

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

Find available projects below:

rosbot-xl-gamepadControl the robot manually using a Logitech F710 gamepad
rosbot-xl-mappingCreate a map (using slam_toolbox) of the unknow environment with ROSbot controlled in LAN or over the Internet
rosbot-navigationAutonomous navigation (using navigation2) on a given map.

ROS 2 Tutorials


ROS 2 Tutorials are still in the process of development, with new tutorials coming soon.

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.

All helpful documents and links in one place: