- Use the Fast Research Interface (FRI) to connect to the robot
- Integration with ROS control
- Gazebo integration with gravity compensation (similar to real robot)
iiwa_ros requires several packages to be installed in order to work properly:
- ROS - ROS: tested in Melodic and Kinetic; Indigo should work also
- KUKA FRI - This is a modified version of the C++ FRI library provided by KUKA: unfortunately, we cannot release this code, but if you own a KUKA manipulator please contact us in order to acquire this modified library.
- ROS Control
- Gazebo and gazebo-ros-pkgs
- SpaceVecAlg
- RBDyn
- mc_rbdyn_urdf
- corrade
- robot_controllers
This repo can be omitted if the robot is only used in simulation.
cd /source/directory
git clone https://github.com/epfl-lasa/kuka_fri.git
cd kuka_fri
# Apply SIMD patch:
wget https://gist.githubusercontent.com/matthias-mayr/0f947982474c1865aab825bd084e7a92/raw/244f1193bd30051ae625c8f29ed241855a59ee38/0001-Config-Disables-SIMD-march-native-by-default.patch
git am 0001-Config-Disables-SIMD-march-native-by-default.patch
# Build
./waf configure
./waf
sudo ./waf install
cd /source/directory
git clone --recursive https://github.com/jrl-umi3218/SpaceVecAlg.git
cd SpaceVecAlg
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_BINDING=OFF ..
make -j
sudo make install
To compile with SIMD flags (e.g. because you enabled it for robot_controllers and iiwa_ros), you can do cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-march=native -faligned-new" -DPYTHON_BINDING=OFF ..
instead of the above. Also, instead of passing -DCMAKE_CXX_FLAGS="-march=native -faligned-new"
for SpaceVecAlg
, RBDyn
and mc_rbdyn_urdf
builds you can also set the CXXFLAGS
environment variables and omit the option:
export CXXFLAGS="-march=native -faligned-new"
The same holds for RBDyn and mc_rbdyn_urdf.
cd /source/directory
git clone --recursive https://github.com/jrl-umi3218/RBDyn.git
cd RBDyn
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_BINDING=OFF ..
make -j
sudo make install
cd /source/directory
git clone --recursive https://github.com/jrl-umi3218/mc_rbdyn_urdf.git
cd mc_rbdyn_urdf
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_BINDING=OFF ..
make -j
sudo make install
We are using a specific version of Corrade.
cd /source/directory
git clone https://github.com/mosra/corrade.git
cd corrade
git checkout 0d149ee9f26a6e35c30b1b44f281b272397842f5
mkdir build && cd build
cmake ..
make -j
sudo make install
cd /source/directory
git clone https://github.com/epfl-lasa/robot_controllers.git
cd robot_controllers
mkdir build && cd build
cmake ..
make -j
sudo make install
If a simulation-only setup is enough or you do not have access to KUKA FRI
, the robot driver compilation can be disabled with
touch /path/to/ros_workspace/iiwa_ros/iiwa_driver/CATKIN_IGNORE
Build the workspace:
cd /path/to/ros_workspace
# source ros workspace
catkin_make
You need a specific application to run on the robot side.
0. Make sure a Windows laptop is connected on the X66 Ethernet port and has IP 172.31.1.42
mask 255.255.0.0
- Create a new Sunrise project with Sunrise Workbench and setup an empty RobotApplication template
- Setup the safety configuration in
SafetyConfiguration.sconf
(example) - Replace the empty template with the online app
- In
StationSetup.cat
, tabSoftware
, active the FRI extension, push it to the robot withInstallation
and accept the reboot question - Synchronise your new Sunrise project to the robot with icon
Synchronize project
- On the Smartpad tablet, your app must be listed in [Applications] and you must also see a new [FRI] tab
Control IIWA with FRI
- Make sure your Linux/ROS laptop is connected on the KONI Ethernet port and has IP
192.170.10.1
mask255.255.255.0
. - On the Smartpad tablet:
- Activate
AUT
mode (turn key right > AUT > key left) - In
[Application]
, check yours in order to select it - Press the mechanical
Play
button ▶
- Within 10 seconds before the timeout, launch:
roslaunch iiwa_driver iiwa_bringup.launch
. This will connect to IIWA robot using FRI. 4 The Smartpad lets you select control mode and stiffness - Check that everything works if
/iiwa/joint_states
is being published and reflects the actual robot state. - The Smarpad'd [Application] tab must remain green. Otherwise you can press
Play ▶
again to reconnect.
In case of a hard failure, unload the app by unchecking it in [Application] before retrying.
To launch Gazebo with IIWA
roslaunch iiwa_gazebo iiwa_gazebo.launch
Both of the above commands will launch IIWA in torque-control mode. To change the control mode (e.g., position-control), please edit the launch files to select the appropriate controller.
If everything looks in simulation or with the FRI driver, a next step might be to try out your robot with MoveIt.
iiwa_ros is being actively developed. Please see CONTRIBUTING for more on how to help.
The URDF description files are copied and refactored from iiwa_stack (by Salvatore Virga and Marco Esposito).
- Konstantinos Chatzilygeroudis (costashatz@gmail.com)
- Matthias Mayr (matthias.mayr@cs.lth.se)
- Bernardo Fichera (bernardo.fichera@epfl.ch)
- Yoan Mollard (yoan@aubrune.eu)
- Walid Amanhoud (walid.amanhoud@epfl.ch)
@software{iiwa2019github,
author = {Chatzilygeroudis, Konstantinos and Mayr, Matthias and Fichera, Bernardo and Billard, Aude},
title = {iiwa_ros: A ROS Stack for KUKA's IIWA robots using the Fast Research Interface},
url = {http://github.com/epfl-lasa/iiwa_ros},
year = {2019},
}