diff --git a/.github/workflows/kilted-binary-main.yml b/.github/workflows/kilted-binary-main.yml
new file mode 100644
index 0000000..a54866d
--- /dev/null
+++ b/.github/workflows/kilted-binary-main.yml
@@ -0,0 +1,21 @@
+name: Kilted Binary Main
+on:
+ workflow_dispatch:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ push:
+ branches:
+ - main
+ schedule:
+ - cron: '34 12 * * 0'
+
+jobs:
+ kilted_binary_main:
+ uses: ./.github/workflows/reusable_ici.yml
+ with:
+ ros_distro: kilted
+ ros_repo: main
+ ref_for_scheduled_build: main
diff --git a/.github/workflows/kilted-binary-testing.yml b/.github/workflows/kilted-binary-testing.yml
new file mode 100644
index 0000000..8a524c8
--- /dev/null
+++ b/.github/workflows/kilted-binary-testing.yml
@@ -0,0 +1,21 @@
+name: Kilted Binary Testing
+on:
+ workflow_dispatch:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ push:
+ branches:
+ - main
+ schedule:
+ - cron: '34 12 * * 0'
+
+jobs:
+ kilted_binary_testing:
+ uses: ./.github/workflows/reusable_ici.yml
+ with:
+ ros_distro: kilted
+ ros_repo: testing
+ ref_for_scheduled_build: main
diff --git a/.github/workflows/lyrical-binary-main.yml b/.github/workflows/lyrical-binary-main.yml
new file mode 100644
index 0000000..a2f13ec
--- /dev/null
+++ b/.github/workflows/lyrical-binary-main.yml
@@ -0,0 +1,29 @@
+name: Lyrical Binary Main
+on:
+ workflow_dispatch:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ push:
+ branches:
+ - main
+ schedule:
+ - cron: '34 12 * * 0'
+
+jobs:
+ lyrical_binary_main:
+ uses: ./.github/workflows/reusable_ici.yml
+ with:
+ ros_distro: lyrical
+ ros_repo: main
+ ref_for_scheduled_build: main
+ rosdep_skip_keys: >-
+ moveit_ros_move_group
+ moveit_kinematics
+ moveit_planners
+ moveit_simple_controller_manager
+ moveit_configs_utils
+ moveit_ros_visualization
+ moveit_setup_assistant
diff --git a/.github/workflows/lyrical-binary-testing.yml b/.github/workflows/lyrical-binary-testing.yml
new file mode 100644
index 0000000..9ef476f
--- /dev/null
+++ b/.github/workflows/lyrical-binary-testing.yml
@@ -0,0 +1,29 @@
+name: Lyrical Binary Testing
+on:
+ workflow_dispatch:
+ branches:
+ - main
+ pull_request:
+ branches:
+ - main
+ push:
+ branches:
+ - main
+ schedule:
+ - cron: '34 12 * * 0'
+
+jobs:
+ lyrical_binary_testing:
+ uses: ./.github/workflows/reusable_ici.yml
+ with:
+ ros_distro: lyrical
+ ros_repo: testing
+ ref_for_scheduled_build: main
+ rosdep_skip_keys: >-
+ moveit_ros_move_group
+ moveit_kinematics
+ moveit_planners
+ moveit_simple_controller_manager
+ moveit_configs_utils
+ moveit_ros_visualization
+ moveit_setup_assistant
diff --git a/.github/workflows/reusable_ici.yml b/.github/workflows/reusable_ici.yml
index f056f41..9a9721a 100644
--- a/.github/workflows/reusable_ici.yml
+++ b/.github/workflows/reusable_ici.yml
@@ -37,6 +37,11 @@ on:
default: '.work'
required: false
type: string
+ rosdep_skip_keys:
+ description: "Skip those keys when doing 'rosdep install'. space-separated list"
+ default: ''
+ required: false
+ type: string
jobs:
reusable_ici:
@@ -76,6 +81,7 @@ jobs:
UPSTREAM_WORKSPACE: ${{ inputs.upstream_workspace }}
ROS_DISTRO: ${{ inputs.ros_distro }}
ROS_REPO: ${{ inputs.ros_repo }}
+ ROSDEP_SKIP_KEYS: ${{ inputs.rosdep_skip_keys }}
- name: prepare target_ws for cache
if: ${{ always() && ! matrix.env.CCOV }}
run: |
diff --git a/.github/workflows/rolling-binary-main.yml b/.github/workflows/rolling-binary-main.yml
index 76f54e4..5ab2fe2 100644
--- a/.github/workflows/rolling-binary-main.yml
+++ b/.github/workflows/rolling-binary-main.yml
@@ -10,7 +10,7 @@ on:
branches:
- main
schedule:
- - cron: '34 12 * * *'
+ - cron: '34 12 * * 0'
jobs:
rolling_binary_main:
@@ -19,3 +19,11 @@ jobs:
ros_distro: rolling
ros_repo: main
ref_for_scheduled_build: main
+ rosdep_skip_keys: >-
+ moveit_ros_move_group
+ moveit_kinematics
+ moveit_planners
+ moveit_simple_controller_manager
+ moveit_configs_utils
+ moveit_ros_visualization
+ moveit_setup_assistant
diff --git a/.github/workflows/rolling-binary-testing.yml b/.github/workflows/rolling-binary-testing.yml
index 50c787d..e89e8de 100644
--- a/.github/workflows/rolling-binary-testing.yml
+++ b/.github/workflows/rolling-binary-testing.yml
@@ -10,7 +10,7 @@ on:
branches:
- main
schedule:
- - cron: '34 12 * * *'
+ - cron: '34 12 * * 0'
jobs:
rolling_binary_testing:
@@ -19,3 +19,11 @@ jobs:
ros_distro: rolling
ros_repo: testing
ref_for_scheduled_build: main
+ rosdep_skip_keys: >-
+ moveit_ros_move_group
+ moveit_kinematics
+ moveit_planners
+ moveit_simple_controller_manager
+ moveit_configs_utils
+ moveit_ros_visualization
+ moveit_setup_assistant
diff --git a/README.md b/README.md
index b92ed51..255d6eb 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,22 @@
# Universal Robots ROS 2 tutorials
This package contains tutorials around the ROS 2 packages for Universal Robots.
+## Branches & ROS distributions
+This package intends to show use-cases and examples for the ROS 2 packages for Universal Robots.
+The main branch of this repository will be used to show examples for the latest ROS 2 distribution,
+ROS Rolling. For older ROS 2 distributions. This is valid for all active ROS 2 distributions, as
+long as there is no specialized branch for that distribution. The following table shows the
+branches and their corresponding ROS 2 distributions:
+
+| ROS 2 Distro | Branch | Documentation |
+|--------------|------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Rolling** | [main](https://github.com/UniversalRobots/Universal_Robots_ROS2_Tutorials/tree/main) | [](https://docs.universal-robots.com/Universal_Robots_ROS_Documentation/rolling/doc/ur_tutorials/tutorial_index.html) |
+| **Jazzy** | [jazzy](https://github.com/UniversalRobots/Universal_Robots_ROS2_Tutorials/tree/jazzy) | [](https://docs.universal-robots.com/Universal_Robots_ROS_Documentation/jazzy/doc/ur_tutorials/tutorial_index.html) |
+| **Humble** | [humble](https://github.com/UniversalRobots/Universal_Robots_ROS2_Tutorials/tree/humble) | -- |
+
## Getting started
To use the tutorials from this repository, please make sure to [install ROS
-2](https://docs.ros.org/en/rolling/Installation.html) on your system. Currently, only ROS Jazzy and
-Rolling are supported.
+2](https://docs.ros.org/en/rolling/Installation.html) on your system.
With that, please create a workspace, clone this repo into the workspace, install the dependencies
and build the workspace.
diff --git a/my_dual_robot_cell/my_dual_robot_cell_control/config/combined_controllers.yaml b/my_dual_robot_cell/my_dual_robot_cell_control/config/combined_controllers.yaml
index 2468dfb..6034c08 100644
--- a/my_dual_robot_cell/my_dual_robot_cell_control/config/combined_controllers.yaml
+++ b/my_dual_robot_cell/my_dual_robot_cell_control/config/combined_controllers.yaml
@@ -24,23 +24,20 @@ controller_manager:
alice_joint_trajectory_controller:
type: joint_trajectory_controller/JointTrajectoryController
- bob_trajectory_controller:
+ bob_joint_trajectory_controller:
type: joint_trajectory_controller/JointTrajectoryController
- alice_scaled_joint_trajectory_controller:
- type: ur_controllers/ScaledJointTrajectoryController
+ alice_forward_velocity_controller:
+ type: forward_command_controller/ForwardCommandController
- bob_scaled_joint_trajectory_controller:
- type: ur_controllers/ScaledJointTrajectoryController
-
- forward_velocity_controller:
- type: velocity_controllers/JointGroupVelocityController
+ bob_forward_velocity_controller:
+ type: forward_command_controller/ForwardCommandController
alice_forward_position_controller:
- type: position_controllers/JointGroupPositionController
+ type: forward_command_controller/ForwardCommandController
bob_forward_position_controller:
- type: position_controllers/JointGroupPositionController
+ type: forward_command_controller/ForwardCommandController
alice_speed_scaling_state_broadcaster:
@@ -114,6 +111,8 @@ alice_joint_trajectory_controller:
alice_wrist_1_joint: { trajectory: 0.2, goal: 0.1 }
alice_wrist_2_joint: { trajectory: 0.2, goal: 0.1 }
alice_wrist_3_joint: { trajectory: 0.2, goal: 0.1 }
+ speed_scaling:
+ state_interface: alice_speed_scaling/speed_scaling_factor
bob_joint_trajectory_controller:
ros__parameters:
@@ -141,62 +140,8 @@ bob_joint_trajectory_controller:
bob_wrist_1_joint: { trajectory: 0.2, goal: 0.1 }
bob_wrist_2_joint: { trajectory: 0.2, goal: 0.1 }
bob_wrist_3_joint: { trajectory: 0.2, goal: 0.1 }
-
-alice_scaled_joint_trajectory_controller:
- ros__parameters:
- joints:
- - alice_shoulder_pan_joint
- - alice_shoulder_lift_joint
- - alice_elbow_joint
- - alice_wrist_1_joint
- - alice_wrist_2_joint
- - alice_wrist_3_joint
- command_interfaces:
- - position
- state_interfaces:
- - position
- - velocity
- state_publish_rate: 100.0
- action_monitor_rate: 20.0
- allow_partial_joints_goal: false
- constraints:
- stopped_velocity_tolerance: 0.2
- goal_time: 0.0
- alice_shoulder_pan_joint: { trajectory: 0.2, goal: 0.1 }
- alice_shoulder_lift_joint: { trajectory: 0.2, goal: 0.1 }
- alice_elbow_joint: { trajectory: 0.2, goal: 0.1 }
- alice_wrist_1_joint: { trajectory: 0.2, goal: 0.1 }
- alice_wrist_2_joint: { trajectory: 0.2, goal: 0.1 }
- alice_wrist_3_joint: { trajectory: 0.2, goal: 0.1 }
- speed_scaling_interface_name: alice_speed_scaling/speed_scaling_factor
-
-bob_scaled_joint_trajectory_controller:
- ros__parameters:
- joints:
- - bob_shoulder_pan_joint
- - bob_shoulder_lift_joint
- - bob_elbow_joint
- - bob_wrist_1_joint
- - bob_wrist_2_joint
- - bob_wrist_3_joint
- command_interfaces:
- - position
- state_interfaces:
- - position
- - velocity
- state_publish_rate: 100.0
- action_monitor_rate: 20.0
- allow_partial_joints_goal: false
- constraints:
- stopped_velocity_tolerance: 0.2
- goal_time: 0.0
- bob_shoulder_pan_joint: { trajectory: 0.2, goal: 0.1 }
- bob_shoulder_lift_joint: { trajectory: 0.2, goal: 0.1 }
- bob_elbow_joint: { trajectory: 0.2, goal: 0.1 }
- bob_wrist_1_joint: { trajectory: 0.2, goal: 0.1 }
- bob_wrist_2_joint: { trajectory: 0.2, goal: 0.1 }
- bob_wrist_3_joint: { trajectory: 0.2, goal: 0.1 }
- speed_scaling_interface_name: bob_speed_scaling/speed_scaling_factor
+ speed_scaling:
+ state_interface: bob_speed_scaling/speed_scaling_factor
alice_forward_velocity_controller:
ros__parameters:
@@ -229,6 +174,7 @@ alice_forward_position_controller:
- alice_wrist_1_joint
- alice_wrist_2_joint
- alice_wrist_3_joint
+ interface_name: position
bob_forward_position_controller:
ros__parameters:
@@ -239,3 +185,4 @@ bob_forward_position_controller:
- bob_wrist_1_joint
- bob_wrist_2_joint
- bob_wrist_3_joint
+ interface_name: position
diff --git a/my_dual_robot_cell/my_dual_robot_cell_control/launch/start_robots.launch.py b/my_dual_robot_cell/my_dual_robot_cell_control/launch/start_robots.launch.py
index 1981d5a..a5b3aed 100644
--- a/my_dual_robot_cell/my_dual_robot_cell_control/launch/start_robots.launch.py
+++ b/my_dual_robot_cell/my_dual_robot_cell_control/launch/start_robots.launch.py
@@ -157,6 +157,9 @@ def controller_spawner(controllers, active=True):
return Node(
package="controller_manager",
executable="spawner",
+ parameters=[
+ ParameterFile(controllers_file, allow_substs=True),
+ ],
arguments=[
"--controller-manager",
"/controller_manager",
@@ -189,6 +192,9 @@ def controller_spawner(controllers, active=True):
alice_initial_joint_controller_spawner_started = Node(
package="controller_manager",
executable="spawner",
+ parameters=[
+ ParameterFile(controllers_file, allow_substs=True),
+ ],
arguments=[
alice_initial_joint_controller,
"-c",
@@ -201,6 +207,9 @@ def controller_spawner(controllers, active=True):
bob_initial_joint_controller_spawner_started = Node(
package="controller_manager",
executable="spawner",
+ parameters=[
+ ParameterFile(controllers_file, allow_substs=True),
+ ],
arguments=[
bob_initial_joint_controller,
"-c",
@@ -213,6 +222,9 @@ def controller_spawner(controllers, active=True):
alice_initial_joint_controller_spawner_stopped = Node(
package="controller_manager",
executable="spawner",
+ parameters=[
+ ParameterFile(controllers_file, allow_substs=True),
+ ],
arguments=[
alice_initial_joint_controller,
"-c",
@@ -226,6 +238,9 @@ def controller_spawner(controllers, active=True):
bob_initial_joint_controller_spawner_stopped = Node(
package="controller_manager",
executable="spawner",
+ parameters=[
+ ParameterFile(controllers_file, allow_substs=True),
+ ],
arguments=[
bob_initial_joint_controller,
"-c",
@@ -396,14 +411,14 @@ def generate_launch_description():
declared_arguments.append(
DeclareLaunchArgument(
"alice_initial_joint_controller",
- default_value="alice_scaled_joint_trajectory_controller",
+ default_value="alice_joint_trajectory_controller",
description="Initially loaded robot controller for the alice robot arm.",
)
)
declared_arguments.append(
DeclareLaunchArgument(
"bob_initial_joint_controller",
- default_value="bob_scaled_joint_trajectory_controller",
+ default_value="bob_joint_trajectory_controller",
description="Initially loaded robot controller for the bob robot arm.",
)
)
diff --git a/my_dual_robot_cell/my_dual_robot_cell_control/package.xml b/my_dual_robot_cell/my_dual_robot_cell_control/package.xml
index 10f9f88..cfe290a 100644
--- a/my_dual_robot_cell/my_dual_robot_cell_control/package.xml
+++ b/my_dual_robot_cell/my_dual_robot_cell_control/package.xml
@@ -13,9 +13,9 @@
ament_cmake
+ forward_command_controller
joint_state_broadcaster
joint_trajectory_controller
- position_controllers
robot_state_publisher
my_dual_robot_cell_description
ur_controllers
diff --git a/my_dual_robot_cell/my_dual_robot_cell_control/urdf/my_dual_robot_cell_controlled.urdf.xacro b/my_dual_robot_cell/my_dual_robot_cell_control/urdf/my_dual_robot_cell_controlled.urdf.xacro
index 2e2cdd4..7099115 100644
--- a/my_dual_robot_cell/my_dual_robot_cell_control/urdf/my_dual_robot_cell_controlled.urdf.xacro
+++ b/my_dual_robot_cell/my_dual_robot_cell_control/urdf/my_dual_robot_cell_controlled.urdf.xacro
@@ -62,6 +62,7 @@
ament_cmake
-
+ forward_command_controller
joint_state_broadcaster
joint_trajectory_controller
- position_controllers
robot_state_publisher
my_robot_cell_description
ur_controllers
diff --git a/my_robot_cell/my_robot_cell_control/urdf/my_robot_cell_controlled.urdf.xacro b/my_robot_cell/my_robot_cell_control/urdf/my_robot_cell_controlled.urdf.xacro
index d55fa1d..2049316 100644
--- a/my_robot_cell/my_robot_cell_control/urdf/my_robot_cell_controlled.urdf.xacro
+++ b/my_robot_cell/my_robot_cell_control/urdf/my_robot_cell_controlled.urdf.xacro
@@ -39,6 +39,7 @@