-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
Mission
The goal of this project is to create a C++ library that can observe ROS2.
Some observations that are interesting for the mission:
- Interrogate ROS for a list of nodes, data types, data structures(messages and message types). - DONE
- Every ROS node/program has a run function. When and for how long did this function execute.
- Data throughput ie when is a message received, how much data etc
- Fingerprinting data and associating it to a specific run execution
Requirements
The following basic information would be interesting to observe:
- Minimal modification of user programs/nodes. A user should not have to make significant changes to their program/node to leverage the observer
- minimal external requirements/dependencies
- Library must output json to file and stdio to support piping
- Include the simulation time and wall clock time in output data
- Run function metadata
- What host and cpu did the run or node function execute on, function name
- minimal performance overhead
- Include data structure of all messages
- include overall structure of entire ros2 running environment nodes and edges(publishers and subscribers)
- What kind of user interface do we want?
Notes
- When a given node/program "run" function starts and returns with a high precision timer.
- When a subscribed message is received
- Data rate of a given topic.
- hash/fingerprint of the raw data.
- Can we integrate this or leverage lttng https://lttng.org/?
Timeline
First working example by January 31, 2025
Tasks
- Write readme describing project and highlighting inchron and dlr collaboration @akoerner1
- Add ros command line data aggregator tool to repo.
- Provide a sample data structure @vpollex
Discovery
ROS2 has a built in tracing tool: https://github.com/ros2/ros2_tracing
Goals for tracing tool
- experiment with tracer
- Build into ADORe cli
- create parser for tracing data output to json and other formats
- ????? integrate into Inchon tool and dlr big net observer
ROS2 node failure modes
- Node does not receive data in time.
- Data is junk i.e., 1 of every 5 data packets is junk
- Node does not finish critical section/calculation in time.
Ideas
- callbacks per second
Metadata
Metadata
Assignees
Labels
No labels