ROSbot 3
Overviewโ
ROSbot is a ROS powered 4x4 drive autonomous mobile robot platform equipped with LIDAR, RGB-D camera, IMU, encoders, distance sensors.
Available in three versions: 3 / 3 PRO (current version), 2R / 2 PRO (discontinued) and 2 (deprecated).
ROSbot 3 is an affordable robot platform for rapid development of autonomous robots. It can be a base for custom service robots, inspection robots and robots working in swarms. All versions integrates:
- 4-wheels mobile platform containing DC motors with encoders and an aluminum frame
- IMU: BNO055 (accelerometer + gyro)
- rear panel providing interfaces for additional modules
ROSbot versionsโ
ROSbot is available in three options which, next to features mentioned before, also include:
- ROSbot 3 / ROSbot 3 PRO
- ROSbot 2R
- ROSbot 2 PRO
- ROSbot 2
- Raspberry Pi 5 (ARM64 architecture) quad-core ARM-8 Cortex A76 @ 2.4GHz, 8GB RAM and 64 GB MicroSD flash memory.
- 3D camera: Luxonis OAK-D Lite / Pro
- LIDAR: RPLIDAR C1 / S2
- Raspberry Pi 4 (ARM64 architecture) quad-core ARM-8 Cortex-A72 @ 1.5 GHz, 4GB RAM and 32 GB MicroSD flash memory.
- 3D camera: Orbbec Astra
- LIDAR: RPLIDAR A2
- UP Board with Intelยฎ ATOMโข x5-Z8350 Processors (x64 architecture) up to 1.92GHz, 4GB DDR3L RAM and 32GB eMMC.
- 3D camera: Orbbec Astra
- LIDAR: RPLIDAR A3
Starting from August 31, 2023 ROSbot 2 (a.k.a. 2.0 / 2.1) will go end-of-life. As of this date, new features wonโt be developed for ROSbot 2 and we will no longer be providing support for this model. More information in the announcement.
If you require continued support and advanced capabilities, please consider switching to ROSbot 2R or ROSbot 2 PRO.
- Asus Tinker Board with Rockchip RK3288 (ARM32 architecture) up to 1,8GHz, 2GB DDR3 RAM and 32 GB MicroSD.
- RPLIDAR A2 laser scanner
ROSbot 2 is discontinued, but you can get its new generation - ROSbot 2R - available here.
Gazebo Simulation Modelโ
You can also test the performance of ROSbot using our simulation model in Gazebo environment. It is available here, at our GitHub page.
You can find free ROS tutorials dedicated for ROSbot under this link. They will guide you through different aspects of programming autonomous vehicles in ROS
Hardware guideโ
Specificationโ
- ROSbot 3 / ROSbot 3 PRO
- ROSbot 2R
- ROSbot 2 PRO
- ROSbot 2
Attribute | Description |
---|---|
Dimensions with camera and LiDAR | 200 x 233 x 197 mm / 7.9 x 9.2 x 7.7 in [L x W x H] |
Dimensions without camera | 200 x 233 x 141 mm / 7.9 x 9.2 x 5.6 in [L x W x H] |
Dimensions without camera and LiDAR | 200 x 233 x 103 mm / 7.9 x 9.2 x 4.0 in [L x W x H] |
Weight | 2,84 kg / 100 oz (with camera and LiDAR), 2,45 kg / 86 oz (without camera and LiDAR) |
Standard wheel diameter / Clearance / Wheelbase | 84 mm / 23 mm / 106 mm |
Mecanum wheel diameter / Clearance / Wheelbase | 97 mm / 30 mm / 106 mm |
Chassis material | Powder-coated aluminum plate, 1.5 mm thick |
Maximum translational velocity | 1.0 m/s |
Maximum rotational velocity | 420 deg/s (7.33 rad/s) |
Maximum load capacity | Up to 5 kg / 176 oz *not in continuous work |
Battery life | 1.5h - 5h |
Attribute | Description |
---|---|
Dimensions with camera and LiDAR | 200 x 233 x 216 mm / 7.9 x 9.2 x 8.5 in [L x W x H] |
Dimensions without camera | 200 x 233 x 143 mm / 7.9 x 9.2 x 5.6 in [L x W x H] |
Dimensions without camera and LiDAR | 200 x 233 x 103 mm / 7.9 x 9.2 x 4.0 in [L x W x H] |
Weight | 2,84 kg / 100 oz (with camera and LiDAR), 2,45 kg / 86 oz (without camera and LiDAR) |
Standard wheel diameter / Clearance / Wheelbase | 90 mm / 23 mm / 106 mm |
Mecanum wheel diameter / Clearance / Wheelbase | 100 mm / 30 mm / 106 mm |
Chassis material | Powder-coated aluminum plate, 1.5 mm thick |
Maximum translational velocity | 1.0 m/s |
Maximum rotational velocity | 420 deg/s (7.33 rad/s) |
Maximum load capacity | Up to 5 kg / 176 oz *not in continuous work |
Battery life | 1.5h - 5h |
Attribute | Description |
---|---|
Dimensions with camera and LiDAR | 200 x 237 x 219 mm / 7.9 x 9.3 x 8.6 in [L x W x H] |
Dimensions without camera | 200 x 237 x 146 mm / 7.9 x 9.3 x 5.8 in [L x W x H] |
Dimensions without camera and LiDAR | 200 x 237 x 106 mm / 7.9 x 9.3 x 4.2 in [L x W x H] |
Weight | 2,84 kg / 100 oz (with camera and LiDAR), 2,45 kg / 86 oz (without camera and LiDAR) |
Standard wheel diameter / Clearance / Wheelbase | 90 mm / 26 mm / 106 mm |
Mecanum wheel diameter / Clearance / Wheelbase | 100 mm / 30 mm / 106 mm |
Chassis material | Powder-coated aluminum plate, 1.5 mm thick |
Maximum translational velocity | 1.0 m/s |
Maximum rotational velocity | 420 deg/s (7.33 rad/s) |
Maximum load capacity | Up to 5 kg / 176 oz *not in continuous work |
Battery life | 1.5h - 5h |
Attribute | Description |
---|---|
Dimensions with camera and LiDAR | 198 x 228 x 218 mm / 7.80 x 8.98 x 8.58 in [L x W x H] |
Dimensions without camera | 198 x 228 x 144 mm / 7.80 x 8.98 x 5.67 in [L x W x H] |
Dimensions without camera and LiDAR | 198 x 228 x 103 mm / 7.80 x 8.98 x 4.06 in [L x W x H] |
Weight | 2,84 kg / 100 oz (with camera and LiDAR), 2,45 kg / 86 oz (without camera and LiDAR) |
Wheel diameter / Clearance / Wheelbase | 85 mm / 24 mm / 106 mm |
Chassis material | Powder-coated aluminum plate, 1.5 mm thick |
Maximum translational velocity | 1.0 m/s |
Maximum rotational velocity | 420 deg/s (7.33 rad/s) |
Maximum load capacity | Up to 5 kg / 176 oz *not in continuous work |
Battery life | 1.5h - 5h |
Componentsโ
- ROSbot 3 / ROSbot 3 PRO
- ROSbot 2R
- ROSbot 2 PRO
Components descriptionโ
Component | Quantity | Description |
---|---|---|
Infrared distance sensor | 4 | VL53L0X Time-of-Flight distance sensor with up to 200 cm range, more details |
Built-in Microcontroller | 1 | STM32F407. |
DC motor | 4 | Xinhe Motor XH-25D, Motor used: RF-370, 6VDC nominal, 6200rpm. Maximum mechanical power: 4W, no load speed at the output shaft: 180 rpm, stall torque at the output shaft: 2.9 kg*cm, stall current: 2.0A, gear ratio: ~34 (exact ratio is 30613/900) |
Encoder | 4 | Magnetic, 48cpr, 12 poles |
Batteries | 3 | Li-Ion 18650 protected, rechargeable batteries, 3500mAh capacity, 3.7V nominal voltage. Note: Device may be shipped interchangeably with similar batteries. |
- ROSbot 3 / ROSbot 3 PRO
- ROSbot 2R
- ROSbot 2 PRO
- ROSbot 2
Component | Quantity | Description |
---|---|---|
SBC | 1 | Raspberry Pi 5 (ARM64 architecture) quad-core ARM-8 Cortex A76 @ 2.4GHz, 8GB RAM and 64 GB MicroSD flash memory. The SBC runs on Ubuntu-based OS, customized to use ROS. |
3D camera | 1 | Luxonis OAK-D Lite (in ROSbot 3) / OAK-D Pro (in ROSbot 3 PRO) |
LIDAR | 1 | RPLIDAR C2 (in ROSbot 3) / S2 (in ROSbot 3 PRO), 360 degree, more details |
IMU sensor | 1 | Intelligent 9-axis absolute orientation sensor BNO055, more details |
Antenna | 1 | Dual-band, connected to the Wi-Fi USB adapter. |
Block diagramโ
Graphic representation of ROSbot 3 components and connections between them.
Component | Quantity | Description |
---|---|---|
SBC | 1 | Raspberry Pi 4 with Broadcom BCM2711 (ARM64 architecture) quad-core ARM-8 Cortex-A72 1.5 GHz, 4GB RAM and 32 GB MicroSD.. The SBC runs on Ubuntu-based OS, customized to use ROS. |
3D camera | 1 | Orbbec Astra with RGB image size 640x480 and depth image size 640x480. |
LIDAR | 1 | RpLidar A2, 360 degree and up to 12m range, more details |
IMU sensor | 1 | Intelligent 9-axis absolute orientation sensor BNO055, more details |
Antenna | 1 | Dual-band, connected to the Wi-Fi USB adapter. |
Block diagramโ
Graphic representation of ROSbot 2R components and connections between them.
Component | Quantity | Description |
---|---|---|
SBC | 1 | UpBoard with 4 GB RAM, Quad-Core Intel Atom Z8350 1,92 GHz as CPU, a Intelยฎ HD 400 Graphics as a GPU and 32GB eMMC. The SBC runs on Ubuntu-based OS, customized to use ROS. |
3D camera | 1 | Orbbec Astra with RGB image size 640x480 and depth image size 640x480. |
LIDAR | 1 | RpLidar A3, 360 degree and up to 25m range, more details |
IMU sensor | 1 | Powerful 9-Axis Accel/Gyro/Magnetometer sensor with MPU-9250, more details or Intelligent 9-axis absolute orientation sensor BNO055, more details |
Antenna | 1 | 2.4GHz, connected to the Wi-Fi USB adapter with RP-SMA(f) โท I-PEX MHF cable. |
Block diagramโ
Graphic representation of ROSbot 2 PRO components and connections between them.
Component | Quantity | Description |
---|---|---|
SBC | 1 | Asus Tinker Board with 2 GB RAM, Rockchip RK 3288 with 4x 1.80 GHz as CPU and a ARM Mali-T764 MP2 as a GPU and 32 GB MicroSD. The SBC runs on Ubuntu-based OS, customized to use ROS. |
3D camera | 1 | Orbbec Astra with RGB image size 640x480 and depth image size 640x480. |
LIDAR | 1 | RpLidar A2, 360 degree and up to 8m range, more details |
IMU sensor | 1 | Powerful 9-Axis Accel/Gyro/Magnetometer sensor with MPU-9250, more details or Intelligent 9-axis absolute orientation sensor BNO055, more details |
Antenna | 1 | 2.4GHz, connected directly to the Asus Tinker Board Wi-Fi module. Uses an RP-SMA(m) โท I-PEX MHF4 cable to connect the antenna with SBC. |
Block diagramโ
Graphic representation of ROSbot 2 components and connections between them.
Rear panel descriptionโ
- ROSbot 3 / ROSbot 3 PRO
- ROSbot 2R
- ROSbot 2 PRO
- ROSbot 2
Component | Quantity | Description |
---|---|---|
Antenna connector | 1 | Wi-Fi antenna RP-SMA socket - required for Wi-Fi connectivity |
USB | 2 | USB 2.0 host ports from SBC |
HDMI | 1 | HDMI output from SBC |
Power switch | 1 | Turns ROSbot completely ON or OFF |
LEDs | 6 | LR1(blue), LR2(yellow), L1(red), L2(green), L3(green), PWR(red), more details here |
Reset button | 1 | Button used for reset CORE2 |
hBtn | 2 | hBtn1, hBtn2 - programmable buttons |
Outputs for servo | 6 | Servo output with PWM, more details here |
USB serial | 1 | USB serial port used for debugging the firmware on CORE2-ROS controller |
Charging connector | 1 | 6-pin connector for charging internal Li-Ion batteries |
DC power input | 1 | DC for working with external 12V power supply - use the power supply included with charger or any 12V, min. 5A power supply with 5.5/2.5mm plug (center-positive) |
Time-of-Flight distance sensor | 2 | VL53L0X Time-of-Flight distance sensor with up to 200 cm range, more details here |
hExt | 1 | 12xGPIO, 7x ADC, SPI, I2C, UART, more details here |
hSens | 1 | 4 xGPIO, ADC, UART, more details here |
Power supplyโ
ROSbot is powered from an internal, rechargeable Li-Ion battery pack that contains 3 Li-Ion cells, connected in series. This type of connection is called โ3Sโ. The schematic below explains how the cells are wired together and with the charging connector (on ROSbot side).
The BAT+ and BAT- are the power connections and the โbal Bxxโ wires are used to monitor the voltage on each cell. It is strongly recommended to keep equal voltages on each cell during the charging process. The charger included with ROSbot can charge batteries in the described way and, thanks to that, the long life of the battery set is possible.
The nominal voltage of each cell is 3.7V but the useful range is 3.2V to 4.2V.
Important - discharge indicator If only the right firmware is preloaded to the internal controller (CORE2), the LED1 is programmed to indicate the power status:
- the LED1 is on when the robot is turned on
- the LED1 is blinking when battery is low โ please charge immediately!
Please make sure that the user firmware always contains the function that monitors the supply voltage level. Deep discharging of batteries may decrease their lifecycle. Discharging to the voltage lower than 3.0V/cell can also trigger the over discharge protection. If the voltage is too low, turn ROSbot off and charge batteries as soon as possible.
Charging ROSbotโ
The ROSbot kit contains the Redox Beta charger. It is an universal charger, suitable for charging NiCd, NiMH, Li-Po, Li-Fe, Li-Ion and Pb (AGM, VRLA) batteries. ROSbot shall be charged using an included charger and cable.
Charger kit includes:
- Redox Beta charger
- AC/DC power adapter 100...240V to 12V 5A with 5.5/2.5mm plug on the 12V side
- a cable to connect charger with ROSbot charging port
Quick charging guide:
- Connect the power adapter to the charger and the output cable between charger and ROSbot (2 connectors on charger side, 1 black connector to ROSbot charging port).
- Use red and blue buttons to select โLiPo BATTโ mode and press [Start].
- Use arrows to select โLiPo CHARGEโ mode.
- Press [Start] - the current value should start blinking. Use arrows to set the current to 1.5A.
- Press [Start] again - the voltage value should start blinking. Select โ11.1V(3S)โ using arrows. The picture below shows the desired result.
- Press and hold [Start] for 2 seconds. The charger should now ask for confirmation. Press [Start] again. The charging process should begin now.
- When the charging will be finished (after about 3 hours), the charger will generate a loud โbeepโ sound and will finish charging at the same time.
If you need more information about charging, please read the Charging manual for ROSbot in PDF format.
Notes
- You can change charging current to maximum 3A. Please note that a regular charging with the maximum current can shorten the battery life.
- If you are going to use ROSbot stationary for a long time, you can use ROSbot with charger or power supply connected all the time. Please see the Charging manual for ROSbot for details.
- In case you need to replace batteries, use only 18650 Li-Ion batteries, with the capacity in a range of 1800...3500mAh and with a protection circuit! Using unprotected batteries may result in serious injuries or fire.
- Unplug charging connectors carefully. You shall not unplug the charger connectors holding the wires. The balancer connection on ROSbot side has a latching tab (see photo below) that must be pressed before unplugging. On the charger side there is no latching tab but you should also unplug this connector holding the white plug.
Softwareโ
Software for ROSbot can be divided into 2 parts:
- A low-level firmware that works on the real-time controller (CORE2). It can be developed using Visual Studio Code IDE.
- OS based on Ubuntu 20.04 or 22.04, which runs on the SBC (Raspberry Pi 4, UP Board, or Asus Tinker Board) and contains all components needed to start working with ROS or ROS 2 immediately. The microSD card or MMC memory with OS is included with each ROSbot. The OS has been modified to make the file system insensitive to sudden power cuts.
ROS 2 / ROS packages and Docker containersโ
All software on ROSbot XL are based on docker containers. List of available containers you can find here.
ROS 2 / ROS APIโ
- ROS 2
- ROS
This API is based on the ROS 2 firmware, which you can find more information about in the rosbot_ros2_firmware repository.
Use bringup.launch.py
from rosbot_bringup
to start all base functionalities for ROSbot 2, 2 PRO, 2R. It consists of following parts:
-
ekf_node
fromrobot_localization
, it is used to fuse wheel odometry and IMU data. Parameters are defined inekf.yaml
inrosbot_bringup/config
. It subscribes to/rosbot_base_controller/odom
and/imu_broadcaster/imu
published by ros2 controllers and publishes fused odometry on/odometry/filtered
topicSubscribes
/rosbot_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_controller
, it loads robot model defined inrosbot_description
as well as ros2 control rosbot_hardware_interfaces. It also starts controllers:joint_state_broadcaster
rosbot_base_controller
-DiffDriveController
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_base_controller/odom
(nav_msgs/Odometry)/imu_broadcaster/imu
(sensor_msgs/Imu)
Use micro_ros_agent
to communicate with all firmware functionalities.
ros2 run micro_ros_agent micro_ros_agent serial -D $SERIAL_PORT serial -b 576000
-
rosbot_ros2_firmware
it is a micro-ROS node on CORE2 inside ROSbot 2R, 2 PRO, 2. It is used to publish all the sensor data such as wheels positions, IMU measurements, battery level and buttons states from firmware to ROS2 and also to subscribe command values such as motors speeds, servos periods, servos parameters and LEDs states. Subscribes/cmd_ser
(std_msgs/msg/UInt32MultiArray[6])/led/left
(std_msgs/msg/Bool)/led/right
(std_msgs/msg/Bool)/_motors_cmd
(std_msgs/msg/Float32MultiArray[4])
Publishes
/_motors_response
(*sensor_msgs/msg/JointState)/_imu/data_raw
(sensor_msgs/msg/Imu)/battery
(sensor_msgs/BatteryState)/range/fr
(sensor_msgs/msg/Range)/range/fl
(sensor_msgs/msg/Range)/range/rr
(sensor_msgs/msg/Range)/range/rl
(sensor_msgs/msg/Range)/button/left
(std_msgs/msg/Bool)/button/right
(std_msgs/msg/Bool)
Parameters
servo_enable_power
(Bool)servo_voltage
(Double):5.0
V6.0
V7.4
V8.6
V
servo[0...5]_enable
(*Bool_) e.g.servo2_enable
servo[0...5]_period
(*UInt32_) e.g.servo2_period
Command line examplesโ
-
Motors driving (e.g. go forward)
ros2 topic pub /_motors_cmd std_msgs/msg/Float32MultiArray "data: [1.0, 1.0, 1.0, 1.0]"
-
Servos steering
# Choose power supply voltage for the servos e.g. 5.0V
ros2 param set /rosbot_ros2_firmware servo_voltage 5.0
# Enable power for the servos
ros2 param set /rosbot_ros2_firmware servo_enable_power true
# Set the control period in microseconds e.g. 20 000us for the servo5
ros2 param set /rosbot_ros2_firmware servo5_period 20000
# Enable PWM output for the servo e.g. for the servo5
ros2 param set /rosbot_ros2_firmware servo5_enable true
# Send duty cycle to the servos
ros2 topic pub /cmd_ser std_msgs/msg/UInt32MultiArray "data: [0, 0, 0, 0, 0, 2000]" -
LED blinking
# Turn on the left LED
ros2 topic pub /led/left std_msgs/msg/Bool "data: true"
# Turn off the left LED
ros2 topic pub /led/left std_msgs/msg/Bool "data: false"
This API is based on the undeveloped ROS firmware, which you can find more information about in the rosbot-stm32-firmware repository.
Below are topics and services available in ROSbot:
Topic | Message type | Direction | Node | ย ย ย ย ย ย ย ย ย ย Descriptionย ย ย ย ย ย ย ย ย ย |
---|---|---|---|---|
/mpu9250 | rosbot_ekf/Imu | publisher | /serial_node | Raw IMU data in custom message type |
/range/fl | sensor_msgs/Range | publisher | /serial_node | Front left range sensor raw data |
/range/fr | sensor_msgs/Range | publisher | /serial_node | Front right range sensor raw data |
/range/rl | sensor_msgs/Range | publisher | /serial_node | Rear left range sensor raw data |
/range/rr | sensor_msgs/Range | publisher | /serial_node | Rear right range sensor raw data |
/joint_states | sensor_msgs/JointState | publisher | /serial_node | Wheels rotation angle |
/battery | sensor_msgs/BatteryState | publisher | /serial_node | Battery voltage |
/buttons | std_msgs/UInt8 | publisher | /serial_node | User buttons state, details in User buttons section |
/pose | geometry_msgs/PoseStamped | publisher | /serial_node | Position based on encoders |
/odom/wheel | nav_msgs/Odometry | publisher | /msgs_conversion | Odometry based on wheel encoders |
/velocity | geometry_msgs/Twist | publisher | /serial_node | Odometry based on encoders |
/imu | sensor_msgs/Imu | publisher | /msgs_conversion | IMU data wrapped in standard ROS message type |
/odom | nav_msgs/Odometry | publisher | /rosbot_ekf | Odometry based on sensor fusion |
/tf | tf2_msgs/TFMessage | publisher | /rosbot_ekf | ROSbot position based on sensor fusion |
/set_pose | geometry_msgs/ PoseWithCovarianceStamped | subscriber | /rosbot_ekf | Allow to set custom state of EKF |
/cmd_vel | geometry_msgs/Twist | subscriber | /serial_node | Velocity commands |
/config | rosbot_ekf/Configuration | service server | /serial_node | Allow to control behavior of CORE2 board, details in CORE2 config section |
User buttonsโ
User button message is published only once when button is pushed. In case when both buttons are pressed at the same time, two messages will be published. Possible values are:
1
- button 1 pressed2
- button 2 pressed
CORE2 configโ
Config message definition rosbot_ekf/Configuration
:
string command
string data
---
uint8 SUCCESS=0
uint8 FAILURE=1
uint8 COMMAND_NOT_FOUND=2
string data
uint8 result
Available commands:
SLED - Set LED state, data structure is LED_NUMBER LED_STATE
, where:
LED_NUMBER
is number of LED, could be 1
, 2
or 3
LED_STATE
is desired LED state, could be 0
to set LED off and 1
to set LED on
For example, to set LED 2 on run:
$ rosservice call /config "command: 'SLED'
>data: '2 1'"
CSER - Configure servo, available parameters:
S
- servo output [1
:6
], required with P
and W
parameters
V
- voltage mode:
0
- about 5V1
- about 6V2
- about 7.4V3
- about 8.6V
E
- enable servo output [1
,0
]
P
- set period in ฮผs
W
- set duty cycle in ฮผs
CPID - Configure PID, available parameters:
kp
- proportional gain (default: 0.8
)
ki
- integral gain (default: 0.2
)
kd
- derivative gain (default: 0.015
)
out_max
- upper limir of the PID output, represents pwm duty cycle (default: 0.80
, max: 0.80
)
out_min
- lower limit of the PID output, represents pwm duty cycle when motor spins in opposite direction (default: -0.80
, min: -0.80
)
a_max
- acceleration limit (default: 1.5e-4
m/s2)
speed_max
- max motor speed (default: 1.0
m/s, max: 1.25
m/s)
GPID - Get PID configuration
To get PID configuration call with empty data
field.
EIMU - Enable/disable IMU, possible values:
'1'
- enable
'0'
- disable
RIMU - Reset IMU (for Kalman related odometry)
To reset IMU MPU9250 call with empty data
field.
EJSM - Enable/disable joint state message publication, possible values
'1'
- enable
'0'
- disable
RODOM - Reset odometry
To reset odometry call with empty data
field.
CALI - Odometry valibration (update coefficients), data structure is: X Y
, where
X
- diameter_modificator value
Y
- tyre_deflation value
EMOT - Enable/disable motors, possible values:
'0'
- disconnect motors
'1'
- connect motors
SANI - Set WS2812B LEDs animation This functionality is not default for ROSbots. It requires WS2812B LED stripe connected to servo 1 output on ROSbot back panel and rebuilding firmware with custom configuration.
To enable the WS2812B interface open the mbed_app.json file and change the line:
"enable-ws2812b-signalization": 0
to
"enable-ws2812b-signalization": 1
Possible values:
O
- OFF
S <hex color code>
- SOLID COLOR
F <hex color code>
- FADE IN FADE OUT ANIMATION
B <hex color code>
- BLINK FRONT/REAR ANIMATION
R
- RAINBOW ANIMATION
SKIN - set ROSbot kinematics DIFFERENTIAL/MECANUM
By default robot always start with differential drive kinematics available to change by command:
$ rosservice call /config "command 'SKIN'
>data 'DIFF'
To set mecanum kinematics run:
$ rosservice call /config "command 'SKIN'
>data 'MEC'
MEC
- mecanum kinematics
DIFF
- differential drive kinematics
External documentationโ
-
Orbbec Astra camera API is documented in driver repository.
-
Slamtec RpLidar scanner API is documented in driver repository.
System reinstallationโ
In some cases you will need to restore ROSbot system to its default settings:
- in case of accidental damage of the system,
- to update the OS (it can be updated 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
Connect 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 3 / ROSbot 3 PRO / ROSbot 2R
- ROSbot 2 PRO
- ROSbot 2
ROSbot is basically a computer running Ubuntu, so let's open it like a standard PC computer.
- Plug in a display with HDMI, mouse and keyboard into the USB port in the rear panel of ROSbot.
- Turn on the robot and wait until it boots.
- Open a terminal.
ROSbot's graphical desktop environment requires about 3 minutes to start during first boot. The following ones require only about 1 minute after power on.
Connecting to Wi-Fi with netplanโ
Find available Wi-Fi networks with this Linux command:
sudo iwlist wlan0 scan
ROSbot 2R is using netplan instead of GUI 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, eg. 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: networkd
ethernets:
all-eths:
match:
name: eth*
dhcp4: no
dhcp6: no
addresses:
- 192.168.77.2/24
wifis:
wlan0: # external USB Wi-Fi card (with antenna)
dhcp4: true
dhcp6: true
optional: true
access-points:
"PLACE_YOUR_WIFI_SSID_HERE":
password: "PLACE_YOUR_WIFI_PASSWORD_HERE"
save the file then, 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.
Open Linux terminal and type
sudo ifconfig
to find your IP address (for wlan1
network interface). Save it for later.
ROSbot is basically a computer running Ubuntu, so let's open it like a standard PC computer.
- Plug in a display with HDMI, mouse and keyboard into USB port in the rear panel of ROSbot.
- Turn on the robot and wait until it boots.
- Connect to a Wi-Fi network using Ubuntu GUI
- Open Linux terminal and type
ifconfig
to find your IP address. Save it for later.
ROSbot is basically a computer running Ubuntu, so let's open it like a standard PC computer.
- Plug in a display with HDMI, mouse and keyboard into USB port in the rear panel of ROSbot.
- Turn on the robot and wait until it boots.
- Connect to a Wi-Fi network using Ubuntu GUI
- Open Linux terminal and type
ifconfig
to find your IP address. Save it for later.
Option 2: Using an Ethernet adapterโ
- ROSbot 3 / ROSbot 3 PRO / ROSbot 2R
- ROSbot 2 PRO
- ROSbot 2
In the ROSbot 2R 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 in the rear panel.
-
Plug in one end of the Ethernet cable into your computer and another one to the adapter.
-
Set a static IP address on your computer for its Ethernet card in a
192.168.77.0/24
subnet, eg:- IPv4:
192.168.77.27
- mask:
255.255.255.0
- IPv4:
-
To connect with ROSbot via ssh, type in your terminal application:
user@mylaptop:~$ ...ssh husarion@192.168.77.2
The default password for user
husarion
is alsohusarion
.
At this point the Wi-Fi configuration process is the same as in the section above
In the ROSbot 2 PRO set there is one USB-Ethernet card.
- Turn on the robot and wait until it boots.
- Plug in Ethernet adapter (included in set) to USB port in the rear panel.
- Plug in one end of the Ethernet cable into your computer and the other one to the adapter.
- To connect with ROSbot via ssh, type in your terminal application:
ssh husarion@192.168.0.1
and passwordhusarion
. - Connect to a Wi-Fi network.
- In the terminal, type
nmtui
and press Enter. You should see:
- Go to
Active a connection
and tapEnter
- Chose you Wi-Fi network and tap
Enter
one more time. Enter your password, confirm it and tapEsc
to get back to main menu.
- Use
Quit
to closenmtui
.
- Type
ifconfig
to find your IP address. Save it for later.
In the ROSbot 2 set there is one USB-Ethernet card.
- Turn on the robot and wait until it boots.
- Plug in Ethernet adapter (included in set) to USB port in the rear panel.
- Plug in one end of the Ethernet cable into your computer and the other one to the adapter.
- To connect with ROSbot via ssh, type in your terminal application:
ssh husarion@192.168.0.1
and passwordhusarion
. - Connect to a Wi-Fi network.
- In the terminal, type
nmtui
and press Enter. You should see:
- Go to
Active a connection
and tapEnter
- Chose you Wi-Fi network and tap
Enter
one more time. Enter your password, confirm it and tapEsc
to get back to main menu.
- Use
Quit
to closenmtui
.
- Type
ifconfig
to find your IP address. Save it for later.
Access ROSbot terminal using wireless connectionโ
Connecting over LAN networkโ
While ROSbot is connected to a Wi-Fi network, you can access it by using its IPv4 address by SSH:
ssh husarion@ROSBOT_IP
Connecting over the internet (optional)โ
You can access the robot not only in LAN but also over the Internet. The connection is based on Husarnet VPN.
Learn how to do it here.
Low level firmware installationโ
In the heart of each ROSbot there is a CORE2 board equipped with STM32F4 family microcontroller. The board is responsible for real time tasks like controlling motors, calculating PID regulator output or talking to distance sensors. High level computation is handled by SBC (single board computer) - Asus Tinker Board (in ROSbot 2), UP Board (in ROSbot 2 PRO) or Raspberry Pi 4 (in ROSbot 2R).
In order to use ROSbot you have to flash ROSbot's CORE2 board with low level firmware.
The firmware running on STM32F4 microcontroller is open source and available on GitHub. There are:
- supported ROS 2 firmware
- updeveloped ROS firmware.
SSH to ROSbot over LAN network or VPN to get access to it's Linux terminal.
Before flashing the firmware all previously launched docker containers must be stopped (you can display running containers with the docker ps
command). Just execute the commands below:
docker kill $(docker ps -q)
docker container prune -f
- ROSbot 3 / ROSbot 3 PRO
- ROSbot 2R
- ROSbot 2 PRO
- ROSbot 2
The firmware for STM32 is available in the ROSbot snap.
To flash the right firmware, open ROSbot's terminal and execute the following command:
sudo rosbot.flash
The firmware for STM32 is available in the ROSbot's docker images.
All of husarion/rosbot:noetic
, husarion/rosbot:melodic
and husarion/rosbot:humble
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:
-
for humble tag:
husarion@rosbot:~$ ...docker run \
--rm -it --privileged \
husarion/rosbot:humble \
/flash-firmware.py /root/firmware.bin
or if you use ROS noetic tag (can be replaced with melodic):
-
for differential drive (regular wheels):
husarion@rosbot:~$ ...docker run --rm -it --privileged \
husarion/rosbot:noetic \
/flash-firmware.py /root/firmware_diff.bin -
for omnidirectional wheeled ROSbot (mecanum wheels):
husarion@rosbot:~$ ...docker run --rm -it --privileged \
husarion/rosbot:noetic \
/flash-firmware.py /root/firmware_mecanum.bin
The firmware for STM32 is available in the ROSbot's docker images.
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):
husarion@rosbot:~$ ...docker run --rm -it --privileged \
husarion/rosbot:noetic \
/flash-firmware.py /root/firmware_diff.bin -
for omnidirectional wheeled ROSbot (mecanum wheels):
husarion@rosbot:~$ ...docker run --rm -it --privileged \
husarion/rosbot:noetic \
/flash-firmware.py /root/firmware_mecanum.bin
The firmware for STM32 is available in the ROSbot's docker images.
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):
husarion@rosbot:~$ ...docker run --rm -it --privileged \
husarion/rosbot:noetic \
/flash-firmware.py /root/firmware_diff.bin -
for omnidirectional wheeled ROSbot (mecanum wheels):
husarion@rosbot:~$ ...docker run --rm -it --privileged \
husarion/rosbot:noetic \
/flash-firmware.py /root/firmware_mecanum.bin
ROS / ROS 2 Tutorialsโ
- ROS
- ROS 2
ROS (Robot Operating System) offers libraries and tools to help software developers create robotic applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. It's very powerful and functional tool dedicated to design robots. We created the set of ROS Tutorials dedicated for this platform to make it easier to familiarize yourself with these frameworks.
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.
Reference projectsโ
Please note that the following projects are based in Docker only (including running the ROS 2 driver for ROSbot 3). Before running those demos, please stop the ROS 2 driver running in snap first:
sudo rosbot.stop
link | description |
---|---|
rosbot-gamepad | Control the robot manually using a Logitech F710 gamepad |
rosbot-telepresence | Stream a live video from Orbbec Astra to a window on your PC. Control the robot using teleop-twist-keyboard |
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.
Docs and linksโ
All helpful documents and links in one place:
- ROSbot Safety Instructions - important!
- ROSbot limited warranty terms and conditions - important!
- Charging manual for ROSbot
- ROSbot block diagram
- ROS tutorials for ROSbot
- ROSbot wheel swap manual
- ROSbot 2 PRO on ROS webpage
- ROSbot 2 on ROS webpage
- URDF model of ROSbot - for Gazebo integrated with ROS
- ROSbot project on hackaday.io
- ROSbot project on instructables.com