[ros-users] [Discourse.ros.org] [Embedded] ROS2 Embedded SIG meeting #2

Borja Outerelo via Discourse.ros.org ros.discourse at gmail.com
Wed Jan 30 13:21:54 UTC 2019





Sorry for the delay.



# ROS  Embedded SIG meeting #2 Agenda 01/15



_15 January 2019 16:00 PM, Hangouts Meet._





# ATTENDEES

**eProsima**: Borja Outerelo, Julian Bermudez

**Bosch**: Ingo Ltkebohle

**Acutronic Robotics**: Iigo 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.

https://github.com/microROS/rmw-microxrcedds/pull/11/files



**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 eSOLs 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.











---

[Visit Topic](https://discourse.ros.org/t/ros2-embedded-sig-meeting-2/7243/5) or reply to this email to respond.









More information about the ros-users mailing list