Skip to content

ahans/rules_ros2

This branch is up to date with mvukov/rules_ros2:main.

Folders and files

NameName
Last commit message
Last commit date
Mar 16, 2025
Feb 23, 2023
Feb 15, 2025
Mar 23, 2025
Mar 23, 2025
Feb 9, 2025
Oct 23, 2022
Feb 15, 2025
Feb 9, 2025
May 24, 2021
Feb 15, 2025
Feb 15, 2025
May 24, 2021
Oct 21, 2022
May 13, 2021
Dec 20, 2024
Feb 9, 2025
Mar 23, 2025
Feb 9, 2025
Jan 17, 2024
Mar 10, 2024
Feb 15, 2025

Repository files navigation

CI

Bazel rules for ROS 2

This repo provides functionality to build and use ROS 2 with Bazel.

Prerequisites

You will need to install Bazel, see here. Besides Bazel, you will need a C++ compiler and a Python 3 interpreter.

And no, you don't have to install any ROS 2 packages via apt.

The code is developed and tested on Ubuntu 22.04 with Python 3.10.

What works?

Available features:

  • Building of C++, Python and Rust nodes.
  • C/C++/Python/Rust code generation for interfaces (messages, services and actions).
  • Defining ROS 2 deployments with ros2_launch Bazel macro.
  • Defining ROS 2 tests with ros2_test Bazel macro.
  • Defining ROS 2 plugins with ros2_plugin Bazel macro.
  • Only CycloneDDS middleware can be used at the moment.
    • Zero copy transport via shared memory backend (iceoryx) for CycloneDDS.
  • Logging backends:
    • spdlog (default): --@com_github_mvukov_rules_ros2//ros2:rcl_logging_impl=spdlog
    • syslog: --@com_github_mvukov_rules_ros2//ros2:rcl_logging_impl=syslog
  • Utilities:
    • foxglove_bridge for visualization and debugging
    • ros2_bag for handling rosbags
    • ros2_lifecycle for handling node lifecycle
    • ros2_node for handling nodes
    • ros2_param for handling parameters
    • ros2_service for handling services
    • ros2_topic for handling topics
    • xacro for Xacro to URDF conversion

Please take a look at the examples folder to get started.

ROS 2 packages are by default locked to versions from release-humble-20241205.

Notes

  • Unlike ROS genmsg which refuses to generate code if the deps between interface targets are not set correctly, code generation for ROS 2 seems to not care about this. If the deps are not correctly set, you'll only see failures during compilation of the generated code.

Alternatives

For alternative approaches, see:

About

Build ROS2 with Bazel

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Starlark 69.6%
  • Python 16.3%
  • C++ 10.4%
  • Smarty 2.6%
  • Other 1.1%