Add two arm urdf

This commit is contained in:
Thomason Zhou 2025-03-10 10:46:20 +08:00
parent 102f1edc98
commit 1cdb995dce
38 changed files with 4501 additions and 0 deletions

View File

@ -0,0 +1,22 @@
cmake_minimum_required(VERSION 3.8)
project(openarm_two_arms)
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()

View 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_two_arms').find('openarm_two_arms'))
default_model_path = pkg_share / 'urdf/openarm_two_arms_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,
])

View 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_two_arms').find('openarm_two_arms'))
default_model_path = pkg_share / 'urdf/openarm_two_arms_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_two_arms'),
'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,
])

View 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_two_arms'
# 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_two_arms',
'-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

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

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

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

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

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

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

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View 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_two_arms</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>

View 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_pedestal_02_urdf_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

View File

@ -0,0 +1,583 @@
<?xml version="1.0" ?>
<robot name="openarm_two_arms">
<!--Generated by RobotCAD, a ROS Workbench for FreeCAD (https://github.com/drfenixion/freecad.robotcad)-->
<link name="l_pedestal_02_urdf_v002">
<visual>
<!--pedestal_cad/Part__Feature.-->
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_pedestal_02_urdfv1_o8iqfl.dae"/>
</geometry>
</visual>
<collision>
<!--bounding_pedestal/col_pedestal_02_urdf_v1__BoundBox.-->
<origin rpy="0 0 0" xyz="0.0 0.0 0.489"/>
<geometry>
<box size="0.18 0.06 0.978000000000004"/>
</geometry>
</collision>
<inertial>
<mass value="4.850309883435878"/>
<origin rpy="0 0 0" xyz="0.0 -0.0180451 0.410247"/>
<inertia ixx="0.6232810322991779" ixy="7.916644206828546e-12" ixz="-1.094192214704477e-11" iyy="0.6253514495087933" iyz="-0.03342233248166168" izz="0.02000994027356939"/>
</inertial>
</link>
<link name="l_J1_v002">
<visual>
<!--J1 v002/Part__Feature001.-->
<origin rpy="0 0 0" xyz="0.0 0.0 -0.0007"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j1v1_fj2ul1.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_link1__col_J1_v1__BoundBox/col_J1_v1__BoundBox.-->
<origin rpy="0 0 0" xyz="0.0 0.0 0.0289"/>
<geometry>
<box size="0.11 0.073 0.0592"/>
</geometry>
</collision>
<inertial>
<mass value="0.5769283920617254"/>
<origin rpy="0 0 0" xyz="0.0 2.52845e-05 0.0229621"/>
<inertia ixx="0.00034035167574060775" ixy="-2.623557985991217e-18" ixz="-6.093726095527621e-18" iyy="0.0004300058300010205" iyz="-5.09829482074806e-07" izz="0.0004802171432001996"/>
</inertial>
</link>
<link name="l_J2_v002">
<visual>
<!--J2 v002/Part__Feature002.-->
<origin rpy="0 0 0" xyz="0.0 0.0 -0.05395"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j2v1_xzm1cu.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_link2__col_J2_v1__BoundBox/col_J2_v1__BoundBox.-->
<origin rpy="0 0 0" xyz="0.0 0.0 0.0371236"/>
<geometry>
<box size="0.0590000000149012 0.08200000000000002 0.0742471498637348"/>
</geometry>
</collision>
<inertial>
<mass value="0.16257504134917358"/>
<origin rpy="0 0 0" xyz="-0.000225878 -0.00183836 0.0278368"/>
<inertia ixx="0.00023903110213294374" ixy="-7.551692921096027e-08" ixz="-1.1282723362433474e-06" iyy="0.00010490798314778774" iyz="5.9079627839725245e-06" izz="0.00019737368685935776"/>
</inertial>
</link>
<link name="l_J3_v003">
<visual>
<!--J3 v003/Part__Feature003.-->
<origin rpy="1.570796326794897 0 0" xyz="0.0 0.0987 0.02975"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j3v2_5nirfo.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_link3__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.08989101803441879 0.06999999999999983 0.05903276947803012"/>
</geometry>
</collision>
<inertial>
<mass value="0.4201676469910031"/>
<origin rpy="1.5707963267948968 0 0" xyz="-0.00688022 0.0 0.0282752"/>
<inertia ixx="0.00020256001126230057" ixy="6.004247875311213e-06" ixz="1.3304903057525575e-06" iyy="0.0002970624991387495" iyz="5.980157765704868e-07" izz="0.00032889994351244413"/>
</inertial>
</link>
<link name="l_J4_v002">
<visual>
<!--J4 v002/Part__Feature004.-->
<origin rpy="-3.1415926535888543 -1.5620381439005742 0" xyz="-0.0986962 0.0 0.0621144"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j4v1_u1e2xn.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_link4__col_J4_v1__BoundBox/col_J4_v1__BoundBox.-->
<origin rpy="-3.14159265358886 -1.5620381439005742 0" xyz="0.000266276 -0.0125642 -0.132604"/>
<geometry>
<box size="0.27584673777150337 0.08211429171582063 0.07186573179325861"/>
</geometry>
</collision>
<inertial>
<mass value="0.819475539373447"/>
<origin rpy="-3.14159265358886 -1.5620381439005742 0" xyz="0.000781326 -0.0019461 -0.132411"/>
<inertia ixx="0.00044078452033976287" ixy="6.020023694043618e-05" ixz="0.00014637459261941218" iyy="0.009208791480530413" iyz="1.5469710436444469e-06" izz="0.009170539316023695"/>
</inertial>
</link>
<link name="l_J5_v003">
<visual>
<!--J5 v003/Part__Feature005.-->
<origin rpy="0 -0.008758182894317394 0" xyz="0.303864 0.0 -0.128451"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j5v2_ckk9an.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_link5__col_J5_v2__BoundBox/col_J5_v2__BoundBox.-->
<origin rpy="0 -0.008758182894316818 0" xyz="-0.0542814 0.00265291 -0.0302022"/>
<geometry>
<box size="0.16827213220625828 0.06430555048399171 0.08257859967140947"/>
</geometry>
</collision>
<inertial>
<mass value="0.4086748254352304"/>
<origin rpy="0 -0.008758182894316905 0" xyz="-0.0831891 0.00251789 -0.0290107"/>
<inertia ixx="0.00031417157425298747" ixy="-1.1391566029536723e-05" ixz="-1.883474090056124e-05" iyy="0.001221711435313989" iyz="1.46725418421127e-06" izz="0.0010755135067660488"/>
</inertial>
</link>
<link name="l_J6_right_wrist">
<visual>
<!--J6 right_wrist/Part__Feature006.-->
<origin rpy="-2.1276679791326423 -1.5542266826921929 0" xyz="-0.0485412 -0.0860404 0.437784"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j6v1_mg9rps.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_link6__col_J6_v1__BoundBox/col_J6_v1__BoundBox.-->
<origin rpy="-2.127667979132636 -1.5542266826921927 0" xyz="-0.00260794 -0.00312921 -0.0652641"/>
<geometry>
<box size="0.13114353004704765 0.05953478325301745 0.08817196195081879"/>
</geometry>
</collision>
<inertial>
<mass value="0.3448471958049249"/>
<origin rpy="-2.127667979132636 -1.5542266826921927 0" xyz="-0.00898536 -0.0135065 -0.0438611"/>
<inertia ixx="0.00019355980999748924" ixy="-1.0061665815148114e-06" ixz="-3.9096495715032716e-05" iyy="0.0003486912031865755" iyz="6.088060315273385e-06" izz="0.00028774975153756256"/>
</inertial>
</link>
<link name="l_J7_v002">
<visual>
<!--J7 right v002/Part__Feature007.-->
<origin rpy="0 -0.008758182894510852 0" xyz="0.558839 -0.00358671 -0.0631962"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j7v1_9yzky6.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_link7__col_J7_v1__BoundBox/col_J7_v1__BoundBox.-->
<origin rpy="0 -0.008758182894511114 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.008758182894511043 0" xyz="5.99432e-05 0.0041433 0.0354274"/>
<inertia ixx="0.00010424153315648891" ixy="2.735265831785291e-07" ixz="-1.0662322382945994e-07" iyy="0.00012313550743283462" iyz="-8.604996754782856e-08" izz="9.221319958512582e-05"/>
</inertial>
</link>
<link name="l_J8_v002">
<visual>
<!--J8 v002/Part__Feature008.-->
<origin rpy="1.5709195259578714 -0.014065461951077267 0" xyz="0.557948 0.103587 0.019724"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j8v1_dka5zq.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_link8__col_J8_v1__BoundBox/col_J8_v1__BoundBox.-->
<origin rpy="1.5709195259578714 -0.01406546195107726 0" xyz="-0.042694 -0.000543176 0.0110286"/>
<geometry>
<box size="0.13038799671743653 0.05180887692688926 0.1601236763440867"/>
</geometry>
</collision>
<inertial>
<mass value="0.31261452743802165"/>
<origin rpy="1.5709195259578714 -0.01406546195107726 0" xyz="-0.0607602 -0.000341696 0.00876618"/>
<inertia ixx="0.00023465661366788053" ixy="7.609048882006294e-05" ixz="3.088694121124684e-07" iyy="0.0005065459365215377" iyz="1.9022818028658623e-07" izz="0.0003737029250058136"/>
</inertial>
</link>
<link name="l_left_jaw_v002">
<visual>
<!--left_jaw v002/Part__Feature009.-->
<origin rpy="0 -0.008758182894469432 0" xyz="0.665265 -0.00286677 -0.0209282"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_left_jawv1_6yxtlc.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_left_jaw__col_left_jaw_v1_col_obj/col_left_jaw_v1_col_obj.-->
<origin rpy="0 -0.0087581828944695 0" xyz="0.665265 -0.00286677 -0.0209282"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_col_left_jaw_v1_col_obj_wr4fju.dae"/>
</geometry>
</collision>
<inertial>
<mass value="0.04297897856394934"/>
<origin rpy="0 -0.008758182894469429 0" xyz="-0.0187138 0.00217075 0.0159499"/>
<inertia ixx="1.1771768742932353e-05" ixy="-2.389928166589898e-06" ixz="3.999292204534159e-06" iyy="2.3837354480794824e-05" iyz="3.494431877242991e-07" izz="3.0474590214086944e-05"/>
</inertial>
</link>
<link name="l_right_jaw_v002">
<visual>
<!--right_jaw v002/Part__Feature010.-->
<origin rpy="0 -0.008758182898001485 0" xyz="0.665265 -0.00286677 -0.175928"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_right_jawv1_0fmgsg.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__right_right_jaw__col_right_jaw_v1_col_obj/col_right_jaw_v1_col_obj.-->
<origin rpy="0 -0.008758182898001553 0" xyz="0.665265 -0.00286677 -0.175928"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_col_right_jaw_v1_col_obj_9qatoq.dae"/>
</geometry>
</collision>
<inertial>
<mass value="0.042981665301134515"/>
<origin rpy="0 -0.00875818289800148 0" xyz="-0.0187844 -0.00272415 -0.0159503"/>
<inertia ixx="1.1561293087621594e-05" ixy="2.537718468008212e-06" ixz="-3.6591812257702003e-06" iyy="2.370165527871047e-05" iyz="4.848038235889027e-07" izz="3.039652946542647e-05"/>
</inertial>
</link>
<link name="l_base_link001">
<visual>
<!--base_link001/Part__Feature018.-->
<origin rpy="3.1415926535897927 0 0" xyz="0.0 0.0 0.0007"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_base_link_int1ku.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_link1__col_base_link__BoundBox/col_base_link__BoundBox.-->
<origin rpy="3.1415926535897927 0 0" xyz="0.0 0.0 -0.0289"/>
<geometry>
<box size="0.11 0.073 0.0592"/>
</geometry>
</collision>
<inertial>
<mass value="0.5769283920617254"/>
<origin rpy="3.1415926535897927 0 0" xyz="0.0 -2.52845e-05 -0.0229621"/>
<inertia ixx="0.00034035167574060564" ixy="-2.642617350904103e-18" ixz="-6.153994863823447e-18" iyy="0.00043000583000101937" iyz="-5.098294820747963e-07" izz="0.0004802171432001997"/>
</inertial>
</link>
<link name="l_J2_v003">
<visual>
<!--J2 v003/Part__Feature019.-->
<origin rpy="0 0 0" xyz="0.0 0.0 -0.05395"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j2v2_gscnlc.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_link2__col_J2_v2__BoundBox/col_J2_v2__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.16257504134917358"/>
<origin rpy="0 0 0" xyz="0.000225878 0.00183836 0.0278368"/>
<inertia ixx="0.00023903110213294341" ixy="-7.551692921099009e-08" ixz="1.128272336243354e-06" iyy="0.00010490798314778747" iyz="-5.907962783972549e-06" izz="0.00019737368685935768"/>
</inertial>
</link>
<link name="l_J3_v004">
<visual>
<!--J3 v004/Part__Feature020.-->
<origin rpy="1.5707963267948963 0 0" xyz="0.0 0.0987 -0.02975"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j3v005_2vn1gz.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_link3__col_J3_v003__BoundBox/col_J3_v003__BoundBox.-->
<origin rpy="1.5707963267948961 0 0" xyz="0.0164466 -0.00044972 -0.02975"/>
<geometry>
<box size="0.0898910738785183 0.06999999999999985 0.05902136986134156"/>
</geometry>
</collision>
<inertial>
<mass value="0.42038984024444975"/>
<origin rpy="1.5707963267948961 0 0" xyz="0.00686697 0.0 -0.0282662"/>
<inertia ixx="0.00020276573635381913" ixy="5.353124426981602e-06" ixz="-1.2309719752249493e-06" iyy="0.0002972732820435537" iyz="-4.96881827890621e-07" izz="0.00032917425408263227"/>
</inertial>
</link>
<link name="l_J4_v003">
<visual>
<!--J4 v003/Part__Feature021.-->
<origin rpy="0 -1.5620381439005744 0" xyz="0.0986962 0.0 -0.0621144"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j4v2_tzaxwp.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_link4__col_J4_v2__BoundBox/col_J4_v2__BoundBox.-->
<origin rpy="0 -1.5620381439005742 0" xyz="-0.000261608 0.0125645 0.132604"/>
<geometry>
<box size="0.27584679830769426 0.08211367789676165 0.07185639591248483"/>
</geometry>
</collision>
<inertial>
<mass value="0.8196402299327217"/>
<origin rpy="0 -1.5620381439005742 0" xyz="0.000770085 0.00195314 0.132431"/>
<inertia ixx="0.0004386639666889925" ixy="-6.080385269207883e-05" ixz="-7.68782221495183e-06" iyy="0.009210551548719602" iyz="-2.7878027653992583e-06" izz="0.00917471125137894"/>
</inertial>
</link>
<link name="l_J5_v004">
<visual>
<!--J5 v004/Part__Feature022.-->
<origin rpy="0 0.008758182894352118 0" xyz="-0.303864 0.0 -0.0689415"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j5v005_didwyo.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_link5__col_J5_v003__BoundBox/col_J5_v003__BoundBox.-->
<origin rpy="0 0.008758182894352025 0" xyz="0.0539601 0.00265291 0.02931"/>
<geometry>
<box size="0.1676296341613413 0.06430555048399128 0.08257859967140607"/>
</geometry>
</collision>
<inertial>
<mass value="0.40867482543516"/>
<origin rpy="0 0.008758182894352111 0" xyz="0.0831878 0.00261036 0.0290107"/>
<inertia ixx="0.0003150152720598943" ixy="9.43251788631792e-06" ixz="-3.2155516327367085e-05" iyy="0.0012216556466064033" iyz="-1.3129824233752054e-06" izz="0.0010745148965932514"/>
</inertial>
</link>
<link name="l_J6_Left_v004">
<visual>
<!--J6_Left v004/Part__Feature023.-->
<origin rpy="1.013924674457276 -1.5542266826921816 0" xyz="0.0485412 0.0860404 -0.437784"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j6_leftv005_f8km11.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_link6__col_J6_Left_v003__BoundBox/col_J6_Left_v003__BoundBox.-->
<origin rpy="1.0139246744572885 -1.5542266826921818 0" xyz="0.00260793 0.0031292 0.0652641"/>
<geometry>
<box size="0.1311435300470597 0.059534783253118076 0.08817198167731641"/>
</geometry>
</collision>
<inertial>
<mass value="0.34433331594607314"/>
<origin rpy="1.0139246744572885 -1.5542266826921818 0" xyz="0.00885434 0.0135457 0.0439"/>
<inertia ixx="0.00019315823092440877" ixy="5.759960919860601e-07" ixz="3.928258332297235e-05" iyy="0.0003489300226703872" iyz="5.3866492677574926e-06" izz="0.00028834862800848534"/>
</inertial>
</link>
<link name="l_J7_Left_v004">
<visual>
<!--J7_Left v004/Part__Feature024.-->
<origin rpy="0 0.008758182894514984 0" xyz="-0.558839 -0.00358671 -0.0632962"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j7_leftv005_8ohvh2.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_link7__col_J7_Left_v003__BoundBox/col_J7_Left_v003__BoundBox.-->
<origin rpy="0 0.008758182894515429 0" xyz="0.000300274 0.00228799 0.0340015"/>
<geometry>
<box size="0.05859778949354245 0.04469786051400639 0.08267618289454949"/>
</geometry>
</collision>
<inertial>
<mass value="0.2782996911629702"/>
<origin rpy="0 0.008758182894515356 0" xyz="-8.771e-05 0.00414153 0.035427"/>
<inertia ixx="0.0001043910985422628" ixy="-4.0026347675757406e-07" ixz="1.0837675080533579e-07" iyy="0.00012327455405278424" iyz="-8.765964772332956e-08" izz="9.221516114206396e-05"/>
</inertial>
</link>
<link name="l_J8_v003">
<visual>
<!--J8 v003/Part__Feature025.-->
<origin rpy="1.570978323892347 0.02077671332575817 0" xyz="-0.557906 0.103687 0.0234745"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_j8v004_upij9o.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_link8__col_J8_v002__BoundBox/col_J8_v002__BoundBox.-->
<origin rpy="1.570978323892347 0.02077671332575817 0" xyz="0.0427524 -0.001079 0.0109925"/>
<geometry>
<box size="0.1302624002952524 0.052571684700854236 0.1601213740691585"/>
</geometry>
</collision>
<inertial>
<mass value="0.3126145274380216"/>
<origin rpy="1.570978323892347 0.020776713325758166 0" xyz="0.0607568 -0.000722767 0.00876618"/>
<inertia ixx="0.00023572179169416507" ixy="-7.789320420216956e-05" ixz="-2.111587909476847e-06" iyy="0.0005055124180887915" iyz="-1.5449610531695725e-06" izz="0.0003736712654123388"/>
</inertial>
</link>
<link name="l_right_jaw_v004">
<visual>
<!--right_jaw v004/Part__Feature027.-->
<origin rpy="3.141592653589774 0.008758182895214187 0" xyz="-0.662074 0.00352188 0.18819"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_right_jawv003_5v80f0.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_right_jaw__col_right_jaw_v002_col_obj/col_right_jaw_v002_col_obj.-->
<origin rpy="3.141592653589774 0.00875818289521427 0" xyz="-0.662074 0.00352188 0.18819"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_col_right_jaw_v002_col_obj_ln0sqy.dae"/>
</geometry>
</collision>
<inertial>
<mass value="0.042981665301134495"/>
<origin rpy="3.141592653589774 0.008758182895214186 0" xyz="0.0189546 -0.00337688 0.0156207"/>
<inertia ixx="1.1399290012366144e-05" ixy="2.1100277903741056e-06" ixz="3.6731039885335394e-06" iyy="2.38634020443188e-05" iyz="-3.5503706410916235e-07" izz="3.0396785775073194e-05"/>
</inertial>
</link>
<link name="l_left_jaw_v004">
<visual>
<!--left_jaw v004/Part__Feature026.-->
<origin rpy="3.141592653589789 0.00875818289443215 0" xyz="-0.664789 0.00352188 0.0332134"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_left_jawv003_9ggcxr.dae"/>
</geometry>
</visual>
<collision>
<!--bound_obj__left_left_jaw__col_left_jaw_v002_col_obj/col_left_jaw_v002_col_obj.-->
<origin rpy="3.141592653589789 0.008758182894432077 0" xyz="-0.664789 0.00352188 0.0332134"/>
<geometry>
<mesh filename="package://openarm_two_arms/meshes/full_upper_col_left_jaw_v002_col_obj_he8av6.dae"/>
</geometry>
</collision>
<inertial>
<mass value="0.04297897856394934"/>
<origin rpy="3.141592653589789 0.008758182894432148 0" xyz="0.0184958 0.00151751 -0.0162764"/>
<inertia ixx="1.195285836430737e-05" ixy="-2.8053920115195855e-06" ixz="-3.983934744055433e-06" iyy="2.3656009736974273e-05" iyz="-4.864815166189635e-07" izz="3.047484533653199e-05"/>
</inertial>
</link>
<joint name="right_fix1" type="fixed">
<parent link="l_pedestal_02_urdf_v002"/>
<child link="l_J1_v002"/>
<origin rpy="3.0144791747751833 -1.5707963267948324 0.12689401604101067" xyz="0.09 0.0 0.893"/>
</joint>
<joint name="right_rev1" type="revolute">
<parent link="l_J1_v002"/>
<child link="l_J2_v002"/>
<origin rpy="0 0 0" xyz="0.0 0.0 0.05325"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-2.0943951023931953" upper="2.0943951023931953" velocity="0.0"/>
</joint>
<joint name="right_rev2" type="revolute">
<parent link="l_J2_v002"/>
<child link="l_J3_v003"/>
<origin rpy="-1.5707963267948968 0 0" xyz="0.0 -0.02975 0.04475"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="0.0" upper="3.141592653589793" velocity="0.0"/>
</joint>
<joint name="right_rev3" type="revolute">
<parent link="l_J3_v003"/>
<child link="l_J4_v002"/>
<origin rpy="-1.5707963267949054 0 -1.562038143900564" xyz="-0.0612477 -0.000536432 0.02975"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-3.6651914291880923" upper="0.5235987755982988" velocity="0.0"/>
</joint>
<joint name="right_rev4" type="revolute">
<parent link="l_J4_v002"/>
<child link="l_J5_v003"/>
<origin rpy="-0.20701608758495998 -1.5707963267948566 -2.937419385117548" xyz="0.0297547 0.0 -0.24175"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-0.3490658503988659" upper="2.792526803190927" velocity="0.0"/>
</joint>
<joint name="right_rev5" type="revolute">
<parent link="l_J5_v003"/>
<child link="l_J6_right_wrist"/>
<origin rpy="1.5707963267948473 -0.5569332500492129 1.556730325338251" 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="right_rev6" type="revolute">
<parent link="l_J6_right_wrist"/>
<child link="l_J7_v002"/>
<origin rpy="-1.5707963268024898 -1.5567303253382425 -0.5569332500461536" 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="right_rev7" type="revolute">
<parent link="l_J7_v002"/>
<child link="l_J8_v002"/>
<origin rpy="-1.5707963267950005 -0.00875904933536772 -0.014066001454933467" 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="right_left_pris1" type="prismatic">
<parent link="l_J8_v002"/>
<child link="l_left_jaw_v002"/>
<origin rpy="1.570796326795101 -0.014066001454929162 0.00875904933542146" xyz="-0.1071 0.0768568 0.0132053"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="0.0" upper="0.045" velocity="0.0"/>
</joint>
<joint name="right_right_pris2" type="prismatic">
<parent link="l_J8_v002"/>
<child link="l_right_jaw_v002"/>
<origin rpy="1.570796326794883 -0.014066001454927403 0.008759049336290027" 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="right_left_pris1" multiplier="-1.0" offset="0.0"/>
</joint>
<joint name="left_fix1" type="fixed">
<parent link="l_pedestal_02_urdf_v002"/>
<child link="l_base_link001"/>
<origin rpy="3.0186531925068127 -1.5707963267948268 0.12293946108298068" xyz="-0.09 0.0 0.893"/>
</joint>
<joint name="left_rev1" type="revolute">
<parent link="l_base_link001"/>
<child link="l_J2_v003"/>
<origin rpy="-3.1415926535897922 0 -3.1415926535897927" xyz="0.0 0.0 -0.05325"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-2.0943951023931953" upper="2.0943951023931953" velocity="0.0"/>
</joint>
<joint name="left_rev2" type="revolute">
<parent link="l_J2_v003"/>
<child link="l_J3_v004"/>
<origin rpy="-1.570796326794897 0 0" xyz="0.0 0.02975 0.04475"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-3.141592653589793" upper="0.0" velocity="0.0"/>
</joint>
<joint name="left_rev3" type="revolute">
<parent link="l_J3_v004"/>
<child link="l_J4_v003"/>
<origin rpy="1.5707963267949063 0 1.5620381439005797" xyz="0.0612477 -0.000536432 -0.02975"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-3.6651914291880923" upper="0.5235987755982988" velocity="0.0"/>
</joint>
<joint name="left_rev4" type="revolute">
<parent link="l_J4_v003"/>
<child link="l_J5_v004"/>
<origin rpy="-3.0383286058327292 -1.5707963267948855 3.038328605832587" xyz="0.0297547 0.0 0.24175"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-2.792526803190927" upper="0.3490658503988659" velocity="0.0"/>
</joint>
<joint name="left_rev5" type="revolute">
<parent link="l_J5_v004"/>
<child link="l_J6_Left_v004"/>
<origin rpy="-1.5707963267949232 0.55693325005308 -1.5567303253382712" 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="left_rev6" type="revolute">
<parent link="l_J6_Left_v004"/>
<child link="l_J7_Left_v004"/>
<origin rpy="1.5707963267870033 -1.5567303253382319 -0.5569332500457352" 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="left_rev7" type="revolute">
<parent link="l_J7_Left_v004"/>
<child link="l_J8_v003"/>
<origin rpy="-1.5707963267949518 0.008760073613296379 0.020777510312798276" xyz="0.000320989 -0.0154467 0.0355"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-0.9599310885968813" upper="0.9599310885968813" velocity="0.0"/>
</joint>
<joint name="left_left_pris1" type="prismatic">
<parent link="l_J8_v003"/>
<child link="l_left_jaw_v004"/>
<origin rpy="1.5707963267947693 0.020777510312786344 -0.008760073612368274" xyz="0.10571 -0.0786733 0.0132053"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="-0.045" upper="0.0" velocity="0.0"/>
</joint>
<joint name="left_right_pris2" type="prismatic">
<parent link="l_J8_v003"/>
<child link="l_right_jaw_v004"/>
<origin rpy="1.5707963267948966 0.020777510312787576 -0.008760073613237863" xyz="0.1071 0.0763207 0.0132053"/>
<axis xyz="0 0 1"/>
<limit effort="0.0" lower="0.0" upper="0.045" velocity="0.0"/>
<mimic joint="left_left_pris1" multiplier="-1.0" offset="0.0"/>
</joint>
</robot>

View File

@ -0,0 +1,5 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
</robot>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="openarm_two_arms">
<xacro:include filename="openarm_two_arms.urdf"/>
<xacro:include filename="openarm_two_arms_sensors.urdf.xacro"/>
</robot>

View File

@ -0,0 +1,428 @@
<?xml version="1.0" ?>
<sdf version="1.6">
<world name="shapes">
<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>
<!-- Cars, all of them have label 40 -->
<include>
<name>Car1</name>
<pose>-2 -2 0 0 0 0</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Hatchback blue
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>40</label>
</plugin>
</include>
<include>
<name>Car2</name>
<pose>-3 -5 0 0 0 0</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Pickup
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>40</label>
</plugin>
</include>
<include>
<name>Car3</name>
<pose>-4 3 0 0 0 -1.57</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/SUV
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>40</label>
</plugin>
</include>
<!-- Tree, all of them have label 30 -->
<include>
<name>tree1</name>
<pose>-2 5 0 0 0 0</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Pine Tree
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>30</label>
</plugin>
</include>
<include>
<name>tree2</name>
<pose>-7 2 0 0 0 0</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Pine Tree
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>30</label>
</plugin>
</include>
<include>
<name>tree3</name>
<pose>-7 -4 0 0 0 0</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Pine Tree
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>30</label>
</plugin>
</include>
<!-- Home, we didn't annotate (label) it, so it will be considered as background -->
<include>
<name>home</name>
<pose>-15 0 0 0 0 1.57</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Collapsed House
</uri>
</include>
<!-- Cones, all with label 20-->
<include>
<name>cone1</name>
<pose>0 1 0 0 0 1.570796</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Construction Cone
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>20</label>
</plugin>
</include>
<include>
<name>cone2</name>
<pose>0 4 0 0 0 1.570796</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Construction Cone
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>20</label>
</plugin>
</include>
<include>
<name>cone3</name>
<pose>2 -2 0 0 0.0 1.57</pose>
<uri>
https://fuel.gazebosim.org/1.0/OpenRobotics/models/Construction Cone
</uri>
<plugin filename="gz-sim-label-system" name="gz::sim::systems::Label">
<label>20</label>
</plugin>
</include>
</world>
</sdf>

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

View File

@ -0,0 +1,3 @@
controller_manager:
ros__parameters:
update_rate: 250

View File

@ -0,0 +1,174 @@
<?xml version="1.0" ?>
<robotMeta>
<robotName>openarm_two_arms</robotName>
<urdfFileName>openarm_two_arms.urdf</urdfFileName>
<packageName>openarm_two_arms</packageName>
<meshesDir>meshes </meshesDir>
<robotType>nonspecific</robotType>
<generateCodeForRosVersion>jazzy</generateCodeForRosVersion>
<rootLinkName>l_pedestal_02_urdf_v002</rootLinkName>
<xacroWrapperFileName>openarm_two_arms_wrapper.urdf.xacro</xacroWrapperFileName>
<controllersConfigFileName>openarm_two_arms_controllers.yaml</controllersConfigFileName>
<joints>
<joint>
<name>l_pedestal_02_urdf_v002__to__l_J1_v002</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.08985200228416441</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.008374721740674768</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.3536408675879255</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J1_v002__to__l_J2_v002</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.14310200228416442</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.008374721740674426</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.3536408675879219</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J2_v002__to__l_J3_v003</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.18785200228416438</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.03812472174067446</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.3536408675879187</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J3_v003__to__l_J4_v002</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.1883884341284738</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.008374721740673765</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.2923932166870344</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J4_v002__to__l_J5_v003</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.22025922472459597</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.008374721740355901</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.050913081930198584</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J5_v003__to__l_J6_right_wrist</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.19167872532322497</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.0064906429748443194</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.08327912378977964</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J6_right_wrist__to__l_J7_v002</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.15724014645135684</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.004788009645123903</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.20462341836146958</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J7_v002__to__l_J8_v002</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.19274068817153964</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.020236481260391712</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.20452981106538665</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J8_v002__to__l_left_jaw_v002</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.11588209690508</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.005535639545575529</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.31143348516325103</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J8_v002__to__l_right_jaw_v002</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>0.2708761523021711</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.005536094754475288</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.3100436226578966</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_pedestal_02_urdf_v002__to__l_base_link001</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.09014799771583559</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.008374721740674999</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.35364086758792995</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_base_link001__to__l_J2_v003</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.14339799771583558</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.008374721740675389</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.3536408675879335</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J2_v003__to__l_J3_v004</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.1881479977158356</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>-0.021375278259324573</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.353640867587937</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J3_v004__to__l_J4_v003</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.1886844295601532</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.008374721740675183</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.2923932166870525</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J4_v003__to__l_J5_v004</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.16104816625753005</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.008374721740337383</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>0.05039189494258471</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J5_v004__to__l_J6_Left_v004</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.19197472075495053</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.006490642974852389</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.08327912378976009</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J6_Left_v004__to__l_J7_Left_v004</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.15753614188309684</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.004788009644679908</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.20462341836144668</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J7_Left_v004__to__l_J8_v003</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.1930375916126833</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.02023467484404285</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.2046334839704481</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J8_v003__to__l_right_jaw_v004</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.1167140742748525</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.004821133967191955</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.3114360267081933</jointRelTotalCenterOfMass_z>
</joint>
<joint>
<name>l_J8_v003__to__l_left_jaw_v004</name>
<jointSpecific>unset</jointSpecific>
<jointRotationDirection>unset</jointRotationDirection>
<jointRelTotalCenterOfMass_x>-0.27170812973763375</jointRelTotalCenterOfMass_x>
<jointRelTotalCenterOfMass_y>0.004821803052998609</jointRelTotalCenterOfMass_y>
<jointRelTotalCenterOfMass_z>-0.31004632670935167</jointRelTotalCenterOfMass_z>
</joint>
</joints>
</robotMeta>