Installation


Requirements

Hardware:

Software:



Installation and setup

The installation and setup is divided into two parts:

  • The Sunrise project to be installed in the KUKA Sunrise Cabinet (programmed in JAVA)

  • The external packages that communicates with the Cabinet via TCP/IP


Sunrise project

  1. In the Sunrise.Workbench, create a new project or load the existing project from the controller (default IP: 172.31.1.147)

  2. Open the StationSetup.cat file and enable SmartServo extensions (in the Software tab)

Enable SmartServo
  1. Copy library files (.java files) from libiiwa/java/src/application to <sunrise_project>/src/application folder

Copy files
  1. Edit the ProcessData configuration (<sunrise_project>/src/RoboticsAPI.data.xml file) and overwrite the content with the following configuration

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<RoboticsAPIData version="3">
    <world>
        <gravitation x="0.0" y="0.0" z="9.81"/>
    </world>
    <objectTemplates>
    </objectTemplates>
    <processDataContainer>
        <processData dataType="java.lang.Boolean" defaultValue="false" displayName="Communication: Use double precision" editableOnHmi="true" id="communication_double_precision" value="false"/>
        <processData dataType="java.lang.String" defaultValue="172.31.1.25" displayName="Controller: IP Address" editableOnHmi="true" id="controller_ip" value="172.31.1.25"/>
        <processData dataType="java.lang.Integer" defaultValue="12225" displayName="Controller: Port" editableOnHmi="true" id="controller_port" max="65535" min="1024" value="12225"/>
        <processData dataType="java.lang.Boolean" defaultValue="false" displayName="Log to SmartPad: Info" editableOnHmi="true" id="verbose_info" value="false"/>
        <processData dataType="java.lang.Boolean" defaultValue="true" displayName="Log to SmartPad: Warning" editableOnHmi="true" id="verbose_warn" value="true"/>
        <processData dataType="java.lang.String" defaultValue="" displayName="Robot: Tools" editableOnHmi="false" id="tools" value=""/>
    </processDataContainer>
</RoboticsAPIData>

Data

Default

Description

Communication: Use double precision

false

Whether to use double precision (64 bits) in both the request and the response (default: float precision (32 bits))

Controller: IP Address

172.31.1.25

External control workstation IP address

Controller: Port

12225

External control workstation port

Log to SmartPad: Info

false

Whether to display information about received commands or any other data on the smartHMI. The excessive use of the message display could degrade the application performance and the smartHMI operation

Log to SmartPad: Warning

true

Whether to display warning messages on the smartHMI. The excessive use of the message display could degrade the application performance and the smartHMI operation

Robot: Tools

""

List of tool names separated by commas

  1. Install the StationSetup.cat (wait for Cabinet reset) and synchronize the project

Install StationSetup

External packages

The following steps describe how to install the available control workflows

Note

Only one, the python module or the ROS or ROS2 node, can be in use at a time.

Python

The Python module is cross-platform, where the only dependencies are numpy and scipy. These dependencies can be installed as follows:

pip install numpy scipy

To use the Python module you only need to download the libiiwa.py file and place it in the PYTHONPATH or any other reachable location during import (e.g. together with the main code)

Python module

libiiwa.py

Visit Python class to get started with the Python module

ROS/ROS2

Download and unzip the following packages in a ROS/ROS2 workspace, according to the version of the distribution. Make sure to source the ROS/ROS2 distribution and build the workspace

Note

Since the libiiwa.py Python module may undergo more frequent updates, it is not included in any of the ROS/ROS2 packages although it is necessary for their operation. Download the libiiwa.py file (see previous section) and place it together with the node.py script according to the target distribution.

  • ROS: libiiwa_ros/scripts

  • ROS2: libiiwa_ros2/libiiwa_ros2

Warning

The message packages for both the ROS and ROS2 distributions have the same name. Be sure to use the correct one according to the target disto.

Package

ROS

ROS2

LibIiwa node

libiiwa_ros-v0.1.1

libiiwa_ros2-v0.1.1

LibIiwa message definitions

libiiwa_msgs

libiiwa_msgs

Visit ROS & ROS2 to get started with the ROS/ROS2 nodes



Troubleshooting

Bug detection and/or correction, feature requests and everything else are more than welcome. Come on, open a new issue!

https://github.com/Toni-SM/libiiwa/issues



Changelog

# Changelog

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

## [0.1.1] - 2023-10-08
### Added
- Control display of warning messages on the smartPAD
- Cartesian impedance controller with overlaid force oscillation
- Attach/detach tools
- Use ROS/ROS2 node namespace as topic and service name to avoid naming conflicts

### Fixed
- Missing logging method in ROS `FollowJointTrajectory` class

## [0.1.0-beta] - 2023-02-20
### Added
- Initial release