Skip to content

henriksod/rules_ros2

 
 

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 20.04 with Python 3.8.

What works?

Available features:

  • Building of C++ and Python nodes.
  • C/C++/Python 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.
  • CycloneDDS (default) and FastDDS middleware are supported.
    • Zero copy transport via shared memory backend (iceoryx) for CycloneDDS.
  • 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-20230614.

NOTE: 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 ROS 2 with Bazel

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Starlark 68.2%
  • Python 17.0%
  • C++ 11.5%
  • Smarty 3.2%
  • Shell 0.1%