select one of the use cases below and probably loose interest from people having other uses case.
focus on somewhat generic parts of ROS 2 that will help independently of the selected use case.
My reading of your comments is that these parts are the following ones:
create rmw layers for static and real-time middleware (RTI Connext Micro, Micro-XRCE-DDS)
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 vs timed_mutex )
implement real-time pub/sub (either using Waitset or modified Callback/Executor)
integrate tools for static and dynamic code analysis (PCLint, LDRA, Silexica, LTT-ng)
Create node architecture for deterministic execution (policy for message aggregation, nodes cohesion, parallelization, local error handling …)
Create a design for global error handling (history of failures, core dumps, fail-safe mechanism, …)
One tap mobile
+16699006833,771375394# US (San Jose)
+19294362866,771375394# US (New York)
Dial by your location
+1 669 900 6833 US (San Jose)
+1 929 436 2866 US (New York)
Meeting ID: 771 375 394
Find your local number: https://zoom.us/u/aAmxdSnyw
Dejan to provide a use case description and requirements
find someone that will lead the work on real-time able rmw
get William to present his findings on real-timeness in rcutils, rcl and rclcpp
create a shared repository for tools for static and dynamic code analysis and tracing
present Bosch paper and real-time with Callback+Executor in detail in one of the next meetings
Main points
On the use case:
Propose a use case => requirements => architecture => hardware
Proposed canonical use case: a vehicle/robot encounters an obstacle and has to stop safely for it
Proposed other use case: autonomous driving
AI: Dejan to provide a use case description and requirements
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.
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. AI: find examples in code. AI2: get William to present his findings
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.
@Dejan_Pangercic I can take this up. However, I would need some help to understand the problem statement and to find the solution. Let me know your thoughts.