rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

Repository Summary

Description ROS packages for ROSbot 2, 2R and 2 PRO
Checkout URI https://github.com/husarion/rosbot_ros.git
VCS Type git
VCS Version jazzy
Last Updated 2025-04-14
Dev Status UNKNOWN
CI status No Continuous Integration
Released UNRELEASED
Tags ros ros2
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Packages

Name Version
rosbot 0.15.1
rosbot_bringup 0.15.1
rosbot_controller 0.15.1
rosbot_description 0.15.1
rosbot_gazebo 0.15.1
rosbot_localization 0.15.1
rosbot_utils 0.15.1

README

ROSbot ROS

ROS 2 packages for Husarion ROSbot Series.

ROSbot ROSbot XL

πŸ“š ROS API

Documentation is available in ROS_API.md.

πŸš€ Quick Start

βš™οΈ Prerequisites

  1. Install all necessary tools:
   sudo apt-get update
   sudo apt-get install -y python3-pip ros-dev-tools stm32flash
   
  1. Create a workspace folder and clone the rosbot_ros repository:
   mkdir rosbot_ws
   cd rosbot_ws
   git clone https://github.com/husarion/rosbot_ros.git src/rosbot_ros
   

Configure environment

The repository is used to run the code both on the real robot and in the simulation. Specify HUSARION_ROS_BUILD_TYPE the variable according to your needs.

Real robot:

export HUSARION_ROS_BUILD_TYPE=hardware

Simulation:

export HUSARION_ROS_BUILD_TYPE=simulation

Build

source /opt/ros/$ROS_DISTRO/setup.bash

vcs import src < src/rosbot_ros/rosbot/rosbot_${HUSARION_ROS_BUILD_TYPE}.repos
vcs import src < src/rosbot_ros/rosbot/manipulator.repos # For ROSbot XL manipulation package

sudo rosdep init
rosdep update --rosdistro $ROS_DISTRO
export PIP_BREAK_SYSTEM_PACKAGES=1
rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y

colcon build --symlink-install --packages-up-to rosbot --cmake-args -DCMAKE_BUILD_TYPE=Release

Run the Robot

Real robot:

source install/setup.bash
ros2 launch rosbot_bringup bringup.launch.py robot_model:=<rosbot/rosbot_xl>

[!NOTE] To run the software on real ROSbots, communication with the CORE2 is required. Ensure the firmware is updated before running the micro-ROS agent. For detailed instructions, refer to the rosbot_ros2_firmware repository.

sudo su
source install/setup.bash
ros2 run rosbot_utils flash_firmware --robot-model <rosbot/rosbot_xl>
exit

Simulation:

source install/setup.bash
ros2 launch rosbot_gazebo simulation.launch.py robot_model:=<rosbot/rosbot_xl>

Launch Arguments

Symbol Meaning
πŸ€– Available for physical robot
πŸ–₯️ Available in simulation
πŸ€– πŸ–₯️ Argument Description
Type: Default
βœ… βœ… components_config Specify file which contains components. These components will be included in URDF. Available options can be found in ros_components_description
string: components.yaml
βœ… βœ… configuration Specify configuration packages. Currently only ROSbot XL has available packages. Packages: basic, telepresence, autonomy, manipulation, manipulation_pro.
string: β€˜basic’
βœ… βœ… controller_config Path to controller configuration file.
string: {robot_model}/{mecanum/diff}_drive_controller.yaml
βœ… βœ… mecanum Whether to use mecanum drive controller, otherwise use diff drive.
bool: False
βœ… βœ… namespace Add namespace to all launched nodes.
string: env(ROBOT_NAMESPACE)
βœ… βœ… robot_model Specify robot model.
string: env(ROBOT_MODEL_NAME) (choices: rosbot, rosbot_xl)
βœ… ❌ manipulator_serial_port Port to connect to the manipulator.
string: 8888
βœ… ❌ microros Automatically connect with hardware using microros.
bool: True
βœ… ❌ port ROSbot XL only. UDP4 port for micro-ROS agent.
string: 8888
βœ… ❌ serial_baudrate ROSbot only. Baud rate for serial communication.
string: 576000
βœ… ❌ serial_port ROSbot only. Serial port for micro-ROS agent.
string: /dev/ttySERIAL
βœ… ❌ fastrtps_profiles Path to the Fast RTPS default profiles file for Micro-ROS agent for localhost only setup.
string: microros_localhost_only.xml
❌ βœ… gz_gui Run simulation with specific GUI layout.
string: teleop.config
❌ βœ… gz_headless_mode Run the simulation in headless mode. Useful when a GUI is not needed or to reduce the number of calculations.
bool: False
❌ βœ… gz_log_level Adjust the level of console output.
int: 1 (choices: 0, 1, 2, 3, 4)
❌ βœ… gz_world Absolute path to SDF world file.
string: husarion_world.sdf
❌ βœ… x Initial robot position in the global β€˜x’ axis.
float: 0.0
❌ βœ… y Initial robot position in the global β€˜y’ axis.
float: 2.0
❌ βœ… z Initial robot position in the global β€˜z’ axis.
float: 0.0
❌ βœ… roll Initial robot β€˜roll’ orientation.
float: 0.0
❌ βœ… pitch Initial robot β€˜pitch’ orientation.
float: 0.0
❌ βœ… yaw Initial robot β€˜yaw’ orientation.
float: 0.0

[!TIP]

To read the arguments for individual packages, add the -s flag to the ros2 launch command (e.g. ros2 launch rosbot_bringup bringup.launch.py ​​-s)

πŸ•ΉοΈ Demo

Explore demos showcasing the capabilities of ROSbots:

πŸ“Ž Link πŸ“– Description
rosbot-telepresence Stream live video from Orbbec Astra to a PC and control the robot using teleop-twist-keyboard
rosbot-autonomy Enables simultaneous mapping and navigation, allowing the robot to move in unknown environments.

CONTRIBUTING

Developer info and tools

USB-A connection

You can connect with the ROSbot hardware on your own computer. To establish a connection, connect your computer to the robot using a USB-A cable. Then build the code locally and specify via the serial_port argument which processor should be used to establish the connection.

ros2 launch rosbot_bringup bringup.launch.py serial_port:=/dev/ttyUSB0

The hardware checks the connection via USB-A only during initialization and when btn1 or btn2 is pressed, so while executing the above command, hold down the reset button together with bnt1/bnt2 and release the reset button. After establishing a connection, you can release bnt1/bnt2.

pre-commit

pre-commit configuration prepares plenty of tests helping for developing and contributing. Usage:

# install pre-commit
pip install pre-commit

# initialize pre-commit workspace
pre-commit install

# manually run tests
pre-commit run -a

After initialization pre-commit configuration will applied on every commit.


rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2

rosbot_ros repository

ros ros2