commit 1418c8553724f46e99379408a03f835d706389af Author: Thomason Zhou Date: Fri Feb 7 18:22:54 2025 +0900 Add openarm_grip_description and openarm_moveit_config diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f776b7e --- /dev/null +++ b/LICENSE @@ -0,0 +1,30 @@ +BSD 3-Clause License + +Copyright (c) 2025, Reazon Holdings, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..cccf79b --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# ROS integration for OpenArm robots + +- openarm_grip_description: urdf with gripper actuator +- openarm_moveit_config: motion planning with [moveit2](https://github.com/moveit/moveit2) + +## License + +All packages of `openarm_ros` are licensed under the [BSD-3-Clause](https://opensource.org/license/bsd-3-clause). diff --git a/openarm_grip_description/config/display.rviz b/openarm_grip_description/config/display.rviz new file mode 100644 index 0000000..604d95c --- /dev/null +++ b/openarm_grip_description/config/display.rviz @@ -0,0 +1,215 @@ +Panels: + - Class: rviz_common/Displays + Help Height: 138 + Name: Displays + Property Tree Widget: + Expanded: + - /Global Options1 + - /Status1 + - /RobotModel1 + - /RobotModel1/Description Topic1 + Splitter Ratio: 0.5 + Tree Height: 1025 + - 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 + - Alpha: 1 + Class: rviz_default_plugins/RobotModel + Collision Enabled: false + Description File: "" + Description Source: Topic + Description Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /robot_description + Enabled: true + Links: + All Links Enabled: true + Expand Joint Details: false + Expand Link Details: false + Expand Tree: false + J2_v1_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + J3_v1_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + J4_v1_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + J5_v1_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + J6_v1_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + J7_v1_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + Link Tree Style: Links in Alphabetic Order + base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + dummy: + Alpha: 1 + Show Axes: false + Show Trail: false + grip_attach_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + left_jaw_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + right_jaw_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + Mass Properties: + Inertia: false + Mass: false + Name: RobotModel + TF Prefix: "" + Update Interval: 0 + Value: true + Visual Enabled: true + 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: 0.8663532137870789 + 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.5453979969024658 + Target Frame: + Value: Orbit (rviz) + Yaw: 0.7153980731964111 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Height: 1531 + Hide Left Dock: false + Hide Right Dock: false + QMainWindow State: 000000ff00000000fd0000000400000000000001f4000004f9fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b000000b000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000006e000004f90000018200fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000015d000004f9fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000006e000004f90000013200fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000a970000005afc0100000002fb0000000800540069006d0065010000000000000a970000047a00fffffffb0000000800540069006d006501000000000000045000000000000000000000072e000004f900000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Time: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: false + Width: 2711 + X: 60 + Y: 64 diff --git a/openarm_grip_description/launch/urdf_preview.launch.py b/openarm_grip_description/launch/urdf_preview.launch.py new file mode 100644 index 0000000..89822a2 --- /dev/null +++ b/openarm_grip_description/launch/urdf_preview.launch.py @@ -0,0 +1,40 @@ +import os +import launch +import launch_ros +import xacro + +from ament_index_python import get_package_share_directory + +def get_package_file(package, file_path): + """Get the location of a file installed in an ament package""" + package_path = get_package_share_directory(package) + absolute_file_path = os.path.join(package_path, file_path) + return absolute_file_path + +def generate_launch_description(): + xacro_file = get_package_file('openarm_grip_description', 'urdf/openarm_grip.xacro') + urdf = xacro.process_file(xacro_file).toprettyxml(indent=' ') + rviz_config_file = get_package_file('openarm_grip_description', 'config/display.rviz') + + return launch.LaunchDescription([ + launch_ros.actions.Node( + name='robot_state_publisher', + package='robot_state_publisher', + executable='robot_state_publisher', + output='screen', + parameters=[{'robot_description': urdf}], + ), + launch_ros.actions.Node( + name='joint_state_publisher_gui', + package='joint_state_publisher_gui', + executable='joint_state_publisher_gui', + output='screen', + ), + launch_ros.actions.Node( + name='rviz', + package='rviz2', + executable='rviz2', + output='screen', + arguments=['-d', rviz_config_file] + ) + ]) \ No newline at end of file diff --git a/openarm_grip_description/meshes/J2_v1_1.stl b/openarm_grip_description/meshes/J2_v1_1.stl new file mode 100644 index 0000000..7644028 Binary files /dev/null and b/openarm_grip_description/meshes/J2_v1_1.stl differ diff --git a/openarm_grip_description/meshes/J3_v1_1.stl b/openarm_grip_description/meshes/J3_v1_1.stl new file mode 100644 index 0000000..104a4f9 Binary files /dev/null and b/openarm_grip_description/meshes/J3_v1_1.stl differ diff --git a/openarm_grip_description/meshes/J4_v1_1.stl b/openarm_grip_description/meshes/J4_v1_1.stl new file mode 100644 index 0000000..f59c889 Binary files /dev/null and b/openarm_grip_description/meshes/J4_v1_1.stl differ diff --git a/openarm_grip_description/meshes/J5_v1_1.stl b/openarm_grip_description/meshes/J5_v1_1.stl new file mode 100644 index 0000000..5272691 Binary files /dev/null and b/openarm_grip_description/meshes/J5_v1_1.stl differ diff --git a/openarm_grip_description/meshes/J6_v1_1.stl b/openarm_grip_description/meshes/J6_v1_1.stl new file mode 100644 index 0000000..2f9364d Binary files /dev/null and b/openarm_grip_description/meshes/J6_v1_1.stl differ diff --git a/openarm_grip_description/meshes/J7_v1_1.stl b/openarm_grip_description/meshes/J7_v1_1.stl new file mode 100644 index 0000000..b268052 Binary files /dev/null and b/openarm_grip_description/meshes/J7_v1_1.stl differ diff --git a/openarm_grip_description/meshes/base_link.stl b/openarm_grip_description/meshes/base_link.stl new file mode 100644 index 0000000..4b2cc87 Binary files /dev/null and b/openarm_grip_description/meshes/base_link.stl differ diff --git a/openarm_grip_description/meshes/grip_attach_1.stl b/openarm_grip_description/meshes/grip_attach_1.stl new file mode 100644 index 0000000..75cab18 Binary files /dev/null and b/openarm_grip_description/meshes/grip_attach_1.stl differ diff --git a/openarm_grip_description/meshes/left_jaw_1.stl b/openarm_grip_description/meshes/left_jaw_1.stl new file mode 100644 index 0000000..1a1d3a9 Binary files /dev/null and b/openarm_grip_description/meshes/left_jaw_1.stl differ diff --git a/openarm_grip_description/meshes/right_jaw_1.stl b/openarm_grip_description/meshes/right_jaw_1.stl new file mode 100644 index 0000000..028cc8b Binary files /dev/null and b/openarm_grip_description/meshes/right_jaw_1.stl differ diff --git a/openarm_grip_description/openarm_grip_description/__init__.py b/openarm_grip_description/openarm_grip_description/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/openarm_grip_description/package.xml b/openarm_grip_description/package.xml new file mode 100644 index 0000000..3a457a4 --- /dev/null +++ b/openarm_grip_description/package.xml @@ -0,0 +1,24 @@ + + + +openarm_grip_description + 0.0.0 +The openarm_grip_description package + Thomason Zhou + BSD-3-Clause + + xacro + rviz2 + robot_state_publisher + joint_state_publisher + joint_state_publisher_gui + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/openarm_grip_description/resource/openarm_grip_description b/openarm_grip_description/resource/openarm_grip_description new file mode 100644 index 0000000..e69de29 diff --git a/openarm_grip_description/setup.cfg b/openarm_grip_description/setup.cfg new file mode 100644 index 0000000..9a64e43 --- /dev/null +++ b/openarm_grip_description/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/openarm_grip_description +[install] +install_scripts=$base/lib/openarm_grip_description diff --git a/openarm_grip_description/setup.py b/openarm_grip_description/setup.py new file mode 100644 index 0000000..0a1ba47 --- /dev/null +++ b/openarm_grip_description/setup.py @@ -0,0 +1,31 @@ +from setuptools import setup +import os +from glob import glob + +package_name = 'openarm_grip_description' + +setup( + name=package_name, + version='0.0.0', + packages=[package_name], + data_files=[ + ('share/ament_index/resource_index/packages', + ['resource/' + package_name]), + ('share/' + package_name, ['package.xml']), + (os.path.join('share', package_name, 'launch'), glob('launch/*.launch.py')), + (os.path.join('share', package_name, 'urdf'), glob('urdf/*')), + (os.path.join('share', package_name, 'meshes'), glob('meshes/*')), + (os.path.join('share', package_name, 'config'), glob('config/*')) + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer='author', + maintainer_email='todo@todo.com', + description='The ' + package_name + ' package', + license='TODO: License declaration', + tests_require=['pytest'], + entry_points={ + 'console_scripts': [ + ], + }, +) diff --git a/openarm_grip_description/test/test_copyright.py b/openarm_grip_description/test/test_copyright.py new file mode 100644 index 0000000..cc8ff03 --- /dev/null +++ b/openarm_grip_description/test/test_copyright.py @@ -0,0 +1,23 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_copyright.main import main +import pytest + + +@pytest.mark.copyright +@pytest.mark.linter +def test_copyright(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found errors' diff --git a/openarm_grip_description/test/test_flake8.py b/openarm_grip_description/test/test_flake8.py new file mode 100644 index 0000000..27ee107 --- /dev/null +++ b/openarm_grip_description/test/test_flake8.py @@ -0,0 +1,25 @@ +# Copyright 2017 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_flake8.main import main_with_errors +import pytest + + +@pytest.mark.flake8 +@pytest.mark.linter +def test_flake8(): + rc, errors = main_with_errors(argv=[]) + assert rc == 0, \ + 'Found %d code style errors / warnings:\n' % len(errors) + \ + '\n'.join(errors) diff --git a/openarm_grip_description/test/test_pep257.py b/openarm_grip_description/test/test_pep257.py new file mode 100644 index 0000000..b234a38 --- /dev/null +++ b/openarm_grip_description/test/test_pep257.py @@ -0,0 +1,23 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from ament_pep257.main import main +import pytest + + +@pytest.mark.linter +@pytest.mark.pep257 +def test_pep257(): + rc = main(argv=['.', 'test']) + assert rc == 0, 'Found code style errors / warnings' diff --git a/openarm_grip_description/urdf/materials.xacro b/openarm_grip_description/urdf/materials.xacro new file mode 100644 index 0000000..1f5ab9f --- /dev/null +++ b/openarm_grip_description/urdf/materials.xacro @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/openarm_grip_description/urdf/openarm_grip.gazebo b/openarm_grip_description/urdf/openarm_grip.gazebo new file mode 100644 index 0000000..87f3beb --- /dev/null +++ b/openarm_grip_description/urdf/openarm_grip.gazebo @@ -0,0 +1,80 @@ + + + + + + + + + + ${body_color} + 0.2 + 0.2 + true + true + + + + ${body_color} + 0.2 + 0.2 + true + + + + ${body_color} + 0.2 + 0.2 + true + + + + ${body_color} + 0.2 + 0.2 + true + + + + ${body_color} + 0.2 + 0.2 + true + + + + ${body_color} + 0.2 + 0.2 + true + + + + ${body_color} + 0.2 + 0.2 + true + + + + ${body_color} + 0.2 + 0.2 + true + + + + ${body_color} + 0.2 + 0.2 + true + + + + ${body_color} + 0.2 + 0.2 + true + + + diff --git a/openarm_grip_description/urdf/openarm_grip.trans b/openarm_grip_description/urdf/openarm_grip.trans new file mode 100644 index 0000000..c7a0a54 --- /dev/null +++ b/openarm_grip_description/urdf/openarm_grip.trans @@ -0,0 +1,103 @@ + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + diff --git a/openarm_grip_description/urdf/openarm_grip.urdf b/openarm_grip_description/urdf/openarm_grip.urdf new file mode 100644 index 0000000..c1f0ef4 --- /dev/null +++ b/openarm_grip_description/urdf/openarm_grip.urdf @@ -0,0 +1,432 @@ + + + + + + + + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + transmission_interface/SimpleTransmission + + hardware_interface/EffortJointInterface + + + hardware_interface/EffortJointInterface + 1 + + + + + + + Gazebo/Silver + 0.2 + 0.2 + true + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + Gazebo/Silver + 0.2 + 0.2 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openarm_grip_description/urdf/openarm_grip.xacro b/openarm_grip_description/urdf/openarm_grip.xacro new file mode 100644 index 0000000..559e4e9 --- /dev/null +++ b/openarm_grip_description/urdf/openarm_grip.xacro @@ -0,0 +1,296 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openarm_moveit_config/.setup_assistant b/openarm_moveit_config/.setup_assistant new file mode 100644 index 0000000..1f661f9 --- /dev/null +++ b/openarm_moveit_config/.setup_assistant @@ -0,0 +1,27 @@ +moveit_setup_assistant_config: + urdf: + package: openarm_grip_description + relative_path: urdf/openarm_grip.urdf + srdf: + relative_path: config/openarm_grip.srdf + package_settings: + author_name: Thomason Zhou + author_email: t95zhou@uwaterloo.ca + generated_timestamp: 1738914276 + control_xacro: + command: + - position + - velocity + state: + - position + - velocity + modified_urdf: + xacros: + - control_xacro + control_xacro: + command: + - position + - velocity + state: + - position + - velocity \ No newline at end of file diff --git a/openarm_moveit_config/CMakeLists.txt b/openarm_moveit_config/CMakeLists.txt new file mode 100644 index 0000000..98304b6 --- /dev/null +++ b/openarm_moveit_config/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.22) +project(openarm_moveit_config) + +find_package(ament_cmake REQUIRED) + +ament_package() + +if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/launch") + install( + DIRECTORY launch + DESTINATION share/${PROJECT_NAME} + PATTERN "setup_assistant.launch" EXCLUDE) +endif() + +install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) +install(FILES .setup_assistant DESTINATION share/${PROJECT_NAME}) diff --git a/openarm_moveit_config/config/initial_positions.yaml b/openarm_moveit_config/config/initial_positions.yaml new file mode 100644 index 0000000..6acd557 --- /dev/null +++ b/openarm_moveit_config/config/initial_positions.yaml @@ -0,0 +1,12 @@ +# Default initial positions for openarm_grip's ros2_control fake system + +initial_positions: + slider_left: 0 + slider_right: 0 + rev1: 0 + rev2: 0 + rev3: 0 + rev4: 0 + rev5: 0 + rev6: 0 + rev7: 0 \ No newline at end of file diff --git a/openarm_moveit_config/config/joint_limits.yaml b/openarm_moveit_config/config/joint_limits.yaml new file mode 100644 index 0000000..9c07140 --- /dev/null +++ b/openarm_moveit_config/config/joint_limits.yaml @@ -0,0 +1,55 @@ +# 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: + slider_left: + has_velocity_limits: true + max_velocity: 100.0 + has_acceleration_limits: false + max_acceleration: 0.0 + slider_right: + has_velocity_limits: true + max_velocity: 100.0 + has_acceleration_limits: false + max_acceleration: 0.0 + rev1: + has_velocity_limits: true + max_velocity: 0.5 + has_acceleration_limits: true + max_acceleration: 0.5 + rev2: + has_velocity_limits: true + max_velocity: 0.5 + has_acceleration_limits: true + max_acceleration: 0.5 + rev3: + has_velocity_limits: true + max_velocity: 0.5 + has_acceleration_limits: true + max_acceleration: 0.5 + rev4: + has_velocity_limits: true + max_velocity: 0.5 + has_acceleration_limits: true + max_acceleration: 0.5 + rev5: + has_velocity_limits: true + max_velocity: 0.5 + has_acceleration_limits: true + max_acceleration: 0.5 + rev6: + has_velocity_limits: true + max_velocity: 0.5 + has_acceleration_limits: true + max_acceleration: 0.5 + rev7: + has_velocity_limits: false + max_velocity: 0.0 + has_acceleration_limits: false + max_acceleration: 0.0 \ No newline at end of file diff --git a/openarm_moveit_config/config/kinematics.yaml b/openarm_moveit_config/config/kinematics.yaml new file mode 100644 index 0000000..413bf0c --- /dev/null +++ b/openarm_moveit_config/config/kinematics.yaml @@ -0,0 +1,4 @@ +openarm_arm: + 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/openarm_moveit_config/config/moveit.rviz b/openarm_moveit_config/config/moveit.rviz new file mode 100644 index 0000000..15d9915 --- /dev/null +++ b/openarm_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: dummy + 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: dummy + Yaw: -0.623 +Window Geometry: + Height: 975 + QMainWindow State: 000000ff00000000fd0000000100000000000002b400000375fc0200000005fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000004100fffffffb000000100044006900730070006c006100790073010000003d00000123000000c900fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e00670100000166000001910000018800fffffffb0000000800480065006c0070000000029a0000006e0000006e00fffffffb0000000a0056006900650077007301000002fd000000b5000000a400ffffff000001f60000037500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Width: 1200 diff --git a/openarm_moveit_config/config/moveit_controllers.yaml b/openarm_moveit_config/config/moveit_controllers.yaml new file mode 100644 index 0000000..3f36553 --- /dev/null +++ b/openarm_moveit_config/config/moveit_controllers.yaml @@ -0,0 +1,28 @@ +# MoveIt uses this configuration for controller management + +moveit_controller_manager: moveit_simple_controller_manager/MoveItSimpleControllerManager + +moveit_simple_controller_manager: + controller_names: + - openarm_arm_controller + - gripper_controller + + openarm_arm_controller: + type: FollowJointTrajectory + joints: + - rev1 + - rev2 + - rev3 + - rev4 + - rev5 + - rev6 + action_ns: follow_joint_trajectory + default: true + gripper_controller: + type: FollowJointTrajectory + joints: + - rev7 + - slider_left + - slider_right + action_ns: follow_joint_trajectory + default: true \ No newline at end of file diff --git a/openarm_moveit_config/config/openarm_grip.ros2_control.xacro b/openarm_moveit_config/config/openarm_grip.ros2_control.xacro new file mode 100644 index 0000000..c5d7e6e --- /dev/null +++ b/openarm_moveit_config/config/openarm_grip.ros2_control.xacro @@ -0,0 +1,86 @@ + + + + + + + + + mock_components/GenericSystem + + + + + + ${initial_positions['rev1']} + + + + + + + + ${initial_positions['rev2']} + + + + + + + + ${initial_positions['rev3']} + + + + + + + + ${initial_positions['rev4']} + + + + + + + + ${initial_positions['rev5']} + + + + + + + + ${initial_positions['rev6']} + + + + + + + + ${initial_positions['rev7']} + + + + + + + + ${initial_positions['slider_left']} + + + + + + + + ${initial_positions['slider_right']} + + + + + + + diff --git a/openarm_moveit_config/config/openarm_grip.srdf b/openarm_moveit_config/config/openarm_grip.srdf new file mode 100644 index 0000000..2e44ced --- /dev/null +++ b/openarm_moveit_config/config/openarm_grip.srdf @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/openarm_moveit_config/config/openarm_grip.urdf.xacro b/openarm_moveit_config/config/openarm_grip.urdf.xacro new file mode 100644 index 0000000..6a8d99a --- /dev/null +++ b/openarm_moveit_config/config/openarm_grip.urdf.xacro @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/openarm_moveit_config/config/pilz_cartesian_limits.yaml b/openarm_moveit_config/config/pilz_cartesian_limits.yaml new file mode 100644 index 0000000..b2997ca --- /dev/null +++ b/openarm_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/openarm_moveit_config/config/ros2_controllers.yaml b/openarm_moveit_config/config/ros2_controllers.yaml new file mode 100644 index 0000000..b887623 --- /dev/null +++ b/openarm_moveit_config/config/ros2_controllers.yaml @@ -0,0 +1,35 @@ +# This config file is used by ros2_control +controller_manager: + ros__parameters: + update_rate: 100 # Hz + + openarm_arm_controller: + type: joint_trajectory_controller/JointTrajectoryController + + + gripper_controller: + type: position_controllers/GripperActionController + + + joint_state_broadcaster: + type: joint_state_broadcaster/JointStateBroadcaster + +openarm_arm_controller: + ros__parameters: + joints: + - rev1 + - rev2 + - rev3 + - rev4 + - rev5 + - rev6 + command_interfaces: + - position + - velocity + state_interfaces: + - position + - velocity + allow_nonzero_velocity_at_trajectory_end: true +gripper_controller: + ros__parameters: + joint: rev7 \ No newline at end of file diff --git a/openarm_moveit_config/launch/demo.launch.py b/openarm_moveit_config/launch/demo.launch.py new file mode 100644 index 0000000..f7ab4b3 --- /dev/null +++ b/openarm_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("openarm_grip", package_name="openarm_moveit_config").to_moveit_configs() + return generate_demo_launch(moveit_config) diff --git a/openarm_moveit_config/launch/move_group.launch.py b/openarm_moveit_config/launch/move_group.launch.py new file mode 100644 index 0000000..bbb1667 --- /dev/null +++ b/openarm_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("openarm_grip", package_name="openarm_moveit_config").to_moveit_configs() + return generate_move_group_launch(moveit_config) diff --git a/openarm_moveit_config/launch/moveit_rviz.launch.py b/openarm_moveit_config/launch/moveit_rviz.launch.py new file mode 100644 index 0000000..a25cbb7 --- /dev/null +++ b/openarm_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("openarm_grip", package_name="openarm_moveit_config").to_moveit_configs() + return generate_moveit_rviz_launch(moveit_config) diff --git a/openarm_moveit_config/launch/rsp.launch.py b/openarm_moveit_config/launch/rsp.launch.py new file mode 100644 index 0000000..0f098a9 --- /dev/null +++ b/openarm_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("openarm_grip", package_name="openarm_moveit_config").to_moveit_configs() + return generate_rsp_launch(moveit_config) diff --git a/openarm_moveit_config/launch/setup_assistant.launch.py b/openarm_moveit_config/launch/setup_assistant.launch.py new file mode 100644 index 0000000..27d984b --- /dev/null +++ b/openarm_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("openarm_grip", package_name="openarm_moveit_config").to_moveit_configs() + return generate_setup_assistant_launch(moveit_config) diff --git a/openarm_moveit_config/launch/spawn_controllers.launch.py b/openarm_moveit_config/launch/spawn_controllers.launch.py new file mode 100644 index 0000000..327d046 --- /dev/null +++ b/openarm_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("openarm_grip", package_name="openarm_moveit_config").to_moveit_configs() + return generate_spawn_controllers_launch(moveit_config) diff --git a/openarm_moveit_config/launch/static_virtual_joint_tfs.launch.py b/openarm_moveit_config/launch/static_virtual_joint_tfs.launch.py new file mode 100644 index 0000000..b937f99 --- /dev/null +++ b/openarm_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("openarm_grip", package_name="openarm_moveit_config").to_moveit_configs() + return generate_static_virtual_joint_tfs_launch(moveit_config) diff --git a/openarm_moveit_config/launch/warehouse_db.launch.py b/openarm_moveit_config/launch/warehouse_db.launch.py new file mode 100644 index 0000000..2a5a228 --- /dev/null +++ b/openarm_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("openarm_grip", package_name="openarm_moveit_config").to_moveit_configs() + return generate_warehouse_db_launch(moveit_config) diff --git a/openarm_moveit_config/package.xml b/openarm_moveit_config/package.xml new file mode 100644 index 0000000..0c8d2b5 --- /dev/null +++ b/openarm_moveit_config/package.xml @@ -0,0 +1,52 @@ + + + + openarm_moveit_config + 0.3.0 + + An automatically generated package with all the configuration and launch files for using the openarm_grip with the MoveIt Motion Planning Framework + + Thomason Zhou + + BSD-3-Clause + + http://moveit.ros.org/ + https://github.com/moveit/moveit2/issues + https://github.com/moveit/moveit2 + + Thomason Zhou + + 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 + openarm_grip_description + robot_state_publisher + rviz2 + rviz_common + rviz_default_plugins + tf2_ros + warehouse_ros_mongo + xacro + + + + ament_cmake + +