ROS 2 packages for Husarion ROSbot Series.
Documentation is available in ROS_API.md.
-
Install all necessary tools:
sudo apt-get update sudo apt-get install -y python3-pip ros-dev-tools
-
Create a workspace folder and clone the rosbot_ros repository:
mkdir rosbot_ws cd rosbot_ws git clone -b jazzy https://github.com/husarion/rosbot_ros.git src/rosbot_ros
source /opt/ros/$ROS_DISTRO/setup.bash
vcs import src < src/rosbot_ros/rosbot/rosbot_hardware.repos
vcs import src < src/rosbot_ros/rosbot/rosbot_simulation.repos
# Optional: speed up build by removing unnecessary packages
# For hardware build only, remove simulation package:
# rm -rf src/rosbot_ros/rosbot_gazebo
# For simulation build only, remove hardware package:
# rm -rf src/rosbot_ros/rosbot_bringup
export PIP_BREAK_SYSTEM_PACKAGES=1
sudo rosdep init
rosdep update --rosdistro $ROS_DISTRO
rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=ReleaseFor ROSbot XL, you can specify a particular configuration using the launch configuration argument. If you are using the manipulation configuration, please refer to MANIPULATOR.md for detailed instructions.
Real robot:
source install/setup.bash
ros2 launch rosbot_bringup <rosbot/rosbot_xl>.yamlNote
The ROSbot ROS Driver is strongly dependent on the firmware version. If you change driver version or ROS distro, ensure the firmware is compatible. Firmware can be updated with the flash_firmware script.
source install/setup.bash
ros2 run rosbot_utils flash_firmware --robot-model <rosbot/rosbot_xl>Simulation:
source install/setup.bash
ros2 launch rosbot_gazebo simulation.yaml robot_model:=<rosbot/rosbot_xl>Tip
You can spawn multiple robots in the simulation. To do that, run the launch file multiple times with different namespaces and initial positions (x, y, z). For example:
source install/setup.bash
ros2 launch rosbot_gazebo spawn_robot.yaml robot_model:=<rosbot/rosbot_xl> namespace:=robot1 x:=0 y:=0| Symbol | Meaning |
|---|---|
| 🤖 | Available for physical robot |
| 🖥️ | Available in simulation |
| 🤖 | 🖥️ | Argument | Description Type: Default |
|---|---|---|---|
| ✅ | ✅ | arm_activate |
Whether to activate the manipulator arm on startup.. bool: False (True for simulation) |
| ✅ | ✅ | config_dir |
Path to the common configuration directory. You can create such common configuration directory with ros2 run rosbot_utils create_config_dir {directory}. string: "" |
| ✅ | ✅ | configuration |
Specify configuration packages. Currently only ROSbot XL has available packages. Packages: basic, telepresence, autonomy, manipulation, manipulation_pro, custom. string: basic |
| ✅ | ✅ | joy_vel |
The topic name to which velocity commands will be published. string: cmd_vel |
| ✅ | ✅ | 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) (choices: rosbot, rosbot_xl) |
| ✅ | ❌ | manipulator_serial_port |
Port to connect to the manipulator. string: /dev/ttyUSB0 |
| ✅ | ❌ | 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 |
| ✅ | ✅ | tf_namespace_bridge |
Bridge robot's namespaced TF to the global /tf and /tf_static. Only active when namespace is set. bool: True |
| ❌ | ✅ | 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 |
| ❌ | ✅ | rviz |
Run RViz simultaneously. bool: True |
| ❌ | ✅ | 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 launch files, add the -s flag to the ros2 launch command (e.g. ros2 launch <pkg> <launch> -s)
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. |

