![]() |
rosbot_ros repositoryros ros2 rosbot rosbot_bringup rosbot_controller rosbot_description rosbot_gazebo rosbot_localization rosbot_utils |
|
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.


π ROS API
Documentation is available in ROS_API.md.
π Quick Start
βοΈ Prerequisites
- Install all necessary tools:
sudo apt-get update
sudo apt-get install -y python3-pip ros-dev-tools stm32flash
- 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 theros2 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.