Add openarm_grip_description and openarm_moveit_config

This commit is contained in:
Thomason Zhou 2025-02-07 18:22:54 +09:00 committed by Thomason Zhou
commit 1418c85537
48 changed files with 1839 additions and 0 deletions

30
LICENSE Normal file
View File

@ -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.

8
README.md Normal file
View File

@ -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).

View File

@ -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: <Fixed 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: <Fixed 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

View File

@ -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]
)
])

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,24 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>openarm_grip_description</name>
<version>0.0.0</version>
<description>The openarm_grip_description package</description>
<maintainer email="t95zhou@uwaterloo.ca">Thomason Zhou</maintainer>
<license>BSD-3-Clause</license>
<depend>xacro</depend>
<depend>rviz2</depend>
<depend>robot_state_publisher</depend>
<depend>joint_state_publisher</depend>
<depend>joint_state_publisher_gui</depend>
<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>
<test_depend>ament_pep257</test_depend>
<test_depend>python3-pytest</test_depend>
<export>
<build_type>ament_python</build_type>
</export>
</package>

View File

@ -0,0 +1,4 @@
[develop]
script_dir=$base/lib/openarm_grip_description
[install]
install_scripts=$base/lib/openarm_grip_description

View File

@ -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': [
],
},
)

View File

@ -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'

View File

@ -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)

View File

@ -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'

View File

@ -0,0 +1,8 @@
<?xml version="1.0" ?>
<robot name="openarm_grip" xmlns:xacro="http://www.ros.org/wiki/xacro" >
<material name="silver">
<color rgba="0.700 0.700 0.700 1.000"/>
</material>
</robot>

View File

@ -0,0 +1,80 @@
<?xml version="1.0" ?>
<robot name="openarm_grip" xmlns:xacro="http://www.ros.org/wiki/xacro" >
<xacro:property name="body_color" value="Gazebo/Silver" />
<gazebo>
<plugin name="control" filename="libgazebo_ros_control.so"/>
</gazebo>
<gazebo reference="base_link">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
<gravity>true</gravity>
</gazebo>
<gazebo reference="J2_v1_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J3_v1_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J4_v1_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J5_v1_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J6_v1_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J7_v1_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="grip_attach_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="left_jaw_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="right_jaw_1">
<material>${body_color}</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
</robot>

View File

@ -0,0 +1,103 @@
<?xml version="1.0" ?>
<robot name="openarm_grip" xmlns:xacro="http://www.ros.org/wiki/xacro" >
<transmission name="rev1_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev1_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev2_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev2_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev3_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev3">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev3_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev4_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev4">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev4_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev5_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev5">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev5_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev6_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev6">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev6_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev7_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev7">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev7_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="slider_left_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="slider_left">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="slider_left_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="slider_right_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="slider_right">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="slider_right_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
</robot>

View File

