# ros-industrial/kuka_experimental architecture

> Architecture diagram of the GitHub repository ros-industrial/kuka_experimental, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ros-industrial/kuka_experimental
- Repository: https://github.com/ros-industrial/kuka_experimental

## Overview

Kuka experimental is a ROS-Industrial collection of experimental KUKA robot packages. Its principal runtime workflow is a ROS controller exchanging joint commands and state with a robot through either EKI or RSI; robot-support packages provide descriptions and configuration for loading supported models. The tree also documents an RSI simulator and controller-side KRL programs. The README gives only a high-level scope, and source excerpts cover the RSI implementation plus part of EKI, so links for unsampled model and simulator internals are intentionally limited.

Main entry points: [`kuka_rsi_hw_interface/src/kuka_hardware_interface.cpp`](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/src/kuka_hardware_interface.cpp) (RSI hardware), [`kuka_eki_hw_interface/src/kuka_eki_hw_interface_node.cpp`](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_eki_hw_interface/src/kuka_eki_hw_interface_node.cpp) (EKI node), [`kuka_rsi_hw_interface/src/kuka_hardware_interface_node.cpp`](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/src/kuka_hardware_interface_node.cpp) (RSI node), [`kuka_eki_hw_interface/src/kuka_eki_hw_interface.cpp`](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_eki_hw_interface/src/kuka_eki_hw_interface.cpp) (EKI hardware)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_control["Robot interfaces"]
  node_eki_node["EKI node"]
  node_eki_hw["EKI hardware"]
  node_rsi_node["RSI node"]
  node_rsi_hw["RSI hardware"]
  node_udp["UDP server<br/>[udp_server.h]"]
  node_rsi_state["RSI state parser<br/>[rsi_state.h]"]
  node_rsi_command["RSI command encoder<br/>[rsi_command.h]"]
end

subgraph group_models["Robot support"]
  node_models_small["Small-arm models"]
  node_models_kr6["KR6 models"]
  node_models_kr10["KR10 models"]
  node_models_heavy["Heavy-arm models"]
  node_models_iiwa["LBR iiwa model"]
  node_resources["Shared URDF resources"]
end

subgraph group_integration["Robot integration"]
  node_eki_krl["EKI robot program"]
  node_rsi_krl["RSI robot programs"]
end

subgraph group_simulation["Simulation"]
  node_simulator["RSI simulator"]
end

node_ros_user(("ROS user"))
node_controllers["ROS controllers"]
node_robot(("KUKA robot"))

node_ros_user -->|"starts"| node_eki_node
node_ros_user -->|"starts"| node_rsi_node
node_eki_node -->|"runs loop"| node_eki_hw
node_eki_node -->|"updates"| node_controllers
node_controllers -->|"commands"| node_eki_hw
node_eki_hw -->|"exchanges EKI"| node_robot
node_eki_krl -->|"runs on"| node_robot
node_rsi_node -->|"runs loop"| node_rsi_hw
node_rsi_node -->|"updates"| node_controllers
node_controllers -->|"commands"| node_rsi_hw
node_rsi_hw -->|"sends and receives"| node_udp
node_rsi_hw -->|"parses state"| node_rsi_state
node_rsi_hw -->|"encodes commands"| node_rsi_command
node_udp -->|"exchanges RSI"| node_robot
node_rsi_krl -->|"runs on"| node_robot
node_models_small -->|"loads description"| node_ros_user
node_models_kr6 -->|"loads description"| node_ros_user
node_models_kr10 -->|"loads description"| node_ros_user
node_models_heavy -->|"loads description"| node_ros_user
node_models_iiwa -->|"loads description"| node_ros_user
node_resources -->|"shared URDF parts"| node_models_small
node_simulator -.->|"simulates RSI"| node_robot

