ROS 2 Real-time Working Group Online Meeting 18 - May 26, 2020 - Meeting Minutes

Thanks to @tomoyafujita and @philipp for their interesting talks!
Meeting recording is under:

The meeting minutes of Meeting 18 are here:

The next RTWG meeting will be on the June 9 at 7 a.m. PST (16.00 CET), please propose agenda items in the comments or in the meeting minutes document directly

3 Likes

@Dejan_Pangercic @razr
Will there be time to introduce the following topics at the next WG? @hsgwa of ISP (Tier4’s subcontractor) will explain the topic if possible.

Hi @takuya.azumi thanks for nominating the topic. I just had to cancel the meeting on June 9.

@razr will put your topic on the agenda for the meeting on June 23.

Thx, D.

@Dejan_Pangercic No problem. Our topic is not urgent. We will attend the meeting on June 23.

@takuya.azumi, I have put your talk on agenda for the next RTWG meeting, the 23d of June. Thanks for for proposing it. It is very interesting what you did.

Hi!
Thank you for putting our topic to the next RTWG agenda.

Here is the slide of the topic.
Basic_investigation_of_priority_of_DDS_generated_threads_2020_06_23.pdf (275.5 KB)

I’ll talk a summary of the following posts.

And we’ve implemented experimental threaded callback.
This post is related to today’s topic.

I won’t describe this topic today, but any comments on this topic are also welcome.

@razr Thank you for your help.

Hi @hsgwa @takuya.azumi: Would it make sense to introduce the other Discourse post (Threaded Callback with priority, affinity and overrun handler) in one of our upcoming ROS2-RT calls as well? cc @Dejan_Pangercic @razr

@philipp
Thank you for suggesting our post.
This post is relevant in real-time as well.
If I can have time at the WG, I’ll explain a summary of the post and intention to implement a Threaded Callback.
cc: @Dejan_Pangercic @razr @takuya.azumi

@philipp Thanks for your suggestion.
@razr @Dejan_Pangercic If possible, could you add this to the agenda for the next WG meeting on July 7?
@y-okumura-isp (another member of ISP) will make a presentation on the topic.

@takuya.azumi @philipp I put above topic on the agenda for the next RTWG meeting on July 07: https://drive.google.com/file/d/1FSN8pgv0n96nB8m8-f0CWFrJmOOE53m9/view?usp=sharing .

Thx for your suggestions.

Thank you for announce.
Here is the presentation slides

20200707_RT_WG-ISP.pdf (265.2 KB) .

Thank you.

@Dejan_Pangercic Thank you for your help.

For 2020-August-18 Real-time Working Group

As I can not find the right place, let me report progress about “4.1 Performance testing (with an emphasis on determinism) in 2020-August-04” here.

In short words, we(ISP) are now surveying what is already done and what should be done.

We are surveying following:

[g3] is CI and uses [g1] internally.

They have some similarities and differences as below.

  • Each tool measures topic trip-time(pub -> sub)
    [g1] checks combination of DDS/RMW
    [g2] checks complex topology
  • Executor:
    • [g1] uses SingleThreadedExecutor.
      std::this_thread::sleep_until is used for publishers,
      Executor::spin_some is used for subscribers.
    • [g2] uses StaticSingleThreadedExecutor.
      This uses Executor::spin but has an original thread model.
  • Communication mechanism
    • [g1] uses only topic
    • [g2] uses topic/service but not action/pamameter.
  • Memory usage/Data model
    • [g1] allocates unique_ptr at first, and publishs it by reference
    • [g2] uses unique_ptr or shared_ptr according to option but make_unique/make_shared for each loop
    • Which are optimal for real-time? Or Should we use TLFSAllocator and MessageMemoryPoolStrategy?
  • and so on

We now preparing a comparison table.

At the same time, we should define conditions and metrics.
Following are described in some literatures:

  • conditions
    • HW setting
    • OS setting(kernel build, kernels threads, kernel parameters, …)
    • ROS2 process setting(memory/scheduling as in pendulum, affinity, …)
    • system stress
  • metrics
    • timer precision
      • [g1] and [g2] do not measure this
    • packet trip-time(1-way, 2-way)
      In ROS2, topic/service/action/(parameter) may be the targets.
      • only topic is common target now
    • time of procedures (may be callback in ros2)
      • [g1] [g2] has rather simple callback(only takes statistics)
    • each values should be worst execuion time (WCET)
      • need to measure at least a few hours.
2 Likes

@razr
I’d like to confirm a few things from the feedback I received at the last meeting.
Is it possible to get the meeting recording?
If the last meeting has been recorded, I would appreciate it if you could share the recording with us.

Thank you.

Thank you for listening patiently to my talk at the meeting.

2020-August-18
2.e. Execution and scheduling (previously 4.b Execution and scheduling)

We think Threaded Callback rather than Threaded Executor.
So this idea may be combined with some Executors.
As we have implemented this in the application layer with a helper class, we plan to integrate with rclcpp::Node.
Some new methods such as “rclcpp::Node::create_threaded_subscription” may be introduced but it’s under consideration.
We’ll send PR when we’ll have done it.

FYI: our codes are available at GitHub - y-okumura-isp/ROS2_ThreadedCallback: PoC of application layer threaded callback

you mean the last one from the 18th of Aug? yes, it is recorded and posted. Thank you for your reminder.

@razr Thank you for uploading!

Here are our progresses for 2020-September-01.

  • 2.d Performance testing
  • 2.e Execution and scheduling
    • see above post(13d ago), but still no PR.
    • I think we can restart next week

@y-okumura-isp this is great, thx. Could you please present this update today? Thx