Skip to content

mvukov/rules_ros2

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e235964 · Oct 10, 2024
Oct 5, 2024
Feb 23, 2023
Sep 8, 2024
Oct 10, 2024
Oct 10, 2024
Sep 8, 2024
Oct 23, 2022
Oct 10, 2024
Oct 5, 2024
May 24, 2021
Jul 7, 2024
Oct 5, 2024
May 24, 2021
Oct 21, 2022
May 13, 2021
Jul 7, 2024
Sep 2, 2024
Oct 5, 2024
Jan 17, 2024
Jan 17, 2024
Mar 10, 2024

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.
  • 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-20240523.

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: