osrf / nexus

Core packages of Nexus
30 stars 7 forks source link

Migrate to Jazzy and UR robots #35

Open luca-della-vedova opened 1 month ago

luca-della-vedova commented 1 month ago

This PR migrates the Nexus codebase to Ubuntu 24.04, ROS 2 Jazzy and UR robots for tests (specifically ur5e). Overview of the changes below, I tried to keep the commits split, clean and self descriptive to ease the review.

UR Robots

Moving to UR robots means we can get rid of all the custom abb repos that were becoming fairly tricky to maintain (we were relying on a fork that was diverging from upstream and also needed further updates for jazzy). Instead, the UR robots have a single xacro and can be installed from binaries. Now as of literally the sync that happened a few hours ago binaries are broken but they should be fixed in the next sync, I added a workaround and a TODO to keep CI green https://github.com/osrf/nexus/pull/35/commits/04dc1e49805acb21db10da8bddbe2ed4c9eeee93.

Zenoh

I bumped the zenoh bridge to 0.11.0, this version however is not compatible with Rust > 1.80 so I had to pin the CI to 1.79. Version 1.0.0 is not stable yet and even the rc contains breaking changes that were not immediate to migrate and would have required changes to the network config package. Since there is a plan to migrate out of it (https://github.com/osrf/nexus/issues/17) I took this path of least resistance to avoid blowing up the complexity here, a followup PR will migrate to a different plugin altogether.

Style

Moving to Ubuntu 24.04 brings a new uncrustify version that makes the bulk of the C++ file changes in this PR.

Lifecycle nodes

During migration I found an upstream issue in rclcpp in how timers are cleaned up that broke the workcell orchestrator. Added a workaround and a TODO in https://github.com/osrf/nexus/pull/35/commits/1f0f43a086056bf0483b004c39c79e43f3917277

Commented test

I managed to get all the tests to pass except one that however was failing already so I didn't focus on trying to get it right. I added a note in https://github.com/osrf/nexus/pull/35/commits/b683b1f82425be612be6cd7dd2f81a3221f198c1

Test it!

All the tests other than the one that I noted above pass, including integration tests. I also did a few manual runs and it seems to be OK. Note however that this has not been tested on hardware.

luca-della-vedova commented 2 weeks ago

I gave a try to using clang and there are compile errors due to ros2-control https://github.com/ros-controls/realtime_tools/pull/183