KUKA LBR ROS2, MoveIt2, Gazebo Integration

Hi everyone,

just sharing our integration of the KUKA LBR robots here in the hope someone might find it helpful.

https://github.com/KCL-BMEIS/lbr_fri_ros2_stack

The ROS2 control hardware_interface::SystemInterface is implemented via the Fast Robot Interface (FRI), which we integrated into the ROS2 build system. Everything is setup for MoveIt2 and for the Gazebo simulation. Supported are iiwa7, iiwa14, med7, med14. This is built for foxy, but it is a work in progress and other branches are to follow.

13 Likes

Very excited to hear about this!

1 Like

Hi, that’s a very nice package thanks a lot. I had a look at the hardware interface and the FRI interface and have a question. Can you guarantee that the FRI communication is ensured in real time independent from how long the controller update phase is. I tried to build a driver myself and have an extra communication tread which runs independently from the control loop. this way I can ensure that no matter how long the controller might take to compute the communication is still running at real time. I am not sure if this is overkill.

Would be very interested what you think

Hi,

as maintainer of ros2_control I think your approach is good and actually recommended for the most applications. Occasionally, you want to have tighter synchronization between controllers and hardware and use them from one thread. Then you should start thinking about RT-Preempt or other real-time Kernel. (we just have contributions about that to have them more tightly integrated into ros2_control).

1 Like

hi Maximilian, the way this package is currently built, the FRI manages the control rate of the ros2_control_node. Therefore, if a controller takes too long to compute an update, the communication to the robot will drop. We initially had the communication to the robot run in a separate thread, same as your approach, but found it difficult to synchronize FRI and ros2_control. Maybe we will revert back to this approach in the future. Did you experience any unsteady motion when running the communication in a separate thread?

Update: We made significant changes to the lbr_fri_ros2_stack. Rolling & Humble are now supported. Additionally, the FRI runs now in a separate thread!

1 Like

This looks really cool.

1 Like

We are happy to share that the stack has a new home at:

Christopher Mower and I decided to create the lbr-stack organization because we also implemented Python bindings for the Fast Robot Interface:

There might be a little hiccups during the transitionary period but we are hoping that this move will accelerate both research and deployment!

Sharing the lbr_fri_ros2_stack Humble v1.4.0 release: Releases · lbr-stack/lbr_fri_ros2_stack · GitHub :christmas_tree:.

It comes with:

  • Improved ros2_control integration
  • Native force-torque broadcasting through the LBR’s joint torque sensors
  • Ease of use for multi-robot and custom setups

We would like to thank the community for their incredibly valuable feedback!

For easter, we are working on gz_ros2_control to support the new Gazebo, which can already be previewed here Multiple command interfaces not functioning · Issue #182 · ros-controls/gz_ros2_control · GitHub.

2 Likes