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 stm32flash
-
Create a workspace folder and clone the rosbot_ros repository:
mkdir -p ros2_ws cd ros2_ws git clone https://github.com/husarion/rosbot_ros src/rosbot_ros
export HUSARION_ROS_BUILD_TYPE=hardware
source /opt/ros/$ROS_DISTRO/setup.bash
vcs import src < src/rosbot_ros/rosbot/rosbot_hardware.repos
rm -r src/rosbot_ros/rosbot_gazebo
sudo rosdep init
rosdep update --rosdistro $ROS_DISTRO
rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y
colcon build --symlink-install --packages-up-to rosbot --cmake-args -DCMAKE_BUILD_TYPE=Release
-
Flash the firmware:
sudo su source install/setup.bash ros2 run rosbot_utils flash_firmware exit
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.
-
Launch the robot:
source install/setup.bash ros2 launch rosbot_bringup bringup.launch.py
export HUSARION_ROS_BUILD_TYPE=simulation
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
# Build only imu_sensor_broadcaster from ros2_controllers
cp -r src/ros2_controllers/imu_sensor_broadcaster src && rm -rf src/ros2_controllers
sudo rosdep init
rosdep update --rosdistro $ROS_DISTRO
rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y
colcon build --symlink-install --packages-up-to rosbot --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash
ros2 launch rosbot_gazebo simulation.launch.py
Symbol | Meaning |
---|---|
🤖 | Available for physical robot |
🖥️ | Available in simulation |
🤖 | 🖥️ | Argument | Description Type: Default |
---|---|---|---|
✅ | ✅ | namespace |
Namespace for all topics and tfs. string: env(ROBOT_NAMESPACE) |
✅ | ❌ | mecanum |
Whether to use mecanum drive controller (otherwise diff drive controller is used). bool: False |
✅ | ❌ | microros |
Automatically connect with hardware using microros. bool: True |
✅ | ❌ | serial_baudrate |
Baud rate for serial communication . string: 576000 |
✅ | ❌ | serial_port |
Automatically connect with hardware using microros. 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 |
❌ | ✅ | robots |
Spawning multiple robots at positions with yaw orientations e.g.robots:='robot1={x: 0.0, y: -1.0}; robot2={x: 1.0, y: -1.0};' string: '' |
❌ | ✅ | 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
)
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. |