From e21cdce6932b0ca8eb36fd980e5ab7ad9898e1f1 Mon Sep 17 00:00:00 2001 From: francescodelduchetto Date: Wed, 22 Jan 2025 17:32:15 +0000 Subject: [PATCH] integration mecharm with moveit --- .docker/Dockerfile | 3 +- src/mecharm_moveit_config/.setup_assistant | 25 +++++++++ src/mecharm_moveit_config/CMakeLists.txt | 11 ++++ .../config/firefighter.ros2_control.xacro | 56 +++++++++++++++++++ .../config/firefighter.srdf | 55 ++++++++++++++++++ .../config/firefighter.urdf.xacro | 14 +++++ .../config/initial_positions.yaml | 9 +++ .../config/joint_limits.yaml | 40 +++++++++++++ .../config/kinematics.yaml | 4 ++ src/mecharm_moveit_config/config/moveit.rviz | 51 +++++++++++++++++ .../config/moveit_controllers.yaml | 19 +++++++ .../config/pilz_cartesian_limits.yaml | 6 ++ .../config/ros2_controllers.yaml | 26 +++++++++ .../launch/demo.launch.py | 7 +++ .../launch/move_group.launch.py | 7 +++ .../launch/moveit_rviz.launch.py | 7 +++ .../launch/rsp.launch.py | 7 +++ .../launch/setup_assistant.launch.py | 7 +++ .../launch/spawn_controllers.launch.py | 7 +++ .../launch/static_virtual_joint_tfs.launch.py | 7 +++ .../launch/warehouse_db.launch.py | 7 +++ src/mecharm_moveit_config/package.xml | 52 +++++++++++++++++ 22 files changed, 425 insertions(+), 2 deletions(-) create mode 100644 src/mecharm_moveit_config/.setup_assistant create mode 100644 src/mecharm_moveit_config/CMakeLists.txt create mode 100644 src/mecharm_moveit_config/config/firefighter.ros2_control.xacro create mode 100644 src/mecharm_moveit_config/config/firefighter.srdf create mode 100644 src/mecharm_moveit_config/config/firefighter.urdf.xacro create mode 100644 src/mecharm_moveit_config/config/initial_positions.yaml create mode 100644 src/mecharm_moveit_config/config/joint_limits.yaml create mode 100644 src/mecharm_moveit_config/config/kinematics.yaml create mode 100644 src/mecharm_moveit_config/config/moveit.rviz create mode 100644 src/mecharm_moveit_config/config/moveit_controllers.yaml create mode 100644 src/mecharm_moveit_config/config/pilz_cartesian_limits.yaml create mode 100644 src/mecharm_moveit_config/config/ros2_controllers.yaml create mode 100644 src/mecharm_moveit_config/launch/demo.launch.py create mode 100644 src/mecharm_moveit_config/launch/move_group.launch.py create mode 100644 src/mecharm_moveit_config/launch/moveit_rviz.launch.py create mode 100644 src/mecharm_moveit_config/launch/rsp.launch.py create mode 100644 src/mecharm_moveit_config/launch/setup_assistant.launch.py create mode 100644 src/mecharm_moveit_config/launch/spawn_controllers.launch.py create mode 100644 src/mecharm_moveit_config/launch/static_virtual_joint_tfs.launch.py create mode 100644 src/mecharm_moveit_config/launch/warehouse_db.launch.py create mode 100644 src/mecharm_moveit_config/package.xml diff --git a/.docker/Dockerfile b/.docker/Dockerfile index 488634b..284e412 100644 --- a/.docker/Dockerfile +++ b/.docker/Dockerfile @@ -14,7 +14,6 @@ RUN DEBIAN_FRONTEND=noninteractive pip install pymycobot --upgrade RUN . /opt/ros/humble/setup.sh && \ cd /opt/ros/lcas/src/ && \ git clone --depth 1 https://github.com/elephantrobotics/mycobot_ros2.git && \ - cd .. && colcon build && \ - rm -rf /opt/ros/lcas/src/ /opt/ros/lcas/build/ /opt/ros/lcas/log/ + cd .. && colcon build WORKDIR /home/lcas/ws \ No newline at end of file diff --git a/src/mecharm_moveit_config/.setup_assistant b/src/mecharm_moveit_config/.setup_assistant new file mode 100644 index 0000000..02870c4 --- /dev/null +++ b/src/mecharm_moveit_config/.setup_assistant @@ -0,0 +1,25 @@ +moveit_setup_assistant_config: + urdf: + package: mycobot_description + relative_path: urdf/mecharm_270_m5/mecharm_270_m5.urdf + srdf: + relative_path: config/firefighter.srdf + package_settings: + author_name: Francesco Del Duchetto + author_email: fdelduchetto@lincoln.ac.uk + generated_timestamp: 1737565099 + control_xacro: + command: + - position + state: + - position + - velocity + modified_urdf: + xacros: + - control_xacro + control_xacro: + command: + - position + state: + - position + - velocity \ No newline at end of file diff --git a/src/mecharm_moveit_config/CMakeLists.txt b/src/mecharm_moveit_config/CMakeLists.txt new file mode 100644 index 0000000..1ff3f1c --- /dev/null +++ b/src/mecharm_moveit_config/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.22) +project(mecharm_moveit_config) + +find_package(ament_cmake REQUIRED) + +ament_package() + +install(DIRECTORY launch DESTINATION share/${PROJECT_NAME} + PATTERN "setup_assistant.launch" EXCLUDE) +install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) +install(FILES .setup_assistant DESTINATION share/${PROJECT_NAME}) diff --git a/src/mecharm_moveit_config/config/firefighter.ros2_control.xacro b/src/mecharm_moveit_config/config/firefighter.ros2_control.xacro new file mode 100644 index 0000000..2a1089f --- /dev/null +++ b/src/mecharm_moveit_config/config/firefighter.ros2_control.xacro @@ -0,0 +1,56 @@ + + + + + + + + + mock_components/GenericSystem + + + + + ${initial_positions['joint1_to_base']} + + + + + + + ${initial_positions['joint2_to_joint1']} + + + + + + + ${initial_positions['joint3_to_joint2']} + + + + + + + ${initial_positions['joint4_to_joint3']} + + + + + + + ${initial_positions['joint5_to_joint4']} + + + + + + + ${initial_positions['joint6_to_joint5']} + + + + + + + diff --git a/src/mecharm_moveit_config/config/firefighter.srdf b/src/mecharm_moveit_config/config/firefighter.srdf new file mode 100644 index 0000000..c3bbbb8 --- /dev/null +++ b/src/mecharm_moveit_config/config/firefighter.srdf @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mecharm_moveit_config/config/firefighter.urdf.xacro b/src/mecharm_moveit_config/config/firefighter.urdf.xacro new file mode 100644 index 0000000..408df9e --- /dev/null +++ b/src/mecharm_moveit_config/config/firefighter.urdf.xacro @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/mecharm_moveit_config/config/initial_positions.yaml b/src/mecharm_moveit_config/config/initial_positions.yaml new file mode 100644 index 0000000..35a93c8 --- /dev/null +++ b/src/mecharm_moveit_config/config/initial_positions.yaml @@ -0,0 +1,9 @@ +# Default initial positions for firefighter's ros2_control fake system + +initial_positions: + joint1_to_base: 0 + joint2_to_joint1: 0 + joint3_to_joint2: 0 + joint4_to_joint3: 0 + joint5_to_joint4: 0 + joint6_to_joint5: 0 \ No newline at end of file diff --git a/src/mecharm_moveit_config/config/joint_limits.yaml b/src/mecharm_moveit_config/config/joint_limits.yaml new file mode 100644 index 0000000..47328ee --- /dev/null +++ b/src/mecharm_moveit_config/config/joint_limits.yaml @@ -0,0 +1,40 @@ +# joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed + +# For beginners, we downscale velocity and acceleration limits. +# You can always specify higher scaling factors (<= 1.0) in your motion requests. # Increase the values below to 1.0 to always move at maximum speed. +default_velocity_scaling_factor: 0.1 +default_acceleration_scaling_factor: 0.1 + +# Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration] +# Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits] +joint_limits: + joint1_to_base: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + joint2_to_joint1: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + joint3_to_joint2: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + joint4_to_joint3: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + joint5_to_joint4: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 + joint6_to_joint5: + has_velocity_limits: false + max_velocity: 0 + has_acceleration_limits: false + max_acceleration: 0 \ No newline at end of file diff --git a/src/mecharm_moveit_config/config/kinematics.yaml b/src/mecharm_moveit_config/config/kinematics.yaml new file mode 100644 index 0000000..dbaa7b1 --- /dev/null +++ b/src/mecharm_moveit_config/config/kinematics.yaml @@ -0,0 +1,4 @@ +mecharm: + kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin + kinematics_solver_search_resolution: 0.0050000000000000001 + kinematics_solver_timeout: 0.0050000000000000001 \ No newline at end of file diff --git a/src/mecharm_moveit_config/config/moveit.rviz b/src/mecharm_moveit_config/config/moveit.rviz new file mode 100644 index 0000000..f4bff25 --- /dev/null +++ b/src/mecharm_moveit_config/config/moveit.rviz @@ -0,0 +1,51 @@ +Panels: + - Class: rviz_common/Displays + Name: Displays + Property Tree Widget: + Expanded: + - /MotionPlanning1 + - Class: rviz_common/Help + Name: Help + - Class: rviz_common/Views + Name: Views +Visualization Manager: + Displays: + - Class: rviz_default_plugins/Grid + Name: Grid + Value: true + - Class: moveit_rviz_plugin/MotionPlanning + Name: MotionPlanning + Planned Path: + Loop Animation: true + State Display Time: 0.05 s + Trajectory Topic: display_planned_path + Planning Scene Topic: monitored_planning_scene + Robot Description: robot_description + Scene Geometry: + Scene Alpha: 1 + Scene Robot: + Robot Alpha: 0.5 + Value: true + Global Options: + Fixed Frame: base + Tools: + - Class: rviz_default_plugins/Interact + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + Value: true + Views: + Current: + Class: rviz_default_plugins/Orbit + Distance: 2.0 + Focal Point: + X: -0.1 + Y: 0.25 + Z: 0.30 + Name: Current View + Pitch: 0.5 + Target Frame: base + Yaw: -0.623 +Window Geometry: + Height: 975 + QMainWindow State: 000000ff00000000fd0000000100000000000002b400000375fc0200000005fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000004100fffffffb000000100044006900730070006c006100790073010000003d00000123000000c900fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e00670100000166000001910000018800fffffffb0000000800480065006c0070000000029a0000006e0000006e00fffffffb0000000a0056006900650077007301000002fd000000b5000000a400ffffff000001f60000037500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Width: 1200 diff --git a/src/mecharm_moveit_config/config/moveit_controllers.yaml b/src/mecharm_moveit_config/config/moveit_controllers.yaml new file mode 100644 index 0000000..52b8024 --- /dev/null +++ b/src/mecharm_moveit_config/config/moveit_controllers.yaml @@ -0,0 +1,19 @@ +# MoveIt uses this configuration for controller management + +moveit_controller_manager: moveit_simple_controller_manager/MoveItSimpleControllerManager + +moveit_simple_controller_manager: + controller_names: + - mecharm_controller + + mecharm_controller: + type: FollowJointTrajectory + action_ns: follow_joint_trajectory + default: true + joints: + - joint1_to_base + - joint2_to_joint1 + - joint3_to_joint2 + - joint4_to_joint3 + - joint5_to_joint4 + - joint6_to_joint5 \ No newline at end of file diff --git a/src/mecharm_moveit_config/config/pilz_cartesian_limits.yaml b/src/mecharm_moveit_config/config/pilz_cartesian_limits.yaml new file mode 100644 index 0000000..b2997ca --- /dev/null +++ b/src/mecharm_moveit_config/config/pilz_cartesian_limits.yaml @@ -0,0 +1,6 @@ +# Limits for the Pilz planner +cartesian_limits: + max_trans_vel: 1.0 + max_trans_acc: 2.25 + max_trans_dec: -5.0 + max_rot_vel: 1.57 diff --git a/src/mecharm_moveit_config/config/ros2_controllers.yaml b/src/mecharm_moveit_config/config/ros2_controllers.yaml new file mode 100644 index 0000000..d86913e --- /dev/null +++ b/src/mecharm_moveit_config/config/ros2_controllers.yaml @@ -0,0 +1,26 @@ +# This config file is used by ros2_control +controller_manager: + ros__parameters: + update_rate: 100 # Hz + + mecharm_controller: + type: joint_trajectory_controller/JointTrajectoryController + + + joint_state_broadcaster: + type: joint_state_broadcaster/JointStateBroadcaster + +mecharm_controller: + ros__parameters: + joints: + - joint1_to_base + - joint2_to_joint1 + - joint3_to_joint2 + - joint4_to_joint3 + - joint5_to_joint4 + - joint6_to_joint5 + command_interfaces: + - position + state_interfaces: + - position + - velocity \ No newline at end of file diff --git a/src/mecharm_moveit_config/launch/demo.launch.py b/src/mecharm_moveit_config/launch/demo.launch.py new file mode 100644 index 0000000..fb0763d --- /dev/null +++ b/src/mecharm_moveit_config/launch/demo.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_demo_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("firefighter", package_name="mecharm_moveit_config").to_moveit_configs() + return generate_demo_launch(moveit_config) diff --git a/src/mecharm_moveit_config/launch/move_group.launch.py b/src/mecharm_moveit_config/launch/move_group.launch.py new file mode 100644 index 0000000..8e6a86b --- /dev/null +++ b/src/mecharm_moveit_config/launch/move_group.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_move_group_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("firefighter", package_name="mecharm_moveit_config").to_moveit_configs() + return generate_move_group_launch(moveit_config) diff --git a/src/mecharm_moveit_config/launch/moveit_rviz.launch.py b/src/mecharm_moveit_config/launch/moveit_rviz.launch.py new file mode 100644 index 0000000..4947e2a --- /dev/null +++ b/src/mecharm_moveit_config/launch/moveit_rviz.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_moveit_rviz_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("firefighter", package_name="mecharm_moveit_config").to_moveit_configs() + return generate_moveit_rviz_launch(moveit_config) diff --git a/src/mecharm_moveit_config/launch/rsp.launch.py b/src/mecharm_moveit_config/launch/rsp.launch.py new file mode 100644 index 0000000..3eff330 --- /dev/null +++ b/src/mecharm_moveit_config/launch/rsp.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_rsp_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("firefighter", package_name="mecharm_moveit_config").to_moveit_configs() + return generate_rsp_launch(moveit_config) diff --git a/src/mecharm_moveit_config/launch/setup_assistant.launch.py b/src/mecharm_moveit_config/launch/setup_assistant.launch.py new file mode 100644 index 0000000..464eee4 --- /dev/null +++ b/src/mecharm_moveit_config/launch/setup_assistant.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_setup_assistant_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("firefighter", package_name="mecharm_moveit_config").to_moveit_configs() + return generate_setup_assistant_launch(moveit_config) diff --git a/src/mecharm_moveit_config/launch/spawn_controllers.launch.py b/src/mecharm_moveit_config/launch/spawn_controllers.launch.py new file mode 100644 index 0000000..5a82d71 --- /dev/null +++ b/src/mecharm_moveit_config/launch/spawn_controllers.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_spawn_controllers_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("firefighter", package_name="mecharm_moveit_config").to_moveit_configs() + return generate_spawn_controllers_launch(moveit_config) diff --git a/src/mecharm_moveit_config/launch/static_virtual_joint_tfs.launch.py b/src/mecharm_moveit_config/launch/static_virtual_joint_tfs.launch.py new file mode 100644 index 0000000..c3a3906 --- /dev/null +++ b/src/mecharm_moveit_config/launch/static_virtual_joint_tfs.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_static_virtual_joint_tfs_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("firefighter", package_name="mecharm_moveit_config").to_moveit_configs() + return generate_static_virtual_joint_tfs_launch(moveit_config) diff --git a/src/mecharm_moveit_config/launch/warehouse_db.launch.py b/src/mecharm_moveit_config/launch/warehouse_db.launch.py new file mode 100644 index 0000000..3c25973 --- /dev/null +++ b/src/mecharm_moveit_config/launch/warehouse_db.launch.py @@ -0,0 +1,7 @@ +from moveit_configs_utils import MoveItConfigsBuilder +from moveit_configs_utils.launches import generate_warehouse_db_launch + + +def generate_launch_description(): + moveit_config = MoveItConfigsBuilder("firefighter", package_name="mecharm_moveit_config").to_moveit_configs() + return generate_warehouse_db_launch(moveit_config) diff --git a/src/mecharm_moveit_config/package.xml b/src/mecharm_moveit_config/package.xml new file mode 100644 index 0000000..7057e00 --- /dev/null +++ b/src/mecharm_moveit_config/package.xml @@ -0,0 +1,52 @@ + + + + mecharm_moveit_config + 0.3.0 + + An automatically generated package with all the configuration and launch files for using the firefighter with the MoveIt Motion Planning Framework + + Francesco Del Duchetto + + BSD + + http://moveit.ros.org/ + https://github.com/ros-planning/moveit2/issues + https://github.com/ros-planning/moveit2 + + Francesco Del Duchetto + + ament_cmake + + moveit_ros_move_group + moveit_kinematics + moveit_planners + moveit_simple_controller_manager + joint_state_publisher + joint_state_publisher_gui + tf2_ros + xacro + + + + controller_manager + moveit_configs_utils + moveit_ros_move_group + moveit_ros_visualization + moveit_ros_warehouse + moveit_setup_assistant + mycobot_description + robot_state_publisher + rviz2 + rviz_common + rviz_default_plugins + tf2_ros + warehouse_ros_mongo + xacro + + + + ament_cmake + +