Skip to content

Warning

This is as a Lab Notebook which describes how to solve a specific problem at a specific time. Please keep this in mind as you read and use the content. Please pay close attention to the date, version information and other details.

The problem (2022-09-30)

The latest version of the Robot Operating System, Humble Hawksbill https://www.openrobotics.org/blog/2022/5/24/ros-2-humble-hawksbill-release, uses a version of libQtCore.so.5 that is not compatible with the HPCC Linux kernel version (3.10 as of writing). Specifically, it requires kernel version 3.15+. When the ROS is installed into a Docker container, and used inside a Singularity image with e.g. singularity pull docker://morris2001/humble and singularity run humble_latest.sif, the rqt command inside the Singularity image will result in the error:

1
ImportError: libQt5Core.so.5: cannot open shared object file: No such file or directory

The solution

Inside your Dockerfile where you build the ROS container with Ubuntu 22.04, add the command

1
RUN /usr/bin/strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

This is based on discussion here: https://github.com/dnschneid/crouton/wiki/Fix-error-while-loading-shared-libraries:-libQt5Core.so.5

This command removes the offending piece of code that is incompatible with the HPCC Linux kernel, and allows rqt to launch successfully.

OpenCV

OpenCV is an important Python package for various parts of ROS. Make sure you install it in your Docker container by adding the command

1
RUN apt install libopencv-dev python3-opencv

to your Dockerfile.