Building ROS2 Workspace on Raspi with Ubuntu 20 hangs

Hi there,

I’m currently trying to setup the PX4-ROS2 Bridge, using the corresponding article from the PX4 user guide. The setup consist of a Pixhawk 4 Mini with PX4 1.11 release and a Raspberry Pi 3 with Ubuntu 20.04 Server and ROS 2 foxy. I set up a fresh new system and followed the guide which I linked above.

Everything works fine until the last step where I build the ROS2 workspace:

source build_ros2_workspace.bash --verbose

At first, the PX4 messages are generated. This works without any error, so I will skip this part. Then when it builds the other package, I am getting this output:

Starting >>> px4_ros_com
[  1%] Building CXX object CMakeFiles/vehicle_gps_position_listener.dir/src/examples/listeners/vehicle_gps_position_listener.cpp.o
[  2%] Building CXX object CMakeFiles/offboard_control.dir/src/examples/offboard/offboard_control.cpp.o
[  3%] Building CXX object CMakeFiles/frame_transforms.dir/src/lib/frame_transforms.cpp.o
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
All good. RTPS ID's are unique
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~20.04-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
Loading templates...
Processing the file /home/ubuntu/ros2_ws/install/px4_msgs/share/px4_msgs/msg/YawEstimatorStatus.idl...
[  846.812348] INFO: task kworker/1:0:2076 blocked for more than 120 seconds.
[  846.824464]	     Tainted: G 	C  E	5.4.0-1028-raspi #31-Ubuntu
[  846.835102] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message"

The timeout message repeats over and over, so I stopped the whole process after an half hour. I thought it may be a race condition, so I extended the build command in the build_ros2_workspace.bash skript to force sequential build:

cd $ROS_WS_DIR && colcon build --cmake-args -DCMAKE_BUILD_TYPE=RELWITHDEBINFO --symlink-install --packages-skip ros1_bridge $colcon_output --executor sequential

And I forced all makefiles to only execute on one core, using export MAKEFLAGS="-j 4". These approaches do not change anything.
Furthermore I tried to (re-)install some required packages as suggested here, but this also didn’t solve the issue.

So is my question is, does anyone now why this build process hangs on the given file? And even better, does anyone have a solution to get this to work?

Thanks in advance!

I am experiencing the same issue. If anyone has any advice, please comment. I developed a base controller that runs nicely in SITL. Now it is time to start unit testing on the companion computer PI 4 4Gb and I am stuck here.