ROS2 Embedded SIG meeting #2

Hi all.

I am happy to announce that we are planning a second meeting regarding ROS 2 targeting microcontrollers

We plan to schedule an online community meeting for the week of 14th-18th of January 2019.

The poll with tentative times and dates will be open till a couple of days before. Deadline for the poll will be 10th January 16:00UTC, and then the results will be published.

Date and time poll:

  • Monday, 14th January 15:00 UTC
  • Monday, 14th January 16:00 UTC
  • Tuesday, 15th January 7:00 UTC
  • Tuesday, 15th January 8:00 UTC
  • Tuesday, 15th January 15:00 UTC
  • Tuesday, 15th January 16:00 UTC
  • Wednesday, 16th January 7:00 UTC
  • Wednesday, 16th January 8:00 UTC
  • Wednesday, 16th January 15:00 UTC
  • Wednesday, 16th January 16:00 UTC
  • Thursday, 17th January 7:00 UTC
  • Thursday, 17th January 8:00 UTC
  • Thursday, 17th January 15:00 UTC
  • Thursday, 17th January 16:00 UTC
  • Friday, 18th January 7:00 UTC
  • Friday, 18th January 8:00 UTC

0 voters

Like the first meeting, it will take place on Hangouts meet: meet.google.com/hau-sgdv-uqn

This is the draft Agenda (To be updated, input and proposed agenda points are welcome):

  1. Changes on ROS 2 crystal on how they affect embedded.

  2. Memory footprint measurement.

1 Like

Hi all.

The poll with tentative times and dates was closed yesterday.
These are the meeting details:

When: Tuesday, 15th January at 15:00 UTC.
Where: Google meet: meet.google.com/hau-sgdv-uqn
What: (Draft Agenda, to be closed in the following days, feedback and additions are welcome):

  1. Changes on ROS 2 crystal on how they affect embedded.
  2. Memory footprint measurement.

I wasn’t available for this meeting due to a lack of connectivity 10km above Poland. :wink: Are the meeting minutes available?

+1 to @gbiggs
if available, could you share the minutes?

Sorry for the delay.

ROS 2 Embedded SIG meeting #2 Agenda 01/15

15 January 2019 16:00 PM, Hangouts Meet.

ATTENDEES

eProsima: Borja Outerelo, Julian Bermudez
Bosch: Ingo LĂĽtkebohle
Acutronic Robotics: Iñigo Muguruza, Juan Flores
PIAP: Adam Dabrowski
eSOL: Akihiko Tsukuda, Shoji Morita
Renesas Electronics: Osamu “Max” Matsushima

AGENDA

Crystal changes and how they affect embedded

List all the changes on ROS 2 Crystal changes and how they might affect microcontrollers.

eProsima: The most significant difference we have notice porting micro-ROS to the new Crystal packages is the change on the rmw implementation initialisation. Now it passes the options from upper layers including what we think it is essentially an allocator instance, so we can create custom allocators from upper layers avoiding dynamic memory allocations in the rmw_implementation.
The rmw_microxrcedds implementation has been adapted, and a PR is being reviewed. You can check there what changes were needed.

Bosch: We might need to look at how micro-ROS is compiled in conjunction with ROS 2 standard packages. No significant changes regarding executors done in Crystal.

eSOL: We have collected ROS 2 Crystal. 2 Projects: A) bring ROS 2 to eSOL’s embedded RTOS, B) Work in conjunction with Renesas to put it into their microcontrollers. It has been done at project A), but has not been done at project B) yet.

Bosch: People may be interested in hearing something else from Renesas work in their microcontrollers and ROS integration.

Memory footprint measurement

eProsima: http://jenkins.eprosima.com:8080/job/Micro%20XRCE-DDS%20Client%20Memory%20Profiling/plot/

The output of the first rough massif benchmark of ROS 2 (using rmw_fastrtps) on Linux
Found peak

Library Bytes
/opt/ros/crystal/lib/libfastrtps.so.1.7.0 omitted
/opt/ros/crystal/lib/librcl.so 26029
/opt/ros/crystal/lib/librclcpp.so 56486
/opt/ros/crystal/lib/librcutils.so 18
/opt/ros/crystal/lib/librmw_fastrtps_cpp.so 4214
/opt/ros/crystal/lib/librmw_fastrtps_shared_cpp.so 16912
/opt/ros/crystal/lib/librmw_implementation.so 48
/opt/ros/crystal/lib/librosidl_typesupport_cpp.so 384
/usr/lib/libPocoFoundation.so.50 56
/usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 8888
/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 72704
/usr/lib/x86_64-linux-gnu/libtinyxml2.so.6.0.0 0

The output from micro-ROS software stack static memory analysis.

Dynamic linking size -t output:

text data bss dec hex filename
5268771 126800 544 5396115 525693 ./install/rclcpp/lib/librclcpp.so
85834 2752 8 88594 15a12 /libmicroxrcedds_client.so

Static linking size -t output:

Binary totals (micro-ROS stack):

text data bss dec hex
553635 10304 16367 580306 8dad2

Bosch: the Interesting point is to get the source of the dynamic allocations. Currently testing the Valgrind massif tool and get the peak allocations. Still an ongoing task.

eProsima: experiencing some issues with realloc calls where a strange behaviour is observed in massif data viewer tool.

Acutronic: Still investigation NuttX tools for getting runtime measurements.

Bosch: NuttX and Linux memory measure will be in the default standard library implementation.

Renesas: We are working on a NuttX implementation for RX65N chips. Do you have measured ST32 memory?

Acutronic: Made tests on Olimex. Executing basic complete micro-ROS stack with a client:

  • RAM: 36KB (of 192KB)
  • Flash: 383 KB (of 1MB)

Bosch: Most of the issues with memory usage reside in the CPP layers.

ROS 2 TSC

Bosch: Next TSC meeting will discuss the formation of real-time and safety WGs. Real time working group could be interested in the static memory allocations as well.

PIAP: Can we join?

Bosch: TSC is only open for organisations participating to the ROS 2 core. Working groups are open to the general public.

Next SIG meeting

In 6-8 weeks

AP: Add static compilation of types support to the micro-ROS documentation.

any plan for next meeting?

Yeah, the originally planned date has been delayed due conferences and holidays, but we should definitely have another meeting soon. Personally I would suggest end of May/early June, but I’ll talk to Borja and we’ll post some concrete news soon.

@iluetkeb

okay good to know, thank you very much for taking care of this thread.

Next one could be either 6/3 or 6/6. See below;