This is a utility to visualize the state of an entire ROS 2 network in a graphical way. This utility will show all of the nodes in a graph, all of the topics, services, and actions that connect them, as well as some additional metadata about them.
mkdir -p viz_ws/src
cd viz_ws/src
git clone https://github.com/ros2/ros_network_viz.git
cd ..
rosdep install --from-paths src --ignore-src --default-yes
colcon build --symlink-install
. install/setup.bash
ros2 run ros_network_viz ros_network_viz
- Show a legend/help for describing what everything does
- Allow zooming in or out on the entire scene
- Have some kind of side panel to show warnings, errors, incompatible QoS, etc.
- Show all nodes in a ROS 2 graph (including those with no topics or services)
- Automatically update the graph as nodes come and go
- Have an option to "pause" automatic graph updates
- Hide hidden nodes by default (with option to turn on)
- Hide rqt_network node by default (with option to turn on)
- Show all parameters and initial parameter values on all nodes
- Update parameters as they change on every node (via /parameter_events)
- Support parameter updates on nodes that don't have /parameter_events
- Have an automatic layout of nodes that makes sense
- Make the nodes draggable so the user can rearrange the layout
- Show whether a node is a regular Node
- Show whether a node is a LifecycleNode
- Show what Lifecycle state a node is in
- Update Lifecycle states for a node as they change (via /transition_event)
- Support lifecycle updates on nodes that don't have /transition_events
- Show if a node is a ComponentNode
- Show the nodes that are inside of a ComponentNode
- Have the ability to select one or more nodes and hide them
- Show all of the topics that a node publishes
- Show all of the topics that a node subscribes to
- Draw a line between the published and subscribed topics in the network
- Hide default topics like /parameter_events, /rosout by default (with option to turn on)
- Show the type for each topic
- Show the Quality-of-Service settings for each topic
- Show the rate (hz) at which a topic is publishing data
- Show the bandwidth that a topic is using
- Have the ability to hide one or more topics on a node
- Gracefully handle topics with unknown topic types
- Show the actual data flowing over a topic
- Show all of the services that a node provides
- Show all of the services that a node is a client for
- Draw a line between the clients and services in the network
- Hide default services like /describe_parameters, /get_parameter_types, /get_parameters, /list_parameters, /set_parameters, /set_parameters_atomically by default (with option to turn on)
- Show the type for each service
- Show the Quality-of-Service settings for each service (does this even make sense for a service?)
- Have the ability to hide one or more services on a node
- Gracefully handle services with unknown topic types
- Show all of the actions that a node provides
- Show all of the actions that a node is a client for
- Draw a line between the action clients and action services in the network
- Show the type for each action
- Show the Quality-of-Service settings for each action (does this even make sense for an action?)
- Have the ability to hide one or more actions on a node
- Gracefully handle actions with unknown topic types