-
Notifications
You must be signed in to change notification settings - Fork 249
Home
This wiki aims to give all the information needed to use and extend the ROS packages for the KUKA IIWA LWR.
It is aimed to readers familiar with both ROS and KUKA's Sunrise Workbench and Robotics API. This wiki might briefly introduces some concepts from both frameworks, but it doesn't want to replace their original documentation. Therefore, please refer to their respective documentation if needed.
MIND YOUR SPEED: From iiwa_stack 1.2, when start ROSSMartServo the robot will use the default values for it velocity and acceleration (1.0, i.e. 100%). That means it will be quite fast. Not by some coincidence, we provide a way to change the velocity and acceleration at runtime
- Introduction
- Setup Guide
- Features
- Safety Configuration
- Using a tool
- Simulation
- FAQs / Troubleshooting
- Contacts
The KUKA LBR IIWA redundant manipulator is programmed using the KUKA's Sunrise Workbench platform and its Java APIs.
A Sunrise project, containing one of more Robotic Application, can be synchronized to the robot cabinet and executed from the SmartPad.
Within this software package you will find a Robotic Application that can be used with the robot.
It establishes a connection with an additional machine connected via Ethernet to the robot cabinet via ROS.
The additional machine, having ROS installed, will be able to send and receive ROS messages to and from the aforementioned Robotic Application.
We make use of ROS messages already available in a mint ROS distribution as well as custom ones, made to work with the KUKA arm (iiwa_msgs).
A user is then able to manipulate the messages received from the robot and to send new ones as commands to it, simply within C++ or python code, taking leverage of all the ROS functionalities.
In this wiki we will refer as ROSCORE side for the additional machine equipped with ROS and SUNRISE side for anything included in robot cabinet. The following image shows a schematic overview of the system architecture :
IMPORTANT : A version of Sunrise Workbench with the Sunrise.Connectivity module is required to use this stack. Connectivity usually comes with odd version number of Sunrise : 1.5, 1.7, 1.9 and 1.11 till now. If you don't have the Connectivity module, you might want to ask KUKA for it.
First of all, you need to allow the comunication between SUNRISE and ROSCORE :
SUNRISE
ROSCORE
Then, synchronize our Robotic Applications on your robot :
SUNRISE PROJECT
NOTE : As for any ROS workspace, remember to source the ROS workspace containing iiwa_stack with
source devel/setup.bash
for any new terminal window, or add that to your~/.bashrc
After the setup is done there should be (at least) a Robotics Application installed on the robot: ROSSmartServo. This application requires to have an instance of ROS running on the machine connected to the cabinet. That basically means running a roscore or call a launch file on a terminal. If you start ROSSmartServo without a** ROS Master** being online, it will wait until one is started. It should not matter which one you start first, ROSSMartServo or the ROS Master.
iiwa_stack allows users to perform the following:
- Read the current state of the robot via ROS topics.
- Command the robot motion in different ways via ROS topics.
- Reconfigure the Control Mode of the robot at runtime via a ROS Service.
- Reconfigure the robot velocity and acceleration at runtime via a ROS Service.
- Select the Sunrise tool to use via a ROS parameter.
- Ask how much time is left for the robot to reach its destination.
- Sync the clocks of your Linux machine and the KUKA Cabinet via NTP. - TODO
❗ SAFETY FIRST! ❗
An industrial robot is not a toy and you may harm yourself due to misuse. In general, it is a good practice to test your code in T1 mode and have your hand close to the emergency stop. More on safety can be found in the manuals given out by KUKA, you should read them carefully before using the robot.
Within a Sunrise Project is possible to set a Safety Configuration for the robot. This should be done properly, following the KUKA manuals and your needs.
In industrial scenario a technician should be responsible for it.
We are no industrial safety experts and we don't take any responsibility about the Safety Configuration you are going to use. What we can do, however, is to show you what we use and why. You could use our settings as a starting point, but we don't guarantee it is optimal for you. The file for the Safety Configuration varies along different versions of Sunrise OS, so we are not able to share the file itself.
Since it's quite unlikely for any user to control the robot without attaching any tool to its flange, we show now how to extend iiwa_stack for that.
You will have to create small ROS packages that make use of iiwa_stack.
For educational purpose ONLY, we created an additional repository that simulate that.
HERE you can find the exemplary packages.
- iiwa_tool_description : shows how to define a URDF to work with a robot equipped with a tool.
- iiwa_tool_moveit : shows how to use the URDF defined above with MoveIt!
- iiwa_tool_examples : contains small and trivial examples on how to control the robot.
Step-by-step, we will:
Attach a tool to the robot - Create a new robot definition
Create a MoveIt! package with the new robot definition (Optional - you don't need this if you don't want to use MoveIt!)
Which version of Sunrise.OS/Sunrise Workbench is supported?
I have Sunrise version x.x.x, can I downgrade to a previous version?
Is Gravity Compensation mode supported?
Are the inertia values in the URDF accurate?
Launching roscore or a launch file nothing happens
I can read the state of the robot, but it doesn't move when I send commands
Other useful Robotic Applications that you might want to have on the robot
Add a new message to iiwa_msgs
Salvatore Virga : [email protected]
Marco Esposito : [email protected]