Having total awareness of what ROS 2 messages and types are being used for, is essential in order to handle memory correctly in an embedded C99 environment.
The following Tutorial “Handling messages memory in micro-ROS ‘’ at micro-ROS web page explains in detail how to handle messages and types memory in micro-ROS.
The two approaches of micro-ROS memory handling are present in this tutorial.
-
micro-ROS Foxy: Memory handling using traditional allocation approach
-
micro-ROS Galactic: Memory handling using type support introspection
Type Support introspection in C in micro-ROS Galactic distribution enables the new type handling API. This package is able to auto-assign memory to a certain message structure using default dynamic memory allocators.
Thanks to the inclusion of this feature, an automated memory handling for micro-ROS types is available, enhancing the usability of the micro-ROS API.
The tools related to this feature are available in the package micro_ros_utilities and the documentation is available here.
Check this example for more information about how to avoid the message memory initialization problems in micro-ROS.