click node_eki_node "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_eki_hw_interface/src/kuka_eki_hw_interface_node.cpp"
click node_eki_hw "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_eki_hw_interface/src/kuka_eki_hw_interface.cpp"
click node_eki_krl "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_eki_hw_interface/krl/kuka_eki_hw_interface.src"
click node_rsi_node "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/src/kuka_hardware_interface_node.cpp"
click node_rsi_hw "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/src/kuka_hardware_interface.cpp"
click node_udp "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/udp_server.h"
click node_rsi_state "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/rsi_state.h"
click node_rsi_command "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/rsi_command.h"
click node_rsi_krl "https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_rsi_hw_interface/krl"
click node_models_small "https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_kr3_support"
click node_models_kr6 "https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_kr6_support"
click node_models_kr10 "https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_kr10_support"
click node_models_heavy "https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_kr120_support"
click node_models_iiwa "https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_lbr_iiwa_support"
click node_resources "https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_resources/urdf"
click node_simulator "https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_simulator/scripts/kuka_rsi_simulator"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_eki_node,node_eki_hw,node_rsi_node,node_rsi_hw,node_udp,node_rsi_state,node_rsi_command,node_ros_user toneBlue
class node_models_small,node_models_kr6,node_models_kr10,node_models_heavy,node_models_iiwa,node_resources toneAmber
class node_eki_krl,node_rsi_krl toneMint
class node_simulator toneRose
class node_controllers,node_robot toneIndigo
```

## Components

### Robot interfaces

- [EKI node](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_eki_hw_interface/src/kuka_eki_hw_interface_node.cpp): `kuka_eki_hw_interface/src/kuka_eki_hw_interface_node.cpp`
- [EKI hardware](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_eki_hw_interface/src/kuka_eki_hw_interface.cpp): `kuka_eki_hw_interface/src/kuka_eki_hw_interface.cpp`
- [RSI node](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/src/kuka_hardware_interface_node.cpp): `kuka_rsi_hw_interface/src/kuka_hardware_interface_node.cpp`
- [RSI hardware](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/src/kuka_hardware_interface.cpp): `kuka_rsi_hw_interface/src/kuka_hardware_interface.cpp`
- [UDP server](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/udp_server.h): `kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/udp_server.h`
- [RSI state parser](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/rsi_state.h): `kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/rsi_state.h`
- [RSI command encoder](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/rsi_command.h): `kuka_rsi_hw_interface/include/kuka_rsi_hw_interface/rsi_command.h`

### Robot support

- [Small-arm models](https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_kr3_support): `kuka_kr3_support`
- [KR6 models](https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_kr6_support): `kuka_kr6_support`
- [KR10 models](https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_kr10_support): `kuka_kr10_support`
- [Heavy-arm models](https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_kr120_support): `kuka_kr120_support`
- [LBR iiwa model](https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_lbr_iiwa_support): `kuka_lbr_iiwa_support`
- [Shared URDF resources](https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_resources/urdf): `kuka_resources/urdf`

### Robot integration

- [EKI robot program](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_eki_hw_interface/krl/kuka_eki_hw_interface.src): `kuka_eki_hw_interface/krl/kuka_eki_hw_interface.src`
- [RSI robot programs](https://github.com/ros-industrial/kuka_experimental/tree/melodic-devel/kuka_rsi_hw_interface/krl): `kuka_rsi_hw_interface/krl`

### Simulation

- [RSI simulator](https://github.com/ros-industrial/kuka_experimental/blob/melodic-devel/kuka_rsi_simulator/scripts/kuka_rsi_simulator): `kuka_rsi_simulator/scripts/kuka_rsi_simulator`

### Other components

- **ROS user**
- **ROS controllers**
- **KUKA robot**

## Connections

- ROS user → EKI node: starts
- ROS user → RSI node: starts
- EKI node → EKI hardware: runs loop
- EKI node → ROS controllers: updates
- ROS controllers → EKI hardware: commands
- EKI hardware → KUKA robot: exchanges EKI
- EKI robot program → KUKA robot: runs on
- RSI node → RSI hardware: runs loop
- RSI node → ROS controllers: updates
- ROS controllers → RSI hardware: commands
- RSI hardware → UDP server: sends and receives
- RSI hardware → RSI state parser: parses state
- RSI hardware → RSI command encoder: encodes commands
- UDP server → KUKA robot: exchanges RSI
- RSI robot programs → KUKA robot: runs on
- Small-arm models → ROS user: loads description
- KR6 models → ROS user: loads description
- KR10 models → ROS user: loads description
- Heavy-arm models → ROS user: loads description
- LBR iiwa model → ROS user: loads description
- Shared URDF resources → Small-arm models: shared URDF parts
- RSI simulator → KUKA robot: simulates RSI