@ -0,0 +1,432 @@
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- | This document was autogenerated by xacro from openarm_grip.xacro | -->
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
<!-- =================================================================================== -->
<robot name="openarm_grip">
<material name="silver">
<color rgba="0.700 0.700 0.700 1.000"/>
</material>
<transmission name="rev1_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev1">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev1_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev2_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev2">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev2_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev3_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev3">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev3_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev4_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev4">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev4_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev5_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev5">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev5_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev6_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev6">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev6_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="rev7_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="rev7">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="rev7_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="slider_left_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="slider_left">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="slider_left_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<transmission name="slider_right_tran">
<type>transmission_interface/SimpleTransmission</type>
<joint name="slider_right">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="slider_right_actr">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<gazebo>
<plugin filename="libgazebo_ros_control.so" name="control"/>
</gazebo>
<gazebo reference="base_link">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
<gravity>true</gravity>
</gazebo>
<gazebo reference="J2_v1_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J3_v1_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J4_v1_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J5_v1_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J6_v1_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="J7_v1_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="grip_attach_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="left_jaw_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<gazebo reference="right_jaw_1">
<material>Gazebo/Silver</material>
<mu1>0.2</mu1>
<mu2>0.2</mu2>
<self_collide>true</self_collide>
</gazebo>
<link name="dummy"/>
<joint name="dummy_joint" type="fixed">
<parent link="dummy"/>
<child link="base_link"/>
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0"/>
</joint>
<link name="base_link">
<inertial>
<origin rpy="0 0 0" xyz="1.659663993709495e-08 0.00015470291788827239 -0.03159176823669262"/>
<mass value="0.9159780860248254"/>
<inertia ixx="0.000802" ixy="-0.0" ixz="0.0" iyy="0.000799" iyz="-0.0" izz="0.001037"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/base_link.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/base_link.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J2_v1_1">
<inertial>
<origin rpy="0 0 0" xyz="0.002300730781673588 -0.00021691236314287158 0.02760602616888808"/>
<mass value="0.49220952328993495"/>
<inertia ixx="0.000316" ixy="0.0" ixz="-2.2e-05" iyy="0.000717" iyz="-3e-06" izz="0.00059"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="-0.0 -0.0 0.00225"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J2_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.0 -0.0 0.00225"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J2_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J3_v1_1">
<inertial>
<origin rpy="0 0 0" xyz="-0.029725947365562236 0.014084733811091961 0.002458883521108013"/>
<mass value="0.6372830939810512"/>
<inertia ixx="0.000647" ixy="4e-06" ixz="2e-06" iyy="0.000437" iyz="-5.2e-05" izz="0.00075"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="-0.02975 0.0 -0.0425"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J3_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.02975 0.0 -0.0425"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J3_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J4_v1_1">
<inertial>
<origin rpy="0 0 0" xyz="8.405076184644401e-05 0.1358717615053826 0.018429965102241944"/>
<mass value="1.1025467379280594"/>
<inertia ixx="0.011905" ixy="-1e-06" ixz="-4e-06" iyy="0.00114" iyz="-0.001657" izz="0.011791"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0.0 -0.06041 -0.052607"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J4_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0.0 -0.06041 -0.052607"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J4_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J5_v1_1">
<inertial>
<origin rpy="0 0 0" xyz="-0.028086778609557873 -0.06237848032279486 0.015103464347573828"/>
<mass value="0.7296865736952145"/>
<inertia ixx="0.002473" ixy="-7e-05" ixz="1.8e-05" iyy="0.000853" iyz="0.00038" izz="0.002847"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="-0.029755 -0.298846 -0.0925"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J5_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.029755 -0.298846 -0.0925"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J5_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J6_v1_1">
<inertial>
<origin rpy="0 0 0" xyz="0.016428123043712856 -0.04271549352047854 0.009023923091251038"/>
<mass value="1.0339114396114095"/>
<inertia ixx="0.000881" ixy="0.000136" ixz="-1.1e-05" iyy="0.000614" iyz="0.000102" izz="0.001054"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0.0 -0.167496 -0.118765"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J6_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0.0 -0.167496 -0.118765"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J6_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J7_v1_1">
<inertial>
<origin rpy="0 0 0" xyz="-0.03510690863628159 0.0004066264284608781 0.001093657345024951"/>
<mass value="0.33288025570396623"/>
<inertia ixx="0.00014" ixy="-0.0" ixz="2e-06" iyy="0.000179" iyz="7e-06" izz="0.000207"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="-0.0355 -0.048796 -0.1425"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J7_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.0355 -0.048796 -0.1425"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J7_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="grip_attach_1">
<inertial>
<origin rpy="0 0 0" xyz="-3.544262443517109e-05 -0.08091067772872827 0.004061313352520662"/>
<mass value="0.8188472642682024"/>
<inertia ixx="0.001113" ixy="1e-06" ixz="2e-06" iyy="0.00061" iyz="-2.2e-05" izz="0.001556"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0.0 -0.051826 -0.15765"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/grip_attach_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0.0 -0.051826 -0.15765"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/grip_attach_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="left_jaw_1">
<inertial>
<origin rpy="0 0 0" xyz="0.01737096632831872 -0.017398412728963003 0.004062150876211923"/>
<mass value="0.2869555939898112"/>
<inertia ixx="0.000209" ixy="1.6e-05" ixz="-4e-06" iyy="9.7e-05" iyz="3e-06" izz="0.000185"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0.0775 0.069829 -0.169736"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/left_jaw_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0.0775 0.069829 -0.169736"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/left_jaw_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="right_jaw_1">
<inertial>
<origin rpy="0 0 0" xyz="-0.0173972747583793 -0.018685385724924758 -0.0017497641003002828"/>
<mass value="0.285094009790996"/>
<inertia ixx="0.000211" ixy="-1.6e-05" ixz="4e-06" iyy="0.000115" iyz="3.9e-05" izz="0.000169"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="-0.0775 0.069829 -0.169736"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/right_jaw_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="-0.0775 0.069829 -0.169736"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/right_jaw_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<joint name="rev1" type="revolute">
<origin rpy="0 0 0" xyz="0.0 0.0 -0.00225"/>
<parent link="base_link"/>
<child link="J2_v1_1"/>
<axis xyz="0.0 0.0 1.0"/>
<limit acceleration="0.5" effort="100" lower="-2.356194" upper="2.356194" velocity="1.0"/>
</joint>
<joint name="rev2" type="revolute">
<origin rpy="0 0 0" xyz="0.02975 -0.0 0.04475"/>
<parent link="J2_v1_1"/>
<child link="J3_v1_1"/>
<axis xyz="-1.0 -0.0 0.0"/>
<limit acceleration="0.5" effort="100" lower="-3.054326" upper="0.0" velocity="1.0"/>
</joint>
<joint name="rev3" type="revolute">
<origin rpy="0 0 0" xyz="-0.02975 0.06041 0.010107"/>
<parent link="J3_v1_1"/>
<child link="J4_v1_1"/>
<axis xyz="-0.0 0.986291 0.165017"/>
<limit acceleration="0.5" effort="100" lower="-2.094395" upper="2.094395" velocity="1.0"/>
</joint>
<joint name="rev4" type="revolute">
<origin rpy="0 0 0" xyz="0.029755 0.238436 0.039893"/>
<parent link="J4_v1_1"/>
<child link="J5_v1_1"/>
<axis xyz="1.0 0.0 0.0"/>
<limit acceleration="0.5" effort="100" lower="-3.141593" upper="0.0" velocity="1.0"/>
</joint>
<joint name="rev5" type="revolute">
<origin rpy="0 0 0" xyz="-0.029755 -0.13135 0.026265"/>
<parent link="J5_v1_1"/>
<child link="J6_v1_1"/>
<axis xyz="0.0 -0.980588 0.196078"/>
<limit acceleration="0.5" effort="100" lower="-2.094395" upper="2.094395" velocity="1.0"/>
</joint>
<joint name="rev6" type="revolute">
<origin rpy="0 0 0" xyz="0.0355 -0.1187 0.023735"/>
<parent link="J6_v1_1"/>
<child link="J7_v1_1"/>
<axis xyz="-1.0 0.0 -0.0"/>
<limit acceleration="0.5" effort="100" lower="-1.570796" upper="1.570796" velocity="1.0"/>
</joint>
<joint name="rev7" type="continuous">
<origin rpy="0 0 0" xyz="-0.0355 0.00303 0.01515"/>
<parent link="J7_v1_1"/>
<child link="grip_attach_1"/>
<axis xyz="0.0 0.196078 0.980588"/>
</joint>
<joint name="slider_left" type="prismatic">
<origin rpy="0 0 0" xyz="-0.0775 -0.121655 0.012086"/>
<parent link="grip_attach_1"/>
<child link="left_jaw_1"/>
<axis xyz="-1.0 0.0 -0.0"/>
<limit acceleration="0.5" effort="100" lower="-0.0455" upper="0.0" velocity="1.0"/>
</joint>
<joint name="slider_left" type="prismatic">
<origin rpy="0 0 0" xyz="0.0775 -0.121655 0.012086"/>
<parent link="grip_attach_1"/>
<child link="right_jaw_1"/>
<axis xyz="1.0 -0.0 0.0"/>
<limit acceleration="0.5" effort="100" lower="-0.0455" upper="0.0" velocity="1.0"/>
</joint>
</robot>

