sdk from meta-ros
Hi,
I'm trying to get a minimal setup of ROS 2 working for my companies eco system, which requires an OpenEmbedded toolchain.
meta-ros
has been integrated into our project and an image with ros-base
could be build and seems to work.
The setup is based on OpenEmbedded dunfell
with ROS 2 foxy
. The branch dunfell
from the meta-ros-repo is used.
A newer ROS 2 version (also rolling
) could be used, however dunfell
can not be changed.
The next step would be to extent our toolchain/sdk with the requirements to build ROS nodes.
However not much could be found regarding this.
And some other answers suggest to create a recipe
to build custom-ros-nodes.
This would not be suitable for us.
In https://github.com/ros/meta-ros/wiki/... it is mentioned that nativesdk
will be included for ROS_SUPERFLORE_GENERATION_SCHEME 3
however I could not find what 3 means and I assume based on the surrounding documentation that the current version is 2, but I could not find a clear statement regarding that or a planned timetable for the implementation of generation 3.
So after a long intro to my question. Is there a working way to create an OpenEmbedded SDK for ROS 2 and where could I find it?
What I did till now is to extent ament-cmake
and its depending packages by BBCLASSEXTEND = "native nativesdk"
and included these nativesdk-ament-*
packages within the dependencies of the SDK.
ament
seems to be found when the toolchain is used to corsscompile, and I'm currently stopped by cmake
not finding middlewares with the following error:
CMake Error at /home/ilocalstorage-ssd/tneumann/sdk/17.266f5bc31/sysroots/core2-64-oe-linux/usr/share/rmw_implementation/cmake/rmw_implementation-extras.cmake:54 (message): The RMW implementation has been specified as 'rmw_fastrtps_cpp' via environment variable 'RMW_IMPLEMENTATION', but it is not available at this time. Currently available middlewares: ''
Help regarding this specific problem would be nice, but the main focus of the question should be "is that the correct path I'm following, or should I look into a different direction?".
it's quite a complex questions, but I tried to describe the general problem as good as I could so that it would also be helpful for the next persons running into the same problems.
best regards Tobias
The problem regarding the not found
RMW_IMPLEMENTATION
where caused by theament_index
not been set up correctly. I could bypass this by settingexport AMENT_PREFIX_PATH=<path-to-my-sdk>/sysroots/core2-64-oe-linux/usr/
After that, it seems like only
foonathan-memory-staticdev
where missing for a first minimal working version. However the main question, if that is the correct way to generate and sdk, would still stand.Building single ROS dependent cmake projekts seems to works now, with the above described steps (only tested with a very small Hello-World like example). Next step will be to include
colcon
in the toolchain and support an overlay-workspace (during compilation with the toolchain and in the resulting img)can you please share your findings about what exactly steps need to be done to build sdk (by the way you using standard or extensible variant?) and how to create recipe whit all dependencies for builinding ros2-nodes?
Hi, sry for my late reply. I missed your request. I've added a description of the steps I took till now.