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​
Attribute | Description |
---|---|
Dimensions without camera and LiDAR | 332 x 284 x 131 mm / 13.1 x 11.2 x 5.2in [L x W x H] |
Chassis material | Powder-coated aluminum plate, 1.5mm thick, top plate 3mm |
Maximum translational velocity | 0.8 m/s |
Maximum rotational velocity | 180 deg/s (3.14 rad/s) |
Maximum load capacity | Up to 10kg / 352oz* |
Battery life | 2h - 6h |
*Applicable with mecanum wheels
Components​
Component | Quantity | Description |
---|---|---|
Digital Board | 1 | Real-time controller based on STM32F407 microcontroller. |
Power Board | 1 | USB-C Power Delivery input (12-20V) which supports simultaneous power delivery and battery charging. |
DC motor | 4 | 37mm DC motor with 50:1 gearbox and 64CPR encoder. |
IMU sensor | 1 | Intelligent 9-axis absolute orientation sensor BNO055, more details |
LIDAR | 1 | RPLIDAR S1, 360 degree and up to 40m range, more details |
RGBD camera | 1 | Orbbec Astra with RGB image size 640x480 and depth image size 640x480. |
Li-Ion Batteries | 1 | 11.1V 7800mAh 86Wh |
Antenna | 1 | Connected directly to Wi-Fi module. |
Speaker | 1 | Driven 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.
Rear panel description​
Item | Quantity | Description |
---|---|---|
Antenna connector | 1 (2) | Wi-Fi antenna RP-SMA socket. Required for Wi-Fi connectivity. For some SBCs, 2 antennas are used. |
USB | 2 | USB 2.0 host ports from SBC. |
HDMI | 1 | HDMI output from SBC. |
Power button | 1 | Turns ROSbot ON or OFF. Hold for 1.5 seconds to turn robot on, 0.5 seconds to turn off. |
LEDs | 4 | LED1(green), LED2(red), LED3(green), LED4(red) |
DB Reset | 1 | Button used for reset digital board. |
PB Reset | 1 | Hidden button used for reset power board. |
User button | 1 | Programmable button. |
USB type C power input | 1 | USB-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
fromlaser_filters
, it subscribes to/scan
topic and removes all points that are within robots footprint (defined by configlaser_filter.yaml
inrosbot_xl_bringup
package). Filtered laserscan is then published on/scan_filtered
topicSubscribes
/scan
(sensor_msgs/LaserScan)
Publishes
/scan_filtered
(sensor_msgs/LaserScan)
ekf_node
fromrobot_localization
, it is used to fuse wheel odometry and IMU data. Parameters are defined inekf.yaml
inrosbot_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
topicSubscribes
/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
fromrosbot_xl_hardware
, it loads robot model defined inrosbot_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 ofmecanum
argument it can beDiffDriveController
orMecanumDriveController
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​
LED | color | State | Message |
---|---|---|---|
LED1 | green | ON | Firmware finished booting |
LED2 | red | Toggling | Error of RTOS'a or microROS |
Low bat | red | ON | Batery level is low |
Charging | green | Toggling | Battery is charging |
Charging | green | ON | Battery is fully charged |
Power button | white | ON | Power is ON |
Power button | white | Toggling | System is shuting down |
Pixel panels | RGB | Programmable | In 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:
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
:
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:
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:
sudo netplan apply
You can check to which Wi-Fi network your ROSbot is connected by using this command:
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
sudo ifconfig
to find your IP address (for wlan0
network interface). Save it for later.
- [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:
link | description |
---|---|
rosbot-xl-gamepad | Control the robot manually using a Logitech F710 gamepad |
rosbot-xl-mapping | Create a map (using slam_toolbox) of the unknow environment with ROSbot controlled in LAN or over the Internet |
rosbot-navigation | Autonomous navigation (using navigation2) on a given map. |
Docs and links​
All helpful documents and links in one place: