You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
message: "If you enjoyed using this repository for your work, we would really appreciate ❤️ if you could cite it, as it helps us to continue offering support."
3
+
authors:
4
+
- family-names: Huber
5
+
given-names: Martin
6
+
orcid: https://orcid.org/0000-0003-4603-6773
7
+
- family-names: Mower
8
+
given-names: Christopher E.
9
+
orcid: https://orcid.org/0000-0002-3929-9391
10
+
- family-names: Ourselin
11
+
given-names: Sebastien
12
+
orcid: https://orcid.org/0000-0002-5694-5340
13
+
- family-names: Vercauteren
14
+
given-names: Tom
15
+
orcid: https://orcid.org/0000-0003-1794-0456
16
+
- family-names: Bergeles
17
+
given-names: Christos
18
+
orcid: https://orcid.org/0000-0002-9152-3194
19
+
20
+
21
+
title: "LBR-Stack: ROS 2 and Python Integration of KUKA FRI for Med and IIWA Robots"
Copy file name to clipboardExpand all lines: paper/paper.md
+22-14Lines changed: 22 additions & 14 deletions
Original file line number
Diff line number
Diff line change
@@ -33,12 +33,16 @@ authors:
33
33
affiliations:
34
34
- name: School of Biomedical Engineering and Image Sciences, King's College London, United Kingdom
35
35
index: 1
36
-
date: 12 May 2023
36
+
date: 21 November 2023
37
37
bibliography: paper.bib
38
38
---
39
39
40
+
![Supported robots in the LBR-Stack. From left to right: KUKA LBR IIWA7, IIWA14, Med7, Med14. Visualizations made using Foxglove [^1].](img/joss_figure.png)
The `LBR-Stack` is a collection of packages that simplify the usage and extend the capabilities of KUKA's Fast Robot Interface (FRI) [@fri]. It is designed for mission critical hard real-time applications. Supported are the `KUKA LBR Med7/14` and `KUKA LBR iiwa7/14` robots in the Gazebo simulation [@gazebo] and for communication with real hardware. A demo video can be found [here](https://www.linkedin.com/posts/mhubii_robotics-opensource-ros2-activity-7009974676017848320-S3U5/?utm_source=share&utm_medium=member_desktop).
45
+
The `LBR-Stack` is a collection of packages that simplify the usage and extend the capabilities of KUKA's Fast Robot Interface (FRI) [@fri]. It is designed for mission critical hard real-time applications. Supported are the `KUKA LBR Med7/14` and `KUKA LBR IIWA7/14` robots in the Gazebo simulation [@gazebo] and for communication with real hardware. A demo video can be found [here](https://www.linkedin.com/posts/mhubii_robotics-opensource-ros2-activity-7009974676017848320-S3U5/?utm_source=share&utm_medium=member_desktop). An overview of the software architecture is shown in Figure \ref{fig:fri}.
42
46
43
47
At the `LBR-Stack`'s core are two packages:
44
48
@@ -47,27 +51,31 @@ At the `LBR-Stack`'s core are two packages:
47
51
48
52
All other packages are built on top. These include Python bindings and packages for integration into the Robot Operating System (ROS) and ROS 2:
49
53
50
-
-**pyFRIClient**: Python bindings for the **fri**.
54
+
-**pyFRI**: Python bindings for the **fri**.
51
55
-**lbr_fri_ros2_stack**: ROS 1/2 integration of the `KUKA LBR`s through the **fri_vendor**.
52
56
53
57
For brevity, and due to the architectural advantages over ROS [@ros2], only ROS 2 is considered in the following. The **lbr_fri_ros2_stack** comprises the following packages:
54
58
55
59
-**lbr_bringup**: Python library for launching the different components.
56
-
-**lbr_description**: Description files for the `Med7/14` and `iiwa7/14` robots.
60
+
-**lbr_description**: Description files for the `Med7/14` and `IIWA7/14` robots.
57
61
-**lbr_demos**: Demonstrations for simulation and the real robots.
58
62
-**lbr_fri_msgs**: Interface Definition Language (IDL) equivalent of FRI protocol buffers.
59
63
-**lbr_fri_ros2**: FRI ROS 2 interface through `realtime_tools`[@ros_control].
60
-
-**lbr_hardware_interface**: Interface for `ros2_control`[@ros2_control].
64
+
-**lbr_ros2_control**: Interface and controllers for `ros2_control`[@ros2_control].
![An overview of the overall software architecture. There exists a single source for KUKA's FRI. This design facilitates that downstream packages, i.e. the Python bindings and the ROS 2 package, can easily support multiple FRI versions. The ROS 2 side utilizes vcstool[^2].\label{fig:fri}](img/fri_dependency_architecture.pdf)
An overview of existing work that interfaces the KUKA LBRs from an external computer is given in Table 1. We broadly classify these works into custom communication solutions [@iiwa_stack; @kuka_sunrise_toolbox; @libiiwa] and communication solutions through KUKA's FRI UDP channel [@iiwa_ros; @iiwa_ros2]. The former can offer greater flexibility while the latter offer a well defined interface and direct software support from KUKA. Contrary to the custom communication solutions, the FRI solutions additionally enable hard real-time communication, that is beneficial for mission critical development. Stemming from translational medical research, this work therefore focuses on the FRI.
@@ -78,14 +86,14 @@ Limitations with the current FRI solutions are:
78
86
79
87
The first original contribution of this work is to add support for the `KUKA LBR Med7/14` robots, which, to the best author's knowledge, does not exist in any other work. The second novel contribution of this work is to provide Python bindings. This work solves the maintainability by outsourcing the FRI into the separate **fri** and **fri_vendor** packages, which leaves the FRI's source code untouched and simply provides build support. 4. is solved by defining an IDL message to KUKA's `nanopb` command and state protocol buffers in **lbr_fri_msgs**. These messages can then be interfaced from ROS 1/2 topics or from the ROS 1/2 hardware abstraction layer.
Table: Overview of existing frameworks for interfacing the KUKA LBRs. A square indicates support for the respective feature. List of abbreviations: Hard Real-time (**RT**), Position Control (**Pos**), Impedance Control (**Imp**), Cartesian Impedance Control (**Cart Imp**), Hardware Interface (**HW IF**).
0 commit comments