diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..2f7217c
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -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_.launch.py` and after launching the robot was visible in `rviz`
+- [ ] you added a `_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_.launch.py` and the robot was visible in `rviz`
+
+### Short description of the change
diff --git a/README.md b/README.md
index 6ef5e35..4ac5581 100644
--- a/README.md
+++ b/README.md
@@ -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.
diff --git a/kuka_agilus_support/config/kr10_r1100_2_joint_limits.yaml b/kuka_agilus_support/config/kr10_r1100_2_joint_limits.yaml
new file mode 100644
index 0000000..0b2ab1d
--- /dev/null
+++ b/kuka_agilus_support/config/kr10_r1100_2_joint_limits.yaml
@@ -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
diff --git a/kuka_agilus_support/launch/test_kr10r1100_2.launch.py b/kuka_agilus_support/launch/test_kr10r1100_2.launch.py
new file mode 100644
index 0000000..a2802f6
--- /dev/null
+++ b/kuka_agilus_support/launch/test_kr10r1100_2.launch.py
@@ -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])
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/collision/base_link.stl b/kuka_agilus_support/meshes/kr10_r1100_2/collision/base_link.stl
new file mode 100755
index 0000000..8767c58
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/collision/base_link.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_1.stl b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_1.stl
new file mode 100755
index 0000000..c23e6cb
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_1.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_2.stl b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_2.stl
new file mode 100755
index 0000000..fc14a00
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_2.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_3.stl b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_3.stl
new file mode 100755
index 0000000..5b6f142
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_3.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_4.stl b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_4.stl
new file mode 100755
index 0000000..6cca473
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_4.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_5.stl b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_5.stl
new file mode 100755
index 0000000..eb03311
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_5.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_6.stl b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_6.stl
new file mode 100755
index 0000000..2bfcaa2
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/collision/link_6.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/visual/base_link.stl b/kuka_agilus_support/meshes/kr10_r1100_2/visual/base_link.stl
new file mode 100755
index 0000000..8767c58
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/visual/base_link.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_1.stl b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_1.stl
new file mode 100755
index 0000000..c23e6cb
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_1.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_2.stl b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_2.stl
new file mode 100755
index 0000000..fc14a00
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_2.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_3.stl b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_3.stl
new file mode 100755
index 0000000..5b6f142
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_3.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_4.stl b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_4.stl
new file mode 100755
index 0000000..6cca473
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_4.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_5.stl b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_5.stl
new file mode 100755
index 0000000..eb03311
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_5.stl differ
diff --git a/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_6.stl b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_6.stl
new file mode 100755
index 0000000..2bfcaa2
Binary files /dev/null and b/kuka_agilus_support/meshes/kr10_r1100_2/visual/link_6.stl differ
diff --git a/kuka_agilus_support/package.xml b/kuka_agilus_support/package.xml
index 52e40f0..0dfd2b0 100644
--- a/kuka_agilus_support/package.xml
+++ b/kuka_agilus_support/package.xml
@@ -8,21 +8,19 @@
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.
Specifications:
KR 6 R700 sixx - Default
KR 6 R900 sixx - Default
-
KR 6 R900-2 - Default
+
KR 6 R1100-2 - Default
Joint limits and maximum joint velocities for sixx models are based on the information
in the KUKA Roboter GmbH - KR AGILUS sixx - With W and C Variants -
Specification version Spez KR AGILUS sixx V12, 26.03.2015.
- Joint limits and maximum joint velocities for R900-2 are based on the information
- in the KUKA Deutschland GmbH - Robots KR AGILUS-2 Specification version V4, 26.02.2019.
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).
@@ -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.
-
- Note: the KR6 R900-2 urdf reuses meshes from the kuka_kr10_support package because of their identical appearance.
-