ROS2 packages for ROSbot 2R and ROSbot 2 PRO.
Metapackage that contains dependencies to other repositories.
Package that contains launch, which starts all base functionalities. Also configuration for robot_localization and ros2_controllers are defined there.
URDF model used as a source of transforms on the physical robot. It was written to be compatible with ROS Industrial and preconfigured for ROS2 control.
Launch files for Ignition Gazebo working with ROS2 control.
ROS2 hardware controllers configuration for ROSbots.
Available in ROS_API.md
To run the software on real ROSbot 2R, 2 PRO, also communication with the CORE2 will be necessary.
First update your firmware to make sure that you use the latest version, then run the micro-ROS
agent.
For detailed instructions refer to the rosbot_ros2_firmware repository.
Install all necessary tools:
sudo apt-get update
sudo apt-get install -y python3-pip ros-dev-tools stm32flash
Create workspace folder and clone rosbot_ros
repository:
mkdir -p ros2_ws/src
cd ros2_ws
git clone https://github.com/husarion/rosbot_ros src/
Building:
export HUSARION_ROS_BUILD=hardware
source /opt/ros/$ROS_DISTRO/setup.bash
vcs import src < src/rosbot/rosbot_hardware.repos
# Build only diff_drive_controller and imu_sensor_broadcaster from ros2_controllers
cp -r src/ros2_controllers/diff_drive_controller src && cp -r src/ros2_controllers/imu_sensor_broadcaster src && rm -rf src/ros2_controllers
rm -r src/rosbot_gazebo
sudo rosdep init
rosdep update --rosdistro $ROS_DISTRO
rosdep install -i --from-path src --rosdistro $ROS_DISTRO -y
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
Flash firmware:
source install/setup.bash
ros2 run rosbot_utils flash_firmware
Running:
source install/setup.bash
ros2 launch rosbot_bringup combined.launch.py
Prerequisites:
Tip
The default version of Gazebo Ignition will be installed with the instructions below. If you want to install a different version of the simulator, it is necessary to:
-
Check compatible versions of ROS 2 and Gazebo in this table
-
Add the
GZ_VERSION
environment variable appropriate to your versionexport GZ_VERSION=fortress
If you have installed multiple versions of Gazebo use the global variable to select the correct one:
export GZ_VERSION=fortress
Building:
export HUSARION_ROS_BUILD=simulation
source /opt/ros/$ROS_DISTRO/setup.bash
vcs import src < src/rosbot/rosbot_hardware.repos
vcs import src < src/rosbot/rosbot_simulation.repos
# Build only diff_drive_controller and imu_sensor_broadcaster from ros2_controllers
cp -r src/ros2_controllers/diff_drive_controller src && 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 --cmake-args -DCMAKE_BUILD_TYPE=Release
Running:
source install/setup.bash
ros2 launch rosbot_gazebo simulation.launch.py
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.
colcon test
Note
Command colcon test
does not build the code. Remember to build your code after changes.
If tests finish with errors print logs:
colcon test-result --verbose
Format python code with Black
cd src/
black rosbot*
At fist install act:
cd /
curl -s https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash
And test the workflow with:
act -W .github/workflows/industrial_ci.yaml
Below you can find demos with ROSbots:
link | description |
---|---|
rosbot-docker | Simple example how to drive ROSbot with teleop_twist_keyboard using docker |
rosbot-sensors | Visualize all ROSbot sensors |
rosbot-gamepad | Stream a live video from Orbbec Astra to a window on your PC. Control the robot using teleop-twist-keyboard |
rosbot-telepresence | Stream a live video from Orbbec Astra to a window on your PC. Control the robot using teleop-twist-keyboard |
rosbot-autonomy | A combination of mapping and navigation projects allowing simultaneous mapping and navigation in unknown environments. |