Exports ROS2 nodes into the .d2 diagram format
Project description
ros_d2
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 (
--verboseflag) - 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-filescommand that will export a .d2 file for each of your launch files -
ros_d2 rendercommand that will render all .d2 files in the current directory
Examples
Simple
More complex applications
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
- Launch your ROS2 system
- Source ROS
- Use
ros_d2to export your runtime ros system to a .d2 file
ros_d2 export ros-diagram.d2
- 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:
- Build this project using colcon
source /opt/ros/galactic/setup.bash
colcon build
ros_d2 --help # prints help
- Let's bring up the example nodes:
source install/setup.sh
ros2 launch ./src/ros_example_adder_node/launch/example_adder_node.launch.py
- Now that ROS is running, lets use
ros_d2to generate a diagram of all the nodes in the system:
ros_d2 export example_output/ros-diagram.d2
- 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:
Elk:
- We can also export with more info using
ros_d2 export example_output/ros-diagram.d2
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ros-d2-1.0.5.tar.gz.
File metadata
- Download URL: ros-d2-1.0.5.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f6348a74ff2909579ec30d36732ef52ce47b0257f5e2cf91949678297c6bbdf
|
|
| MD5 |
3e4bf6f386fbf4f7059419a72679e718
|
|
| BLAKE2b-256 |
0752d53b6c8eb1448b0b23682f971cc2ef771312c4e59568afd9f466de23f1e0
|
File details
Details for the file ros_d2-1.0.5-py3-none-any.whl.
File metadata
- Download URL: ros_d2-1.0.5-py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf6e8b42f8c4cd16fafe5e4ffdf2c6d2fc41cd19996b03e8a6dcb5b041fa0e5b
|
|
| MD5 |
f29b4b8e155c59456e451d2b187392ad
|
|
| BLAKE2b-256 |
f6f3d654ca6c2da106591eb8cc48be9728f94ecd626430694dee50aa7e52c7c3
|