meta-ros icon indicating copy to clipboard operation
meta-ros copied to clipboard

Kirkstone (l4t-r32.7.x) Flashed image ROS 2 underlay installation does not have packages listed in "IMAGE_INSTALL:append" (possible export issue to underlay)

Open dirksavage88 opened this issue 11 months ago • 3 comments

Describe the bug I'm still really new to yocto, and the meta-ros recipes look a bit different from what I have seen with generic yocto recipes. However in my meta layer with the image_install:append list, I have a ton of ROS 2 packages (e.g. python3 colcon, ament_cmake*, examples*, rosidl_*)

On the flashed image looks like only the python3 colcon, rpyutils sensor_msgs, std_msgs, examples, and a handful of other ros base packages get installed to "/opt/ros/humble" underlay, which is enough to run ros2 cli commands and colcon build, but not enough to create or build custom packages with dependencies on rosidl generators for example.

The underlay doesn't seem to have these packages groups specified in the image install append list:

 ament_cmake, acment_cmake_ros, ament_index, rclcpp, rosidl, rosidl_defaults, rcl, rcl_interfaces, test_interface_files, unique_identifier_msgs, rcutils, libyaml_vendor

To Reproduce Layers:

layer                 path                                      priority
==========================================================================
meta                  /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta  5
meta-tegra            /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegra  5
contrib               /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegra/contrib  4
meta-oe               /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-oe  5
meta-python           /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-python  5
meta-networking       /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-networking  5
meta-filesystems      /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-filesystems  5
meta-virtualization   /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-virtualization  8
meta-tegra-community  /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegra-community  20
meta-tegra-support    /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegra-support  40
meta-demo-ci          /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-demo-ci  40
meta-tegrademo        /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-tegrademo  50
meta-ros2             /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-ros/meta-ros2  11
meta-ros2-humble      /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-ros/meta-ros2-humble  12
meta-ros-common       /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-ros/meta-ros-common  10
meta-dds              /home/papadrew/Downloads/l4t_build/tegra-demo-distro/layers/meta-dds  6
workspace             /home/papadrew/Downloads/l4t_build/tegra-demo-distro/build/workspace  99

Building for a jetson-xavier-nx-devkit-tx2-nx on ubuntu 24.04 native host

No bitbake errors seen, only the missing ros 2 underlay packages

Effectively I have to install the missing packages in an overlay as shown below, but somehow std_msgs and sensor_msgs can be traced to the underlay:

jetson-xavier-nx-devkit-tx2-nx:~/ros_ws$ ros2 pkg prefix rosidl_parser
/home/savagerobotstx2/ros_ws/install/rosidl_parser
jetson-xavier-nx-devkit-tx2-nx:~/ros_ws$ ros2 pkg prefix sensor_msgs  
/opt/ros/humble
jetson-xavier-nx-devkit-tx2-nx:~/ros_ws$ ros2 pkg prefix std_msgs   
/opt/ros/humble

Expected behavior The image install appends should export ros packages to the underlay in "/opt/ros/humble/"

I'm attaching my image bitbake file for reference (with txt extension only for github attachment compatibility) demo-image-ros2.txt

dirksavage88 avatar Dec 30 '24 14:12 dirksavage88

yocto_cmake_missingros2 Looking in the ros underlay of the kirkstone image, I do not see cmake folders under any of the packages.

The example minimal pub/sub works out of the box, so everything built in the underlay works, but any attempt to build overlay packages fails.

dirksavage88 avatar Jan 01 '25 13:01 dirksavage88

Hi @dirksavage88

There are two distros if you include tegra-demo distro layer, one is "tegrademo" another is "ros2".

if you use tegra-demo distro, DISTRO would be set by "tegrademo" not "ros2". it would affect to build and install ros package correctly because all build configuration for ros2 is defined "ros2" distro.

So, I recommend you to exclude tegra-demo distro layer and you can add ros packages to local.conf in prompt.

BR, Mark

mark-bchoi avatar Jan 05 '25 10:01 mark-bchoi

@robwoolley I have to confirm, but I think this might be resolved by your recent fix to the PYTHONPATH in kirkstone and kirkstone-next

dirksavage88 avatar Jan 22 '25 15:01 dirksavage88

Closing as likely fixed. Please feel free to open a new issue if the problem still exists.

robwoolley avatar Sep 04 '25 00:09 robwoolley