View File

@ -0,0 +1,296 @@
<?xml version="1.0" ?>
<robot name="openarm_grip" xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:include filename="$(find openarm_grip_description)/urdf/materials.xacro" />
<xacro:include filename="$(find openarm_grip_description)/urdf/openarm_grip.trans" />
<xacro:include filename="$(find openarm_grip_description)/urdf/openarm_grip.gazebo" />
<link name="dummy"/>
<joint name="dummy_joint" type="fixed">
<parent link="dummy"/>
<child link="base_link"/>
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
</joint>
<link name="base_link">
<inertial>
<origin xyz="1.659663993709495e-08 0.00015470291788827239 -0.03159176823669262" rpy="0 0 0"/>
<mass value="0.9159780860248254"/>
<inertia ixx="0.000802" iyy="0.000799" izz="0.001037" ixy="-0.0" iyz="-0.0" ixz="0.0"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/base_link.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/base_link.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J2_v1_1">
<inertial>
<origin xyz="0.002300730781673588 -0.00021691236314287158 0.02760602616888808" rpy="0 0 0"/>
<mass value="0.49220952328993495"/>
<inertia ixx="0.000316" iyy="0.000717" izz="0.00059" ixy="0.0" iyz="-3e-06" ixz="-2.2e-05"/>
</inertial>
<visual>
<origin xyz="-0.0 -0.0 0.00225" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J2_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="-0.0 -0.0 0.00225" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J2_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J3_v1_1">
<inertial>
<origin xyz="-0.029725947365562236 0.014084733811091961 0.002458883521108013" rpy="0 0 0"/>
<mass value="0.6372830939810512"/>
<inertia ixx="0.000647" iyy="0.000437" izz="0.00075" ixy="4e-06" iyz="-5.2e-05" ixz="2e-06"/>
</inertial>
<visual>
<origin xyz="-0.02975 0.0 -0.0425" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J3_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="-0.02975 0.0 -0.0425" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J3_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J4_v1_1">
<inertial>
<origin xyz="8.405076184644401e-05 0.1358717615053826 0.018429965102241944" rpy="0 0 0"/>
<mass value="1.1025467379280594"/>
<inertia ixx="0.011905" iyy="0.00114" izz="0.011791" ixy="-1e-06" iyz="-0.001657" ixz="-4e-06"/>
</inertial>
<visual>
<origin xyz="0.0 -0.06041 -0.052607" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J4_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="0.0 -0.06041 -0.052607" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J4_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J5_v1_1">
<inertial>
<origin xyz="-0.028086778609557873 -0.06237848032279486 0.015103464347573828" rpy="0 0 0"/>
<mass value="0.7296865736952145"/>
<inertia ixx="0.002473" iyy="0.000853" izz="0.002847" ixy="-7e-05" iyz="0.00038" ixz="1.8e-05"/>
</inertial>
<visual>
<origin xyz="-0.029755 -0.298846 -0.0925" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J5_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="-0.029755 -0.298846 -0.0925" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J5_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J6_v1_1">
<inertial>
<origin xyz="0.016428123043712856 -0.04271549352047854 0.009023923091251038" rpy="0 0 0"/>
<mass value="1.0339114396114095"/>
<inertia ixx="0.000881" iyy="0.000614" izz="0.001054" ixy="0.000136" iyz="0.000102" ixz="-1.1e-05"/>
</inertial>
<visual>
<origin xyz="0.0 -0.167496 -0.118765" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J6_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="0.0 -0.167496 -0.118765" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J6_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="J7_v1_1">
<inertial>
<origin xyz="-0.03510690863628159 0.0004066264284608781 0.001093657345024951" rpy="0 0 0"/>
<mass value="0.33288025570396623"/>
<inertia ixx="0.00014" iyy="0.000179" izz="0.000207" ixy="-0.0" iyz="7e-06" ixz="2e-06"/>
</inertial>
<visual>
<origin xyz="-0.0355 -0.048796 -0.1425" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J7_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="-0.0355 -0.048796 -0.1425" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/J7_v1_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="grip_attach_1">
<inertial>
<origin xyz="-3.544262443517109e-05 -0.08091067772872827 0.004061313352520662" rpy="0 0 0"/>
<mass value="0.8188472642682024"/>
<inertia ixx="0.001113" iyy="0.00061" izz="0.001556" ixy="1e-06" iyz="-2.2e-05" ixz="2e-06"/>
</inertial>
<visual>
<origin xyz="0.0 -0.051826 -0.15765" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/grip_attach_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="0.0 -0.051826 -0.15765" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/grip_attach_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="left_jaw_1">
<inertial>
<origin xyz="0.01737096632831872 -0.017398412728963003 0.004062150876211923" rpy="0 0 0"/>
<mass value="0.2869555939898112"/>
<inertia ixx="0.000209" iyy="9.7e-05" izz="0.000185" ixy="1.6e-05" iyz="3e-06" ixz="-4e-06"/>
</inertial>
<visual>
<origin xyz="0.0775 0.069829 -0.169736" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/left_jaw_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="0.0775 0.069829 -0.169736" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/left_jaw_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<link name="right_jaw_1">
<inertial>
<origin xyz="-0.0173972747583793 -0.018685385724924758 -0.0017497641003002828" rpy="0 0 0"/>
<mass value="0.285094009790996"/>
<inertia ixx="0.000211" iyy="0.000115" izz="0.000169" ixy="-1.6e-05" iyz="3.9e-05" ixz="4e-06"/>
</inertial>
<visual>
<origin xyz="-0.0775 0.069829 -0.169736" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/right_jaw_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
<material name="silver"/>
</visual>
<collision>
<origin xyz="-0.0775 0.069829 -0.169736" rpy="0 0 0"/>
<geometry>
<mesh filename="package://openarm_grip_description/meshes/right_jaw_1.stl" scale="0.001 0.001 0.001"/>
</geometry>
</collision>
</link>
<joint name="rev1" type="revolute">
<origin xyz="0.0 0.0 -0.00225" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="J2_v1_1"/>
<axis xyz="0.0 0.0 1.0"/>
<limit upper="2.356194" lower="-2.356194" effort="100" velocity="1.0" acceleration="0.5"/>
</joint>
<joint name="rev2" type="revolute">
<origin xyz="0.02975 -0.0 0.04475" rpy="0 0 0"/>
<parent link="J2_v1_1"/>
<child link="J3_v1_1"/>
<axis xyz="-1.0 -0.0 0.0"/>
<limit upper="0.0" lower="-3.054326" effort="100" velocity="1.0" acceleration="0.5"/>
</joint>
<joint name="rev3" type="revolute">
<origin xyz="-0.02975 0.06041 0.010107" rpy="0 0 0"/>
<parent link="J3_v1_1"/>
<child link="J4_v1_1"/>
<axis xyz="-0.0 0.986291 0.165017"/>
<limit upper="2.094395" lower="-2.094395" effort="100" velocity="1.0" acceleration="0.5"/>
</joint>
<joint name="rev4" type="revolute">
<origin xyz="0.029755 0.238436 0.039893" rpy="0 0 0"/>
<parent link="J4_v1_1"/>
<child link="J5_v1_1"/>
<axis xyz="1.0 0.0 0.0"/>
<limit upper="0.0" lower="-3.141593" effort="100" velocity="1.0" acceleration="0.5"/>
</joint>
<joint name="rev5" type="revolute">
<origin xyz="-0.029755 -0.13135 0.026265" rpy="0 0 0"/>
<parent link="J5_v1_1"/>
<child link="J6_v1_1"/>
<axis xyz="0.0 -0.980588 0.196078"/>
<limit upper="2.094395" lower="-2.094395" effort="100" velocity="1.0" acceleration="0.5"/>
</joint>
<joint name="rev6" type="revolute">
<origin xyz="0.0355 -0.1187 0.023735" rpy="0 0 0"/>
<parent link="J6_v1_1"/>
<child link="J7_v1_1"/>
<axis xyz="-1.0 0.0 -0.0"/>
<limit upper="1.570796" lower="-1.570796" effort="100" velocity="1.0" acceleration="0.5"/>
</joint>
<joint name="rev7" type="continuous">
<origin xyz="-0.0355 0.00303 0.01515" rpy="0 0 0"/>
<parent link="J7_v1_1"/>
<child link="grip_attach_1"/>
<axis xyz="0.0 0.196078 0.980588"/>
</joint>
<joint name="slider_left" type="prismatic">
<origin xyz="-0.0775 -0.121655 0.012086" rpy="0 0 0"/>
<parent link="grip_attach_1"/>
<child link="left_jaw_1"/>
<axis xyz="-1.0 0.0 -0.0"/>
<limit upper="0.0" lower="-0.0455" effort="100" velocity="1.0" acceleration="0.5"/>
</joint>
<joint name="slider_left" type="prismatic">
<origin xyz="0.0775 -0.121655 0.012086" rpy="0 0 0"/>
<parent link="grip_attach_1"/>
<child link="right_jaw_1"/>
<axis xyz="1.0 -0.0 0.0"/>
<limit upper="0.0" lower="-0.0455" effort="100" velocity="1.0" acceleration="0.5"/>
</joint>
</robot>

