Add new urdf
This commit is contained in:
parent
c1016d6657
commit
65d94e4aef
@ -1,6 +1,7 @@
|
||||
# ROS2 packages for OpenArm robots
|
||||
|
||||
- openarm_grip_description: urdf with gripper actuator
|
||||
- openarm_description: urdf with gripper actuator
|
||||
- openarm_grip_description: legacy urdf, to be removed shortly
|
||||
- openarm_moveit_config: motion planning with [moveit2](https://github.com/moveit/moveit2)
|
||||
|
||||
https://github.com/user-attachments/assets/a0f962e5-6150-49ce-b18e-9914bcb322ef
|
||||
|
||||
22
openarm_description/CMakeLists.txt
Normal file
22
openarm_description/CMakeLists.txt
Normal file
@ -0,0 +1,22 @@
|
||||
cmake_minimum_required(VERSION 3.8)
|
||||
project(openarm_description_2)
|
||||
|
||||
find_package(ament_cmake REQUIRED)
|
||||
|
||||
if(BUILD_TESTING)
|
||||
find_package(ament_lint_auto REQUIRED)
|
||||
# the following line skips the linter which checks for copyrights
|
||||
# comment the line when a copyright and license is added to all source files
|
||||
set(ament_cmake_copyright_FOUND TRUE)
|
||||
# the following line skips cpplint (only works in a git repo)
|
||||
# comment the line when this package is in a git repo and when
|
||||
# a copyright and license is added to all source files
|
||||
set(ament_cmake_cpplint_FOUND TRUE)
|
||||
ament_lint_auto_find_test_dependencies()
|
||||
endif()
|
||||
|
||||
install(DIRECTORY launch meshes rviz urdf worlds
|
||||
DESTINATION share/${PROJECT_NAME}
|
||||
)
|
||||
|
||||
ament_package()
|
||||
39
openarm_description/launch/description.launch.py
Normal file
39
openarm_description/launch/description.launch.py
Normal file
@ -0,0 +1,39 @@
|
||||
from pathlib import Path
|
||||
|
||||
import launch
|
||||
from launch.substitutions import Command
|
||||
from launch.substitutions import LaunchConfiguration
|
||||
from launch.actions import DeclareLaunchArgument
|
||||
|
||||
import launch_ros
|
||||
from launch_ros.parameter_descriptions import ParameterValue
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
pkg_share = Path(launch_ros.substitutions.FindPackageShare(package='openarm_description_2').find('openarm_description_2'))
|
||||
default_model_path = pkg_share / 'urdf/openarm_wrapper.urdf.xacro'
|
||||
|
||||
use_sim_time = LaunchConfiguration('use_sim_time')
|
||||
use_sim_time_launch_arg = DeclareLaunchArgument('use_sim_time', default_value='true')
|
||||
|
||||
robot_state_publisher_node = launch_ros.actions.Node(
|
||||
package='robot_state_publisher',
|
||||
executable='robot_state_publisher',
|
||||
parameters=[
|
||||
{
|
||||
# ParameterValue is required to avoid being interpreted as YAML.
|
||||
'robot_description': ParameterValue(Command(['xacro ', LaunchConfiguration('model')]), value_type=str),
|
||||
'use_sim_time': use_sim_time,
|
||||
},
|
||||
],
|
||||
)
|
||||
|
||||
return launch.LaunchDescription([
|
||||
launch.actions.DeclareLaunchArgument(
|
||||
name='model',
|
||||
default_value=str(default_model_path),
|
||||
description="Absolute path to the robot's URDF file",
|
||||
),
|
||||
use_sim_time_launch_arg,
|
||||
robot_state_publisher_node,
|
||||
])
|
||||
84
openarm_description/launch/display.launch.py
Normal file
84
openarm_description/launch/display.launch.py
Normal file
@ -0,0 +1,84 @@
|
||||
from pathlib import Path
|
||||
|
||||
import launch
|
||||
from launch.substitutions import LaunchConfiguration, PathJoinSubstitution
|
||||
|
||||
import launch_ros
|
||||
from launch_ros.substitutions import FindPackageShare
|
||||
from launch.actions import IncludeLaunchDescription
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
pkg_share = Path(launch_ros.substitutions.FindPackageShare(package='openarm_description_2').find('openarm_description_2'))
|
||||
default_model_path = pkg_share / 'urdf/openarm_wrapper.urdf.xacro'
|
||||
default_rviz_config_path = pkg_share / 'rviz/robot_description.rviz'
|
||||
|
||||
use_sim_time = LaunchConfiguration('use_sim_time')
|
||||
|
||||
robot_state_publisher_node = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource([
|
||||
PathJoinSubstitution([
|
||||
FindPackageShare('openarm_description_2'),
|
||||
'launch',
|
||||
'description.launch.py',
|
||||
]),
|
||||
]),
|
||||
launch_arguments=dict(use_sim_time=use_sim_time).items(),
|
||||
)
|
||||
|
||||
joint_state_publisher_node = launch_ros.actions.Node(
|
||||
package='joint_state_publisher',
|
||||
executable='joint_state_publisher',
|
||||
name='joint_state_publisher',
|
||||
condition=launch.conditions.UnlessCondition(LaunchConfiguration('gui')),
|
||||
parameters=[{
|
||||
'use_sim_time': use_sim_time,
|
||||
}],
|
||||
)
|
||||
joint_state_publisher_gui_node = launch_ros.actions.Node(
|
||||
package='joint_state_publisher_gui',
|
||||
executable='joint_state_publisher_gui',
|
||||
name='joint_state_publisher_gui',
|
||||
condition=launch.conditions.IfCondition(LaunchConfiguration('gui')),
|
||||
parameters=[{
|
||||
'use_sim_time': use_sim_time,
|
||||
}],
|
||||
)
|
||||
rviz_node = launch_ros.actions.Node(
|
||||
package='rviz2',
|
||||
executable='rviz2',
|
||||
name='rviz2',
|
||||
output='screen',
|
||||
arguments=['-d', LaunchConfiguration('rvizconfig')],
|
||||
parameters=[{
|
||||
'use_sim_time': use_sim_time,
|
||||
}],
|
||||
)
|
||||
|
||||
return launch.LaunchDescription([
|
||||
launch.actions.DeclareLaunchArgument(
|
||||
name='use_sim_time',
|
||||
default_value='false',
|
||||
description='Flag to enable usage of simulation time',
|
||||
),
|
||||
launch.actions.DeclareLaunchArgument(
|
||||
name='gui',
|
||||
default_value='True',
|
||||
description='Flag to enable joint_state_publisher_gui',
|
||||
),
|
||||
launch.actions.DeclareLaunchArgument(
|
||||
name='model',
|
||||
default_value=str(default_model_path),
|
||||
description='Absolute path to robot urdf file',
|
||||
),
|
||||
launch.actions.DeclareLaunchArgument(
|
||||
name='rvizconfig',
|
||||
default_value=str(default_rviz_config_path),
|
||||
description='Absolute path to rviz config file',
|
||||
),
|
||||
joint_state_publisher_node,
|
||||
joint_state_publisher_gui_node,
|
||||
robot_state_publisher_node,
|
||||
rviz_node,
|
||||
])
|
||||
128
openarm_description/launch/gazebo.launch.py
Normal file
128
openarm_description/launch/gazebo.launch.py
Normal file
@ -0,0 +1,128 @@
|
||||
import os
|
||||
import re
|
||||
import subprocess
|
||||
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument
|
||||
from launch.actions import IncludeLaunchDescription
|
||||
from launch.conditions import IfCondition
|
||||
from launch.conditions import UnlessCondition
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
from launch.substitutions import LaunchConfiguration
|
||||
from launch.substitutions import PathJoinSubstitution
|
||||
|
||||
from launch_ros.actions import Node
|
||||
from launch_ros.substitutions import FindPackageShare
|
||||
|
||||
|
||||
def generate_launch_description():
|
||||
|
||||
resources_package = 'openarm_description_2'
|
||||
|
||||
# Make path to resources dir without last package_name fragment.
|
||||
path_to_share_dir_clipped = ''.join(get_package_share_directory(resources_package).rsplit('/' + resources_package, 1))
|
||||
|
||||
# Gazebo hint for resources.
|
||||
os.environ['GZ_SIM_RESOURCE_PATH'] = path_to_share_dir_clipped
|
||||
|
||||
# Ensure `SDF_PATH` is populated since `sdformat_urdf` uses this rather
|
||||
|
||||
# than `GZ_SIM_RESOURCE_PATH` to locate resources.
|
||||
if "GZ_SIM_RESOURCE_PATH" in os.environ:
|
||||
gz_sim_resource_path = os.environ["GZ_SIM_RESOURCE_PATH"]
|
||||
|
||||
if "SDF_PATH" in os.environ:
|
||||
sdf_path = os.environ["SDF_PATH"]
|
||||
os.environ["SDF_PATH"] = sdf_path + ":" + gz_sim_resource_path
|
||||
else:
|
||||
os.environ["SDF_PATH"] = gz_sim_resource_path
|
||||
|
||||
|
||||
use_custom_world = LaunchConfiguration('use_custom_world')
|
||||
use_custom_world_launch_arg = DeclareLaunchArgument('use_custom_world', default_value='true')
|
||||
gazebo_world = LaunchConfiguration('gazebo_world')
|
||||
gazebo_world_launch_arg = DeclareLaunchArgument('gazebo_world', default_value='empty.sdf')
|
||||
|
||||
# prepare custom world
|
||||
world = os.getenv('GZ_SIM_WORLD', 'empty')
|
||||
fly_world_path = resources_package + '/worlds/' + world + '.sdf'
|
||||
gz_version = subprocess.getoutput("gz sim --versions")
|
||||
gz_version_major = re.search(r'^\d{1}', gz_version).group()
|
||||
launch_arguments=dict(gz_args = '-r ' + str(fly_world_path) + ' --verbose ', gz_version = gz_version_major).items()
|
||||
|
||||
# Gazebo Sim.
|
||||
# by default the custom world is used, otherwise the gazebo world is used, which can be changed with the argument
|
||||
pkg_ros_gz_sim = get_package_share_directory('ros_gz_sim')
|
||||
gazebo = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource(
|
||||
os.path.join(pkg_ros_gz_sim, 'launch', 'gz_sim.launch.py'),
|
||||
),
|
||||
launch_arguments=launch_arguments if use_custom_world else dict(gz_args='-r ' + gazebo_world + ' --verbose').items(),
|
||||
)
|
||||
|
||||
# Spawn
|
||||
spawn = Node(
|
||||
package='ros_gz_sim',
|
||||
executable='create',
|
||||
arguments=[
|
||||
'-name', 'openarm',
|
||||
'-x', '1.2',
|
||||
'-z', '2.3',
|
||||
'-Y', '3.4',
|
||||
'-topic', '/robot_description',
|
||||
],
|
||||
output='screen',
|
||||
)
|
||||
|
||||
use_sim_time = LaunchConfiguration('use_sim_time')
|
||||
use_sim_time_launch_arg = DeclareLaunchArgument('use_sim_time', default_value='true')
|
||||
use_rviz = LaunchConfiguration('use_rviz')
|
||||
use_rviz_arg = DeclareLaunchArgument("use_rviz", default_value='true')
|
||||
|
||||
robot_state_publisher = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource([
|
||||
PathJoinSubstitution([
|
||||
FindPackageShare(resources_package),
|
||||
'launch',
|
||||
'description.launch.py',
|
||||
]),
|
||||
]),
|
||||
condition=UnlessCondition(use_rviz), # rviz launch includes rsp.
|
||||
launch_arguments=dict(use_sim_time=use_sim_time).items(),
|
||||
)
|
||||
|
||||
rviz = IncludeLaunchDescription(
|
||||
PythonLaunchDescriptionSource([
|
||||
PathJoinSubstitution([
|
||||
FindPackageShare(resources_package),
|
||||
'launch',
|
||||
'display.launch.py',
|
||||
]),
|
||||
]),
|
||||
condition=IfCondition(use_rviz),
|
||||
launch_arguments=dict(use_sim_time=use_sim_time).items(),
|
||||
)
|
||||
|
||||
gz_bridge = Node(
|
||||
package='ros_gz_bridge',
|
||||
executable='parameter_bridge',
|
||||
arguments=['/clock@rosgraph_msgs/msg/Clock[ignition.msgs.Clock'],
|
||||
output='screen',
|
||||
parameters=[{
|
||||
'use_sim_time': use_sim_time,
|
||||
}],
|
||||
)
|
||||
|
||||
return LaunchDescription([
|
||||
use_sim_time_launch_arg,
|
||||
use_rviz_arg,
|
||||
use_custom_world_launch_arg,
|
||||
gazebo_world_launch_arg,
|
||||
robot_state_publisher,
|
||||
rviz,
|
||||
gazebo,
|
||||
spawn,
|
||||
gz_bridge,
|
||||
])
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
106
openarm_description/meshes/robotcad_openarm_123_j1v1_aooobi.dae
Normal file
106
openarm_description/meshes/robotcad_openarm_123_j1v1_aooobi.dae
Normal file
File diff suppressed because one or more lines are too long
106
openarm_description/meshes/robotcad_openarm_123_j2v1_jhlkho.dae
Normal file
106
openarm_description/meshes/robotcad_openarm_123_j2v1_jhlkho.dae
Normal file
File diff suppressed because one or more lines are too long
106
openarm_description/meshes/robotcad_openarm_123_j3v2_wvlhxy.dae
Normal file
106
openarm_description/meshes/robotcad_openarm_123_j3v2_wvlhxy.dae
Normal file
File diff suppressed because one or more lines are too long
106
openarm_description/meshes/robotcad_openarm_123_j4v1_augius.dae
Normal file
106
openarm_description/meshes/robotcad_openarm_123_j4v1_augius.dae
Normal file
File diff suppressed because one or more lines are too long
106
openarm_description/meshes/robotcad_openarm_123_j5v2_1zjcxf.dae
Normal file
106
openarm_description/meshes/robotcad_openarm_123_j5v2_1zjcxf.dae
Normal file
File diff suppressed because one or more lines are too long
106
openarm_description/meshes/robotcad_openarm_123_j6v1_71vz7n.dae
Normal file
106
openarm_description/meshes/robotcad_openarm_123_j6v1_71vz7n.dae
Normal file
File diff suppressed because one or more lines are too long
106
openarm_description/meshes/robotcad_openarm_123_j7v1_ebpnbv.dae
Normal file
106
openarm_description/meshes/robotcad_openarm_123_j7v1_ebpnbv.dae
Normal file
File diff suppressed because one or more lines are too long
106
openarm_description/meshes/robotcad_openarm_123_j8v1_n9o5e8.dae
Normal file
106
openarm_description/meshes/robotcad_openarm_123_j8v1_n9o5e8.dae
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
21
openarm_description/package.xml
Normal file
21
openarm_description/package.xml
Normal file
@ -0,0 +1,21 @@
|
||||
<?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_description_2</name>
|
||||
<version>0.0.0</version>
|
||||
<description>TODO: Package description</description>
|
||||
<maintainer email="TODO@todo.com">TODO</maintainer>
|
||||
<license>TODO: License declaration</license>
|
||||
|
||||
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||
|
||||
<depend>joint_state_publisher_gui</depend>
|
||||
<depend>ros_gz</depend>
|
||||
|
||||
<test_depend>ament_lint_auto</test_depend>
|
||||
<test_depend>ament_lint_common</test_depend>
|
||||
|
||||
<export>
|
||||
<build_type>ament_cmake</build_type>
|
||||
</export>
|
||||
</package>
|
||||
42
openarm_description/rviz/robot_description.rviz
Normal file
42
openarm_description/rviz/robot_description.rviz
Normal file
@ -0,0 +1,42 @@
|
||||
Panels:
|
||||
- Class: rviz_common/Displays
|
||||
Name: Displays
|
||||
- Class: rviz_common/Views
|
||||
Name: Views
|
||||
Visualization Manager:
|
||||
Class: ""
|
||||
Displays:
|
||||
- Class: rviz_default_plugins/Grid
|
||||
Name: Grid
|
||||
Value: true
|
||||
Alpha: 0.5
|
||||
- Class: rviz_default_plugins/RobotModel
|
||||
Description Source: Topic
|
||||
Description Topic:
|
||||
Value: /robot_description
|
||||
Enabled: true
|
||||
Name: RobotModel
|
||||
Alpha: 1
|
||||
Value: true
|
||||
- Class: rviz_default_plugins/TF
|
||||
Name: TF
|
||||
Value: true
|
||||
Enabled: false
|
||||
Global Options:
|
||||
Fixed Frame: l_J1_v002
|
||||
Frame Rate: 30
|
||||
Name: root
|
||||
Tools:
|
||||
- Class: rviz_default_plugins/MoveCamera
|
||||
Value: true
|
||||
Views:
|
||||
Current:
|
||||
Class: rviz_default_plugins/Orbit
|
||||
Distance: 5.0
|
||||
Name: Current View
|
||||
Pitch: 0.33
|
||||
Value: Orbit (rviz)
|
||||
Yaw: 5.5
|
||||
Window Geometry:
|
||||
Height: 800
|
||||
Width: 1200
|
||||
278
openarm_description/urdf/openarm.urdf
Normal file
278
openarm_description/urdf/openarm.urdf
Normal file
@ -0,0 +1,278 @@
|
||||
<?xml version="1.0" ?>
|
||||
<robot name="openarm">
|
||||
<!--Generated by RobotCAD, a ROS Workbench for FreeCAD (https://github.com/drfenixion/freecad.robotcad)-->
|
||||
<link name="l_J1_v002">
|
||||
<visual>
|
||||
<!--J1 v002/Part__Feature.-->
|
||||
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_j1v1_aooobi.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_J1_v002__col_J1_v1__BoundBox/col_J1_v1__BoundBox.-->
|
||||
<origin rpy="0 0 0" xyz="0.0 0.0 0.0296"/>
|
||||
<geometry>
|
||||
<box size="0.11 0.073 0.0592"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.5769283920617252"/>
|
||||
<origin rpy="0 0 0" xyz="0.0 2.52845e-05 0.0236621"/>
|
||||
<inertia ixx="0.0003403516757406" ixy="-0.0" ixz="-0.0" iyy="0.000430005830001" iyz="-5.098294821e-07" izz="0.0004802171432002"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_J2_v002">
|
||||
<visual>
|
||||
<!--J2 v002/Part__Feature001.-->
|
||||
<origin rpy="0 0 0" xyz="0.0 0.0 -0.05395"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_j2v1_jhlkho.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_J2_v002__col_J2_v1__BoundBox/col_J2_v1__BoundBox.-->
|
||||
<origin rpy="0 0 0" xyz="0.0 0.0 0.0371236"/>
|
||||
<geometry>
|
||||
<box size="0.059000000014901216 0.08200000000000003 0.0742471498637348"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.1625750413491735"/>
|
||||
<origin rpy="0 0 0" xyz="-0.000225878 -0.00183836 0.0278368"/>
|
||||
<inertia ixx="0.0002390311021329" ixy="-7.55169292e-08" ixz="-1.1282723362e-06" iyy="0.0001049079831478" iyz="5.907962784e-06" izz="0.0001973736868594"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_J3_v003">
|
||||
<visual>
|
||||
<!--J3 v003/Part__Feature002.-->
|
||||
<origin rpy="1.570796326794897 0 0" xyz="0.0 0.0987 0.02975"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_j3v2_wvlhxy.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_J3_v003__col_J3_v2__BoundBox/col_J3_v2__BoundBox.-->
|
||||
<origin rpy="1.5707963267948968 0 0" xyz="-0.0164466 -0.00045542 0.02975"/>
|
||||
<geometry>
|
||||
<box size="0.08989101803441883 0.06999999999999984 0.05903276947803012"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.420167646991003"/>
|
||||
<origin rpy="1.5707963267948968 0 0" xyz="-0.00688022 0.0 0.0282752"/>
|
||||
<inertia ixx="0.0002025600112623" ixy="6.0042478753e-06" ixz="1.3304903058e-06" iyy="0.0002970624991388" iyz="5.980157766e-07" izz="0.0003288999435124"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_J4_v002">
|
||||
<visual>
|
||||
<!--J4 v002/Part__Feature003.-->
|
||||
<origin rpy="1.5707963267958094 -1.5620381439005735 0" xyz="0.000536411 0.0992364 0.0612453"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_j4v1_augius.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_J4_v002__col_J4_v1__BoundBox/col_J4_v1__BoundBox.-->
|
||||
<origin rpy="1.5707963267958094 -1.5620381439005735 0" xyz="-0.013725 -0.00142762 -0.132481"/>
|
||||
<geometry>
|
||||
<box size="0.27584673777150337 0.08211429171582063 0.07186573179325861"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.8194755393734474"/>
|
||||
<origin rpy="1.5707963267958094 -1.5620381439005735 0" xyz="-0.00310558 -0.00194096 -0.132377"/>
|
||||
<inertia ixx="0.0004407845203398" ixy="6.02002369404e-05" ixz="0.0001463745926194" iyy="0.0092087914805304" iyz="1.5469710436e-06" izz="0.0091705393160237"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_J5_v003">
|
||||
<visual>
|
||||
<!--J5 v003/Part__Feature004.-->
|
||||
<origin rpy="0 -0.00875818289428989 0" xyz="0.303864 0.0 -0.128451"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_j5v2_1zjcxf.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_J5_v003__col_J5_v2__BoundBox/col_J5_v2__BoundBox.-->
|
||||
<origin rpy="0 -0.0087581828942894 0" xyz="-0.0542814 0.00265291 -0.0302022"/>
|
||||
<geometry>
|
||||
<box size="0.16827213220625822 0.06430555048399172 0.08257859967140947"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.4086748254352304"/>
|
||||
<origin rpy="0 -0.0087581828942894 0" xyz="-0.0831891 0.00251789 -0.0290107"/>
|
||||
<inertia ixx="0.000314171574253" ixy="-1.13915660296e-05" ixz="-1.88347409006e-05" iyy="0.001221711435314" iyz="1.4672541842e-06" izz="0.0010755135067661"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_J6_v002">
|
||||
<visual>
|
||||
<!--J6 v002/Part__Feature005.-->
|
||||
<origin rpy="-2.1276679791304027 -1.5542266826921316 0" xyz="-0.0485412 -0.0860404 0.437784"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_j6v1_71vz7n.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_J6_v002__col_J6_v1__BoundBox/col_J6_v1__BoundBox.-->
|
||||
<origin rpy="-2.1276679791303965 -1.5542266826921314 0" xyz="-0.00260794 -0.00312921 -0.0652641"/>
|
||||
<geometry>
|
||||
<box size="0.13114353004704765 0.05953478325301745 0.08817196195081879"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.344847195804925"/>
|
||||
<origin rpy="-2.1276679791303965 -1.5542266826921314 0" xyz="-0.00898536 -0.0135065 -0.0438611"/>
|
||||
<inertia ixx="0.0001935598099975" ixy="-1.0061665815e-06" ixz="-3.9096495715e-05" iyy="0.0003486912031866" iyz="6.0880603153e-06" izz="0.0002877497515376"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_J7_v002">
|
||||
<visual>
|
||||
<!--J7 v002/Part__Feature006.-->
|
||||
<origin rpy="0 -0.008758182894492011 0" xyz="0.558839 -0.00358671 -0.0631962"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_j7v1_ebpnbv.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_J7_v002__col_J7_v1__BoundBox/col_J7_v1__BoundBox.-->
|
||||
<origin rpy="0 -0.008758182894492202 0" xyz="-0.000318103 0.0022839 0.0340014"/>
|
||||
<geometry>
|
||||
<box size="0.058327402175132874 0.04432916698753661 0.08267601622411752"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.2782138078738053"/>
|
||||
<origin rpy="0 -0.008758182894492202 0" xyz="5.99432e-05 0.0041433 0.0354274"/>
|
||||
<inertia ixx="0.0001042415331565" ixy="2.735265832e-07" ixz="-1.066232238e-07" iyy="0.0001231355074328" iyz="-8.60499675e-08" izz="9.22131995851e-05"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_J8_v002">
|
||||
<visual>
|
||||
<!--J8 v002/Part__Feature007.-->
|
||||
<origin rpy="1.5709195259578743 -0.014065461951076396 0" xyz="0.557948 0.103587 0.019724"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_j8v1_n9o5e8.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_J8_v002__col_J8_v1__BoundBox/col_J8_v1__BoundBox.-->
|
||||
<origin rpy="1.5709195259578743 -0.014065461951076389 0" xyz="-0.042694 -0.000543176 0.0110286"/>
|
||||
<geometry>
|
||||
<box size="0.13038799671743653 0.05180887692688924 0.1601236763440867"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.3126145274380216"/>
|
||||
<origin rpy="1.5709195259578743 -0.014065461951076387 0" xyz="-0.0607602 -0.000341696 0.00876618"/>
|
||||
<inertia ixx="0.0002346566136679" ixy="7.60904888201e-05" ixz="3.088694121e-07" iyy="0.0005065459365215" iyz="1.902281803e-07" izz="0.0003737029250058"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_right_jaw_v002">
|
||||
<visual>
|
||||
<!--right_jaw v002/Part__Feature009.-->
|
||||
<origin rpy="0 -0.008758182894796506 0" xyz="0.665265 -0.00286677 -0.175928"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_right_jawv1_fr5g7k.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_right_jaw_v002__col_right_jaw_v1_col_obj/col_right_jaw_v1_col_obj.-->
|
||||
<origin rpy="0 -0.008758182894796357 0" xyz="0.665265 -0.00286677 -0.175928"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_col_right_jaw_v1_col_obj_p8alje.dae"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.0429816653011345"/>
|
||||
<origin rpy="0 -0.008758182894796502 0" xyz="-0.0187844 -0.00272415 -0.0159503"/>
|
||||
<inertia ixx="1.15612930876e-05" ixy="2.537718468e-06" ixz="-3.6591812258e-06" iyy="2.37016552787e-05" iyz="4.848038236e-07" izz="3.03965294654e-05"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<link name="l_left_jaw_v002">
|
||||
<visual>
|
||||
<!--left_jaw v002/Part__Feature008.-->
|
||||
<origin rpy="0 -0.008758182894441503 0" xyz="0.665265 -0.00286677 -0.0209282"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_left_jawv1_mtevtw.dae"/>
|
||||
</geometry>
|
||||
</visual>
|
||||
<collision>
|
||||
<!--bound_obj__l_left_jaw_v002__col_left_jaw_v1_col_obj/col_left_jaw_v1_col_obj.-->
|
||||
<origin rpy="0 -0.008758182894441503 0" xyz="0.665265 -0.00286677 -0.0209282"/>
|
||||
<geometry>
|
||||
<mesh filename="package://openarm_description_2/meshes/robotcad_openarm_123_col_left_jaw_v1_col_obj_u5blmp.dae"/>
|
||||
</geometry>
|
||||
</collision>
|
||||
<inertial>
|
||||
<mass value="0.0429789785639494"/>
|
||||
<origin rpy="0 -0.008758182894441498 0" xyz="-0.0187138 0.00217075 0.0159499"/>
|
||||
<inertia ixx="1.17717687429e-05" ixy="-2.3899281666e-06" ixz="3.9992922045e-06" iyy="2.38373544808e-05" iyz="3.494431877e-07" izz="3.04745902141e-05"/>
|
||||
</inertial>
|
||||
</link>
|
||||
<joint name="l_J1_v002__to__l_J2_v002" type="revolute">
|
||||
<parent link="l_J1_v002"/>
|
||||
<child link="l_J2_v002"/>
|
||||
<origin rpy="0 0 0" xyz="0.0 0.0 0.05395"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="-2.356194490192345" upper="2.356194490192345" velocity="0.0"/>
|
||||
</joint>
|
||||
<joint name="l_J2_v002__to__l_J3_v003" type="revolute">
|
||||
<parent link="l_J2_v002"/>
|
||||
<child link="l_J3_v003"/>
|
||||
<origin rpy="-1.5707963267948977 1.5707963267948957 0" xyz="0.0 -0.02975 0.04475"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="-1.5707963267948966" upper="1.5707963267948966" velocity="0.0"/>
|
||||
</joint>
|
||||
<joint name="l_J3_v003__to__l_J4_v002" type="revolute">
|
||||
<parent link="l_J3_v003"/>
|
||||
<child link="l_J4_v002"/>
|
||||
<origin rpy="1.5707963267949046 0 1.5795545096892487" xyz="-0.0612477 -0.000536432 0.02975"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="-2.0943951023931953" upper="2.0943951023931953" velocity="0.0"/>
|
||||
</joint>
|
||||
<joint name="l_J4_v002__to__l_J5_v003" type="revolute">
|
||||
<parent link="l_J4_v002"/>
|
||||
<child link="l_J5_v003"/>
|
||||
<origin rpy="0.7854173400827703 -1.5584104649378014 0.7854173400871975" xyz="-0.0021149 -0.0318708 -0.241471"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="-0.3490658503988659" upper="2.792526803190927" velocity="0.0"/>
|
||||
</joint>
|
||||
<joint name="l_J5_v003__to__l_J6_v002" type="revolute">
|
||||
<parent link="l_J5_v003"/>
|
||||
<child link="l_J6_v002"/>
|
||||
<origin rpy="1.5707963267949707 -0.5569332500522621 1.5567303253381135" xyz="-0.133937 0.00188408 -0.0297547"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="-2.0943951023931953" upper="2.0943951023931953" velocity="0.0"/>
|
||||
</joint>
|
||||
<joint name="l_J6_v002__to__l_J7_v002" type="revolute">
|
||||
<parent link="l_J6_v002"/>
|
||||
<child link="l_J7_v002"/>
|
||||
<origin rpy="-1.5707963268025373 -1.5567303253381704 -0.5569332500438752" xyz="-0.0187648 -0.0301352 -0.12105"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="-1.5707963267948966" upper="1.5707963267948966" velocity="0.0"/>
|
||||
</joint>
|
||||
<joint name="l_J7_v002__to__l_J8_v002" type="revolute">
|
||||
<parent link="l_J7_v002"/>
|
||||
<child link="l_J8_v002"/>
|
||||
<origin rpy="-1.570796326795002 -0.008759049335348993 -0.014066001454933549" xyz="-0.000217313 -0.0154485 0.0355"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="-0.9599310885968813" upper="0.9599310885968813" velocity="0.0"/>
|
||||
</joint>
|
||||
<joint name="l_J8_v002__to__l_right_jaw_v002" type="prismatic">
|
||||
<parent link="l_J8_v002"/>
|
||||
<child link="l_right_jaw_v002"/>
|
||||
<origin rpy="1.570796326794885 -0.014066001454926544 0.008759049336297665" xyz="-0.10571 -0.0781373 0.0132053"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="0.0" upper="0.045" velocity="0.0"/>
|
||||
<mimic joint="l_J8_v002__to__l_left_jaw_v002" multiplier="-1.0" offset="0.0"/>
|
||||
</joint>
|
||||
<joint name="l_J8_v002__to__l_left_jaw_v002" type="prismatic">
|
||||
<parent link="l_J8_v002"/>
|
||||
<child link="l_left_jaw_v002"/>
|
||||
<origin rpy="1.5707963267948268 -0.014066001454925883 0.00875904933451695" xyz="-0.1071 0.07686 0.0132053"/>
|
||||
<axis xyz="0 0 1"/>
|
||||
<limit effort="0.0" lower="0.0" upper="0.045" velocity="0.0"/>
|
||||
</joint>
|
||||
</robot>
|
||||
5
openarm_description/urdf/openarm_sensors.urdf.xacro
Normal file
5
openarm_description/urdf/openarm_sensors.urdf.xacro
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0"?>
|
||||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
|
||||
|
||||
|
||||
</robot>
|
||||
5
openarm_description/urdf/openarm_wrapper.urdf.xacro
Normal file
5
openarm_description/urdf/openarm_wrapper.urdf.xacro
Normal file
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="openarm">
|
||||
<xacro:include filename="openarm.urdf"/>
|
||||
<xacro:include filename="openarm_sensors.urdf.xacro"/>
|
||||
</robot>
|
||||
317
openarm_description/worlds/empty.sdf
Normal file
317
openarm_description/worlds/empty.sdf
Normal file
@ -0,0 +1,317 @@
|
||||
<?xml version="1.0" ?>
|
||||
<sdf version="1.6">
|
||||
<world name="empty">
|
||||
<physics type="ode">
|
||||
<max_step_size>0.004</max_step_size>
|
||||
<real_time_factor>1.0</real_time_factor>
|
||||
<real_time_update_rate>250</real_time_update_rate>
|
||||
</physics>
|
||||
<plugin
|
||||
filename="gz-sim-physics-system"
|
||||
name="gz::sim::systems::Physics">
|
||||
</plugin>
|
||||
<plugin
|
||||
filename="gz-sim-user-commands-system"
|
||||
name="gz::sim::systems::UserCommands">
|
||||
</plugin>
|
||||
<plugin
|
||||
filename="gz-sim-scene-broadcaster-system"
|
||||
name="gz::sim::systems::SceneBroadcaster">
|
||||
</plugin>
|
||||
<plugin
|
||||
filename="gz-sim-sensors-system"
|
||||
name="gz::sim::systems::Sensors">
|
||||
<!-- <render_engine>ogre</render_engine> -->
|
||||
<render_engine>ogre2</render_engine>
|
||||
<!-- <render_engine>optix</render_engine> -->
|
||||
</plugin>
|
||||
<plugin
|
||||
filename="gz-sim-contact-system"
|
||||
name="gz::sim::systems::Contact">
|
||||
</plugin>
|
||||
|
||||
<gui fullscreen="0">
|
||||
|
||||
<!-- 3D scene -->
|
||||
<plugin filename="MinimalScene" name="3D View">
|
||||
<gz-gui>
|
||||
<title>3D View</title>
|
||||
<property type="bool" key="showTitleBar">false</property>
|
||||
<property type="string" key="state">docked</property>
|
||||
</gz-gui>
|
||||
|
||||
<engine>ogre2</engine>
|
||||
<scene>scene</scene>
|
||||
<ambient_light>0.4 0.4 0.4</ambient_light>
|
||||
<background_color>0.8 0.8 0.8</background_color>
|
||||
<camera_pose>-6 0 6 0 0.5 0</camera_pose>
|
||||
</plugin>
|
||||
|
||||
<!-- Plugins that add functionality to the scene -->
|
||||
<plugin filename="EntityContextMenuPlugin" name="Entity context menu">
|
||||
<gz-gui>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="width" type="double">5</property>
|
||||
<property key="height" type="double">5</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
<plugin filename="GzSceneManager" name="Scene Manager">
|
||||
<gz-gui>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="width" type="double">5</property>
|
||||
<property key="height" type="double">5</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
<plugin filename="InteractiveViewControl" name="Interactive view control">
|
||||
<gz-gui>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="width" type="double">5</property>
|
||||
<property key="height" type="double">5</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
<plugin filename="CameraTracking" name="Camera Tracking">
|
||||
<gz-gui>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="width" type="double">5</property>
|
||||
<property key="height" type="double">5</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
<plugin filename="MarkerManager" name="Marker manager">
|
||||
<gz-gui>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="width" type="double">5</property>
|
||||
<property key="height" type="double">5</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
<plugin filename="SelectEntities" name="Select Entities">
|
||||
<gz-gui>
|
||||
<anchors target="Select entities">
|
||||
<line own="right" target="right"/>
|
||||
<line own="top" target="top"/>
|
||||
</anchors>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="width" type="double">5</property>
|
||||
<property key="height" type="double">5</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
<plugin filename="VisualizationCapabilities" name="Visualization Capabilities">
|
||||
<gz-gui>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="width" type="double">5</property>
|
||||
<property key="height" type="double">5</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
|
||||
<plugin filename="Spawn" name="Spawn Entities">
|
||||
<gz-gui>
|
||||
<anchors target="Select entities">
|
||||
<line own="right" target="right"/>
|
||||
<line own="top" target="top"/>
|
||||
</anchors>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="width" type="double">5</property>
|
||||
<property key="height" type="double">5</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
|
||||
<!-- World control -->
|
||||
<plugin filename="WorldControl" name="World control">
|
||||
<gz-gui>
|
||||
<title>World control</title>
|
||||
<property type="bool" key="showTitleBar">false</property>
|
||||
<property type="bool" key="resizable">false</property>
|
||||
<property type="double" key="height">72</property>
|
||||
<property type="double" key="z">1</property>
|
||||
|
||||
<property type="string" key="state">floating</property>
|
||||
<anchors target="3D View">
|
||||
<line own="left" target="left"/>
|
||||
<line own="bottom" target="bottom"/>
|
||||
</anchors>
|
||||
</gz-gui>
|
||||
|
||||
<play_pause>true</play_pause>
|
||||
<step>true</step>
|
||||
<start_paused>true</start_paused>
|
||||
<use_event>true</use_event>
|
||||
|
||||
</plugin>
|
||||
|
||||
<!-- World statistics -->
|
||||
<plugin filename="WorldStats" name="World stats">
|
||||
<gz-gui>
|
||||
<title>World stats</title>
|
||||
<property type="bool" key="showTitleBar">false</property>
|
||||
<property type="bool" key="resizable">false</property>
|
||||
<property type="double" key="height">110</property>
|
||||
<property type="double" key="width">290</property>
|
||||
<property type="double" key="z">1</property>
|
||||
|
||||
<property type="string" key="state">floating</property>
|
||||
<anchors target="3D View">
|
||||
<line own="right" target="right"/>
|
||||
<line own="bottom" target="bottom"/>
|
||||
</anchors>
|
||||
</gz-gui>
|
||||
|
||||
<sim_time>true</sim_time>
|
||||
<real_time>true</real_time>
|
||||
<real_time_factor>true</real_time_factor>
|
||||
<iterations>true</iterations>
|
||||
</plugin>
|
||||
|
||||
<!-- Insert simple shapes -->
|
||||
<plugin filename="Shapes" name="Shapes">
|
||||
<gz-gui>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="x" type="double">0</property>
|
||||
<property key="y" type="double">0</property>
|
||||
<property key="width" type="double">250</property>
|
||||
<property key="height" type="double">50</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
<property key="cardBackground" type="string">#666666</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
|
||||
<!-- Insert lights -->
|
||||
<plugin filename="Lights" name="Lights">
|
||||
<gz-gui>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="x" type="double">250</property>
|
||||
<property key="y" type="double">0</property>
|
||||
<property key="width" type="double">150</property>
|
||||
<property key="height" type="double">50</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
<property key="cardBackground" type="string">#666666</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
|
||||
<!-- Translate / rotate -->
|
||||
<plugin filename="TransformControl" name="Transform control">
|
||||
<gz-gui>
|
||||
<property key="resizable" type="bool">false</property>
|
||||
<property key="x" type="double">0</property>
|
||||
<property key="y" type="double">50</property>
|
||||
<property key="width" type="double">250</property>
|
||||
<property key="height" type="double">50</property>
|
||||
<property key="state" type="string">floating</property>
|
||||
<property key="showTitleBar" type="bool">false</property>
|
||||
<property key="cardBackground" type="string">#777777</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
|
||||
<!-- Inspector -->
|
||||
<plugin filename="ComponentInspector" name="Component inspector">
|
||||
<gz-gui>
|
||||
<property type="string" key="state">docked_collapsed</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
|
||||
<!-- Entity tree -->
|
||||
<plugin filename="EntityTree" name="Entity tree">
|
||||
<gz-gui>
|
||||
<property type="string" key="state">docked_collapsed</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
|
||||
<!-- View angle -->
|
||||
<plugin filename="ViewAngle" name="View angle">
|
||||
<gz-gui>
|
||||
<property type="string" key="state">docked_collapsed</property>
|
||||
</gz-gui>
|
||||
</plugin>
|
||||
|
||||
<!-- Image Display Plugins for visualization -->
|
||||
<plugin filename="ImageDisplay" name="Image Display">
|
||||
<gz-gui>
|
||||
</gz-gui>
|
||||
<topic>camera</topic>
|
||||
</plugin>
|
||||
|
||||
<plugin name='Grid config' filename='GridConfig'>
|
||||
<gz-gui>
|
||||
<property type="string" key="state">docked_collapsed</property>
|
||||
</gz-gui>
|
||||
<insert>
|
||||
<!-- total size = length * cell count-->
|
||||
<horizontal_cell_count>50</horizontal_cell_count>
|
||||
|
||||
<!-- 0 actually means one plane-->
|
||||
<vertical_cell_count>0</vertical_cell_count>
|
||||
|
||||
<!--5m cells-->
|
||||
<cell_length>2.0</cell_length>
|
||||
|
||||
<pose>0 0 0 0 0 0</pose>
|
||||
<color>1 1 1 0.7</color>
|
||||
</insert>
|
||||
</plugin>
|
||||
</gui>
|
||||
|
||||
<light type="directional" name="sun">
|
||||
<cast_shadows>true</cast_shadows>
|
||||
<pose>0 0 10 0 0 0</pose>
|
||||
<diffuse>0.8 0.8 0.8 1</diffuse>
|
||||
<specular>0.2 0.2 0.2 1</specular>
|
||||
<attenuation>
|
||||
<range>1000</range>
|
||||
<constant>0.9</constant>
|
||||
<linear>0.01</linear>
|
||||
<quadratic>0.001</quadratic>
|
||||
</attenuation>
|
||||
<direction>-0.5 0.1 -0.9</direction>
|
||||
</light>
|
||||
|
||||
<scene>
|
||||
<grid>false</grid>
|
||||
<ambient>0.4 0.4 0.4 1</ambient>
|
||||
<!-- <background>0.7 0.7 0.7 1</background> -->
|
||||
<background>0.8 0.8 0.8</background>
|
||||
<shadows>true</shadows>
|
||||
</scene>
|
||||
|
||||
<model name="ground_plane">
|
||||
<static>true</static>
|
||||
<link name="link">
|
||||
<collision name="collision">
|
||||
<geometry>
|
||||
<plane>
|
||||
<normal>0 0 1</normal>
|
||||
<size>100 100</size>
|
||||
</plane>
|
||||
</geometry>
|
||||
</collision>
|
||||
<visual name="visual">
|
||||
<geometry>
|
||||
<plane>
|
||||
<normal>0 0 1</normal>
|
||||
<size>100 100</size>
|
||||
</plane>
|
||||
</geometry>
|
||||
<material>
|
||||
<ambient>0.8 0.8 0.8 1</ambient>
|
||||
<diffuse>0.8 0.8 0.8 1</diffuse>
|
||||
<specular>0.8 0.8 0.8 1</specular>
|
||||
</material>
|
||||
</visual>
|
||||
</link>
|
||||
</model>
|
||||
</world>
|
||||
</sdf>
|
||||
0
overcross/COLCON_IGNORE
Normal file
0
overcross/COLCON_IGNORE
Normal file
27
overcross/openarm_controllers.yaml
Normal file
27
overcross/openarm_controllers.yaml
Normal file
@ -0,0 +1,27 @@
|
||||
controller_manager:
|
||||
ros__parameters:
|
||||
update_rate: 250
|
||||
gripper_action_controller_position:
|
||||
type: position_controllers/GripperActionController
|
||||
joint_state_broadcaster:
|
||||
type: joint_state_broadcaster/JointStateBroadcaster
|
||||
joint_group_position_controller:
|
||||
type: position_controllers/JointGroupPositionController
|
||||
gripper_action_controller_position:
|
||||
ros__parameters:
|
||||
action_monitor_rate: 20.0
|
||||
allow_stalling: false
|
||||
goal_tolerance: 0.01
|
||||
joint: null
|
||||
max_effort: 0.0
|
||||
stall_timeout: 1.0
|
||||
stall_velocity_threshold: 0.001
|
||||
joint_state_broadcaster:
|
||||
ros__parameters:
|
||||
map_interface_to_joint_state.effort: effort
|
||||
map_interface_to_joint_state.position: position
|
||||
map_interface_to_joint_state.velocity: velocity
|
||||
use_local_topics: false
|
||||
use_urdf_to_filter: true
|
||||
joint_group_position_controller:
|
||||
ros__parameters: {}
|
||||
86
overcross/robot_meta.xml
Normal file
86
overcross/robot_meta.xml
Normal file
@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" ?>
|
||||
<robotMeta>
|
||||
<robotName>openarm</robotName>
|
||||
<urdfFileName>openarm.urdf</urdfFileName>
|
||||
<packageName>openarm_description_2</packageName>
|
||||
<meshesDir>meshes </meshesDir>
|
||||
<robotType>nonspecific</robotType>
|
||||
<generateCodeForRosVersion>jazzy</generateCodeForRosVersion>
|
||||
<rootLinkName>l_J1_v002</rootLinkName>
|
||||
<xacroWrapperFileName>openarm_wrapper.urdf.xacro</xacroWrapperFileName>
|
||||
<controllersConfigFileName>openarm_controllers.yaml</controllersConfigFileName>
|
||||
<joints>
|
||||
<joint>
|
||||
<name>l_J1_v002__to__l_J2_v002</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>0.09289716518533317</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>0.0012062241015717492</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>-0.061900576071863</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
<joint>
|
||||
<name>l_J2_v002__to__l_J3_v003</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>0.09289716518533321</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>-0.02854377589842827</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>-0.017150576071863013</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
<joint>
|
||||
<name>l_J3_v003__to__l_J4_v002</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>0.031649514284448864</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>0.0012062241015718708</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>-0.01661414422754956</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
<joint>
|
||||
<name>l_J4_v002__to__l_J5_v003</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>-0.20983062047238518</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>0.033077014697707</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>-0.016614144227858844</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
<joint>
|
||||
<name>l_J5_v003__to__l_J6_v002</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>-0.08488103444256599</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>0.0022268460560923354</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>0.030965376793060356</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
<joint>
|
||||
<name>l_J6_v002__to__l_J7_v002</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>0.02795991840243387</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>-0.03426282248752859</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>0.07396277148947943</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
<joint>
|
||||
<name>l_J7_v002__to__l_J8_v002</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>0.033758514926782335</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>0.001187752615916666</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>0.05952028198168136</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
<joint>
|
||||
<name>l_J8_v002__to__l_right_jaw_v002</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>0.0</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>0.0</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>0.0</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
<joint>
|
||||
<name>l_J8_v002__to__l_left_jaw_v002</name>
|
||||
<jointSpecific>unset</jointSpecific>
|
||||
<jointRotationDirection>unset</jointRotationDirection>
|
||||
<jointRelTotalCenterOfMass_x>0.0</jointRelTotalCenterOfMass_x>
|
||||
<jointRelTotalCenterOfMass_y>0.0</jointRelTotalCenterOfMass_y>
|
||||
<jointRelTotalCenterOfMass_z>0.0</jointRelTotalCenterOfMass_z>
|
||||
</joint>
|
||||
</joints>
|
||||
</robotMeta>
|
||||
Loading…
Reference in New Issue
Block a user