Skip to content

epfl-lasa/iiwa_ros

Repository files navigation

iiwa_ros

ROS Stack for KUKA's IIWA robots

  • Use the Fast Research Interface (FRI) to connect to the robot
  • Integration with ROS control
  • Gazebo integration with gravity compensation (similar to real robot)

Requirements

iiwa_ros requires several packages to be installed in order to work properly:

Dependencies

KUKA FRI (Private)

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

SpaceVecAlg

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.

RBDyn

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

mc_rbdyn_urdf

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

corrade

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

robot_controllers

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

Compilation

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

Sunrise Robot Application upload

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

  1. Create a new Sunrise project with Sunrise Workbench and setup an empty RobotApplication template
  2. Setup the safety configuration in SafetyConfiguration.sconf (example)
  3. Replace the empty template with the online app
  4. In StationSetup.cat, tab Software, active the FRI extension, push it to the robot with Installation and accept the reboot question
  5. Synchronise your new Sunrise project to the robot with icon Synchronize project
  6. On the Smartpad tablet, your app must be listed in [Applications] and you must also see a new [FRI] tab

Basic Usage

Bringup iiwa_driver

Control IIWA with FRI

  1. Make sure your Linux/ROS laptop is connected on the KONI Ethernet port and has IP 192.170.10.1 mask 255.255.255.0.
  2. 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 ▶
  1. 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
  2. Check that everything works if /iiwa/joint_states is being published and reflects the actual robot state.
  3. 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.

Gazebo Simulation

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.

MoveIt planning

If everything looks in simulation or with the FRI driver, a next step might be to try out your robot with MoveIt.

Contributing

iiwa_ros is being actively developed. Please see CONTRIBUTING for more on how to help.

Acknowledgements

The URDF description files are copied and refactored from iiwa_stack (by Salvatore Virga and Marco Esposito).

Authors/Maintainers

Other Contributors

Citing iiwa_ros

@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},
}