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 stm32flash
  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

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

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 --packages-up-to rosbot --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 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 husarion_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
βœ… βœ… joy_config The file path to the configuration YAML file for the teleop_twist_joy node.
string: joy.yaml
βœ… βœ… 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_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
❌ βœ… 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 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.

About

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

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published