Skip to main content

ROSbot XL

Overview

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

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

Specification

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

*Applicable with mecanum wheels

Components

ComponentQuantityDescription
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 motor437mm 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 40m 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

ItemQuantityDescription
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 (12-19V) which supports simultaneous power delivery and battery charging.

CAD models

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

Power supply & charging

tip

An internal battery is disconnected during transport. Before the first use, please unscrew the battery cover on the robot bottom side, connect the battery cable and close the cover.

ROSbot XL can be powered from internal Li-Ion battery or external power adapter. The adapter must be compatible with Power Delivery and the supported voltage is 12, 15 or 19V. We strongly recommend to use the power adapter delivered with the robot.

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. 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%).

Software

ROS / ROS 2 packages and Docker containers

All software on ROSbot XL are based on docker containers. List of avaliable containers you can find here.

ROS/ROS2 API

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

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

    Subscribes

    • /scan (sensor_msgs/LaserScan)

    Publishes

    • /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

    Subscribes

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

    Publishes

    • /tf (tf2_msgs/TFMessage) - base_link->odom transform
    • /odometry/filtered (nav_msgs/Odometry)
  • controller.launch.py from rosbot_xl_hardware, 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

    Subscribes

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

    Publishes

    • /tf (tf2_msgs/TFMessage)
    • /tf_static (tf2_msgs/TFMessage)
    • /_motors_cmd (std_msgs/Float32MultiArray)
    • /rosbot_xl_base_controller/odom (_nav_msgs/O

LED status

LEDcolorStateMessage
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

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

First Setup

1. After unpacking

Please make sure that you have connected the antenna and the battery (more info about the battery).

2. Connecting to ROSbot over Etherent

  • Turn on your ROSbot XL (press the power button for about 2 seconds)
  • Connect your laptop with Ethernet cable with ROSbot XL directrly.
  • Set a static IP address on your laptop on the Ethernet network card to 192.168.77.xx/24 subnet.
  • SSH to your ROSbot XL:
ssh husarion@192.168.77.2
# password: "husarion"

3. Connecting ROSbot XL to your Wi-Fi network:

Find available Wi-Fi networks with this Linux command:

husarion@rosbot-xl:/home/husarion$
nmcli dev wifi

ROSbot XL is using netplan instead of graphical Wi-Fi manager. It allows you to have all physical network interfaces configured from a single text file.

To connect your ROSbot to a Wi-Fi network, edit /etc/netplan/01-network-manager-all.yaml file, e.g. with nano:

husarion@rosbot-xl:/home/husarion$
sudo nano /etc/netplan/01-network-manager-all.yaml

And modify lines 22-23 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:

/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
# ========================================
# wlan0:
# dhcp4: no
# dhcp6: no
# addresses:
# - 192.168.100.1/24
# access-points:
# "rosbotap":
# band: 5GHz
# mode: "ap"
# password: "husarion"

then save the file (with ctrl+o if using nano), apply the new network setup:

husarion@rosbot-xl:/home/husarion$
sudo netplan apply

You can check to which Wi-Fi network your ROSbot is connected by using this command:

husarion@rosbot-xl:/home/husarion$
sudo iwgetid

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.

Type

husarion@rosbot-xl:/home/husarion$
sudo ifconfig

to find your IP address (for wlan0 network interface). Save it for later.

  1. [Optionally] Connecting your ROSbot your Husarnet VPN network. The full guide is avialable here

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

linkdescription
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.

All helpful documents and links in one place: