ROS2 Real-time Working Group Online Meeting 4 - Oct 16, 2019, 7AM PDT (UTC-7)

Hi real-time folks, time for our 4th meeting.

Proposed agenda:

  1. Previous action items: ROS2 Real-time Working Group Online Meeting 3 - Oct 2, 2019, 7AM PDT (UTC-7) - @Dejan_Pangercic
  2. ROS 2 real-time workshop at ROSCon 2019: https://www.apex.ai/roscon2019
  3. Progress on real-time and static executor => @MartinCornelis @ralph-lange
  4. Single process, real-time rmw => @joespeed, @eboasson
    1. call for additional contributors => @Dejan_Pangercic
  5. Progress on static memory audit and improvements => @wjwwood
    1. See ROS2 Real-time Working Group Online Meeting 2 - Aug 21st, 2019 between 7AM and 8AM PDT (UTC-7)
  6. Update on tools for static and dynamic code analysis and tracing => @Ingo_Lutkebohle
  7. Presentation on performance testing platform for the ROS2 community (tentative)

Meeting Info

Join Zoom Meeting

Meeting ID: 803 701 270
Password: 723664

One tap mobile
+16699006833,803701270# US (San Jose)
+19294362866,803701270# US (New York)

Dial by your location
+1 669 900 6833 US (San Jose)
+1 929 436 2866 US (New York)
Meeting ID: 803 701 270
Find your local number: https://zoom.us/u/aAmxdSnyw

Regrettably I’ll be on an airplane at that moment, just coming in to land in Barcelona. If I dial in as the aircraft hits the runway I might make the last half of the call - but obviously if the plane arrives even a little late or other factors come in to play that hour, then I’ll be a no-show.

David

I can join, but not much has changed w.r.t. the static executor. I have updated our slides for ROSCon to include the semi-dynamic aspect of the executor. We extended the functionality by having the executor rebuild when a guard condition is triggered.

This slight change does not warrant another presentation in my opinion. If there are new people joining the meeting I can quickly fill them in. I can also answer any questions people may have.

@MartinCornelis the presentation last time was great. As the next steps I would see:

  1. How to go from this prototype: https://github.com/nobleo/rclcpp-static-executor to merging it into https://github.com/ros2/rclcpp
  2. Or is it maybe already merged from here: https://github.com/nobleo/rclcpp/tree/nobleo/feature/static_executor?

We have a PR here. This is indeed a merge from https://github.com/nobleo/rclcpp/tree/nobleo/feature/static_executor.

The version at https://github.com/nobleo/rclcpp-static-executor is a stable dashing example that we don’t plan on changing much anymore (I might extend the flowchart to show the semi-dynamic part we added). The purpose of that page is more to show the idea of the executor and give people a chance to play with it. The PR version from master is the one we are updating more rigorously (and getting up to ROS2 standards).

@Dejan_Pangercic Another ping for requesting a time that doesn’t perfectly clash with the Autoware Foundation’s board meeting…

Participants

  1. Joe Speed, Erik
  2. Dejan, Christophe
  3. Carlos
  4. William
  5. tomoyafujita

Meeting recordings:

  1. https://zoom.us/recording/share/QRY5FRkZzaAg-toHq7qo_2zUPOZRlxsrwejbKjheQuiwIumekTziMw

Meeting Minutes

  1. Only Anup volunteered to contribute to the real-time rmw implementation based on CycloneDDS. Next steps: find contractors. @eboasson to create a project on github for this rmw implementation and some issues which we can give to contractors as a SOW.
  2. Presentation of the “Mini buildfarm with resource guarantees” will be done by Silexica in one of the next meetings
  3. Carlos presented the idea of porting an inverted pendulum demo to ROS2 and use that as an example real-time application ROS2 Real-time Working Group Online Meeting 3 - Oct 2, 2019, 7AM PDT (UTC-7). Carlos will open source his port and ADLINK or Apex.AI can present it at ROSCon 2019. Carlos also has a very cool simulation: https://gitlab.com/carlossvg/inverted_pendulum_sim.
  4. Link to the PRs for the static executor was wrong, here a corrected link: https://github.com/ros2/rclcpp/pull/873
  5. Regarding memory audit in rmw, rcl, rclcpp:
    1. work is being done on https://github.com/ros2/design/pull/256
    2. There is an issue summarizing the audit work: https://github.com/ros2/ros2/issues/590
    3. There is the gist summarizing the finding of the audit work: https://gist.github.com/gonzodepedro/e3a4c2d496ef3cbe605e9d53bef61555
    4. There are preallocations in publish and take part of the code but we are not making use of them
    5. Adding more tests that use memory tools

