Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for KR10 R1100-2 #40

Merged
merged 19 commits into from
Dec 18, 2023
12 changes: 12 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
### Before submitting this PR into master please make sure:
If you added a new robot model:
- [ ] you extended the table of verified data in `README.md` with the new model
- [ ] you extended the CMakeLists.txt of the appropriate moveit configuration package with the new model
- [ ] you added a `test_<robot_model>.launch.py` and after launching the robot was visible in `rviz`
- [ ] you added a `<robot_model>_joint_limits.yaml` file in the `config` directory (to provide moveit support)

If you modified an already existing robot model:
- [ ] you checked and optionally updated the table of verified data in `README.md` with the changes
- [ ] you have run the `test_<robot_model>.launch.py` and the robot was visible in `rviz`

### Short description of the change
36 changes: 19 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,36 +77,38 @@ Example of attaching an end effector (with link name `eef_base_link`) to the `fl

Some of the data in the xacros might not be valid or missing, the following table shows what can be considered valid.

|Robot name | Transformations | Joint position limits | Joint velocity limits | Joint effort limits | Inertial values | Simplified collision meshes|
|---|:---:|:---:|:---:|:---:|:---:|:---:|
|lbr_iisy3_r760 | ✓ | ✓ | ✓ | ✓ | | ✓ |
|lbr_iisy11_r1300 | ✓ | ✓ | ✓ | ✓ | | |
|lbr_iisy15_r930 | ✓ | ✓ | ✓ | ✓ | | |
|lbr_iiwa14_r820 | ✓ | ✓ | ✓ | | | |
|kr6_r700_sixx | ✓ | ✓ | ✓ | | | ✓ |
|kr6_r900_sixx | ✓ | ✓ | ✓ | | | ✓ |
|kr16_r2010_2 | ✓ | ✓ | ✓ | ✓ | | |
|kr210_r2700_2 | ✓ | ✓ | ✓ | ✓ | | |
|kr210_r3100_2 | ✓ | ✓ | ✓ | ✓ | | |
|Robot name | Robot family | Transformations | Joint position limits | Joint velocity limits | Joint effort limits | Inertial values | Simplified collision meshes|
|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
|lbr_iisy3_r760| - | ✓ | ✓ | ✓ | ✓ | | ✓ |
|lbr_iisy11_r1300| - | ✓ | ✓ | ✓ | ✓ | | |
|lbr_iisy15_r930| - | ✓ | ✓ | ✓ | ✓ | | |
|lbr_iiwa14_r820| - | ✓ | ✓ | ✓ | | | |
|kr6_r700_sixx| agilus | ✓ | ✓ | ✓ | | | ✓ |
|kr6_r900_sixx| agilus | ✓ | ✓ | ✓ | | | ✓ |
|kr10_r1100_2| agilus | ✓ | ✓ | ✓ | ✓ | | |
|kr16_r2010_2| cybertech | ✓ | ✓ | ✓ | ✓ | | |
|kr210_r2700_2| quantec | ✓ | ✓ | ✓ | ✓ | | |
|kr210_r3100_2| quantec | ✓ | ✓ | ✓ | ✓ | | |

## Starting the move group server with fake hardware

To start the driver with fake hardware and the motion planning rviz plugin, the following launch files can be used:
To start rviz with the motion planning plugin using fake hardware, the following launch files can be used:

For KR robots (KSS):
#### KR robots (KSS):
```
ros2 launch kuka_kr_moveit_config moveit_planning_fake_hardware.launch.py
```
Matching `robot_model` and `robot_family` arguments can be added to the command e.g. (`robot_model:=kr16_r2010_2` `robot_family:=cybertech`).
Matching `robot_model` and `robot_family` arguments can be added after the command (e.g. `robot_model:=kr16_r2010_2 robot_family:=cybertech`). The default robot model is `kr6_r700_sixx`

For LBR iiwa robots (Sunrise):
#### LBR iiwa robots (Sunrise):
```
ros2 launch kuka_lbr_iisy_moveit_config moveit_planning_fake_hardware.launch.py
```

For LBR iisy robots (iiQKA):
#### LBR iisy robots (iiQKA):
```
ros2 launch kuka_lbr_iiwa_moveit_config moveit_planning_fake_hardware.launch.py
```
A `robot_model` argument can be added after the command (e.g. `robot_model:=lbr_iisy11_r1300`). The default robot model is `lbr_iisy3_r760`

This will launch exactly the same nodes, as the driver launch file, but with fake hardware. Therefore the `robot_manager` lifecycle node must be configured and activated to be able to see the robot in rviz. After activation the server will be able to accept planning requests, from the plugin or from code. (An example how to create such a request from C++ code can be found in the (kuka_drivers/examples)/iiqka_moveit_example package.)
These launch files are not using the actual driver implementation, they only start `rviz` the `move_group` server and a `ros2_control_node` with fake hardware and two controllers `joint_state_broadcaster` and `joint_trajectory_controller` The server will be able to accept planning requests from the plugin or from code. (An example how to create such a request from C++ code can be found in the `iiqka_moveit_example` package in the `kuka_drivers` repository.) To support hardwares with less performance, the update rate of the control node was reduced to 50 Hz for all robots.
38 changes: 38 additions & 0 deletions kuka_agilus_support/config/kr10_r1100_2_joint_limits.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed
# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration, max_jerk]
# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits]

# Easiest way to slow down the robot is to decrease the velocity and acceleration scaling factors
default_velocity_scaling_factor: 1.0
default_acceleration_scaling_factor: 1.0
joint_limits:
joint_1:
has_velocity_limits: true
max_velocity: 5.23599
has_acceleration_limits: false
has_jerk: false
joint_2:
has_velocity_limits: true
max_velocity: 3.926991
has_acceleration_limits: false
has_jerk: false
joint_3:
has_velocity_limits: true
max_velocity: 5.75959
has_acceleration_limits: false
has_jerk: false
joint_4:
has_velocity_limits: true
max_velocity: 6.28319
has_acceleration_limits: false
has_jerk: false
joint_5:
has_velocity_limits: true
max_velocity: 6.28319
has_acceleration_limits: false
has_jerk: false
joint_6:
has_velocity_limits: true
max_velocity: 7.55728
has_acceleration_limits: false
has_jerk: false
59 changes: 59 additions & 0 deletions kuka_agilus_support/launch/test_kr10r1100_2.launch.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Copyright 2022 Márton Antal
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from launch import LaunchDescription
from launch.substitutions import Command, FindExecutable, PathJoinSubstitution
from launch_ros.substitutions import FindPackageShare
from launch_ros.actions import Node


def generate_launch_description():
robot_description_content = Command(
[
PathJoinSubstitution([FindExecutable(name="xacro")]),
" ",
PathJoinSubstitution(
[FindPackageShare("kuka_agilus_support"),
"urdf", "kr10_r1100_2.urdf.xacro"]
),
" ",
"use_fake_hardware:=true",
]
)
robot_description = {'robot_description': robot_description_content}

# RViz
rviz_config_file = PathJoinSubstitution([FindPackageShare(
'kuka_resources'), "config", "view_6_axis_urdf.rviz"])
rviz_node = Node(package='rviz2',
executable='rviz2',
name='rviz2_launch',
output='log',
arguments=['-d', rviz_config_file],
parameters=[robot_description])

# Publish TF
robot_state_publisher = Node(package='robot_state_publisher',
executable='robot_state_publisher',
name='robot_state_publisher',
output='both',
parameters=[robot_description])

# Joint state publisher
joint_state_publisher_gui = Node(package='joint_state_publisher_gui',
executable='joint_state_publisher_gui',
name='joint_state_publisher_gui',
output='log')

return LaunchDescription([robot_state_publisher, rviz_node, joint_state_publisher_gui])
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
11 changes: 3 additions & 8 deletions kuka_agilus_support/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,19 @@
</p>
<p>
This package contains configuration data, 3D models and launch files
for KUKA KR 6 manipulators. This currently includes the R700 sixx,
the R900 sixx and the R900-2.
for KUKA agilus manipulators. This currently includes the R700 sixx,
the R900 sixx and the R1100-2.
</p>
<p><b>Specifications</b>:</p>
<ul>
<li>KR 6 R700 sixx - Default</li>
<li>KR 6 R900 sixx - Default</li>
<li>KR 6 R900-2 - Default</li>
<li>KR 6 R1100-2 - Default</li>
</ul>
<p>
Joint limits and maximum joint velocities for sixx models are based on the information
in the <em>KUKA Roboter GmbH - KR AGILUS sixx - With W and C Variants -
Specification</em> version <em>Spez KR AGILUS sixx V12, 26.03.2015</em>.
Joint limits and maximum joint velocities for R900-2 are based on the information
in the <em>KUKA Deutschland GmbH - Robots KR AGILUS-2 Specification</em> version <em>V4, 26.02.2019</em>.
All urdfs are based on the default motion and joint velocity limits,
unless noted otherwise (ie: no support for high speed joints,
extended / limited motion ranges or other options).
Expand All @@ -32,9 +30,6 @@
in this package, be sure to check they are correct for the particular
robot model and configuration you intend to use them with.
</p>
<p>
Note: the KR6 R900-2 urdf reuses meshes from the <em>kuka_kr10_support</em> package because of their identical appearance.
</p>
</description>
<author>G.A. vd. Hoorn (TU Delft Robotics Institute)</author>
<author>Brett Hemes (3M)</author>
Expand Down
10 changes: 10 additions & 0 deletions kuka_agilus_support/urdf/kr10_r1100_2.urdf.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="kr10_r1100_2">
<!-- Import urdf file -->
<xacro:include filename="$(find kuka_agilus_support)/urdf/kr10_r1100_2_macro.xacro"/>

<!-- Read additional arguments -->
<xacro:arg name="use_fake_hardware" default="false" />

<xacro:kuka_kr10_r1100_2_robot prefix="" use_fake_hardware="$(arg use_fake_hardware)"/>
</robot>
Loading
Loading