diff --git a/CustomRobots/robot_arms/config/ur3_controllers.yaml b/CustomRobots/robot_arms/config/ur3_controllers.yaml
new file mode 100644
index 000000000..0f2d6d906
--- /dev/null
+++ b/CustomRobots/robot_arms/config/ur3_controllers.yaml
@@ -0,0 +1,86 @@
+controller_manager:
+ ros__parameters:
+ update_rate: 100 # Hz
+
+ joint_state_broadcaster:
+ type: joint_state_broadcaster/JointStateBroadcaster
+
+ joint_trajectory_controller:
+ type: joint_trajectory_controller/JointTrajectoryController
+
+ gripper_controller:
+ type: joint_trajectory_controller/JointTrajectoryController
+
+joint_state_broadcaster:
+ ros__parameters:
+ joints:
+ - shoulder_pan_joint
+ - shoulder_lift_joint
+ - elbow_joint
+ - wrist_1_joint
+ - wrist_2_joint
+ - wrist_3_joint
+ - robotiq_85_left_knuckle_joint
+
+ interfaces:
+ - position
+ - velocity
+ - effort
+
+joint_trajectory_controller:
+ ros__parameters:
+ joints:
+ - shoulder_pan_joint
+ - shoulder_lift_joint
+ - elbow_joint
+ - wrist_1_joint
+ - wrist_2_joint
+ - 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
+ allow_nonzero_velocity_at_trajectory_end: true
+ allow_integration_in_goal_trajectories: true
+
+ constraints:
+ stopped_velocity_tolerance: 0.01
+ goal_time: 0.0
+
+gripper_controller:
+ ros__parameters:
+ joints:
+ - robotiq_85_left_knuckle_joint
+
+ command_interfaces:
+ - position
+
+ state_interfaces:
+ - position
+ - velocity
+
+ state_publish_rate: 100.0
+ action_monitor_rate: 20.0
+ allow_partial_joints_goal: false
+ allow_integration_in_goal_trajectories: true
+
+ constraints:
+ stopped_velocity_tolerance: 0.01
+ goal_time: 0.0
+ robotiq_85_left_knuckle_joint:
+ trajectory: 0.5
+ goal: 0.5
+
+ gains:
+ robotiq_85_left_knuckle_joint:
+ p: 100.0
+ d: 1.0
+ i: 0.01
+ i_clamp: 1.0
diff --git a/CustomRobots/robot_arms/config/ur5/joint_limits.yaml b/CustomRobots/robot_arms/config/ur5/joint_limits.yaml
index e6093ea65..947574c93 100644
--- a/CustomRobots/robot_arms/config/ur5/joint_limits.yaml
+++ b/CustomRobots/robot_arms/config/ur5/joint_limits.yaml
@@ -15,9 +15,9 @@ joint_limits:
has_position_limits: true
has_velocity_limits: true
max_effort: 150.0
- max_position: !degrees 360.0
+ max_position: !degrees 180.0
max_velocity: !degrees 180.0
- min_position: !degrees -360.0
+ min_position: !degrees -180.0
shoulder_lift_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
@@ -25,9 +25,9 @@ joint_limits:
has_position_limits: true
has_velocity_limits: true
max_effort: 150.0
- max_position: !degrees 360.0
+ max_position: !degrees 180.0
max_velocity: !degrees 180.0
- min_position: !degrees -360.0
+ min_position: !degrees -180.0
elbow_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
@@ -55,9 +55,9 @@ joint_limits:
has_position_limits: true
has_velocity_limits: true
max_effort: 28.0
- max_position: !degrees 360.0
+ max_position: !degrees 180.0
max_velocity: !degrees 180.0
- min_position: !degrees -360.0
+ min_position: !degrees -180.0
wrist_2_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
@@ -65,9 +65,9 @@ joint_limits:
has_position_limits: true
has_velocity_limits: true
max_effort: 28.0
- max_position: !degrees 360.0
+ max_position: !degrees 180.0
max_velocity: !degrees 180.0
- min_position: !degrees -360.0
+ min_position: !degrees -180.0
wrist_3_joint:
# acceleration limits are not publicly available
has_acceleration_limits: false
@@ -75,6 +75,6 @@ joint_limits:
has_position_limits: true
has_velocity_limits: true
max_effort: 28.0
- max_position: !degrees 360.0
+ max_position: !degrees 180.0
max_velocity: !degrees 180.0
- min_position: !degrees -360.0
+ min_position: !degrees -180.0
diff --git a/CustomRobots/robot_arms/launch/ur3.launch.py b/CustomRobots/robot_arms/launch/ur3.launch.py
new file mode 100644
index 000000000..7c5aa7cd3
--- /dev/null
+++ b/CustomRobots/robot_arms/launch/ur3.launch.py
@@ -0,0 +1,351 @@
+from launch.actions import (
+ IncludeLaunchDescription,
+ DeclareLaunchArgument,
+ SetEnvironmentVariable,
+)
+from launch.substitutions import LaunchConfiguration
+from launch.launch_description_sources import PythonLaunchDescriptionSource
+from launch import LaunchDescription
+from launch_ros.actions import Node
+
+import os
+import xacro
+import yaml
+from ament_index_python.packages import get_package_share_directory
+from launch.actions import DeclareLaunchArgument, OpaqueFunction
+
+
+def load_file(package_name, file_path):
+ pkg_path = get_package_share_directory(package_name)
+ with open(os.path.join(pkg_path, file_path), "r") as f:
+ return f.read()
+
+
+def load_yaml(package_name, file_path):
+ pkg_path = get_package_share_directory(package_name)
+ with open(os.path.join(pkg_path, file_path), "r") as f:
+ return yaml.safe_load(f)
+
+
+def launch_setup(context):
+ x = LaunchConfiguration("x")
+ y = LaunchConfiguration("y")
+ z = LaunchConfiguration("z")
+ R = LaunchConfiguration("R")
+ P = LaunchConfiguration("P")
+ Y = LaunchConfiguration("Y")
+ gz_sensor = LaunchConfiguration("sensor")
+
+ package_dir = get_package_share_directory("custom_robots")
+
+ sensor = gz_sensor.perform(context)
+
+ nodes = []
+
+ # =========================
+ # ROBOT DESCRIPTION (URDF)
+ # =========================
+ xacro_file = os.path.join(
+ package_dir,
+ "models",
+ "ur3",
+ "ur3.urdf.xacro",
+ )
+
+ controllers_file = os.path.join(package_dir, "config", "ur3_controllers.yaml")
+
+ robot_description_content = xacro.process_file(
+ xacro_file,
+ mappings={
+ "ur_type": "ur3",
+ "name": "ur",
+ "prefix": "",
+ "use_fake_hardware": "false",
+ "sim_gazebo": "false",
+ "sim_gz": "true",
+ "simulation_controllers": controllers_file,
+ "hmi": "false",
+ "EE": "true",
+ "EE_name": "robotiq_2f85",
+ "camera": "true" if sensor == "camera" else "false",
+ },
+ ).toxml()
+
+ robot_description = {"robot_description": robot_description_content}
+
+ # =========================
+ # SRDF (SEMANTIC)
+ # =========================
+ robot_description_semantic = {
+ "robot_description_semantic": load_file(
+ "ros2srrc_ur3_moveit2", "config/ur3robotiq_2f85.srdf"
+ )
+ }
+
+ # =========================
+ # KINEMATICS
+ # =========================
+ kinematics_yaml = load_yaml("ur3_gripper_moveit_config", "config/kinematics.yaml")
+
+ kinematics_yaml = {
+ "robot_description_kinematics": kinematics_yaml["/**"]["ros__parameters"]
+ }
+
+ # =========================
+ # CONTROLLERS (MoveIt)
+ # =========================
+ moveit_controllers = load_yaml(
+ "ur3_gripper_moveit_config", "config/moveit_controllers.yaml"
+ )
+
+ ompl_planning = load_yaml("ur3_gripper_moveit_config", "config/ompl_planning.yaml")
+
+ ompl_planning = ompl_planning["/**"]["ros__parameters"]
+
+ moveit_controllers = moveit_controllers["/**"]["ros__parameters"]
+
+ planning_pipelines_config = {
+ "planning_pipelines": ["ompl", "pilz_industrial_motion_planner"],
+ "default_planning_pipeline": "pilz_industrial_motion_planner",
+ "ompl": {
+ "planning_plugin": "ompl_interface/OMPLPlanner",
+ },
+ "pilz_industrial_motion_planner": {
+ "planning_plugin": "pilz_industrial_motion_planner/CommandPlanner",
+ "request_adapters": "",
+ "start_state_max_bounds_error": 0.1,
+ "default_planner_config": "PTP",
+ },
+ }
+
+ move_group_capabilities = {
+ "capabilities": "pilz_industrial_motion_planner/MoveGroupSequenceAction "
+ "pilz_industrial_motion_planner/MoveGroupSequenceService"
+ }
+
+ pilz_cartesian_limits = load_yaml(
+ "ros2srrc_robots", "ur3/config/pilz_cartesian_limits.yaml"
+ )
+
+ joint_limits_yaml = load_yaml("ros2srrc_robots", "ur3/config/joint_limits.yaml")
+
+ combined_planning = {
+ "robot_description_planning": {**joint_limits_yaml, **pilz_cartesian_limits}
+ }
+
+ # =========================
+ # NODES
+ # =========================
+
+ move = Node(
+ package="ros2srrc_execution",
+ executable="move",
+ name="move_action_server",
+ output="screen",
+ parameters=[
+ robot_description,
+ robot_description_semantic,
+ kinematics_yaml,
+ moveit_controllers,
+ ompl_planning,
+ {
+ "moveit_controller_manager": "moveit_simple_controller_manager/MoveItSimpleControllerManager"
+ },
+ {"use_sim_time": True},
+ {"ROB_PARAM": "ur3"},
+ {"EE_PARAM": "robotiq_2f85"},
+ {"ROB_GROUP": "ur3_arm"},
+ ],
+ )
+
+ robmove = Node(
+ package="ros2srrc_execution",
+ executable="robmove",
+ name="Robmove",
+ output="screen",
+ parameters=[
+ robot_description,
+ robot_description_semantic,
+ kinematics_yaml,
+ moveit_controllers,
+ ompl_planning,
+ {
+ "moveit_controller_manager": "moveit_simple_controller_manager/MoveItSimpleControllerManager"
+ },
+ {"use_sim_time": True},
+ {"ROB_PARAM": "ur3"},
+ {"ROB_GROUP": "ur3_arm"},
+ ],
+ )
+
+ robpose = Node(
+ package="ros2srrc_execution",
+ executable="robpose",
+ name="robpose",
+ output="screen",
+ parameters=[
+ robot_description,
+ robot_description_semantic,
+ kinematics_yaml,
+ ompl_planning,
+ {"use_sim_time": True},
+ {"ROB_PARAM": "ur3"},
+ {"ROB_GROUP": "ur3_arm"},
+ ],
+ )
+
+ nodes.append(move)
+ nodes.append(robmove)
+ nodes.append(robpose)
+
+ # =========================
+ # CORE NODES
+ # =========================
+
+ robot_state_publisher = Node(
+ package="robot_state_publisher",
+ executable="robot_state_publisher",
+ parameters=[robot_description, {"use_sim_time": True}],
+ output="screen",
+ )
+
+ static_tf = Node(
+ package="tf2_ros",
+ executable="static_transform_publisher",
+ arguments=[x, y, z, R, P, Y, "world", "base_link"],
+ )
+
+ spawn_robot = Node(
+ package="ros_gz_sim",
+ executable="create",
+ arguments=[
+ "-topic",
+ "robot_description",
+ "-name",
+ "ur3_robotiq",
+ "-x",
+ x,
+ "-y",
+ y,
+ "-z",
+ z,
+ "-R",
+ R,
+ "-P",
+ P,
+ "-Y",
+ Y,
+ ],
+ output="screen",
+ )
+
+ clock_bridge = Node(
+ package="ros_gz_bridge",
+ executable="parameter_bridge",
+ arguments=["/clock@rosgraph_msgs/msg/Clock[gz.msgs.Clock]"],
+ parameters=[{"use_sim_time": True}],
+ )
+
+ nodes.append(robot_state_publisher)
+ nodes.append(static_tf)
+ nodes.append(spawn_robot)
+ nodes.append(clock_bridge)
+
+ if sensor == "camera":
+ camera_bridge = Node(
+ package="ros_gz_bridge",
+ executable="parameter_bridge",
+ arguments=[
+ "/hand_camera/camera_info@sensor_msgs/msg/CameraInfo@gz.msgs.CameraInfo",
+ "/base_camera/camera_info@sensor_msgs/msg/CameraInfo@gz.msgs.CameraInfo",
+ ],
+ output="screen",
+ )
+
+ gz_ros2_image_bridge = Node(
+ package="ros_gz_image",
+ executable="image_bridge",
+ arguments=["/hand_camera/image"],
+ output="screen",
+ )
+
+ gz_ros2_base_image_bridge = Node(
+ package="ros_gz_image",
+ executable="image_bridge",
+ arguments=["/base_camera/image"],
+ output="screen",
+ )
+
+ nodes.append(camera_bridge)
+ nodes.append(gz_ros2_image_bridge)
+ nodes.append(gz_ros2_base_image_bridge)
+
+ # =========================
+ # CONTROLLERS
+ # =========================
+
+ joint_state_broadcaster = Node(
+ package="controller_manager",
+ executable="spawner",
+ arguments=["joint_state_broadcaster"],
+ )
+
+ joint_trajectory_controller = Node(
+ package="controller_manager",
+ executable="spawner",
+ arguments=["joint_trajectory_controller"],
+ )
+
+ gripper_controller = Node(
+ package="controller_manager",
+ executable="spawner",
+ arguments=["gripper_controller"],
+ )
+
+ nodes.append(joint_state_broadcaster)
+ nodes.append(joint_trajectory_controller)
+ nodes.append(gripper_controller)
+
+ # =========================
+ # MOVEIT
+ # =========================
+
+ move_group = Node(
+ package="moveit_ros_move_group",
+ executable="move_group",
+ output="screen",
+ parameters=[
+ robot_description,
+ robot_description_semantic,
+ kinematics_yaml,
+ planning_pipelines_config,
+ move_group_capabilities,
+ moveit_controllers,
+ combined_planning,
+ {"use_sim_time": True},
+ ],
+ )
+
+ nodes.append(move_group)
+
+ # =========================
+ # LAUNCH
+ # =========================
+
+ return nodes
+
+
+def generate_launch_description():
+ declared_arguments = [
+ DeclareLaunchArgument("x", default_value="0"),
+ DeclareLaunchArgument("y", default_value="0"),
+ DeclareLaunchArgument("z", default_value="0.9"),
+ DeclareLaunchArgument("R", default_value="0"),
+ DeclareLaunchArgument("P", default_value="0"),
+ DeclareLaunchArgument("Y", default_value="0"),
+ DeclareLaunchArgument("sensor", default_value="none"),
+ ]
+
+ return LaunchDescription(
+ declared_arguments + [OpaqueFunction(function=launch_setup)]
+ )
diff --git a/CustomRobots/robot_arms/launch/ur5.launch.py b/CustomRobots/robot_arms/launch/ur5.launch.py
index 6668c5434..b18b06b15 100644
--- a/CustomRobots/robot_arms/launch/ur5.launch.py
+++ b/CustomRobots/robot_arms/launch/ur5.launch.py
@@ -154,6 +154,7 @@ def launch_setup(context):
{"use_sim_time": True},
{"ROB_PARAM": "ur5"},
{"EE_PARAM": "robotiq_2f85"},
+ {"ROB_GROUP": "ur5_manipulator"},
],
)
@@ -173,6 +174,7 @@ def launch_setup(context):
},
{"use_sim_time": True},
{"ROB_PARAM": "ur5"},
+ {"ROB_GROUP": "ur5_manipulator"},
],
)
@@ -188,6 +190,7 @@ def launch_setup(context):
ompl_planning,
{"use_sim_time": True},
{"ROB_PARAM": "ur5"},
+ {"ROB_GROUP": "ur5_manipulator"},
],
)
diff --git a/CustomRobots/robot_arms/models/ur3/inc/ur_common.xacro b/CustomRobots/robot_arms/models/ur3/inc/ur_common.xacro
new file mode 100644
index 000000000..4281d0033
--- /dev/null
+++ b/CustomRobots/robot_arms/models/ur3/inc/ur_common.xacro
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CustomRobots/robot_arms/models/ur3/inc/ur_transmissions.xacro b/CustomRobots/robot_arms/models/ur3/inc/ur_transmissions.xacro
new file mode 100644
index 000000000..18a86c355
--- /dev/null
+++ b/CustomRobots/robot_arms/models/ur3/inc/ur_transmissions.xacro
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ ${hw_interface}
+
+
+ 1
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ ${hw_interface}
+
+
+ 1
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ ${hw_interface}
+
+
+ 1
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ ${hw_interface}
+
+
+ 1
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ ${hw_interface}
+
+
+ 1
+
+
+
+
+ transmission_interface/SimpleTransmission
+
+ ${hw_interface}
+
+
+ 1
+
+
+
+
+
+
diff --git a/CustomRobots/robot_arms/models/ur3/ur.ros2_control.xacro b/CustomRobots/robot_arms/models/ur3/ur.ros2_control.xacro
new file mode 100644
index 000000000..1387428c5
--- /dev/null
+++ b/CustomRobots/robot_arms/models/ur3/ur.ros2_control.xacro
@@ -0,0 +1,304 @@
+
+
+
+
+
+
+
+
+ gazebo_ros2_control/GazeboSystem
+
+
+ gz_ros2_control/GazeboSimSystem
+
+
+ mock_components/GenericSystem
+ ${fake_sensor_commands}
+ 0.0
+
+
+ ur_robot_driver/URPositionHardwareInterface
+ ${robot_ip}
+ ${script_filename}
+ ${output_recipe_filename}
+ ${input_recipe_filename}
+ ${headless_mode}
+ ${reverse_port}
+ ${script_sender_port}
+ "${tf_prefix}"
+ 0
+ 2000
+ 0.03
+ ${use_tool_communication}
+ ${hash_kinematics}
+ ${tool_voltage}
+ ${tool_parity}
+ ${tool_baud_rate}
+ ${tool_stop_bits}
+ ${tool_rx_idle_chars}
+ ${tool_tx_idle_chars}
+ ${tool_device_name}
+ ${tool_tcp_port}
+
+
+
+
+ {-2*pi}
+ {2*pi}
+
+
+ -3.15
+ 3.15
+
+
+
+ ${initial_positions['shoulder_pan_joint']}
+
+
+
+
+
+
+ {-2*pi}
+ {2*pi}
+
+
+ -3.15
+ 3.15
+
+
+
+ ${initial_positions['shoulder_lift_joint']}
+
+
+
+
+
+
+ {-pi}
+ {pi}
+
+
+ -3.15
+ 3.15
+
+
+
+ ${initial_positions['elbow_joint']}
+
+
+
+
+
+
+ {-2*pi}
+ {2*pi}
+
+
+ -3.2
+ 3.2
+
+
+
+ ${initial_positions['wrist_1_joint']}
+
+
+
+
+
+
+ {-2*pi}
+ {2*pi}
+
+
+ -3.2
+ 3.2
+
+
+
+ ${initial_positions['wrist_2_joint']}
+
+
+
+
+
+
+ {-2*pi}
+ {2*pi}
+
+
+ -3.2
+ 3.2
+
+
+
+ ${initial_positions['wrist_3_joint']}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CustomRobots/robot_arms/models/ur3/ur.urdf.xacro b/CustomRobots/robot_arms/models/ur3/ur.urdf.xacro
new file mode 100644
index 000000000..d940074dc
--- /dev/null
+++ b/CustomRobots/robot_arms/models/ur3/ur.urdf.xacro
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(arg simulation_controllers)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(arg simulation_controllers)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CustomRobots/robot_arms/models/ur3/ur3.urdf.xacro b/CustomRobots/robot_arms/models/ur3/ur3.urdf.xacro
new file mode 100644
index 000000000..630267ae4
--- /dev/null
+++ b/CustomRobots/robot_arms/models/ur3/ur3.urdf.xacro
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CustomRobots/robot_arms/models/ur3/ur_generated.urdf b/CustomRobots/robot_arms/models/ur3/ur_generated.urdf
new file mode 100644
index 000000000..e69de29bb
diff --git a/CustomRobots/robot_arms/models/ur3/ur_macro.xacro b/CustomRobots/robot_arms/models/ur3/ur_macro.xacro
new file mode 100644
index 000000000..011443f8b
--- /dev/null
+++ b/CustomRobots/robot_arms/models/ur3/ur_macro.xacro
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/CMakeLists.txt b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/CMakeLists.txt
new file mode 100644
index 000000000..b6bb475a3
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/CMakeLists.txt
@@ -0,0 +1,44 @@
+cmake_minimum_required(VERSION 3.5)
+project(ros2srrc_ur3_gazebo)
+
+# Default to C99
+if(NOT CMAKE_C_STANDARD)
+ set(CMAKE_C_STANDARD 99)
+endif()
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# find dependencies
+find_package(ament_cmake REQUIRED)
+# uncomment the following section in order to fill in
+# further dependencies manually.
+# find_package( REQUIRED)
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ # the following line skips the linter which checks for copyrights
+ # uncomment the line when a copyright and license is not present in all source files
+ #set(ament_cmake_copyright_FOUND TRUE)
+ # the following line skips cpplint (only works in a git repo)
+ # uncomment the line when this package is not in a git repo
+ #set(ament_cmake_cpplint_FOUND TRUE)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+install(
+ DIRECTORY
+ config
+ urdf
+ worlds
+ DESTINATION
+ share/${PROJECT_NAME}
+)
+
+ament_package()
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/config/configurations.yaml b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/config/configurations.yaml
new file mode 100644
index 000000000..f5ca050f7
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/config/configurations.yaml
@@ -0,0 +1,20 @@
+# ROS 2 Sim-to-Real Robot Control: UR3 Robot.
+Configurations:
+
+ - ID: "ur3_1"
+ Name: "UR3 on top of Robot Stand."
+ urdf: "ur3.urdf.xacro"
+ rob: "ur3"
+ ee: "none"
+
+ - ID: "ur3_2"
+ Name: "UR3 + Robotiq 2f-85 gripper on top of Robot Stand."
+ urdf: "ur3_robotiq_2f85.urdf.xacro"
+ rob: "ur3"
+ ee: "robotiq_2f85"
+
+ - ID: "ur3_3"
+ Name: "UR3 + Robotiq HandE gripper on top of Robot Stand."
+ urdf: "ur3_robotiq_hande.urdf.xacro"
+ rob: "ur3"
+ ee: "robotiq_hande"
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/package.xml b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/package.xml
new file mode 100644
index 000000000..c3462821e
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/package.xml
@@ -0,0 +1,21 @@
+
+
+
+ ros2srrc_ur3_gazebo
+ 0.0.0
+ IFRA-Cranfield (Cranfield University, UK). Package: ROS 2 SimRealRobotControl - UR3-Gazebo
+
+ Mikel Bueno Viso
+ Mikel Bueno Viso
+
+ Apache-2.0
+
+ ament_cmake
+
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
+
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3.urdf.xacro b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3.urdf.xacro
new file mode 100644
index 000000000..3916bc6f3
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3.urdf.xacro
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(find ros2srrc_robots)/ur3/config/controller.yaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3_robotiq_2f85.urdf.xacro b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3_robotiq_2f85.urdf.xacro
new file mode 100644
index 000000000..c65c22c45
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3_robotiq_2f85.urdf.xacro
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(find ros2srrc_robots)/ur3/config/controller.yaml
+
+
+
+ $(find ros2srrc_endeffectors)/${EE_name}/config/controller.yaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3_robotiq_hande.urdf.xacro b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3_robotiq_hande.urdf.xacro
new file mode 100644
index 000000000..50d19205e
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/urdf/ur3_robotiq_hande.urdf.xacro
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(find ros2srrc_robots)/ur3/config/controller.yaml
+
+
+
+ $(find ros2srrc_endeffectors)/${EE_name}/config/controller.yaml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/worlds/ros2srrc_ur3.world b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/worlds/ros2srrc_ur3.world
new file mode 100644
index 000000000..fa1e98d6d
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/worlds/ros2srrc_ur3.world
@@ -0,0 +1,1611 @@
+
+
+
+
+ 1
+ 0 0 10 0 -0 0
+ 0.8 0.8 0.8 1
+ 0.2 0.2 0.2 1
+
+ 1000
+ 0.9
+ 0.01
+ 0.001
+
+ -0.5 0.1 -0.9
+
+
+ 1
+
+
+
+
+ 0 0 1
+ 100 100
+
+
+
+
+ 65535
+
+
+
+
+ 100
+ 50
+
+
+
+
+
+
+
+ 10
+
+
+ 0
+
+
+ 0 0 1
+ 100 100
+
+
+
+
+
+
+ 0
+ 0
+ 0
+
+
+ 0 0 -9.8
+ 6e-06 2.3e-05 -4.2e-05
+
+
+ 0.001
+ 1
+ 1000
+
+
+ 0.4 0.4 0.4 1
+ 0.7 0.7 0.7 1
+ 1
+
+
+
+ EARTH_WGS84
+ 0
+ 0
+ 0
+ 0
+
+
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+ 1
+
+ 1
+ 0 0 0 0 -0 0
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+
+
+ 0 0 0.95 0 -0 0
+
+
+ 0.45 0.35 0.5
+ model://conveyor/meshes/conveyor.dae
+
+
+
+
+ 0
+ 10
+ 0 0 0.95 0 -0 0
+
+
+ 2.4 0.8 0.1
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 1
+ 1
+ 0.335211 0.377742 0 0 -0 0
+
+
+ 1
+
+
+ 0 0 0.001 0 -0 0
+
+
+ 1 1 1
+ model://ground_logo_big/meshes/ground_logo.dae
+
+
+
+ 0
+ 0
+ 0
+
+ -0.163565 0.817691 0 0 -0 0
+
+
+ 1275 417000000
+ 538 186819528
+ 1594223523 209571631
+ 534891
+
+ -0.6 0.45 0.755 0 -0 0
+ 1 1 1
+
+ -0.6 0.45 0.755 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0.6 0 0 0 -0 1.57
+ 1 1 1
+
+ 0.6 0 0 0 -0 1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -0.5 0 0 0 -0 1.57
+ 1 1 1
+
+ -0.5 0 0 0 -0 1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 0 0 -0 0
+ 1 1 1
+
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -0.6 0.15 0.755 0 -0 0
+ 1 1 1
+
+ -0.6 0.15 0.755 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -0.6 0 0 0 -0 1.57
+ 1 1 1
+
+ -0.6 0 0 0 -0 1.57
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -0.6 -0.45 0.755 0 -0 0
+ 1 1 1
+
+ -0.6 -0.45 0.755 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ -0.6 -0.15 0.755 0 -0 0
+ 1 1 1
+
+ -0.6 -0.15 0.755 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+ 0 0 0 0 -0 0
+
+
+
+ 0 0 10 0 -0 0
+
+
+
+
+ 3.82249 4.74978 2.99885 -0 0.401795 -2.20437
+ orbit
+ perspective
+
+
+
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+ 1
+
+ 1
+ 0 0 0 0 -0 0
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+
+
+ 0 0 0.73 0 -0 1.57
+
+
+ 1 1 1
+ model://target_table/meshes/target_table.dae
+
+
+
+
+ 0
+ 10
+ 0 0 0.73 0 -0 1.57
+
+
+ 0.8 1.6 0.06
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 1
+ 1
+ -0.877342 -1.1194 0 0 -0 0
+
+
+ 1
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+ 1
+
+ 1
+ 0 0 0 0 -0 0
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+
+
+ 0 0 0.01 0 -0 0
+
+
+ 0.5 0.5 0.5
+ model://yellow_target/meshes/yellow_target.dae
+
+
+
+
+ 0
+ 10
+ 0.144 0 0 0 -0 0
+
+
+ 0.012 0.3 0.24
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 -0.144 0 0 -0 0
+
+
+ 0.3 0.012 0.36
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.3 0.3 0.025
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 0.144 0 0 -0 0
+
+
+ 0.3 0.012 0.39
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ -0.144 0 0 0 -0 0
+
+
+ 0.012 0.3 0.39
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ -1.65226 -0.48866 0 0 -0 0
+
+
+ 1
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+ 1
+
+ 1
+ 0 0 0 0 -0 0
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+
+
+ 0 0 0.01 0 -0 0
+
+
+ 0.5 0.5 0.5
+ model://green_target/meshes/green_target.dae
+
+
+
+
+ 0
+ 10
+ 0.144 0 0 0 -0 0
+
+
+ 0.012 0.3 0.24
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 -0.144 0 0 -0 0
+
+
+ 0.3 0.012 0.36
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.3 0.3 0.025
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 0.144 0 0 -0 0
+
+
+ 0.3 0.012 0.39
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ -0.144 0 0 0 -0 0
+
+
+ 0.012 0.3 0.39
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ -1.65226 -0.48866 0 0 -0 0
+
+
+ 1
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+ 1
+
+ 1
+ 0 0 0 0 -0 0
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+
+
+ 0 0 0.01 0 -0 0
+
+
+ 0.5 0.5 0.5
+ model://red_target/meshes/red_target.dae
+
+
+
+
+ 0
+ 10
+ 0.144 0 0 0 -0 0
+
+
+ 0.012 0.3 0.24
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 -0.144 0 0 -0 0
+
+
+ 0.3 0.012 0.36
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.3 0.3 0.025
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 0.144 0 0 -0 0
+
+
+ 0.3 0.012 0.39
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ -0.144 0 0 0 -0 0
+
+
+ 0.012 0.3 0.39
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ -0.055993 0.310239 0 0 -0 0
+
+
+ 1
+
+ 0
+ 0
+ 0
+ 0 0 0 0 -0 0
+ 1
+
+ 1
+ 0 0 0 0 -0 0
+
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+
+
+
+ 0 0 0.01 0 -0 0
+
+
+ 0.5 0.5 0.5
+ model://blue_target/meshes/blue_target.dae
+
+
+
+
+ 0
+ 10
+ 0.144 0 0 0 -0 0
+
+
+ 0.012 0.3 0.24
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 -0.144 0 0 -0 0
+
+
+ 0.3 0.012 0.36
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 0 0 0 -0 0
+
+
+ 0.3 0.3 0.025
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ 0 0.144 0 0 -0 0
+
+
+ 0.3 0.012 0.39
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ 0
+ 10
+ -0.144 0 0 0 -0 0
+
+
+ 0.012 0.3 0.39
+
+
+
+
+
+ 1
+ 1
+ 0 0 0
+ 0
+ 0
+
+
+ 1
+ 0
+ 0
+ 1
+
+ 0
+
+
+
+
+ 0
+ 1e+06
+
+
+ 0
+ 1
+ 1
+
+ 0
+ 0.2
+ 1e+13
+ 1
+ 0.01
+ 0
+
+
+ 1
+ -0.01
+ 0
+ 0.2
+ 1e+13
+ 1
+
+
+
+
+
+ -1.18752 -1.7319 0 0 -0 0
+
+
+
+
+
+
+
+
+
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/worlds/ros2srrc_ur3_original.world b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/worlds/ros2srrc_ur3_original.world
new file mode 100644
index 000000000..00314e1d9
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_gazebo/worlds/ros2srrc_ur3_original.world
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+ 0 0 -9.8
+
+
+ model://ground_plane
+
+
+
+ model://sun
+
+
+
+ 0
+
+
+
+
+
+
+
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/CMakeLists.txt b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/CMakeLists.txt
new file mode 100644
index 000000000..6e9f6ade0
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/CMakeLists.txt
@@ -0,0 +1,43 @@
+cmake_minimum_required(VERSION 3.5)
+project(ros2srrc_ur3_moveit2)
+
+# Default to C99
+if(NOT CMAKE_C_STANDARD)
+ set(CMAKE_C_STANDARD 99)
+endif()
+
+# Default to C++14
+if(NOT CMAKE_CXX_STANDARD)
+ set(CMAKE_CXX_STANDARD 14)
+endif()
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# find dependencies
+find_package(ament_cmake REQUIRED)
+# uncomment the following section in order to fill in
+# further dependencies manually.
+# find_package( REQUIRED)
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ # the following line skips the linter which checks for copyrights
+ # uncomment the line when a copyright and license is not present in all source files
+ #set(ament_cmake_copyright_FOUND TRUE)
+ # the following line skips cpplint (only works in a git repo)
+ # uncomment the line when this package is not in a git repo
+ #set(ament_cmake_cpplint_FOUND TRUE)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+# REQUIRED to -> Launch simulation:
+install(
+ DIRECTORY
+ config
+ DESTINATION
+ share/${PROJECT_NAME}
+)
+
+ament_package()
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3.srdf b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3.srdf
new file mode 100644
index 000000000..6aabb088e
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3.srdf
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3_moveit2.rviz b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3_moveit2.rviz
new file mode 100644
index 000000000..bdaee0371
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3_moveit2.rviz
@@ -0,0 +1,318 @@
+Panels:
+ - Class: rviz_common/Displays
+ Help Height: 78
+ Name: Displays
+ Property Tree Widget:
+ Expanded: ~
+ Splitter Ratio: 0.5
+ Tree Height: 348
+ - Class: rviz_common/Selection
+ Name: Selection
+ - Class: rviz_common/Tool Properties
+ Expanded:
+ - /2D Goal Pose1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz_common/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+ - Class: rviz_common/Time
+ Experimental: false
+ Name: Time
+ SyncMode: 0
+ SyncSource: ""
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 1
+ Class: rviz_default_plugins/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 10
+ Reference Frame:
+ Value: true
+ - Acceleration_Scaling_Factor: 0.7
+ Class: moveit_rviz_plugin/MotionPlanning
+ Enabled: true
+ Move Group Namespace: ""
+ MoveIt_Allow_Approximate_IK: false
+ MoveIt_Allow_External_Program: false
+ MoveIt_Allow_Replanning: false
+ MoveIt_Allow_Sensor_Positioning: false
+ MoveIt_Planning_Attempts: 10
+ MoveIt_Planning_Time: 5
+ MoveIt_Use_Cartesian_Path: false
+ MoveIt_Use_Constraint_Aware_IK: false
+ MoveIt_Workspace:
+ Center:
+ X: 0
+ Y: 0
+ Z: 0
+ Size:
+ X: 2
+ Y: 2
+ Z: 2
+ Name: MotionPlanning
+ Planned Path:
+ Color Enabled: false
+ Interrupt Display: false
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link_inertia:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ flange:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ forearm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ shoulder_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ tool0:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ upper_arm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_1_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_2_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_3_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Loop Animation: false
+ Robot Alpha: 0.5
+ Robot Color: 150; 50; 150
+ Show Robot Collision: false
+ Show Robot Visual: true
+ Show Trail: false
+ State Display Time: 3x
+ Trail Step Size: 1
+ Trajectory Topic: /display_planned_path
+ Planning Metrics:
+ Payload: 1
+ Show Joint Torques: false
+ Show Manipulability: false
+ Show Manipulability Index: false
+ Show Weight Limit: false
+ TextHeight: 0.07999999821186066
+ Planning Request:
+ Colliding Link Color: 255; 0; 0
+ Goal State Alpha: 1
+ Goal State Color: 250; 128; 0
+ Interactive Marker Size: 0
+ Joint Violation Color: 255; 0; 255
+ Planning Group: manipulator
+ Query Goal State: true
+ Query Start State: false
+ Show Workspace: false
+ Start State Alpha: 1
+ Start State Color: 0; 255; 0
+ Planning Scene Topic: /monitored_planning_scene
+ Robot Description: robot_description
+ Scene Geometry:
+ Scene Alpha: 0.8999999761581421
+ Scene Color: 50; 230; 50
+ Scene Display Time: 0.009999999776482582
+ Show Scene Geometry: true
+ Voxel Coloring: Z-Axis
+ Voxel Rendering: Occupied Voxels
+ Scene Robot:
+ Attached Body Color: 150; 50; 150
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link_inertia:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ flange:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ forearm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ shoulder_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ tool0:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ upper_arm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_1_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_2_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_3_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Robot Alpha: 1
+ Show Robot Collision: false
+ Show Robot Visual: true
+ Value: true
+ Velocity_Scaling_Factor: 0.7
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Fixed Frame: base_link
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz_default_plugins/Interact
+ Hide Inactive Objects: true
+ - Class: rviz_default_plugins/MoveCamera
+ - Class: rviz_default_plugins/Select
+ - Class: rviz_default_plugins/FocusCamera
+ - Class: rviz_default_plugins/Measure
+ Line color: 128; 128; 0
+ - Class: rviz_default_plugins/SetInitialPose
+ Covariance x: 0.25
+ Covariance y: 0.25
+ Covariance yaw: 0.06853891909122467
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /initialpose
+ - Class: rviz_default_plugins/SetGoal
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /goal_pose
+ - Class: rviz_default_plugins/PublishPoint
+ Single click: true
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /clicked_point
+ Transformation:
+ Current:
+ Class: rviz_default_plugins/TF
+ Value: true
+ Views:
+ Current:
+ Class: rviz_default_plugins/Orbit
+ Distance: 10
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Focal Point:
+ X: 0
+ Y: 0
+ Z: 0
+ Focal Shape Fixed Size: true
+ Focal Shape Size: 0.05000000074505806
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Pitch: 0.785398006439209
+ Target Frame:
+ Value: Orbit (rviz)
+ Yaw: 0.785398006439209
+ Saved: ~
+Window Geometry:
+ "":
+ collapsed: false
+ " - Trajectory Slider":
+ collapsed: false
+ Displays:
+ collapsed: false
+ Height: 1043
+ Hide Left Dock: false
+ Hide Right Dock: false
+ QMainWindow State: 000000ff00000000fd0000000400000000000001f300000375fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001e7000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000004100fffffffbffffffff010000022a000001880000017d00ffffff000000010000010f000002b0fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d000002b0000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000005870000037500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Time:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: false
+ Width: 1920
+ X: 0
+ Y: 0
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_2f85.srdf b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_2f85.srdf
new file mode 100644
index 000000000..eb5f1a064
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_2f85.srdf
@@ -0,0 +1,219 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_2f85_moveit2.rviz b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_2f85_moveit2.rviz
new file mode 100644
index 000000000..1f96d17f7
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_2f85_moveit2.rviz
@@ -0,0 +1,363 @@
+Panels:
+ - Class: rviz_common/Displays
+ Help Height: 78
+ Name: Displays
+ Property Tree Widget:
+ Expanded: ~
+ Splitter Ratio: 0.5
+ Tree Height: 348
+ - Class: rviz_common/Selection
+ Name: Selection
+ - Class: rviz_common/Tool Properties
+ Expanded:
+ - /2D Goal Pose1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz_common/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+ - Class: rviz_common/Time
+ Experimental: false
+ Name: Time
+ SyncMode: 0
+ SyncSource: ""
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 1
+ Class: rviz_default_plugins/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 10
+ Reference Frame:
+ Value: true
+ - Acceleration_Scaling_Factor: 0.7
+ Class: moveit_rviz_plugin/MotionPlanning
+ Enabled: true
+ Move Group Namespace: ""
+ MoveIt_Allow_Approximate_IK: false
+ MoveIt_Allow_External_Program: false
+ MoveIt_Allow_Replanning: false
+ MoveIt_Allow_Sensor_Positioning: false
+ MoveIt_Planning_Attempts: 10
+ MoveIt_Planning_Time: 5
+ MoveIt_Use_Cartesian_Path: false
+ MoveIt_Use_Constraint_Aware_IK: false
+ MoveIt_Workspace:
+ Center:
+ X: 0
+ Y: 0
+ Z: 0
+ Size:
+ X: 2
+ Y: 2
+ Z: 2
+ Name: MotionPlanning
+ Planned Path:
+ Color Enabled: false
+ Interrupt Display: false
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link_inertia:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ flange:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ forearm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_left_knuckle_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_right_knuckle_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_left_finger_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_right_finger_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_left_inner_knuckle_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_right_inner_knuckle_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_left_finger_tip_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_85_right_finger_tip_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ shoulder_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ tool0:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ upper_arm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_1_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_2_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_3_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Loop Animation: false
+ Robot Alpha: 0.5
+ Robot Color: 150; 50; 150
+ Show Robot Collision: false
+ Show Robot Visual: true
+ Show Trail: false
+ State Display Time: 3x
+ Trail Step Size: 1
+ Trajectory Topic: /display_planned_path
+ Planning Metrics:
+ Payload: 1
+ Show Joint Torques: false
+ Show Manipulability: false
+ Show Manipulability Index: false
+ Show Weight Limit: false
+ TextHeight: 0.07999999821186066
+ Planning Request:
+ Colliding Link Color: 255; 0; 0
+ Goal State Alpha: 1
+ Goal State Color: 250; 128; 0
+ Interactive Marker Size: 0
+ Joint Violation Color: 255; 0; 255
+ Planning Group: manipulator
+ Query Goal State: true
+ Query Start State: false
+ Show Workspace: false
+ Start State Alpha: 1
+ Start State Color: 0; 255; 0
+ Planning Scene Topic: /monitored_planning_scene
+ Robot Description: robot_description
+ Scene Geometry:
+ Scene Alpha: 0.8999999761581421
+ Scene Color: 50; 230; 50
+ Scene Display Time: 0.009999999776482582
+ Show Scene Geometry: true
+ Voxel Coloring: Z-Axis
+ Voxel Rendering: Occupied Voxels
+ Scene Robot:
+ Attached Body Color: 150; 50; 150
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link_inertia:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ flange:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ forearm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ shoulder_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ tool0:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ upper_arm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_1_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_2_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_3_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Robot Alpha: 1
+ Show Robot Collision: false
+ Show Robot Visual: true
+ Value: true
+ Velocity_Scaling_Factor: 0.7
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Fixed Frame: base_link
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz_default_plugins/Interact
+ Hide Inactive Objects: true
+ - Class: rviz_default_plugins/MoveCamera
+ - Class: rviz_default_plugins/Select
+ - Class: rviz_default_plugins/FocusCamera
+ - Class: rviz_default_plugins/Measure
+ Line color: 128; 128; 0
+ - Class: rviz_default_plugins/SetInitialPose
+ Covariance x: 0.25
+ Covariance y: 0.25
+ Covariance yaw: 0.06853891909122467
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /initialpose
+ - Class: rviz_default_plugins/SetGoal
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /goal_pose
+ - Class: rviz_default_plugins/PublishPoint
+ Single click: true
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /clicked_point
+ Transformation:
+ Current:
+ Class: rviz_default_plugins/TF
+ Value: true
+ Views:
+ Current:
+ Class: rviz_default_plugins/Orbit
+ Distance: 10
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Focal Point:
+ X: 0
+ Y: 0
+ Z: 0
+ Focal Shape Fixed Size: true
+ Focal Shape Size: 0.05000000074505806
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Pitch: 0.785398006439209
+ Target Frame:
+ Value: Orbit (rviz)
+ Yaw: 0.785398006439209
+ Saved: ~
+Window Geometry:
+ "":
+ collapsed: false
+ " - Trajectory Slider":
+ collapsed: false
+ Displays:
+ collapsed: false
+ Height: 1043
+ Hide Left Dock: false
+ Hide Right Dock: false
+ QMainWindow State: 000000ff00000000fd0000000400000000000001f300000375fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001e7000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000004100fffffffbffffffff010000022a000001880000017d00ffffff000000010000010f000002b0fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d000002b0000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000005870000037500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Time:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: false
+ Width: 1920
+ X: 0
+ Y: 0
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_hande.srdf b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_hande.srdf
new file mode 100644
index 000000000..a7f70bc79
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_hande.srdf
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_hande_moveit2.rviz b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_hande_moveit2.rviz
new file mode 100644
index 000000000..aca1caf2d
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/config/ur3robotiq_hande_moveit2.rviz
@@ -0,0 +1,333 @@
+Panels:
+ - Class: rviz_common/Displays
+ Help Height: 78
+ Name: Displays
+ Property Tree Widget:
+ Expanded: ~
+ Splitter Ratio: 0.5
+ Tree Height: 348
+ - Class: rviz_common/Selection
+ Name: Selection
+ - Class: rviz_common/Tool Properties
+ Expanded:
+ - /2D Goal Pose1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz_common/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+ - Class: rviz_common/Time
+ Experimental: false
+ Name: Time
+ SyncMode: 0
+ SyncSource: ""
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 1
+ Class: rviz_default_plugins/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 10
+ Reference Frame:
+ Value: true
+ - Acceleration_Scaling_Factor: 0.7
+ Class: moveit_rviz_plugin/MotionPlanning
+ Enabled: true
+ Move Group Namespace: ""
+ MoveIt_Allow_Approximate_IK: false
+ MoveIt_Allow_External_Program: false
+ MoveIt_Allow_Replanning: false
+ MoveIt_Allow_Sensor_Positioning: false
+ MoveIt_Planning_Attempts: 10
+ MoveIt_Planning_Time: 5
+ MoveIt_Use_Cartesian_Path: false
+ MoveIt_Use_Constraint_Aware_IK: false
+ MoveIt_Workspace:
+ Center:
+ X: 0
+ Y: 0
+ Z: 0
+ Size:
+ X: 2
+ Y: 2
+ Z: 2
+ Name: MotionPlanning
+ Planned Path:
+ Color Enabled: false
+ Interrupt Display: false
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link_inertia:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ flange:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ forearm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_hande_base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_hande_left_finger:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ robotiq_hande_right_finger:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ shoulder_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ tool0:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ upper_arm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_1_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_2_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_3_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Loop Animation: false
+ Robot Alpha: 0.5
+ Robot Color: 150; 50; 150
+ Show Robot Collision: false
+ Show Robot Visual: true
+ Show Trail: false
+ State Display Time: 3x
+ Trail Step Size: 1
+ Trajectory Topic: /display_planned_path
+ Planning Metrics:
+ Payload: 1
+ Show Joint Torques: false
+ Show Manipulability: false
+ Show Manipulability Index: false
+ Show Weight Limit: false
+ TextHeight: 0.07999999821186066
+ Planning Request:
+ Colliding Link Color: 255; 0; 0
+ Goal State Alpha: 1
+ Goal State Color: 250; 128; 0
+ Interactive Marker Size: 0
+ Joint Violation Color: 255; 0; 255
+ Planning Group: manipulator
+ Query Goal State: true
+ Query Start State: false
+ Show Workspace: false
+ Start State Alpha: 1
+ Start State Color: 0; 255; 0
+ Planning Scene Topic: /monitored_planning_scene
+ Robot Description: robot_description
+ Scene Geometry:
+ Scene Alpha: 0.8999999761581421
+ Scene Color: 50; 230; 50
+ Scene Display Time: 0.009999999776482582
+ Show Scene Geometry: true
+ Voxel Coloring: Z-Axis
+ Voxel Rendering: Occupied Voxels
+ Scene Robot:
+ Attached Body Color: 150; 50; 150
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link_inertia:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ flange:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ forearm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ shoulder_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ tool0:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ upper_arm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_1_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_2_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_3_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Robot Alpha: 1
+ Show Robot Collision: false
+ Show Robot Visual: true
+ Value: true
+ Velocity_Scaling_Factor: 0.7
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Fixed Frame: base_link
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz_default_plugins/Interact
+ Hide Inactive Objects: true
+ - Class: rviz_default_plugins/MoveCamera
+ - Class: rviz_default_plugins/Select
+ - Class: rviz_default_plugins/FocusCamera
+ - Class: rviz_default_plugins/Measure
+ Line color: 128; 128; 0
+ - Class: rviz_default_plugins/SetInitialPose
+ Covariance x: 0.25
+ Covariance y: 0.25
+ Covariance yaw: 0.06853891909122467
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /initialpose
+ - Class: rviz_default_plugins/SetGoal
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /goal_pose
+ - Class: rviz_default_plugins/PublishPoint
+ Single click: true
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /clicked_point
+ Transformation:
+ Current:
+ Class: rviz_default_plugins/TF
+ Value: true
+ Views:
+ Current:
+ Class: rviz_default_plugins/Orbit
+ Distance: 10
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Focal Point:
+ X: 0
+ Y: 0
+ Z: 0
+ Focal Shape Fixed Size: true
+ Focal Shape Size: 0.05000000074505806
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Pitch: 0.785398006439209
+ Target Frame:
+ Value: Orbit (rviz)
+ Yaw: 0.785398006439209
+ Saved: ~
+Window Geometry:
+ "":
+ collapsed: false
+ " - Trajectory Slider":
+ collapsed: false
+ Displays:
+ collapsed: false
+ Height: 1043
+ Hide Left Dock: false
+ Hide Right Dock: false
+ QMainWindow State: 000000ff00000000fd0000000400000000000001f300000375fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001e7000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000004100fffffffbffffffff010000022a000001880000017d00ffffff000000010000010f000002b0fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d000002b0000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000005870000037500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Time:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: false
+ Width: 1920
+ X: 0
+ Y: 0
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/package.xml b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/package.xml
new file mode 100644
index 000000000..7f15f5caa
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/package.xml
@@ -0,0 +1,21 @@
+
+
+
+ ros2srrc_ur3_moveit2
+ 0.0.0
+ IFRA-Cranfield (Cranfield University, UK). Package: ROS 2 SimRealRobotControl - UR3-MoveIt!2
+
+ Mikel Bueno Viso
+ Mikel Bueno Viso
+
+ Apache-2.0
+
+ ament_cmake
+
+ ament_lint_auto
+ ament_lint_common
+
+
+ ament_cmake
+
+
diff --git a/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/rviz/moveit.rviz b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/rviz/moveit.rviz
new file mode 100644
index 000000000..c8092de74
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/packages/ur3/ros2srrc_ur3_moveit2/rviz/moveit.rviz
@@ -0,0 +1,311 @@
+Panels:
+ - Class: rviz_common/Displays
+ Help Height: 87
+ Name: Displays
+ Property Tree Widget:
+ Expanded:
+ - /Global Options1
+ Splitter Ratio: 0.4957627058029175
+ Tree Height: 573
+ - Class: rviz_common/Selection
+ Name: Selection
+ - Class: rviz_common/Tool Properties
+ Expanded:
+ - /2D Goal Pose1
+ - /Publish Point1
+ Name: Tool Properties
+ Splitter Ratio: 0.5886790156364441
+ - Class: rviz_common/Views
+ Expanded:
+ - /Current View1
+ Name: Views
+ Splitter Ratio: 0.5
+Visualization Manager:
+ Class: ""
+ Displays:
+ - Alpha: 0.5
+ Cell Size: 1
+ Class: rviz_default_plugins/Grid
+ Color: 160; 160; 164
+ Enabled: true
+ Line Style:
+ Line Width: 0.029999999329447746
+ Value: Lines
+ Name: Grid
+ Normal Cell Count: 0
+ Offset:
+ X: 0
+ Y: 0
+ Z: 0
+ Plane: XY
+ Plane Cell Count: 10
+ Reference Frame:
+ Value: true
+ - Acceleration_Scaling_Factor: 0.1
+ Class: moveit_rviz_plugin/MotionPlanning
+ Enabled: true
+ Move Group Namespace: ""
+ MoveIt_Allow_Approximate_IK: false
+ MoveIt_Allow_External_Program: false
+ MoveIt_Allow_Replanning: false
+ MoveIt_Allow_Sensor_Positioning: false
+ MoveIt_Planning_Attempts: 10
+ MoveIt_Planning_Time: 5
+ MoveIt_Use_Cartesian_Path: false
+ MoveIt_Use_Constraint_Aware_IK: false
+ MoveIt_Warehouse_Host: 127.0.0.1
+ MoveIt_Warehouse_Port: 33829
+ MoveIt_Workspace:
+ Center:
+ X: 0
+ Y: 0
+ Z: 0
+ Size:
+ X: 2
+ Y: 2
+ Z: 2
+ Name: MotionPlanning
+ Planned Path:
+ Color Enabled: true
+ Interrupt Display: true
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link_inertia:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ flange:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ forearm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ shoulder_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ tool0:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ upper_arm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_1_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_2_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_3_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Loop Animation: false
+ Robot Alpha: 0.5
+ Robot Color: 150; 50; 150
+ Show Robot Collision: false
+ Show Robot Visual: true
+ Show Trail: false
+ State Display Time: 0.05 s
+ Trail Step Size: 1
+ Trajectory Topic: /display_planned_path
+ Planning Metrics:
+ Payload: 1
+ Show Joint Torques: false
+ Show Manipulability: false
+ Show Manipulability Index: false
+ Show Weight Limit: false
+ TextHeight: 0.07999999821186066
+ Planning Request:
+ Colliding Link Color: 255; 0; 0
+ Goal State Alpha: 1
+ Goal State Color: 250; 128; 0
+ Interactive Marker Size: 0.3
+ Joint Violation Color: 255; 0; 255
+ Planning Group: ur3_arm
+ Query Goal State: true
+ Query Start State: false
+ Show Workspace: false
+ Start State Alpha: 1
+ Start State Color: 0; 255; 0
+ Planning Scene Topic: monitored_planning_scene
+ Robot Description: robot_description
+ Scene Geometry:
+ Scene Alpha: 0.8999999761581421
+ Scene Color: 50; 230; 50
+ Scene Display Time: 0.009999999776482582
+ Show Scene Geometry: true
+ Voxel Coloring: Z-Axis
+ Voxel Rendering: Occupied Voxels
+ Scene Robot:
+ Attached Body Color: 150; 50; 150
+ Links:
+ All Links Enabled: true
+ Expand Joint Details: false
+ Expand Link Details: false
+ Expand Tree: false
+ Link Tree Style: Links in Alphabetic Order
+ base:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ base_link_inertia:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ flange:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ forearm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ shoulder_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ tool0:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ upper_arm_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_1_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_2_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ wrist_3_link:
+ Alpha: 1
+ Show Axes: false
+ Show Trail: false
+ Value: true
+ Robot Alpha: 1
+ Show Robot Collision: false
+ Show Robot Visual: true
+ Value: true
+ Velocity_Scaling_Factor: 0.1
+ Enabled: true
+ Global Options:
+ Background Color: 48; 48; 48
+ Fixed Frame: world
+ Frame Rate: 30
+ Name: root
+ Tools:
+ - Class: rviz_default_plugins/Interact
+ Hide Inactive Objects: true
+ - Class: rviz_default_plugins/MoveCamera
+ - Class: rviz_default_plugins/Select
+ - Class: rviz_default_plugins/FocusCamera
+ - Class: rviz_default_plugins/Measure
+ Line color: 128; 128; 0
+ - Class: rviz_default_plugins/SetInitialPose
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /initialpose
+ - Class: rviz_default_plugins/SetGoal
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /goal_pose
+ - Class: rviz_default_plugins/PublishPoint
+ Single click: true
+ Topic:
+ Depth: 5
+ Durability Policy: Volatile
+ History Policy: Keep Last
+ Reliability Policy: Reliable
+ Value: /clicked_point
+ Transformation:
+ Current:
+ Class: rviz_default_plugins/TF
+ Value: true
+ Views:
+ Current:
+ Class: rviz_default_plugins/Orbit
+ Distance: 6.619869709014893
+ Enable Stereo Rendering:
+ Stereo Eye Separation: 0.05999999865889549
+ Stereo Focal Distance: 1
+ Swap Stereo Eyes: false
+ Value: false
+ Focal Point:
+ X: 0.2489434778690338
+ Y: -0.013962505385279655
+ Z: 0.13800443708896637
+ Focal Shape Fixed Size: true
+ Focal Shape Size: 0.05000000074505806
+ Invert Z Axis: false
+ Name: Current View
+ Near Clip Distance: 0.009999999776482582
+ Pitch: 0.4103981554508209
+ Target Frame:
+ Value: Orbit (rviz)
+ Yaw: 1.210397720336914
+ Saved: ~
+Window Geometry:
+ Displays:
+ collapsed: false
+ Height: 1381
+ Hide Left Dock: false
+ Hide Right Dock: false
+ MotionPlanning:
+ collapsed: false
+ MotionPlanning - Trajectory Slider:
+ collapsed: false
+ QMainWindow State: 000000ff00000000fd0000000400000000000001e0000004f6fc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000007901000003fb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730100000046000002e3000000ff01000003fb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000280020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000005201000003fb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e0067010000032a00000212000001b9010000030000000100000110000004f6fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730100000046000004f6000000d701000003fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d006501000000000000045000000000000000000000070e000004f600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000
+ Selection:
+ collapsed: false
+ Tool Properties:
+ collapsed: false
+ Views:
+ collapsed: false
+ Width: 2560
+ X: 0
+ Y: 30
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_macro.urdf.xacro b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_macro.urdf.xacro
index 76a695acf..9a5f56205 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_macro.urdf.xacro
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_macro.urdf.xacro
@@ -1,86 +1,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
- 0.9
- 0.9
- Gazebo/Black
-
-
-
-
+
@@ -88,26 +20,36 @@
-
+
+ iyx = "0.000000" iyy = "0.001110" iyz = "0.000000"
+ izx = "0.000000" izy = "0.000000" izz = "0.001171" />
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
@@ -115,32 +57,19 @@
-
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
@@ -148,30 +77,31 @@
-
+
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
-
-
+
@@ -179,27 +109,19 @@
-
+
+ iyx = "-0.000002" iyy = "0.000021" iyz = "0.000000"
+ izx = "0.000000" izy = "0.000000" izz = "0.000020" />
-
-
-
-
-
-
-
-
+
-
-
+
@@ -207,27 +129,37 @@
-
+
+ iyx = "-0.000002" iyy = "0.000021" iyz = "0.000000"
+ izx = "0.000000" izy = "0.000000" izz = "0.000020" />
-
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
@@ -235,29 +167,18 @@
-
+
+ iyx = "0.000000" iyy = "0.000005" iyz = "0.000000"
+ izx = "0.000000" izy = "0.000000" izz = "0.000035" />
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -265,121 +186,104 @@
-
+
+ iyx = "0.000000" iyy = "0.000005" iyz = "0.000000"
+ izx = "0.000000" izy = "0.000000" izz = "0.000035" />
-
-
-
+
+
+
-
-
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+ iyx = "0.000000" iyy = "0.000005" iyz = "0.000000"
+ izx = "0.000000" izy = "0.000000" izz = "0.000006" />
-
-
-
-
-
-
-
-
+
+
+ true
+ 100
+
+
+ robotiq_85_left_finger_tip_link_collision
+
+
+
+
-
-
+
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ iyx = "0.000000" iyy = "0.000005" iyz = "0.000000"
+ izx = "0.000000" izy = "0.000000" izz = "0.000006" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
+
+
+ true
+ 100
+
+
+ robotiq_85_right_finger_tip_link_collision
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_ros2control.xacro b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_ros2control.xacro
index 60d683304..32637b44a 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_ros2control.xacro
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_ros2control.xacro
@@ -1,137 +1,95 @@
-
-
-
-
+
+
-
-
- -0.05
- 0.80285
-
-
- 0.5
- 0.5
-
-
- 0.0
-
-
-
-
+
+
+
+ gz_ros2_control/GazeboSimSystem
+
+
+ mock_components/GenericSystem
+ false
+ 0.0
+
+
+
+
+
+
+ 0.0
+ 0.80285
+
+
+ 0.0
+
+
+
+
-
-
- -0.05
- 0.80285
-
-
- 0.5
- 0.5
-
-
- 0.0
-
-
-
-
+
+
+ ${prefix}robotiq_85_left_knuckle_joint
+ 1.0
+
+ 0.0
+ 0.80285
+
+
+
+
+
-
-
- -0.05
- 0.80285
-
-
- 0.5
- 0.5
-
-
- 0.0
-
-
-
-
+
+ ${prefix}robotiq_85_left_knuckle_joint
+ 1.0
+
+ 0.0
+ 0.80285
+
+
+
+
-
-
- -0.05
- 0.80285
-
-
- 0.5
- 0.5
-
-
- 0.0
-
-
-
-
+
+ ${prefix}robotiq_85_left_knuckle_joint
+ 1.0
+
+ 0.0
+ 0.80285
+
+
+
+
-
-
- -0.80285
- 0.05
-
-
- 0.5
- 0.5
-
-
- 0.0
-
-
-
-
+
+ ${prefix}robotiq_85_left_knuckle_joint
+ -1.0
+
+ -0.80285
+ 0.0
+
+
+
+
-
-
- -0.80285
- 0.05
-
-
- 0.5
- 0.5
-
-
- 0.0
-
-
-
-
+
+ ${prefix}robotiq_85_left_knuckle_joint
+ -1.0
+
+ -0.80285
+ 0.0
+
+
+
+
+
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_transmission.xacro b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_transmission.xacro
index 404658c65..20eca4250 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_transmission.xacro
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_endeffectors/robotiq_2f85/urdf/robotiq_2f85_transmission.xacro
@@ -1,128 +1,59 @@
-
-
transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
- 1
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
+
+
+ hardware_interface/PositionJointInterface
+
-
- 1
-
-
-
- transmission_interface/SimpleTransmission
-
- hardware_interface/PositionJointInterface
-
-
+
1
-
-
-
-
- transmission_interface/SimpleTransmission
-
hardware_interface/PositionJointInterface
-
-
- 1
false
+
false
+
false
+
false
+
false
+
false
+
false
+
false
+
false
-
+
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/move.cpp b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/move.cpp
index 4e72de49a..cafec7d0f 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/move.cpp
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/move.cpp
@@ -76,6 +76,7 @@
std::string param_ROB = "none";
std::string param_EE = "none";
std::string param_ENV = "none";
+std::string param_ROB_GROUP = "none";
// Declaration of GLOBAL VARIABLES --> MoveIt!2 Interface:
moveit::planning_interface::MoveGroupInterface move_group_interface_ROB;
@@ -98,13 +99,22 @@ ros2srrc_data::msg::Specs eeSPECS;
class ros2_RobotParam : public rclcpp::Node
{
public:
- ros2_RobotParam() : Node("ros2_RobotParam")
+ ros2_RobotParam() : Node("ros2_RobotParam")
{
this->declare_parameter("ROB_PARAM", "none");
- param_ROB = this->get_parameter("ROB_PARAM").get_parameter_value().get();
- RCLCPP_INFO(this->get_logger(), "ROB_PARAM received -> %s", param_ROB.c_str());
+ param_ROB = this->get_parameter("ROB_PARAM").as_string();
+
+ this->declare_parameter("ROB_GROUP", "none");
+ param_ROB_GROUP = this->get_parameter("ROB_GROUP").as_string();
+
+ RCLCPP_INFO(this->get_logger(),
+ "ROB_PARAM received -> %s",
+ param_ROB.c_str());
+
+ RCLCPP_INFO(this->get_logger(),
+ "ROB_GROUP received -> %s",
+ param_ROB_GROUP.c_str());
}
-private:
};
class ros2_EEParam : public rclcpp::Node
@@ -402,7 +412,7 @@ class ActionServer : public rclcpp::Node
robot_trajectory::RobotTrajectory rt(
move_group_interface_ROB.getRobotModel(),
- "ur5_manipulator"
+ param_ROB_GROUP
);
moveit::core::RobotStatePtr current_state = move_group_interface_ROB.getCurrentState();
@@ -559,9 +569,8 @@ int main(int argc, char ** argv)
// ROBOT
if (param_ROB != "none"){
- std::string group_name = "ur5_manipulator";
-
- move_group_interface_ROB = MoveGroupInterface(node2, group_name);
+ move_group_interface_ROB =
+ MoveGroupInterface(node2, param_ROB_GROUP);
move_group_interface_ROB.setMaxVelocityScalingFactor(0.5);
move_group_interface_ROB.setMaxAccelerationScalingFactor(0.5);
@@ -572,11 +581,11 @@ int main(int argc, char ** argv)
joint_model_group_ROB =
move_group_interface_ROB.getCurrentState()
- ->getJointModelGroup(group_name);
+ ->getJointModelGroup(param_ROB_GROUP);
RCLCPP_INFO(logger,
"MoveGroupInterface created for ROBOT group: %s",
- group_name.c_str());
+ param_ROB_GROUP.c_str());
}
// END EFFECTOR
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robmove.cpp b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robmove.cpp
index cfb982b46..091d8c3d6 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robmove.cpp
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robmove.cpp
@@ -46,6 +46,7 @@
#include
#include
#include
+#include
// Declaration of GLOBAL VARIABLE --> MoveIt!2 Interface:
moveit::planning_interface::MoveGroupInterface move_group_interface_ROB;
@@ -56,13 +57,38 @@ std::string param_ROB = "none";
// Declaration of GLOBAL VARIABLE --> RES:
std::string RES = "none";
+// Declaration of GLOBAL VARIABLE --> ROBOT GROUP:
+std::string param_ROB_GROUP = "none";
+
+#include
+
+void normalizeToNearest(std::vector& target,
+ const std::vector& current)
+{
+ for (size_t i = 0; i < target.size(); ++i)
+ {
+ while (target[i] - current[i] > M_PI)
+ target[i] -= 2.0 * M_PI;
+
+ while (target[i] - current[i] < -M_PI)
+ target[i] += 2.0 * M_PI;
+ }
+}
+
// =============================================================================== //
// MoveIt!2 -> MoveGroupInterface/Plan function:
moveit::planning_interface::MoveGroupInterface::Plan plan_ROB() {
moveit::planning_interface::MoveGroupInterface::Plan my_plan;
- bool success = (move_group_interface_ROB.plan(my_plan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);
+ auto code = move_group_interface_ROB.plan(my_plan);
+
+ RCLCPP_INFO(
+ rclcpp::get_logger("RobMove"),
+ "MoveIt error code = %d",
+ code.val);
+
+ bool success = (code == moveit::core::MoveItErrorCode::SUCCESS);
// Execute the plan
if (success)
@@ -94,6 +120,14 @@ class ActionServer : public rclcpp::Node
param_ROB = this->get_parameter("ROB_PARAM").as_string();
RCLCPP_INFO(this->get_logger(), "ROB_PARAM received -> %s", param_ROB.c_str());
+ this->declare_parameter("ROB_GROUP", "none");
+ param_ROB_GROUP = this->get_parameter("ROB_GROUP").as_string();
+
+ RCLCPP_INFO(
+ this->get_logger(),
+ "ROB_GROUP received -> %s",
+ param_ROB_GROUP.c_str());
+
action_server_ = rclcpp_action::create_server(
this,
"/Robmove",
@@ -137,10 +171,24 @@ class ActionServer : public rclcpp::Node
{
// 0. INFORMATION -> Current Robot Pose:
- auto CP_INFO = move_group_interface_ROB.getCurrentPose();
- RCLCPP_INFO(get_logger(), "INFORMATION -> Current Robot Pose:");
- RCLCPP_INFO(get_logger(), "POSITION -> (x: %.3f, y: %.3f, z: %.3f)", CP_INFO.pose.position.x, CP_INFO.pose.position.y, CP_INFO.pose.position.z);
- RCLCPP_INFO(get_logger(), "ORIENTATION -> (qx: %.3f, qy: %.3f, qz: %.3f, qw: %.3f)", CP_INFO.pose.orientation.x, CP_INFO.pose.orientation.y, CP_INFO.pose.orientation.z, CP_INFO.pose.orientation.w);
+ auto CP_INFO = move_group_interface_ROB.getCurrentPose();
+
+ auto state = move_group_interface_ROB.getCurrentState();
+ state->update();
+
+ const auto& current_tf = state->getGlobalLinkTransform("tool0");
+
+ RCLCPP_INFO(get_logger(),
+ "CURRENTPOSE = %.3f %.3f %.3f",
+ CP_INFO.pose.position.x,
+ CP_INFO.pose.position.y,
+ CP_INFO.pose.position.z);
+
+ RCLCPP_INFO(get_logger(),
+ "STATE TOOL = %.3f %.3f %.3f",
+ current_tf.translation().x(),
+ current_tf.translation().y(),
+ current_tf.translation().z());
// 1. OBTAIN INPUT PARAMETERS:
const auto GOAL = goal_handle->get_goal();
@@ -163,19 +211,180 @@ class ActionServer : public rclcpp::Node
TARGET_POSE.orientation.z = GOAL->qz;
TARGET_POSE.orientation.w = GOAL->qw;
- move_group_interface_ROB.setPoseTarget(TARGET_POSE);
+ RCLCPP_INFO(
+ get_logger(),
+ "TARGET POSE = %.3f %.3f %.3f",
+ TARGET_POSE.position.x,
+ TARGET_POSE.position.y,
+ TARGET_POSE.position.z);
- move_group_interface_ROB.setStartStateToCurrentState();
+ move_group_interface_ROB.clearPoseTargets();
+ move_group_interface_ROB.clearPathConstraints();
+
+ const moveit::core::JointModelGroup* jmg =
+ state->getJointModelGroup(param_ROB_GROUP);
+
+ bool found_ik = state->setFromIK(jmg, TARGET_POSE);
+
+ state->update();
+
+ const auto& ik_tf = state->getGlobalLinkTransform("tool0");
+
+ RCLCPP_INFO(
+ get_logger(),
+ "IK TOOL = %.3f %.3f %.3f",
+ ik_tf.translation().x(),
+ ik_tf.translation().y(),
+ ik_tf.translation().z());
+
+ RCLCPP_INFO(get_logger(), "IK FOUND = %d", found_ik);
+
+ if (!found_ik)
+ {
+ RCLCPP_ERROR(get_logger(), "NO IK SOLUTION");
+ }
+
+ if (found_ik)
+ {
+ std::vector vals;
+ state->copyJointGroupPositions(jmg, vals);
+
+ // Estado actual del robot
+ std::vector current =
+ move_group_interface_ROB.getCurrentJointValues();
+
+ RCLCPP_INFO(get_logger(), "CURRENT JOINTS:");
+ for (size_t i = 0; i < current.size(); ++i)
+ {
+ RCLCPP_INFO(get_logger(),
+ "CURRENT[%zu] = %.6f",
+ i,
+ current[i]);
+ }
+
+ RCLCPP_INFO(get_logger(), "IK BEFORE NORMALIZATION:");
+ for (size_t i = 0; i < vals.size(); ++i)
+ {
+ RCLCPP_INFO(get_logger(),
+ "IK[%zu] = %.6f",
+ i,
+ vals[i]);
+ }
+
+ // -------- NORMALIZACIÓN --------
+ normalizeToNearest(vals, current);
+
+ RCLCPP_INFO(get_logger(), "IK AFTER NORMALIZATION:");
+ for (size_t i = 0; i < vals.size(); ++i)
+ {
+ RCLCPP_INFO(get_logger(),
+ "IKN[%zu] = %.6f",
+ i,
+ vals[i]);
+ }
+
+ // Pasar esos joints al planificador
+ bool ok = move_group_interface_ROB.setJointValueTarget(vals);
+
+ RCLCPP_INFO(get_logger(),
+ "setJointValueTarget = %d",
+ ok);
+
+ std::vector target;
+ move_group_interface_ROB.getJointValueTarget(target);
+
+ RCLCPP_INFO(get_logger(), "TARGET JOINTS:");
+ for (size_t i = 0; i < target.size(); ++i)
+ {
+ RCLCPP_INFO(get_logger(),
+ "TARGET[%zu] = %.6f",
+ i,
+ target[i]);
+ }
+ }
+
+ state->update();
+
+ const auto &tf = state->getGlobalLinkTransform("tool0");
+
+ RCLCPP_INFO(
+ get_logger(),
+ "IK TOOL = %.3f %.3f %.3f",
+ tf.translation().x(),
+ tf.translation().y(),
+ tf.translation().z());
+
+ //move_group_interface_ROB.setPoseTarget(TARGET_POSE);
+ move_group_interface_ROB.setStartStateToCurrentState();
move_group_interface_ROB.setPlannerId(GOAL->type);
move_group_interface_ROB.setMaxVelocityScalingFactor(GOAL->speed);
+ // ===== DEBUG =====
+ auto joints = move_group_interface_ROB.getCurrentJointValues();
+
+ RCLCPP_INFO(get_logger(), "CURRENT JOINTS:");
+
+ for (size_t i = 0; i < joints.size(); ++i)
+ {
+ RCLCPP_INFO(
+ get_logger(),
+ "CURRENT[%zu] = %.6f",
+ i,
+ joints[i]);
+ }
+
+ // Estado interno de MoveIt
+ auto planning_state = move_group_interface_ROB.getCurrentState();
+
+ std::vector planning_vals;
+
+ planning_state->copyJointGroupPositions(
+ planning_state->getJointModelGroup(param_ROB_GROUP),
+ planning_vals);
+
+ RCLCPP_INFO(get_logger(), "PLANNING STATE:");
+
+ for (size_t i = 0; i < planning_vals.size(); ++i)
+ {
+ RCLCPP_INFO(
+ get_logger(),
+ "STATE[%zu] = %.6f",
+ i,
+ planning_vals[i]);
+ }
+ // ==================
+
MyPlan = plan_ROB();
if (RES == "PLANNING: OK"){
+
+ const auto& pts = MyPlan.trajectory_.joint_trajectory.points;
+ RCLCPP_INFO(get_logger(), "Trajectory has %zu points", pts.size());
+ const auto& names = MyPlan.trajectory_.joint_trajectory.joint_names;
+
+ std::stringstream ns;
+ ns << "Joint order: ";
+
+ for (const auto& n : names)
+ ns << n << " ";
+
+ RCLCPP_INFO(get_logger(), "%s", ns.str().c_str());
+
+ for (size_t p = 0; p < pts.size(); ++p)
+ {
+ std::stringstream ss;
+ ss << "Point " << p << ": ";
+
+ for (double q : pts[p].positions)
+ ss << q << " ";
+
+ RCLCPP_INFO(get_logger(), "%s", ss.str().c_str());
+ }
+
robot_trajectory::RobotTrajectory rt(
move_group_interface_ROB.getRobotModel(),
- "ur5_manipulator"
+ param_ROB_GROUP
);
moveit::core::RobotStatePtr current_state = move_group_interface_ROB.getCurrentState();
@@ -194,7 +403,83 @@ class ActionServer : public rclcpp::Node
rt.getRobotTrajectoryMsg(MyPlan.trajectory_);
- bool ExecSUCCESS = (move_group_interface_ROB.execute(MyPlan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);
+ // ===== DEBUG TRAJECTORY =====
+
+ RCLCPP_INFO(get_logger(), "Joint names:");
+
+ for (auto &j : MyPlan.trajectory_.joint_trajectory.joint_names)
+ {
+ RCLCPP_INFO(get_logger(), "%s", j.c_str());
+ }
+
+ RCLCPP_INFO(
+ get_logger(),
+ "Trajectory has %zu points",
+ MyPlan.trajectory_.joint_trajectory.points.size());
+
+ auto &first = MyPlan.trajectory_.joint_trajectory.points.front();
+ auto &last = MyPlan.trajectory_.joint_trajectory.points.back();
+
+ RCLCPP_INFO(get_logger(), "FIRST POINT");
+
+ for (size_t i = 0; i < first.positions.size(); ++i)
+ {
+ RCLCPP_INFO(
+ get_logger(),
+ "%s = %.6f",
+ MyPlan.trajectory_.joint_trajectory.joint_names[i].c_str(),
+ first.positions[i]);
+ }
+
+ RCLCPP_INFO(get_logger(), "LAST POINT");
+
+ for (size_t i = 0; i < last.positions.size(); ++i)
+ {
+ RCLCPP_INFO(
+ get_logger(),
+ "%s = %.6f",
+ MyPlan.trajectory_.joint_trajectory.joint_names[i].c_str(),
+ last.positions[i]);
+ }
+
+ // ============================
+
+ bool ExecSUCCESS =
+ (move_group_interface_ROB.execute(MyPlan)
+ == moveit::planning_interface::MoveItErrorCode::SUCCESS);
+
+ auto state = move_group_interface_ROB.getCurrentState();
+
+ std::vector q;
+ state->copyJointGroupPositions(
+ state->getJointModelGroup(param_ROB_GROUP),
+ q);
+
+ RCLCPP_INFO(get_logger(), "ROBOT AFTER EXECUTION");
+
+ for(size_t i=0;iis_canceling()) {
RCLCPP_INFO(this->get_logger(), "ROBOT MOVEMENT (%s) has been CANCELED.", GOAL->type.c_str());
@@ -271,14 +556,16 @@ int main(int argc, char **argv)
using moveit::planning_interface::MoveGroupInterface;
- std::string ROBname = "ur5_manipulator";
-
- move_group_interface_ROB = MoveGroupInterface(moveit_node, ROBname);
+ move_group_interface_ROB =
+ MoveGroupInterface(moveit_node, param_ROB_GROUP);
move_group_interface_ROB.setMaxVelocityScalingFactor(1.0);
move_group_interface_ROB.setMaxAccelerationScalingFactor(1.0);
- RCLCPP_INFO(logger, "MoveGroupInterface object created for ROBOT: %s", ROBname.c_str());
+ RCLCPP_INFO(
+ logger,
+ "MoveGroupInterface object created for ROBOT: %s",
+ param_ROB_GROUP.c_str());
rclcpp::spin(node);
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robpose.cpp b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robpose.cpp
index 524a1e498..fc7b462d5 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robpose.cpp
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_execution/src/robpose.cpp
@@ -53,6 +53,8 @@ moveit::planning_interface::MoveGroupInterface move_group_interface_ROB;
// Declaration of GLOBAL VARIABLE --> ROBOT PARAMETER:
std::string param_ROB = "none";
+std::string param_ROB_GROUP = "none";
+
// Declaration of GLOBAL VARIABLE --> ROBOT POSE:
ros2srrc_data::msg::Robpose POSE;
@@ -113,11 +115,14 @@ int main(int argc, char **argv)
RCLCPP_INFO(node->get_logger(), "ROB_PARAM received -> %s", param_ROB.c_str());
+ node->declare_parameter("ROB_GROUP", "none");
+ param_ROB_GROUP =
+ node->get_parameter("ROB_GROUP").as_string();
+
// === MOVEIT ===
using moveit::planning_interface::MoveGroupInterface;
- std::string ROBname = "ur5_manipulator";
-
- move_group_interface_ROB = MoveGroupInterface(node, ROBname);
+ move_group_interface_ROB =
+ MoveGroupInterface(node, param_ROB_GROUP);
RCLCPP_INFO(node->get_logger(), "MoveGroupInterface created");
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/controller.yaml b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/controller.yaml
index d5b1ac25c..26180e975 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/controller.yaml
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/controller.yaml
@@ -1,32 +1,96 @@
controller_manager:
ros__parameters:
-
- update_rate: 250 #Hz
+
+ update_rate: 100
joint_state_broadcaster:
type: joint_state_broadcaster/JointStateBroadcaster
-
+
joint_trajectory_controller:
type: joint_trajectory_controller/JointTrajectoryController
+ gripper_controller:
+ type: joint_trajectory_controller/JointTrajectoryController
+
+
+joint_state_broadcaster:
+ ros__parameters:
+
+ joints:
+ - shoulder_pan_joint
+ - shoulder_lift_joint
+ - elbow_joint
+ - wrist_1_joint
+ - wrist_2_joint
+ - wrist_3_joint
+ - robotiq_85_left_knuckle_joint
+
+ interfaces:
+ - position
+ - velocity
+ - effort
+
+
joint_trajectory_controller:
ros__parameters:
+
joints:
- - shoulder_pan_joint
- - shoulder_lift_joint
- - elbow_joint
- - wrist_1_joint
- - wrist_2_joint
- - wrist_3_joint
+ - shoulder_pan_joint
+ - shoulder_lift_joint
+ - elbow_joint
+ - wrist_1_joint
+ - wrist_2_joint
+ - 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
+ allow_nonzero_velocity_at_trajectory_end: true
+ allow_integration_in_goal_trajectories: true
+
+ constraints:
+ stopped_velocity_tolerance: 0.01
+ goal_time: 0.0
+
+
+gripper_controller:
+ ros__parameters:
+
+ joints:
+ - robotiq_85_left_knuckle_joint
+
+ command_interfaces:
+ - position
+
state_interfaces:
- position
- velocity
- state_publish_rate: 250.0
+
+ state_publish_rate: 100.0
action_monitor_rate: 20.0
+
allow_partial_joints_goal: false
+ allow_integration_in_goal_trajectories: true
+
constraints:
- stopped_velocity_tolerance: 0.0
- goal_time: 0.0
\ No newline at end of file
+ stopped_velocity_tolerance: 0.01
+ goal_time: 0.0
+
+ robotiq_85_left_knuckle_joint:
+ trajectory: 0.5
+ goal: 0.5
+
+ gains:
+ robotiq_85_left_knuckle_joint:
+ p: 100.0
+ d: 1.0
+ i: 0.01
+ i_clamp: 1.0
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/moveit_controllers.yaml b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/moveit_controllers.yaml
new file mode 100644
index 000000000..ef495fd5f
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/moveit_controllers.yaml
@@ -0,0 +1,20 @@
+/**:
+ ros__parameters:
+
+ moveit_simple_controller_manager:
+
+ controller_names:
+ - joint_trajectory_controller
+
+ joint_trajectory_controller:
+ type: FollowJointTrajectory
+ action_ns: follow_joint_trajectory
+ default: true
+
+ joints:
+ - shoulder_pan_joint
+ - shoulder_lift_joint
+ - elbow_joint
+ - wrist_1_joint
+ - wrist_2_joint
+ - wrist_3_joint
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/ompl_planning.yaml b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/ompl_planning.yaml
new file mode 100644
index 000000000..24eabd179
--- /dev/null
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/config/ompl_planning.yaml
@@ -0,0 +1,67 @@
+/**:
+ ros__parameters:
+
+ planner_configs:
+
+ SBLkConfigDefault:
+ type: geometric::SBL
+
+ ESTkConfigDefault:
+ type: geometric::EST
+ goal_bias: 0.05
+
+ LBKPIECEkConfigDefault:
+ type: geometric::LBKPIECE
+ border_fraction: 0.9
+ min_valid_path_fraction: 0.5
+
+ BKPIECEkConfigDefault:
+ type: geometric::BKPIECE
+ border_fraction: 0.9
+ failed_expansion_score_factor: 0.5
+ min_valid_path_fraction: 0.5
+
+ KPIECEkConfigDefault:
+ type: geometric::KPIECE
+ goal_bias: 0.05
+ border_fraction: 0.9
+ failed_expansion_score_factor: 0.5
+ min_valid_path_fraction: 0.5
+
+ RRTkConfigDefault:
+ type: geometric::RRT
+ goal_bias: 0.05
+
+ RRTConnectkConfigDefault:
+ type: geometric::RRTConnect
+
+ RRTstarkConfigDefault:
+ type: geometric::RRTstar
+ goal_bias: 0.05
+ delay_collision_checking: 1
+
+ TRRTkConfigDefault:
+ type: geometric::TRRT
+ goal_bias: 0.05
+
+ PRMkConfigDefault:
+ type: geometric::PRM
+
+ PRMstarkConfigDefault:
+ type: geometric::PRMstar
+
+ ur3_arm:
+ planner_configs:
+ - SBLkConfigDefault
+ - ESTkConfigDefault
+ - LBKPIECEkConfigDefault
+ - BKPIECEkConfigDefault
+ - KPIECEkConfigDefault
+ - RRTkConfigDefault
+ - RRTConnectkConfigDefault
+ - RRTstarkConfigDefault
+ - TRRTkConfigDefault
+ - PRMkConfigDefault
+ - PRMstarkConfigDefault
+
+ longest_valid_segment_fraction: 0.01
\ No newline at end of file
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/urdf/ur3_macro.urdf.xacro b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/urdf/ur3_macro.urdf.xacro
index 9fafebecc..2219b142a 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/urdf/ur3_macro.urdf.xacro
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/urdf/ur3_macro.urdf.xacro
@@ -99,9 +99,6 @@
-
-
-
@@ -119,9 +116,6 @@
-
-
-
@@ -139,9 +133,6 @@
-
-
-
@@ -159,9 +150,6 @@
-
-
-
@@ -179,9 +167,6 @@
-
-
-
@@ -199,9 +184,6 @@
-
-
-
@@ -219,9 +201,6 @@
-
-
-
diff --git a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/urdf/ur3_ros2control.xacro b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/urdf/ur3_ros2control.xacro
index a317468c0..3900a0aff 100644
--- a/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/urdf/ur3_ros2control.xacro
+++ b/Industrial/ros2_SimRealRobotControl_gz/ros2srrc_robots/ur3/urdf/ur3_ros2control.xacro
@@ -144,7 +144,7 @@
- gazebo_ros2_control/GazeboSystem
+ gz_ros2_control/GazeboSimSystem
diff --git a/Industrial/ur3_gripper_moveit_config /CMakeLists.txt b/Industrial/ur3_gripper_moveit_config /CMakeLists.txt
new file mode 100644
index 000000000..e2513fb58
--- /dev/null
+++ b/Industrial/ur3_gripper_moveit_config /CMakeLists.txt
@@ -0,0 +1,31 @@
+cmake_minimum_required(VERSION 3.8)
+project(ur3_gripper_moveit_config)
+
+if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options(-Wall -Wextra -Wpedantic)
+endif()
+
+# find dependencies
+find_package(ament_cmake REQUIRED)
+find_package(ament_cmake_python REQUIRED)
+find_package(robotiq_description REQUIRED)
+find_package(urdf REQUIRED)
+find_package(xacro REQUIRED)
+
+install(DIRECTORY config
+ DESTINATION share/${PROJECT_NAME}
+)
+
+
+if(BUILD_TESTING)
+ find_package(ament_lint_auto REQUIRED)
+ # the following line skips the linter which checks for copyrights
+ # uncomment the line when a copyright and license is not present in all source files
+ #set(ament_cmake_copyright_FOUND TRUE)
+ # the following line skips cpplint (only works in a git repo)
+ # uncomment the line when this package is not in a git repo
+ #set(ament_cmake_cpplint_FOUND TRUE)
+ ament_lint_auto_find_test_dependencies()
+endif()
+
+ament_package()
diff --git a/Industrial/ur3_gripper_moveit_config /config/controllers.yaml b/Industrial/ur3_gripper_moveit_config /config/controllers.yaml
new file mode 100644
index 000000000..568d22a69
--- /dev/null
+++ b/Industrial/ur3_gripper_moveit_config /config/controllers.yaml
@@ -0,0 +1,26 @@
+/**:
+ ros__parameters:
+ moveit_controller_manager: moveit_simple_controller_manager/MoveItSimpleControllerManager
+ moveit_simple_controller_manager:
+ controller_names:
+ - joint_trajectory_controller
+ - gripper_controller
+
+ joint_trajectory_controller:
+ action_ns: follow_joint_trajectory
+ type: FollowJointTrajectory
+ default: true
+ joints:
+ - shoulder_pan_joint
+ - shoulder_lift_joint
+ - elbow_joint
+ - wrist_1_joint
+ - wrist_2_joint
+ - wrist_3_joint
+
+ gripper_controller:
+ action_ns: follow_joint_trajectory
+ type: FollowJointTrajectory
+ default: false
+ joints:
+ - robotiq_85_left_knuckle_joint
diff --git a/Industrial/ur3_gripper_moveit_config /config/kinematics.yaml b/Industrial/ur3_gripper_moveit_config /config/kinematics.yaml
new file mode 100644
index 000000000..16412cd0b
--- /dev/null
+++ b/Industrial/ur3_gripper_moveit_config /config/kinematics.yaml
@@ -0,0 +1,9 @@
+/**:
+ ros__parameters:
+ ur3_arm:
+ kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
+ kinematics_solver_search_resolution: 0.005
+ kinematics_solver_timeout: 0.1
+ kinematics_solver_attempts: 10
+ gripper:
+ kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
\ No newline at end of file
diff --git a/Industrial/ur3_gripper_moveit_config /config/moveit_controllers.yaml b/Industrial/ur3_gripper_moveit_config /config/moveit_controllers.yaml
new file mode 100644
index 000000000..188c35ddd
--- /dev/null
+++ b/Industrial/ur3_gripper_moveit_config /config/moveit_controllers.yaml
@@ -0,0 +1,25 @@
+/**:
+ ros__parameters:
+ moveit_simple_controller_manager:
+ controller_names:
+ - joint_trajectory_controller
+ - gripper_controller
+
+ joint_trajectory_controller:
+ type: FollowJointTrajectory
+ action_ns: follow_joint_trajectory
+ default: true
+ joints:
+ - shoulder_pan_joint
+ - shoulder_lift_joint
+ - elbow_joint
+ - wrist_1_joint
+ - wrist_2_joint
+ - wrist_3_joint
+
+ gripper_controller:
+ type: FollowJointTrajectory
+ action_ns: follow_joint_trajectory
+ default: true
+ joints:
+ - robotiq_85_left_knuckle_joint
\ No newline at end of file
diff --git a/Industrial/ur3_gripper_moveit_config /config/ompl_planning.yaml b/Industrial/ur3_gripper_moveit_config /config/ompl_planning.yaml
new file mode 100644
index 000000000..1fae3f8d6
--- /dev/null
+++ b/Industrial/ur3_gripper_moveit_config /config/ompl_planning.yaml
@@ -0,0 +1,72 @@
+/**:
+ ros__parameters:
+ planner_configs:
+ SBLkConfigDefault:
+ type: geometric::SBL
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
+ ESTkConfigDefault:
+ type: geometric::EST
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0 setup()
+ goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
+ LBKPIECEkConfigDefault:
+ type: geometric::LBKPIECE
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
+ border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
+ min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
+ BKPIECEkConfigDefault:
+ type: geometric::BKPIECE
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
+ border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9
+ failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
+ min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
+ KPIECEkConfigDefault:
+ type: geometric::KPIECE
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
+ goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05
+ border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 (0.0,1.]
+ failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5
+ min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5
+ RRTkConfigDefault:
+ type: geometric::RRT
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
+ goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
+ RRTConnectkConfigDefault:
+ type: geometric::RRTConnect
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
+ RRTstarkConfigDefault:
+ type: geometric::RRTstar
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
+ goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
+ delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1
+ TRRTkConfigDefault:
+ type: geometric::TRRT
+ range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup()
+ goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05
+ max_states_failed: 10 # when to start increasing temp. default: 10
+ temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0
+ min_temperature: 10e-10 # lower limit of temp change. default: 10e-10
+ init_temperature: 10e-6 # initial temperature. default: 10e-6
+ frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup()
+ frountierNodeRatio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1
+ k_constant: 0.0 # value used to normalize expression. default: 0.0 set in setup()
+ PRMkConfigDefault:
+ type: geometric::PRM
+ max_nearest_neighbors: 10 # use k nearest neighbors. default: 10
+ PRMstarkConfigDefault:
+ type: geometric::PRMstar
+ ur3_arm:
+ planner_configs:
+ - SBLkConfigDefault
+ - ESTkConfigDefault
+ - LBKPIECEkConfigDefault
+ - BKPIECEkConfigDefault
+ - KPIECEkConfigDefault
+ - RRTkConfigDefault
+ - RRTConnectkConfigDefault
+ - RRTstarkConfigDefault
+ - TRRTkConfigDefault
+ - PRMkConfigDefault
+ - PRMstarkConfigDefault
+ ##Note: commenting the following line lets moveit chose RRTConnect as default planner rather than LBKPIECE
+ #projection_evaluator: joints(shoulder_pan_joint,shoulder_lift_joint)
+ longest_valid_segment_fraction: 0.01
diff --git a/Industrial/ur3_gripper_moveit_config /config/ur_servo.yaml b/Industrial/ur3_gripper_moveit_config /config/ur_servo.yaml
new file mode 100644
index 000000000..741c97b6a
--- /dev/null
+++ b/Industrial/ur3_gripper_moveit_config /config/ur_servo.yaml
@@ -0,0 +1,76 @@
+###############################################
+# Modify all parameters related to servoing here
+###############################################
+use_gazebo: false # Whether the robot is started in a Gazebo simulation environment
+
+## Properties of incoming commands
+command_in_type: "speed_units" # "unitless"> in the range [-1:1], as if from joystick. "speed_units"> cmds are in m/s and rad/s
+scale:
+ # Scale parameters are only used if command_in_type=="unitless"
+ linear: 0.6 # Max linear velocity. Meters per publish_period. Unit is [m/s]. Only used for Cartesian commands.
+ rotational: 0.3 # Max angular velocity. Rads per publish_period. Unit is [rad/s]. Only used for Cartesian commands.
+ # Max joint angular/linear velocity. Rads or Meters per publish period. Only used for joint commands on joint_command_in_topic.
+ joint: 0.01
+# This is a fudge factor to account for any latency in the system, e.g. network latency or poor low-level
+# controller performance. It essentially increases the timestep when calculating the target pose, to move the target
+# pose farther away. [seconds]
+system_latency_compensation: 0.04
+
+## Properties of outgoing commands
+publish_period: 0.004 # 1/Nominal publish rate [seconds]
+low_latency_mode: false # Set this to true to publish as soon as an incoming Twist command is received (publish_period is ignored)
+
+# What type of topic does your robot driver expect?
+# Currently supported are std_msgs/Float64MultiArray or trajectory_msgs/JointTrajectory
+command_out_type: std_msgs/Float64MultiArray
+
+# What to publish? Can save some bandwidth as most robots only require positions or velocities
+publish_joint_positions: true
+publish_joint_velocities: false
+publish_joint_accelerations: false
+
+## Plugins for smoothing outgoing commands
+smoothing_filter_plugin_name: "online_signal_smoothing::ButterworthFilterPlugin"
+
+## Incoming Joint State properties
+low_pass_filter_coeff: 10.0 # Larger --> trust the filtered data more, trust the measurements less.
+
+## MoveIt properties
+move_group_name: ur3_arm # Often 'manipulator' or 'arm'
+planning_frame: base_link # The MoveIt planning frame. Often 'base_link' or 'world'
+
+## Other frames
+ee_frame_name: tool0 # The name of the end effector link, used to return the EE pose
+robot_link_command_frame: tool0 # commands must be given in the frame of a robot link. Usually either the base or end effector
+
+## Stopping behaviour
+incoming_command_timeout: 0.1 # Stop servoing if X seconds elapse without a new command
+# If 0, republish commands forever even if the robot is stationary. Otherwise, specify num. to publish.
+# Important because ROS may drop some messages and we need the robot to halt reliably.
+num_outgoing_halt_msgs_to_publish: 4
+
+## Configure handling of singularities and joint limits
+lower_singularity_threshold: 100.0 # Start decelerating when the condition number hits this (close to singularity)
+hard_stop_singularity_threshold: 200.0 # Stop when the condition number hits this
+joint_limit_margin: 0.1 # added as a buffer to joint limits [radians]. If moving quickly, make this larger.
+
+## Topic names
+cartesian_command_in_topic: ~/delta_twist_cmds # Topic for incoming Cartesian twist commands
+joint_command_in_topic: ~/delta_joint_cmds # Topic for incoming joint angle commands
+joint_topic: /joint_states
+status_topic: ~/status # Publish status to this topic
+command_out_topic: /forward_position_controller/commands # Publish outgoing commands here
+
+## Collision checking for the entire robot body
+check_collisions: true # Check collisions?
+collision_check_rate: 5.0 # [Hz] Collision-checking can easily bog down a CPU if done too often.
+# Two collision check algorithms are available:
+# "threshold_distance" begins slowing down when nearer than a specified distance. Good if you want to tune collision thresholds manually.
+# "stop_distance" stops if a collision is nearer than the worst-case stopping distance and the distance is decreasing. Requires joint acceleration limits
+collision_check_type: threshold_distance
+# Parameters for "threshold_distance"-type collision checking
+self_collision_proximity_threshold: 0.01 # Start decelerating when a self-collision is this far [m]
+scene_collision_proximity_threshold: 0.02 # Start decelerating when a scene collision is this far [m]
+# Parameters for "stop_distance"-type collision checking
+collision_distance_safety_factor: 1000.0 # Must be >= 1. A large safety factor is recommended to account for latency
+min_allowable_collision_distance: 0.01 # Stop if a collision is closer than this [m]
diff --git a/Industrial/ur3_gripper_moveit_config /package.xml b/Industrial/ur3_gripper_moveit_config /package.xml
new file mode 100644
index 000000000..b5e616ab1
--- /dev/null
+++ b/Industrial/ur3_gripper_moveit_config /package.xml
@@ -0,0 +1,32 @@
+
+
+
+ ur3_gripper_moveit_config
+ 0.0.0
+ TODO: Package description
+ justin
+ TODO: License declaration
+
+ ament_cmake
+ ament_cmake_python
+
+ robotiq_description
+ urdf
+ xacro
+
+ launch
+ launch_ros
+ moveit_kinematics
+ moveit_planners_ompl
+ moveit_ros_move_group
+ moveit_ros_visualization
+ moveit_servo
+ moveit_simple_controller_manager
+ controller_manager
+ joint_trajectory_controller
+ rviz2
+
+
+ ament_cmake
+
+
diff --git a/Launchers/rviz/sausage_exercise.launch.py b/Launchers/rviz/sausage_exercise.launch.py
new file mode 100644
index 000000000..aeccab830
--- /dev/null
+++ b/Launchers/rviz/sausage_exercise.launch.py
@@ -0,0 +1,142 @@
+"""
+UR3 + Robotiq - RViz Launcher
+Launches ONLY RViz with MoveIt Motion Planning
+Assumes Gazebo and robot are already running
+"""
+
+import os
+import xacro
+import yaml
+
+from launch import LaunchDescription
+from launch_ros.actions import Node
+from launch.actions import TimerAction
+
+from ament_index_python.packages import get_package_share_directory
+
+def load_yaml(package_name, file_path):
+ pkg_path = get_package_share_directory(package_name)
+ with open(os.path.join(pkg_path, file_path), "r") as f:
+ return yaml.safe_load(f)
+
+
+def generate_launch_description():
+
+ # =====================================================
+ # Packages
+ # =====================================================
+
+ pkg_share_dir = get_package_share_directory("custom_robots")
+ moveit_pkg_share = get_package_share_directory("ros2srrc_ur3_moveit2")
+
+ # =====================================================
+ # URDF
+ # =====================================================
+
+ xacro_file = os.path.join(
+ pkg_share_dir,
+ "models",
+ "ur3",
+ "ur3.urdf.xacro",
+ )
+
+ controllers_file = os.path.join(
+ pkg_share_dir,
+ "config",
+ "ur3_controllers.yaml",
+ )
+
+ robot_description_content = xacro.process_file(
+ xacro_file,
+ mappings={
+ "ur_type": "ur3",
+ "name": "ur",
+ "prefix": "",
+ "use_fake_hardware": "false",
+ "sim_gazebo": "false",
+ "sim_gz": "true",
+ "simulation_controllers": controllers_file,
+ "hmi": "false",
+ "EE": "true",
+ "EE_name": "robotiq_2f85",
+ "camera": "false",
+ },
+ ).toxml()
+
+ robot_description = {
+ "robot_description": robot_description_content
+ }
+
+ # =====================================================
+ # SRDF
+ # =====================================================
+
+ srdf_file = os.path.join(
+ moveit_pkg_share,
+ "config",
+ "ur3robotiq_2f85.srdf",
+ )
+
+ with open(srdf_file, "r") as file:
+ robot_description_semantic = {
+ "robot_description_semantic": file.read()
+ }
+
+ # =====================================================
+ # MoveIt Config Files
+ # =====================================================
+
+ kinematics_yaml = load_yaml(
+ "ur3_gripper_moveit_config",
+ "config/kinematics.yaml",
+ )
+
+ kinematics_yaml = {
+ "robot_description_kinematics":
+ kinematics_yaml["/**"]["ros__parameters"]
+ }
+
+ ompl_planning = load_yaml(
+ "ros2srrc_robots",
+ "ur3/config/ompl_planning.yaml",
+ )
+
+ ompl_planning = ompl_planning["/**"]["ros__parameters"]
+
+ # =====================================================
+ # RViz Config
+ # =====================================================
+
+ rviz_config_file = (
+ "/home/ws/src/Industrial/ros2_SimRealRobotControl_gz/"
+ "packages/ur3/ros2srrc_ur3_moveit2/rviz/moveit.rviz"
+ )
+
+ print("MOVEIT PKG =", moveit_pkg_share)
+ print("RVIZ FILE =", rviz_config_file)
+
+ rviz_node = Node(
+ package="rviz2",
+ executable="rviz2",
+ name="rviz2",
+ output="log",
+ arguments=["-d", rviz_config_file],
+ parameters=[
+ robot_description,
+ robot_description_semantic,
+ ompl_planning,
+ kinematics_yaml,
+ {"use_sim_time": True},
+ ],
+ )
+
+ delay_rviz = TimerAction(
+ period=3.0,
+ actions=[rviz_node],
+ )
+
+ return LaunchDescription(
+ [
+ delay_rviz,
+ ]
+ )
\ No newline at end of file
diff --git a/Launchers/sausage_exercise.launch.py b/Launchers/sausage_exercise.launch.py
index eff793839..9468f828a 100644
--- a/Launchers/sausage_exercise.launch.py
+++ b/Launchers/sausage_exercise.launch.py
@@ -6,6 +6,7 @@
from launch.actions import ExecuteProcess, SetEnvironmentVariable
from ament_index_python.packages import get_package_share_directory
+from launch_ros.actions import Node
def generate_launch_description():
@@ -70,11 +71,20 @@ def generate_launch_description():
output="screen",
)
+ sausage_spawner = ExecuteProcess(
+ cmd=[
+ "python3",
+ "home/ws/src/CustomRobots/conveyor_belt/spawn_sausage.py"
+ ],
+ output="screen",
+ )
+
return LaunchDescription(
[
set_gz_plugin_path,
set_ld_library_path,
set_resource_path,
gz,
+ sausage_spawner,
]
)
diff --git a/Worlds/sausage_exercise.world b/Worlds/sausage_exercise.world
index 2528dcdf6..e90e7bc06 100644
--- a/Worlds/sausage_exercise.world
+++ b/Worlds/sausage_exercise.world
@@ -12,8 +12,10 @@
-
+
+ ogre2
+
0 0 -9.8
@@ -71,6 +73,36 @@
0 0 0 0 0 0
+
+
+ true
+ -0.5 0 0 0 0 0
+
+ 0 0 0.45 0 0 0
+
+
+
+ 0.09
+ 0.9
+
+
+
+ 0.3 0.3 0.3 1
+ 0.7 0.7 0.7 1
+ 0.01 0.01 0.01 1
+
+
+
+
+
+ 0.09
+ 0.9
+
+
+
+
+
+
\ No newline at end of file
diff --git a/database/universes.sql b/database/universes.sql
index 238550680..674039810 100644
--- a/database/universes.sql
+++ b/database/universes.sql
@@ -198,7 +198,7 @@ COPY public.universes (id, name, world_id, robot_id) FROM stdin;
68 Rover 4wd Warehouse Low Noise 68 19
69 Rover 4wd Warehouse High Noise 68 20
70 Machine vision Harmonic world 70 24
-71 Conveyor Belt World 71 0
+71 Conveyor Belt World 71 26
\.
--
@@ -265,7 +265,7 @@ COPY public.worlds (id, name, launch_file_path, tools_config, ros_version, type,
67 Follow Person Teleop Harmonic /opt/jderobot/Launchers/follow_person_teleop_harmonic.launch.py {"gzsim":"/opt/jderobot/Launchers/visualization/follow_person.config"} ROS2 gz {-1.0,10.0,0.1,0.0,0.0,0.0}
68 Rover 4wd Warehouse Low Noise /opt/jderobot/Launchers/rover_4wd_warehouse.launch.py None ROS2 gz {0.0,0.0,0.0,0.0,0.0,0.0}
70 Machine Vision Harmonic /opt/jderobot/Launchers/machine_vision.launch.py {"rviz":"/opt/jderobot/Launchers/rviz/pick_place_harmonic.launch.py"} ROS2 gz {0.0,0.0,0.9,0.0,0.0,0.0}
-71 Conveyor Harmonic /opt/jderobot/Launchers/sausage_exercise.launch.py None ROS2 gz {0.0,0.0,0.0,0.0,0.0,0.0}
+71 Conveyor Harmonic /opt/jderobot/Launchers/sausage_exercise.launch.py {"rviz":"/opt/jderobot/Launchers/rviz/sausage_exercise.launch.py"} ROS2 gz {-0.5,0.0,0.9,0.0,0.0,0.0}
\.
--
@@ -299,6 +299,8 @@ COPY public.robots (id, name, launch_file_path, entity, extra_config) FROM stdin
22 Turtlebot 3 Medium Noise /home/ws/src/CustomRobots/turtlebot3/launch/turtlebot3.launch.py turtlebot3 noise:=med
23 Turtlebot 3 High Noise /home/ws/src/CustomRobots/turtlebot3/launch/turtlebot3.launch.py turtlebot3 noise:=high
24 Ur5 Camera /home/ws/src/CustomRobots/robot_arms/launch/ur5.launch.py ur5_robotiq sensor:=camera
+25 Ur3 /home/ws/src/CustomRobots/robot_arms/launch/ur3.launch.py ur3_robotiq None
+26 Ur3 Camera /home/ws/src/CustomRobots/robot_arms/launch/ur3.launch.py ur3_robotiq sensor:=camera
\.
--