View File

@ -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

View File

@ -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})

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,4 @@
openarm_arm:
kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin
kinematics_solver_search_resolution: 0.0050000000000000001
kinematics_solver_timeout: 0.0050000000000000001

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,86 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
<xacro:macro name="openarm_grip_ros2_control" params="name initial_positions_file">
<xacro:property name="initial_positions" value="${xacro.load_yaml(initial_positions_file)['initial_positions']}"/>
<ros2_control name="${name}" type="system">
<hardware>
<!-- By default, set up controllers for simulation. This won't work on real hardware -->
<plugin>mock_components/GenericSystem</plugin>
</hardware>
<joint name="rev1">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['rev1']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="rev2">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['rev2']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="rev3">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['rev3']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="rev4">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['rev4']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="rev5">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['rev5']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="rev6">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['rev6']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="rev7">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['rev7']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="slider_left">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['slider_left']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
<joint name="slider_right">
<command_interface name="position"/>
<command_interface name="velocity"/>
<state_interface name="position">
<param name="initial_value">${initial_positions['slider_right']}</param>
</state_interface>
<state_interface name="velocity"/>
</joint>
</ros2_control>
</xacro:macro>
</robot>

View File

@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--This does not replace URDF, and is not an extension of URDF.
This is a format for representing semantic information about the robot structure.
A URDF file must exist for this robot as well, where the joints and the links that are referenced are defined
-->
<robot name="openarm_grip">
<!--GROUPS: Representation of a set of joints and links. This can be useful for specifying DOF to plan for, defining arms, end effectors, etc-->
<!--LINKS: When a link is specified, the parent joint of that link (if it exists) is automatically included-->
<!--JOINTS: When a joint is specified, the child link of that joint (which will always exist) is automatically included-->
<!--CHAINS: When a chain is specified, all the links along the chain (including endpoints) are included in the group. Additionally, all the joints that are parents to included links are also included. This means that joints along the chain and the parent joint of the base link are included in the group-->
<!--SUBGROUPS: Groups can also be formed by referencing to already defined group names-->
<group name="openarm_arm">
<joint name="dummy_joint"/>
<joint name="rev1"/>
<joint name="rev2"/>
<joint name="rev3"/>
<joint name="rev4"/>
<joint name="rev5"/>
<joint name="rev6"/>
</group>
<group name="gripper">
<link name="grip_attach_1"/>
<link name="left_jaw_1"/>
<link name="right_jaw_1"/>
</group>
<!--END EFFECTOR: Purpose: Represent information about an end effector.-->
<end_effector name="gripper" parent_link="J7_v1_1" group="gripper"/>
<!--VIRTUAL JOINT: Purpose: this element defines a virtual joint between a robot link and an external frame of reference (considered fixed with respect to the robot)-->
<virtual_joint name="world_to_dummy" type="fixed" parent_frame="world" child_link="dummy"/>
<!--DISABLE COLLISIONS: By default it is assumed that any link of the robot could potentially come into collision with any other link in the robot. This tag disables collision checking between a specified pair of links. -->
<disable_collisions link1="J2_v1_1" link2="J3_v1_1" reason="Adjacent"/>
<disable_collisions link1="J2_v1_1" link2="J4_v1_1" reason="Never"/>
<disable_collisions link1="J2_v1_1" link2="J5_v1_1" reason="Never"/>
<disable_collisions link1="J2_v1_1" link2="J6_v1_1" reason="Never"/>
<disable_collisions link1="J2_v1_1" link2="J7_v1_1" reason="Never"/>
<disable_collisions link1="J2_v1_1" link2="base_link" reason="Adjacent"/>
<disable_collisions link1="J3_v1_1" link2="J4_v1_1" reason="Adjacent"/>
<disable_collisions link1="J3_v1_1" link2="J5_v1_1" reason="Never"/>
<disable_collisions link1="J3_v1_1" link2="J6_v1_1" reason="Never"/>
<disable_collisions link1="J3_v1_1" link2="J7_v1_1" reason="Never"/>
<disable_collisions link1="J3_v1_1" link2="base_link" reason="Never"/>
<disable_collisions link1="J4_v1_1" link2="J5_v1_1" reason="Adjacent"/>
<disable_collisions link1="J4_v1_1" link2="J7_v1_1" reason="Never"/>
<disable_collisions link1="J4_v1_1" link2="base_link" reason="Never"/>
<disable_collisions link1="J5_v1_1" link2="J6_v1_1" reason="Adjacent"/>
<disable_collisions link1="J5_v1_1" link2="J7_v1_1" reason="Never"/>
<disable_collisions link1="J5_v1_1" link2="base_link" reason="Never"/>
<disable_collisions link1="J6_v1_1" link2="J7_v1_1" reason="Adjacent"/>
<disable_collisions link1="J7_v1_1" link2="grip_attach_1" reason="Adjacent"/>
<disable_collisions link1="J7_v1_1" link2="left_jaw_1" reason="Never"/>
<disable_collisions link1="J7_v1_1" link2="right_jaw_1" reason="Never"/>
<disable_collisions link1="grip_attach_1" link2="left_jaw_1" reason="Adjacent"/>
<disable_collisions link1="grip_attach_1" link2="right_jaw_1" reason="Adjacent"/>
<disable_collisions link1="left_jaw_1" link2="right_jaw_1" reason="Never"/>
</robot>

