Hi all,
this is a call for our 2nd ROS2 Real-time Working Group meeting: Aug 21st, 2019 between 7AM and 8AM PDT (UTC-7).
I would like to propose the following agenda constructed from the action items of the previous meeting: ROS2 Real-time Working Group Online Meeting - May 20th, 2019 between 7AM and 8AM PDT (UTC-7) - #8 by Dejan_Pangercic
-
[10min] Create an rmw implementation which works for a single process. Once that works connect with the underlying data link (e.g. TSN). Measure: malloc/realloc calls, page faults, context switches, memory consumption, blocking calls, … RTI Connext Micro is a suitable DDS implementation for something like this due it its staticity and intra-process communication feature.
- AI : find someone that will lead this work.
- I propose to ask one of the following folks to lead this
- GitHub - ros2/rmw_fastrtps: Implementation of the ROS Middleware (rmw) Interface using eProsima's Fast RTPS. (Jaime, Miguel) or
- GitHub - ros2/rmw_cyclonedds: ROS 2 RMW layer for Eclipse Cyclone DDS (Eric, Joe)
- @lbegani also volanteered
-
[10min] Performance testing on target hardware
This is the topic that I am adding in addition and it was originally proposed by Acutronic Robotics. The proposal is to create a buildfarm with couple of select computers (ECUs) on which to run the GitHub - ApexAI/performance_test: **This project is deprecated** Go to https://gitlab.com/ApexAI/performance_test and measure performance regressions. @Dejan_Pangercic realized that several parties are trying to work on this (Amazon, iRobot, Apex, eProsima, Open Robotics, …)
We would need to figure out the following:- target HW => could Amazon host?
- target (RT)OS => Linux with RT-PREEMPT, QNX, VxWorks, …
- how to automate flashing of (RT)OS and provisioning of DDS, ROS 2 and GitHub - ApexAI/performance_test: **This project is deprecated** Go to https://gitlab.com/ApexAI/performance_test => Apex works on this
- how to configure and automate running of GitHub - ApexAI/performance_test: **This project is deprecated** Go to https://gitlab.com/ApexAI/performance_test in a clean environment => Apex works on this
- how to run Alpha release of ROS 2 tracing tools
- how to store the results => Apex works on this
- how to visualize the results (e.g. What is Munin ? — Munin 2.999.16-detached-2023-06-14-c98-ga24eda76 documentation) such that we can compare historical runs, view results for different configurations of HW, RTOS, DDS, ROS 2 => ???
- which additional metrics do we want => ???
-
[10min] Invest in the tools for static and dynamic code analysis and tracing and carefully scan the code.
- AI: create a shared repository for above tools. Bosch will e.g. open-source their integration of LTTng in ROS2. Silexica is integrating they dynamic analyser.
- Bosch already made the first steps: ROS2 Real-time Working Group Online Meeting - May 20th, 2019 between 7AM and 8AM PDT (UTC-7) - #11 by christophebedard
- Silexica dynamically analysed Autoware.Auto: Merge requests · AutowareAuto / AutowareAuto · GitLab
- @Ingo_Lutkebohle can you take a lead on this?
-
[20min]
- implement real-time pub/sub (either using Waitset or modified Callback/Executor)
We briefly scanned through the paper by Bosch: https://t-blass.de/papers/response-time-analysis-of-ros2.pdf .
- AI : present the paper in detail in one of the next meetings.
- @tobiasblasscan you do this in 1/2h?
- implement real-time pub/sub (either using Waitset or modified Callback/Executor)
-
[10min]
- perform memory audit in rmw, rcl and rclcpp (remove unneeded memory allocations)
- split memory allocation in init and runtime phases, avoid memory fragmentation
- remove all blocking calls (or replace with timed calls, e.g.
mutex
vstimed_mutex
)
Document current state of the art. Someone remarks that there were still mutexes used in e.g. rmw or rclcpp. Memory is still being allocated/de-allocated when receiving messages.
- AI2 : get William to present his findings
- @Dejan_Pangercic will get William to present this
LMK if you agree with the agenda and if you can join.
D.