Skip to main content

ros_d2

Banner

Exports ROS2 nodes (publishers, subcribers and services) into a D2 file so they can be visualised and serialised for later use.

Features

  • Export runtime ROS2 system architecture (nodes, services, topics, clients) to .d2 (using ros2cli)
  • Powerful visualisation and theming provided by D2
  • Simple serialisable diagram format
  • Ros node descriptions pulled from the package.xml
  • Topic QOS descriptions
  • Action servers / clients?
  • Topic Types (--verbose flag)
  • Advanced theming
  • Pytest helpers that ensure your ROS2 System architecture matches that of your .d2 diagram
  • Better testing on this repo!
  • ros_d2 export-launch-files command that will export a .d2 file for each of your launch files
  • ros_d2 render command that will render all .d2 files in the current directory

Examples

Simple

Simple example

More complex applications

Example

Installation

pip install ros-d2
ros_d2 export --help # prints help
# If you get an error about "No module named 'ros2cli'" - ros has not been sourced!

Requirements

  • ROS2 + Colcon
  • D2

Usage

Exporting a diagram

  1. Launch your ROS2 system
  2. Source ROS
  3. Use ros_d2 to export your runtime ros system to a .d2 file
ros_d2 export ros-diagram.d2
  1. Render your diagram using d2.
ros_d2 render # to render ALL .d2 files in the current directory
# or...
d2 --layout dagre ros-diagram.d2 # to use d2 directly

Exporting diagrams for all launch files

If you want to create a .d2 and .svg alongside each of your ros2 .launch.py files. You can use the following script:

# Source ros: eg) `source /opt/ros/humble/setup.bash`
# Build your ros2 workspace: eg) `colcon build`
# Source your ros2 workspace: eg) `source install/setup.bash`
ros_d2 export-launch-files
ros_d2 render

Development

Prerequisite

Installation

following the steps below to setup the project:

```bash
# Clone the repository
git clone git@github.com:Greenroom-Robotics/ros-d2.git && cd ros-d2

# Install all dependencies
pip install -e ./src/ros_d2

Example usage

From the root of this repo:

  1. Build this project using colcon
source /opt/ros/galactic/setup.bash
colcon build

ros_d2 --help # prints help
  1. Let's bring up the example nodes:
source install/setup.sh
ros2 launch ./src/ros_example_adder_node/launch/example_adder_node.launch.py
  1. Now that ROS is running, lets use ros_d2 to generate a diagram of all the nodes in the system:
ros_d2 export example_output/ros-diagram.d2
  1. We will now have the example_output/ros-diagram.d2 file. We can render this using d2:
d2 --layout dagre example_output/ros-diagram.d2 example_output/ros-diagram-dagre.svg
# or
d2 --layout elk example_output/ros-diagram.d2 example_output/ros-diagram-dagre.svg
# Note - d2 provides other layouts and themes. See `d2 --help` for more info

This will produce the following diagram:

Dagre: dagre

Elk: elk

  1. We can also export with more info using ros_d2 export example_output/ros-diagram.d2

dagre

Metadata

Release files for ros-d2 1.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ros-d2 1.0.5
File Size Uploaded
ros-d2-1.0.5.tar.gz 6.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ros-d2 1.0.5
File Interpreter ABI Platform
ros_d2-1.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 14.1 kB

Release files / ros-d2-1.0.5.tar.gz

Download URL ros-d2-1.0.5.tar.gz
Size 6.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3f6348a74ff2909579ec30d36732ef52ce47b0257f5e2cf91949678297c6bbdf
BLAKE2b-256 checksum
How to use checksums
0752d53b6c8eb1448b0b23682f971cc2ef771312c4e59568afd9f466de23f1e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / ros_d2-1.0.5-py3-none-any.whl

Download URL ros_d2-1.0.5-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf6e8b42f8c4cd16fafe5e4ffdf2c6d2fc41cd19996b03e8a6dcb5b041fa0e5b
BLAKE2b-256 checksum
How to use checksums
f6f3d654ca6c2da106591eb8cc48be9728f94ecd626430694dee50aa7e52c7c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release history Release notifications | RSS feed

This release

1.0.5 This release

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page