Action items:

  1. Create a system for documentation sharing (GDrive, Github project, …) - @razr is this something that you could maybe do?
  2. @carlossv @christophebedard to meet and explore if we can include tracing tools in the inverted pendulum demo
  3. @wjwwood and co to review https://github.com/ros2/rclcpp/pull/873
  4. @Ingo_Lutkebohle @ralph-lange are there any PRs for the real-time executor against the main ROS2 branch?
  5. @wjwwood to finish reviewing (or find someone to review) https://github.com/ros2/ros2/pull/748
2 Likes

@eboasson @joespeed @Dejan_Pangercic

Single process, real-time rmw_cyclonedds

i wasn’t clear on this.
I would request more information, if i may.

  • What is the difference from existed rmw_cyclonedds implementation?
  • What is the definition “real-time”?
  • Target platform and use cases?
  • Concrete problems and goals?
1 Like

Hi Tomoya, @eboasson and I are sitting in Palo Alto having a lovely vino while thoughtfully considering your questions :grin:

Q: What is the difference from existing rmw_cyclonedds implementation?
A: the key thing is we want to do this without disturbing the existing RMW working well with Eloquent. We need a separate one to have the freedom to experiment without breaking things for current users.
In terms of threading the current ros2/rmw_cyclonedds is fine (rmw ≠ cyclonedds), in terms of memory allocation it is not (yet).

Q: What is the definition “real-time”?
A: guaranteed upper bounded latency — which in practice means one must be very careful about threading and allocations.

Q: Target platform and use cases?
A: use case we target is your typical operational repetitive processing cycle, but not startup and termination. This is really platform independent.

Q: Concrete problems and goals?
A: eliminate memory allocations in serialization / deserialization (which requires the memory to provided by the application in some way) and achieve zero-copy / zero-allocation intra-process communication. Also, evaluate the wait set interface itself, because the current RMW interface has a pretty bad impedance mismatch with DDS wait sets, making predictable behavior much harder.

Cheers!:wine_glass:

2 Likes

Hi @Dejan_Pangercic,

I apologize for my late reply due to my US travel. I have completely missed your meeting invite.

We do have some real-time related articles in Tutorials
https://index.ros.org/doc/ros2/Tutorials/Real-Time-Programming/
written by @apojomovsky, describes how to run a pendulum demo, not the real-time programming

https://index.ros.org/doc/ros2/Tutorials/Building-Realtime-rt_preempt-kernel-for-ROS-2/
written by @apojomovsky for Ubuntu 16.04, need to be updated

and in the Design section
http://design.ros2.org/articles/realtime_background.html
http://design.ros2.org/articles/realtime_proposal.html
Both are written by @jackie back in 2015 and probably need to be updated

Should we keep using Design and Tutorial pages for our work?

Kind Regards,
Andrei

Hi everyone,

As we said, @landerU and I mainly have been working on a real-time demo based on a inverted pendulum. The demo is finally here:

This demo is at a early stage and many things need to be polished. One of our goals is the community to take this project as a reference for real-time testing. Not only to benchmark their real-time setups but also to test new features and improve ROS 2 real-time capabilities. Feel free to contribute and we’d very much appreciate your feedback.

2 Likes

@razr I think that the

  1. https://index.ros.org/doc/ros2/Tutorials/ and
  2. https://github.com/ros2/design
    are good for the documentation but after we have already converged on the implementation.

Until we still iterate I would propose:

  1. Google drive for early designs written in GDoc and Gslides
  2. Github or Gitlab organization for code contributions. https://github.com/ros2_realtime seems to be still available.

@carlossv I included this into my presentation for ROS 2 real time workshop on Wednesday. See below.

I will also have the demo ready to be shown at Apex.AI booth at ROSCon 2019.

@LanderU will Alias show it as well?

Anyone else in the RTWG feel free to show it as well.

1 Like

Hi all, if you want to receive calendar invites to the future RTWG meetings, please subscriber to this group: https://groups.google.com/forum/#!forum/ros-real-time-working-group-invites.

The calendar and group addresses for ROS WG are listed at: https://index.ros.org/doc/ros2/Governance/

Hi @Dejan_Pangercic,

@carlossv I included this into my presentation for ROS 2 real time workshop on Wednesday. See below.
I will also have the demo ready to be shown at Apex.AI booth at ROSCon 2019.

Thanks, this is fantastic, let us know if you’ve any feedback.

@LanderU will Alias show it as well?

Yes, @vmayoral is going to help us spreading the word. And it will mention this work as well.

Thanks!

Regards,

@LanderU

1 Like

Members or RTWG and ROS 2 real-time lovers, the slides presented during the https://www.apex.ai/roscon2019 workshop are available on https://drive.google.com/open?id=1RybYA7B9kosBHktfw7jxFVFHgpMBdRWp.

The workshop was very well attended and also well received. Many described it as a crash course in real-time.

RTWG will now work hard to implement what is still missing in ROS 2 in terms of real-time and be shooting for a 2.0 workshop at the next ROSCon.

Please join us in RTWG if real-time is your thing: https://index.ros.org/doc/ros2/Governance/ (See
Real-time).

4 Likes