View File

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="openarm_grip">
<xacro:arg name="initial_positions_file" default="initial_positions.yaml" />
<!-- Import openarm_grip urdf file -->
<xacro:include filename="$(find openarm_grip_description)/urdf/openarm_grip.urdf" />
<!-- Import control_xacro -->
<xacro:include filename="openarm_grip.ros2_control.xacro" />
<xacro:openarm_grip_ros2_control name="FakeSystem" initial_positions_file="$(arg initial_positions_file)"/>
</robot>

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -0,0 +1,52 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>openarm_moveit_config</name>
<version>0.3.0</version>
<description>
An automatically generated package with all the configuration and launch files for using the openarm_grip with the MoveIt Motion Planning Framework
</description>
<maintainer email="t95zhou@uwaterloo.ca">Thomason Zhou</maintainer>
<license>BSD-3-Clause</license>
<url type="website">http://moveit.ros.org/</url>
<url type="bugtracker">https://github.com/moveit/moveit2/issues</url>
<url type="repository">https://github.com/moveit/moveit2</url>
<author email="t95zhou@uwaterloo.ca">Thomason Zhou</author>
<buildtool_depend>ament_cmake</buildtool_depend>
<exec_depend>moveit_ros_move_group</exec_depend>
<exec_depend>moveit_kinematics</exec_depend>
<exec_depend>moveit_planners</exec_depend>
<exec_depend>moveit_simple_controller_manager</exec_depend>
<exec_depend>joint_state_publisher</exec_depend>
<exec_depend>joint_state_publisher_gui</exec_depend>
<exec_depend>tf2_ros</exec_depend>
<exec_depend>xacro</exec_depend>
<!-- The next 2 packages are required for the gazebo simulation.
We don't include them by default to prevent installing gazebo and all its dependencies. -->
<!-- <exec_depend>joint_trajectory_controller</exec_depend> -->
<!-- <exec_depend>gazebo_ros_control</exec_depend> -->
<exec_depend>controller_manager</exec_depend>
<exec_depend>moveit_configs_utils</exec_depend>
<exec_depend>moveit_ros_move_group</exec_depend>
<exec_depend>moveit_ros_visualization</exec_depend>
<exec_depend>moveit_ros_warehouse</exec_depend>
<exec_depend>moveit_setup_assistant</exec_depend>
<exec_depend>openarm_grip_description</exec_depend>
<exec_depend>robot_state_publisher</exec_depend>
<exec_depend>rviz2</exec_depend>
<exec_depend>rviz_common</exec_depend>
<exec_depend>rviz_default_plugins</exec_depend>
<exec_depend>tf2_ros</exec_depend>
<exec_depend>warehouse_ros_mongo</exec_depend>
<exec_depend>xacro</exec_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>