Skip to content

husarion/rosbot_ros

Repository files navigation

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
  2. 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

Build

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=Release

Run the Robot

For 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>.yaml

Note

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

Launch Arguments

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)

🕹️ 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.

About

ROS packages for ROSbot XL / 3 / 3 PRO / 2 / 2R / 2 PRO

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors