update bullet so it actually works

Moved the addSourceDirectory for physics/Bullet into the Engine/Source/CMakeLists.txt file that way it can actually appear where we expect it to in the solution explorer.
This commit is contained in:
marauder2k7 2026-06-03 15:08:51 +01:00
parent c7be48130a
commit 13fa178cf6
5986 changed files with 1811270 additions and 453803 deletions

View file

@ -0,0 +1,65 @@
<?xml version="1.0"?>
<!--https://valerolab.org/-->
<!--
Code used for PID control of an inverted pendulum actuated by strings.
-->
<robot name="myfirst">
<material name="blue">
<color rgba="0 0 0.8 1"/>
</material>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
<material name="other">
<color rgba="1 0 0.8 1"/>
</material>
<velocity name="vel">
<speed spd="50"/>
</velocity>
<link name="Base">
<visual>
<geometry>
<box size="0.3 0.3 1.5"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<box size="0.3 0.3 1.5"/>
</geometry>
</collision>
<inertial>
<mass value="100"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<link name="pulley1">
<visual>
<geometry>
<cylinder length=".1" radius=".5"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".5"/>
</geometry>
</collision>
<inertial>
<mass value="2"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="Base_pulley1" type="revolute">
<axis xyz="0 0 1"/>
<parent link="Base"/>
<child link="pulley1"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="-1.57075 0 0" xyz="0 .35 .15"/>
</joint>
<!---->
</robot>

View file

@ -0,0 +1,415 @@
<?xml version="1.0"?>
<!--https://valerolab.org/-->
<!--
Code used for PID control of an inverted pendulum actuated by strings.
-->
<robot name="myfirst">
<material name="blue">
<color rgba="0 0 0.8 1"/>
</material>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
<material name="other">
<color rgba="1 0 0.8 1"/>
</material>
<velocity name="vel">
<speed spd="50"/>
</velocity>
<link name="Base">
<visual>
<geometry>
<box size="0.3 0.3 1.5"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<box size="0.3 0.3 1.5"/>
</geometry>
</collision>
<inertial>
<mass value="100"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<link name="pulley1">
<visual>
<geometry>
<cylinder length=".1" radius=".5"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".5"/>
</geometry>
</collision>
<inertial>
<mass value="2"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="Base_pulley1" type="revolute">
<axis xyz="0 0 1"/>
<parent link="Base"/>
<child link="pulley1"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="-1.57075 1.57075 0" xyz="0 .35 .15"/>
</joint>
<link name="tendon1_1">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="pulley1_tendon1_1" type="revolute">
<axis xyz="0 0 1"/>
<parent link="pulley1"/>
<child link="tendon1_1"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 3.1416" xyz="0 .55 0"/>
</joint>
<link name="tendon1_2">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_1_tendon1_2" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_1"/>
<child link="tendon1_2"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_3">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_2_tendon1_3" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_2"/>
<child link="tendon1_3"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_4">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_3_tendon1_4" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_3"/>
<child link="tendon1_4"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 1" xyz=".2 0 0"/>
</joint>
<link name="tendon1_5">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_4_tendon1_5" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_4"/>
<child link="tendon1_5"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 1" xyz=".2 0 0"/>
</joint>
<link name="tendon1_6">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_5_tendon1_6" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_5"/>
<child link="tendon1_6"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_7">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_6_tendon1_7" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_6"/>
<child link="tendon1_7"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_8">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_7_tendon1_8" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_7"/>
<child link="tendon1_8"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_9">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_8_tendon1_9" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_8"/>
<child link="tendon1_9"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_10">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_9_tendon1_10" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_9"/>
<child link="tendon1_10"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_11">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_10_tendon1_11" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_10"/>
<child link="tendon1_11"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_12">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_11_tendon1_12" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_11"/>
<child link="tendon1_12"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_13">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_12_tendon1_13" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_12"/>
<child link="tendon1_13"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
<link name="tendon1_14">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_13_tendon1_14" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_13"/>
<child link="tendon1_14"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz=".2 0 0"/>
</joint>
</robot>

View file

@ -0,0 +1,15 @@
URDF files in this directory were created by Erwin Coumans
Check the subdirectories for various license files.
Bullet Continuous Collision Detection and Physics Library
http://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

View file

@ -0,0 +1,19 @@
<!--
This file and the .stl mesh files referenced from it have been derived by Roboti LLC from the model of the Modular Prosthetic Limb developed by The Johns Hopkins University / Applied Physics Laboratory. The modifications are as follows: the original meshes have been replaced with their convex hulls; the original URDF model has been converted to the MJCF format and a number of MJCF-specific fields have been added.
The Johns Hopkins University / Applied Physics Laboratory has given Roboti LLC permission to distribute the modified model under the following license:
=========================
(C) 2013 The Johns Hopkins University / Applied Physics Laboratory All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
========================
The modifications made by Roboti LLC are also licensed under the Apache License version 2.0.
-->

View file

@ -0,0 +1,473 @@
<mujoco model="MPL">
<!--
This file and the .stl mesh files referenced from it have been derived by Roboti LLC from the model of the Modular Prosthetic Limb developed by The Johns Hopkins University / Applied Physics Laboratory. The modifications are as follows: the original meshes have been replaced with their convex hulls; the original URDF model has been converted to the MJCF format and a number of MJCF-specific fields have been added.
The Johns Hopkins University / Applied Physics Laboratory has given Roboti LLC permission to distribute the modified model under the following license:
=========================
(C) 2013 The Johns Hopkins University / Applied Physics Laboratory All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
========================
The modifications made by Roboti LLC are also licensed under the Apache License version 2.0.
-->
<compiler angle="radian" meshdir="mesh/" texturedir="texture/"/>
<option timestep="0.002" iterations="50" apirate="50"/>
<size njmax="600" nconmax="150" nstack="300000"/>
<default>
<default class="MPL">
<geom material="MatMesh" contype="1" conaffinity="1" condim="4" margin="0.001"/>
<joint limited="true" damping="0.2" armature=".01"/>
<site material="MatTouch" type="ellipsoid" group="3"/>
<position ctrllimited="true" kp="10"/>
</default>
<default class="IMU">
<site material="MatIMU" type="box" group="4"/>
</default>
<default class="free">
<joint type="free" damping="0" armature="0" limited="false"/>
</default>
</default>
<statistic extent="1" center="0 -0.2 0.2"/>
<visual>
<quality shadowsize="2048"/>
<map fogstart="6" fogend="10"/>
<headlight diffuse=".6 .6 .6" specular="0 0 0"/>
</visual>
<asset>
<mesh name="index0" file="index0_collision.stl"/>
<mesh name="index1" file="index1_collision.stl"/>
<mesh name="index2" file="index2_collision.stl"/>
<mesh name="index3" file="index3_collision.stl"/>
<mesh name="middle0" file="middle0_collision.stl"/>
<mesh name="middle1" file="middle1_collision.stl"/>
<mesh name="middle2" file="middle2_collision.stl"/>
<mesh name="middle3" file="middle3_collision.stl"/>
<mesh name="palm" file="palm.stl"/>
<mesh name="pinky0" file="pinky0_collision.stl"/>
<mesh name="pinky1" file="pinky1_collision.stl"/>
<mesh name="pinky2" file="pinky2_collision.stl"/>
<mesh name="pinky3" file="pinky3_collision.stl"/>
<mesh name="ring0" file="ring0_collision.stl"/>
<mesh name="ring1" file="ring1_collision.stl"/>
<mesh name="ring2" file="ring2_collision.stl"/>
<mesh name="ring3" file="ring3_collision.stl"/>
<mesh name="thumb0" file="thumb0_collision.stl"/>
<mesh name="thumb1" file="thumb1_collision.stl"/>
<mesh name="thumb2" file="thumb2_collision.stl"/>
<mesh name="thumb3" file="thumb3_collision.stl"/>
<mesh name="wristx" file="wristx_collision.stl"/>
<mesh name="wristy" file="wristy_collision.stl"/>
<mesh name="wristz" file="wristz_collision.stl"/>
<texture type="skybox" builtin="gradient" rgb1=".4 .6 .8" rgb2="0 0 0"
width="100" height="100"/>
<texture name="groundplane" type="2d" builtin="checker" rgb1=".2 .3 .4" rgb2=".1 .2 .3"
width="100" height="100"/>
<texture name="skin" type="cube" file="skin.png"/>
<texture name="marble2d" type="2d" file="marble.png"/>
<texture name="marblecube" type="cube" file="marble.png"/>
<material name="groundplane" texture="groundplane" texrepeat="10 10"/>
<material name="table2d" texture="marble2d" reflectance="0.3" rgba=".8 .8 .8 1"/>
<material name="tablecube" texture="marblecube" rgba=".8 .8 .8 1"/>
<material name="MatTouch" rgba=".3 .9 .3 .3"/>
<material name="MatIMU" rgba=".1 .1 .9 1"/>
<material name="MatMesh" texture="skin"/>
</asset>
<contact>
<exclude body1="wristz" body2="wristy"/>
<exclude body1="wristx" body2="thumb0"/>
<exclude body1="palm" body2="thumb1"/>
<exclude body1="palm" body2="index1"/>
<exclude body1="palm" body2="middle1"/>
<exclude body1="palm" body2="ring1"/>
<exclude body1="palm" body2="pinky1"/>
</contact>
<worldbody>
<!-- ======= ROBOT ======= -->
<body childclass="MPL" name="forearm" pos="0 -0.35 0.2" axisangle="0 0 1 3.141592">
<geom type="cylinder" size="0.02 0.01" zaxis="0 1 0"/>
<body name="wristy" pos="0 0 0">
<inertial pos="-7.08369e-005 -0.0217787 -0.000286168" quat="0.707488 0.00581744 -0.0107421 0.70662" mass="0.0272932" diaginertia="2.46813e-005 1.77029e-005 1.71079e-005" />
<geom type="mesh" mesh="wristy"/>
<joint name="wrist_PRO" type="hinge" damping="0.4" pos="0 0 0" axis="0 1 0" range="-1.57 1.57"/>
<body name="wristx" pos="-3.36826e-005 -0.0476452 0.00203763">
<inertial pos="0.00139174 -0.00975189 -0.00252668" quat="-0.0729226 0.705959 0.0352732 0.703605" mass="0.010691" diaginertia="5.04455e-006 4.25035e-006 3.25677e-006" />
<joint name="wrist_UDEV" damping="0.4" type="hinge" pos="0 0 0" axis="0 0 -1" range="-0.261 0.785"/>
<geom type="mesh" mesh="wristx"/>
<body name="wristz" pos="0.0001872 -0.03 -0.002094">
<inertial pos="0.000579016 -0.00125952 0.000455968" quat="0.527723 0.475346 0.521597 0.472749" mass="0.00602247" diaginertia="1.58133e-006 1.43102e-006 1.26861e-006" />
<joint name="wrist_FLEX" damping="0.4" type="hinge" pos="0 0 0" axis="1 0 0" range="-1.04 1.04"/>
<geom type="mesh" mesh="wristz"/>
<!-- ======= PALM ======= -->
<body name="palm" pos="0.025625 0 0">
<inertial pos="-0.0217876 -0.0376147 0.00276997" quat="-0.146373 0.723094 0.0985561 0.66783" mass="0.119867" diaginertia="0.000123088 0.000100082 6.89467e-005" />
<geom type="mesh" mesh="palm"/>
<site name="palm_thumb" pos="-0.0052 -0.0438 -0.0182" size=".017 .03 .01"/>
<site name="palm_pinky" pos="-0.0358 -0.0401 -0.0183" size=".017 .03 .01"/>
<site name="palm_side" pos="-0.0604 -0.0329 -0.0048" size=".01 .03 .015"/>
<site name="palm_back" pos="-0.0246 -0.0446 0.018" size=".03 .035 .015"/>
<!-- ======= THUMB ======= -->
<body name="thumb0" pos="0.00835752 -0.0206978 -0.010093" quat="0.990237 0.0412644 -0.0209178 -0.13149">
<inertial pos="0.00863339 -0.000156884 -0.000945846" quat="0.408795 0.551643 0.541079 0.485602" mass="0.00336696" diaginertia="4.50769e-007 4.48758e-007 2.35017e-007" />
<joint name="thumb_ABD" type="hinge" pos="0 0 0" axis="0 1 0" range="0 2.07"/>
<geom type="mesh" mesh="thumb0"/>
<body name="thumb1" pos="0.0209172 -0.00084 0.0014476">
<inertial pos="0.019024 0.000361131 -0.000186763" quat="0.5208 0.469572 0.484571 0.522934" mass="0.00596213" diaginertia="9.88001e-007 9.45125e-007 5.32989e-007" />
<joint name="thumb_MCP" type="hinge" pos="0 0 0" axis="0 0 -1" range="0 1.03"/>
<geom type="mesh" mesh="thumb1"/>
<site name="thumb_proximal" pos="0.0173 -0.008 0.0009" size=".015 .0075 .01"/>
<body name="thumb2" pos="0.0335 0 -0.0007426">
<inertial pos="0.0188965 0.000375725 0.00065381" quat="0.502274 0.484638 0.475673 0.535333" mass="0.00599792" diaginertia="9.96692e-007 9.64948e-007 5.14416e-007" />
<joint name="thumb_PIP" type="hinge" pos="0 0 0" axis="0 0 -1" range="0 1.03"/>
<geom type="mesh" mesh="thumb2"/>
<site name="thumb_medial" pos="0.0182 -0.008 0.0015" size=".015 .0075 .01"/>
<body name="thumb3" pos="0.0335 0 0.0010854">
<inertial pos="0.0188965 0.000375725 0.00065381" quat="0.502274 0.484638 0.475673 0.535333" mass="0.00599792" diaginertia="9.96692e-007 9.64948e-007 5.14416e-007" />
<joint name="thumb_DIP" type="hinge" pos="0 0 0" axis="0 0 -1" range="-0.819 1.28"/>
<geom type="mesh" mesh="thumb3"/>
<site name="thumb_distal" pos="0.0156 -0.007 0.0003" size=".015 .0075 .01" axisangle="0 0 1 0.2"/>
<site class="IMU" name="thumb_IMU" pos="0.0099 -0.00052 0" quat=".5 .5 .5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
<!-- ======= INDEX ======= -->
<body name="index0" pos="0.00986485 -0.0658 0.00101221" quat="0.996195 0 0.0871557 0">
<inertial pos="-0.000142572 -0.00548494 0.000206145" quat="0.699132 0.714861 -0.000723869 0.013694" mass="0.00295579" diaginertia="4.22462e-007 4.02281e-007 1.93868e-007" />
<joint name="index_ABD" type="hinge" pos="0 0 0" axis="0 0 1" range="0 0.345"/>
<geom type="mesh" mesh="index0"/>
<body name="index1" pos="6.26e-005 -0.018 0">
<inertial pos="0.000406487 -0.0213125 0.000655609" quat="0.698452 0.715642 -0.00415384 0.0023049" mass="0.00478235" diaginertia="8.18599e-007 7.95693e-007 3.06254e-007" />
<joint name="index_MCP" type="hinge" pos="0 0 0" axis="1 0 0" range="-0.785 1.57"/>
<geom type="mesh" mesh="index1"/>
<site name="index_proximal" pos="0 -0.0235 -0.007" size=".009 .015 .0075"/>
<body name="index2" pos="0.001086 -0.0435 0.0005">
<inertial pos="-0.000841462 -0.012689 0.000572665" quat="0.734882 0.677481 -0.028511 0.0124827" mass="0.00344764" diaginertia="3.63962e-007 3.59059e-007 1.05304e-007" />
<joint name="index_PIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.72"/>
<geom type="mesh" mesh="index2"/>
<site name="index_medial" pos="0 -0.009 -0.0047" size=".0075 .01 .006"/>
<body name="index3" pos="-0.000635 -0.0245 0">
<inertial pos="4.32004e-005 -0.0125318 0.000903476" quat="0.516251 0.4829 -0.483241 0.516498" mass="0.00274415" diaginertia="1.19635e-007 1.09202e-007 7.77873e-008" />
<joint name="index_DIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.38"/>
<geom type="mesh" mesh="index3"/>
<site name="index_distal" pos="0 -0.0132 -0.0038" size=".0075 .01 .006"/>
<site class="IMU" name="index_IMU" pos="0 -0.0093 0.00063" quat=".5 .5 -.5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
<!-- ======= MIDDLE ======= -->
<body name="middle0" pos="-0.012814 -0.0779014 0.00544608" quat="-3.14 0.0436194 0 0">
<inertial pos="-0.000142567 -0.00548493 0.000206162" quat="0.699131 0.714862 -0.000723874 0.013694" mass="0.00295579" diaginertia="4.22461e-007 4.02281e-007 1.93868e-007" />
<!--<joint name="middle0" type="hinge" pos="0 0 0" range="-0.345 0" axis="0 0 -1" />-->
<geom type="mesh" mesh="middle0"/>
<body name="middle1" pos="6.26e-005 -0.018 0">
<inertial pos="0.000406411 -0.0213125 0.00065565" quat="0.698451 0.715642 -0.00415503 0.00230486" mass="0.00478229" diaginertia="8.18595e-007 7.9569e-007 3.06253e-007" />
<joint name="middle_MCP" type="hinge" pos="0 0 0" axis="1 0 0" range="-0.785 1.57"/>
<geom type="mesh" mesh="middle1"/>
<site name="middle_proximal" pos="0 -0.025 -0.007" size=".009 .015 .0075"/>
<body name="middle2" pos="0.001086 -0.0435 0.0005">
<inertial pos="-0.000841444 -0.012689 0.00057266" quat="0.734883 0.677482 -0.0284727 0.0124412" mass="0.00344765" diaginertia="3.63962e-007 3.5906e-007 1.05304e-007" />
<joint name="middle_PIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.73"/>
<geom type="mesh" mesh="middle2"/>
<site name="middle_medial" pos="0 -0.0146 -0.0047" size=".0075 .01 .006"/>
<body name="middle3" pos="-0.000635 -0.0245 0">
<inertial pos="4.31236e-005 -0.0125318 0.000903446" quat="0.516263 0.482913 -0.483228 0.516487" mass="0.00274417" diaginertia="1.19635e-007 1.09202e-007 7.77884e-008" />
<joint name="middle_DIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.38"/>
<geom type="mesh" mesh="middle3"/>
<site name="middle_distal" pos="0 -0.0129 -0.0038" size=".0075 .01 .006"/>
<site class="IMU" name="middle_IMU" pos="0 -0.0093 0.00063" quat=".5 .5 -.5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
<!-- ======= RING ======= -->
<body name="ring0" pos="-0.0354928 -0.0666999 0.00151221" quat="0.996195 0 -0.0871557 0">
<inertial pos="-0.000142559 -0.00548494 0.000206147" quat="0.699132 0.714861 -0.000720946 0.013691" mass="0.00295579" diaginertia="4.22462e-007 4.02281e-007 1.93868e-007" />
<joint name="ring_ABD" type="hinge" pos="0 0 0" axis="0 0 -1" range="0 0.345"/>
<geom type="mesh" mesh="ring0"/>
<body name="ring1" pos="6.26e-005 -0.018 0">
<inertial pos="0.000406447 -0.0213125 0.00065563" quat="0.698451 0.715642 -0.00415675 0.00230715" mass="0.00478232" diaginertia="8.18597e-007 7.95692e-007 3.06254e-007" />
<joint name="ring_MCP" type="hinge" pos="0 0 0" axis="1 0 0" range="-0.785 1.57"/>
<geom type="mesh" mesh="ring1"/>
<site name="ring_proximal" pos="0 -0.0259 -0.007" size=".009 .015 .0075"/>
<body name="ring2" pos="0.001086 -0.0435 0.0005">
<inertial pos="-0.000841518 -0.012689 0.000572674" quat="0.73488 0.677478 -0.0285773 0.0125557" mass="0.00344767" diaginertia="3.63963e-007 3.59061e-007 1.05305e-007" />
<joint name="ring_PIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.72"/>
<geom type="mesh" mesh="ring2"/>
<site name="ring_medial" pos="0 -0.0137 -0.0047" size=".0075 .01 .006"/>
<body name="ring3" pos="-0.000635 -0.0245 0">
<inertial pos="4.31973e-005 -0.0125318 0.000903457" quat="0.516255 0.482902 -0.483238 0.516495" mass="0.00274416" diaginertia="1.19635e-007 1.09202e-007 7.77877e-008" />
<joint name="ring_DIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.38"/>
<geom type="mesh" mesh="ring3"/>
<site name="ring_distal" pos="0 -0.0117 -0.0038" size=".0075 .01 .006"/>
<site class="IMU" name="ring_IMU" pos="0 -0.0093 0.00063" quat=".5 .5 -.5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
<!-- ======= LITTLE ======= -->
<body name="pinky0" pos="-0.0562459 -0.0554001 -0.00563858" quat="0.996195 0 -0.0871557 0">
<inertial pos="-0.000142559 -0.00538484 0.000206147" quat="0.699132 0.714861 -0.000721037 0.0136911" mass="0.00295579" diaginertia="4.22462e-007 4.02281e-007 1.93868e-007" />
<joint name="pinky_ABD" type="hinge" pos="0 0 0" axis="0 0 -1" range="0 0.345"/>
<geom type="mesh" mesh="pinky0"/>
<body name="pinky1" pos="6.26e-005 -0.0178999 0">
<inertial pos="0.000458624 -0.0160478 0.000924735" quat="0.685529 0.72723 0.021252 -0.0270914" mass="0.0034099" diaginertia="4.03391e-007 3.84061e-007 2.19866e-007" />
<joint name="pinky_MCP" type="hinge" pos="0 0 0" axis="1 0 0" range="-0.785 1.57"/>
<geom type="mesh" mesh="pinky1"/>
<site name="pinky_proximal" pos="0 -0.021 -0.0066" size=".009 .013 .0075"/>
<body name="pinky2" pos="0.000578 -0.033 0.0005">
<inertial pos="-0.000270832 -0.00914628 0.000738493" quat="0.746786 0.664476 -4.11065e-005 -0.0279675" mass="0.00250622" diaginertia="1.79089e-007 1.75934e-007 7.44543e-008" />
<joint name="pinky_PIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.72"/>
<geom type="mesh" mesh="pinky2"/>
<site name="pinky_medial" pos="0 -0.0117 -0.0047" size=".0075 .01 .006"/>
<body name="pinky3" pos="-4.78e-005 -0.0175 0">
<inertial pos="3.85026e-005 -0.0125047 0.000912295" quat="0.516037 0.484447 -0.483043 0.515448" mass="0.00273265" diaginertia="1.19141e-007 1.08629e-007 7.77271e-008" />
<joint name="pinky_DIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.38"/>
<geom type="mesh" mesh="pinky3"/>
<site name="pinky_distal" pos="0 -0.0121 -0.0038" size=".0075 .01 .006"/>
<site class="IMU" name="pinky_IMU" pos="0 -0.0093 0.00063" quat=".5 .5 -.5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</worldbody>
<sensor>
<jointpos name="Sjp_wrist_PRO" joint="wrist_PRO"/>
<jointpos name="Sjp_wrist_UDEV" joint="wrist_UDEV"/>
<jointpos name="Sjp_wrist_FLEX" joint="wrist_FLEX"/>
<jointpos name="Sjp_thumb_ABD" joint="thumb_ABD"/>
<jointpos name="Sjp_thumb_MCP" joint="thumb_MCP"/>
<jointpos name="Sjp_thumb_PIP" joint="thumb_PIP"/>
<jointpos name="Sjp_thumb_DIP" joint="thumb_DIP"/>
<jointpos name="Sjp_index_ABD" joint="index_ABD"/>
<jointpos name="Sjp_index_MCP" joint="index_MCP"/>
<jointpos name="Sjp_index_PIP" joint="index_PIP"/>
<jointpos name="Sjp_index_DIP" joint="index_DIP"/>
<jointpos name="Sjp_middle_MCP" joint="middle_MCP"/>
<jointpos name="Sjp_middle_PIP" joint="middle_PIP"/>
<jointpos name="Sjp_middle_DIP" joint="middle_DIP"/>
<jointpos name="Sjp_ring_ABD" joint="ring_ABD"/>
<jointpos name="Sjp_ring_MCP" joint="ring_MCP"/>
<jointpos name="Sjp_ring_PIP" joint="ring_PIP"/>
<jointpos name="Sjp_ring_DIP" joint="ring_DIP"/>
<jointpos name="Sjp_pinky_ABD" joint="pinky_ABD"/>
<jointpos name="Sjp_pinky_MCP" joint="pinky_MCP"/>
<jointpos name="Sjp_pinky_PIP" joint="pinky_PIP"/>
<jointpos name="Sjp_pinky_DIP" joint="pinky_DIP"/>
<jointvel name="Sjv_wrist_PRO" joint="wrist_PRO"/>
<jointvel name="Sjv_wrist_UDEV" joint="wrist_UDEV"/>
<jointvel name="Sjv_wrist_FLEX" joint="wrist_FLEX"/>
<jointvel name="Sjv_thumb_ABD" joint="thumb_ABD"/>
<jointvel name="Sjv_thumb_MCP" joint="thumb_MCP"/>
<jointvel name="Sjv_thumb_PIP" joint="thumb_PIP"/>
<jointvel name="Sjv_thumb_DIP" joint="thumb_DIP"/>
<jointvel name="Sjv_index_ABD" joint="index_ABD"/>
<jointvel name="Sjv_index_MCP" joint="index_MCP"/>
<jointvel name="Sjv_index_PIP" joint="index_PIP"/>
<jointvel name="Sjv_index_DIP" joint="index_DIP"/>
<jointvel name="Sjv_middle_MCP" joint="middle_MCP"/>
<jointvel name="Sjv_middle_PIP" joint="middle_PIP"/>
<jointvel name="Sjv_middle_DIP" joint="middle_DIP"/>
<jointvel name="Sjv_ring_ABD" joint="ring_ABD"/>
<jointvel name="Sjv_ring_MCP" joint="ring_MCP"/>
<jointvel name="Sjv_ring_PIP" joint="ring_PIP"/>
<jointvel name="Sjv_ring_DIP" joint="ring_DIP"/>
<jointvel name="Sjv_pinky_ABD" joint="pinky_ABD"/>
<jointvel name="Sjv_pinky_MCP" joint="pinky_MCP"/>
<jointvel name="Sjv_pinky_PIP" joint="pinky_PIP"/>
<jointvel name="Sjv_pinky_DIP" joint="pinky_DIP"/>
<actuatorpos name="Sap_wrist_PRO" actuator="A_wrist_PRO" />
<actuatorpos name="Sap_wrist_UDEV" actuator="A_wrist_UDEV" />
<actuatorpos name="Sap_wrist_FLEX" actuator="A_wrist_FLEX" />
<actuatorpos name="Sap_thumb_ABD" actuator="A_thumb_ABD" />
<actuatorpos name="Sap_thumb_MCP" actuator="A_thumb_MCP" />
<actuatorpos name="Sap_thumb_PIP" actuator="A_thumb_PIP" />
<actuatorpos name="Sap_thumb_DIP" actuator="A_thumb_DIP" />
<actuatorpos name="Sap_index_ABD" actuator="A_index_ABD" />
<actuatorpos name="Sap_index_MCP" actuator="A_index_MCP" />
<actuatorpos name="Sap_middle_MCP" actuator="A_middle_MCP"/>
<actuatorpos name="Sap_ring_MCP" actuator="A_ring_MCP" />
<actuatorpos name="Sap_pinky_ABD" actuator="A_pinky_ABD" />
<actuatorpos name="Sap_pinky_MCP" actuator="A_pinky_MCP" />
<actuatorvel name="Sav_wrist_PRO" actuator="A_wrist_PRO" />
<actuatorvel name="Sav_wrist_UDEV" actuator="A_wrist_UDEV"/>
<actuatorvel name="Sav_wrist_FLEX" actuator="A_wrist_FLEX"/>
<actuatorvel name="Sav_thumb_ABD" actuator="A_thumb_ABD" />
<actuatorvel name="Sav_thumb_MCP" actuator="A_thumb_MCP" />
<actuatorvel name="Sav_thumb_PIP" actuator="A_thumb_PIP" />
<actuatorvel name="Sav_thumb_DIP" actuator="A_thumb_DIP" />
<actuatorvel name="Sav_index_ABD" actuator="A_index_ABD" />
<actuatorvel name="Sav_index_MCP" actuator="A_index_MCP" />
<actuatorvel name="Sav_middle_MCP" actuator="A_middle_MCP"/>
<actuatorvel name="Sav_ring_MCP" actuator="A_ring_MCP" />
<actuatorvel name="Sav_pinky_ABD" actuator="A_pinky_ABD" />
<actuatorvel name="Sav_pinky_MCP" actuator="A_pinky_MCP" />
<actuatorfrc name="Saf_wrist_PRO" actuator="A_wrist_PRO"/>
<actuatorfrc name="Saf_wrist_UDEV" actuator="A_wrist_UDEV"/>
<actuatorfrc name="Saf_wrist_FLEX" actuator="A_wrist_FLEX"/>
<actuatorfrc name="Saf_thumb_ABD" actuator="A_thumb_ABD"/>
<actuatorfrc name="Saf_thumb_MCP" actuator="A_thumb_MCP"/>
<actuatorfrc name="Saf_thumb_PIP" actuator="A_thumb_PIP"/>
<actuatorfrc name="Saf_thumb_DIP" actuator="A_thumb_DIP"/>
<actuatorfrc name="Saf_index_ABD" actuator="A_index_ABD"/>
<actuatorfrc name="Saf_index_MCP" actuator="A_index_MCP"/>
<actuatorfrc name="Saf_middle_MCP" actuator="A_middle_MCP"/>
<actuatorfrc name="Saf_ring_MCP" actuator="A_ring_MCP"/>
<actuatorfrc name="Saf_pinky_ABD" actuator="A_pinky_ABD"/>
<actuatorfrc name="Saf_pinky_MCP" actuator="A_pinky_MCP"/>
<accelerometer name="S_thumb_IMU" site="thumb_IMU"/>
<accelerometer name="S_index_IMU" site="index_IMU"/>
<accelerometer name="S_middle_IMU" site="middle_IMU"/>
<accelerometer name="S_ring_IMU" site="ring_IMU"/>
<accelerometer name="S_pinky_IMU" site="pinky_IMU"/>
<gyro site="thumb_IMU"/>
<gyro site="index_IMU"/>
<gyro site="middle_IMU"/>
<gyro site="ring_IMU"/>
<gyro site="pinky_IMU"/>
<touch name="S_palm_thumb" site="palm_thumb"/>
<touch name="S_palm_pinky" site="palm_pinky"/>
<touch name="S_palm_side" site="palm_side"/>
<touch name="S_palm_back" site="palm_back"/>
<touch name="S_thumb_proximal" site="thumb_proximal"/>
<touch name="S_thumb_medial" site="thumb_medial"/>
<touch name="S_thumb_distal" site="thumb_distal"/>
<touch name="S_index_proximal" site="index_proximal"/>
<touch name="S_index_medial" site="index_medial"/>
<touch name="S_index_distal" site="index_distal"/>
<touch name="S_middle_proximal" site="middle_proximal"/>
<touch name="S_middle_medial" site="middle_medial"/>
<touch name="S_middle_distal" site="middle_distal"/>
<touch name="S_ring_proximal" site="ring_proximal"/>
<touch name="S_ring_medial" site="ring_medial"/>
<touch name="S_ring_distal" site="ring_distal"/>
<touch name="S_pinky_proximal" site="pinky_proximal"/>
<touch name="S_pinky_medial" site="pinky_medial"/>
<touch name="S_pinky_distal" site="pinky_distal"/>
</sensor>
<tendon>
<!--Index coupler tendons-->
<fixed name="T_index32_cpl" range="0 1">
<joint joint="index_DIP" coef="0.00705"/>
<joint joint="index_PIP" coef="-0.00805"/>
</fixed>
<fixed name="T_index21_cpl" range="0 1">
<joint joint="index_PIP" coef="0.010"/>
<joint joint="index_MCP" coef="-0.010"/>
</fixed>
<!--Middle coupler tendons-->
<fixed name="T_middle32_cpl">
<joint joint="middle_DIP" coef="0.00705"/>
<joint joint="middle_PIP" coef="-0.00805"/>
</fixed>
<fixed name="T_middle21_cpl">
<joint joint="middle_PIP" coef="0.010"/>
<joint joint="middle_MCP" coef="-0.010"/>
</fixed>
<!--Ring coupler tendons-->
<fixed name="T_ring32_cpl">
<joint joint="ring_DIP" coef="0.00705"/>
<joint joint="ring_PIP" coef="-0.00805"/>
</fixed>
<fixed name="T_ring21_cpl">
<joint joint="ring_PIP" coef="0.010"/>
<joint joint="ring_MCP" coef="-0.010"/>
</fixed>
<!--Little coupler tendons-->
<fixed name="T_pinky32_cpl">
<joint joint="pinky_DIP" coef="0.00705"/>
<joint joint="pinky_PIP" coef="-0.00805"/>
</fixed>
<fixed name="T_pinky21_cpl">
<joint joint="pinky_PIP" coef="0.010"/>
<joint joint="pinky_MCP" coef="-0.010"/>
</fixed>
</tendon>
<equality>
<weld body1="mocap" body2="forearm" solref="0.01 1" solimp=".9 .9 0.01"/>
<!-- DIP-PIP-MCP Couplings -->
<tendon name="E_index32_cpl" tendon1="T_index32_cpl"/>
<tendon name="E_index21_cpl" tendon1="T_index21_cpl"/>
<tendon name="E_middle32_cpl" tendon1="T_middle32_cpl"/>
<tendon name="E_middle21_cpl" tendon1="T_middle21_cpl"/>
<tendon name="E_ring32_cpl" tendon1="T_ring32_cpl"/>
<tendon name="E_ring21_cpl" tendon1="T_ring21_cpl"/>
<tendon name="E_pinky32_cpl" tendon1="T_pinky32_cpl"/>
<tendon name="E_pinky21_cpl" tendon1="T_pinky21_cpl"/>
<!-- AD-AB Coupling -->
<joint name="ring_pinky_cpl" joint1="ring_ABD" joint2="pinky_ABD" polycoef="0 0.5 0 0 0"/>
</equality>
<actuator>
<!-- Wrist -->
<position name="A_wrist_PRO" class="MPL" joint="wrist_PRO" ctrlrange="-1.57 1.57"/>
<position name="A_wrist_UDEV" class="MPL" joint="wrist_UDEV" ctrlrange="-0.26 0.79"/>
<position name="A_wrist_FLEX" class="MPL" joint="wrist_FLEX" ctrlrange="-1 1"/>
<!-- Thumb -->
<position name="A_thumb_ABD" class="MPL" joint="thumb_ABD" ctrlrange="0 2.1"/>
<position name="A_thumb_MCP" class="MPL" joint="thumb_MCP" ctrlrange="0 1.0"/>
<position name="A_thumb_PIP" class="MPL" joint="thumb_PIP" ctrlrange="0 1.0"/>
<position name="A_thumb_DIP" class="MPL" joint="thumb_DIP" ctrlrange="-0.82 1.3"/>
<!-- Fingers -->
<position name="A_index_ABD" class="MPL" joint="index_ABD" ctrlrange="0 0.34"/>
<position name="A_index_MCP" class="MPL" joint="index_MCP" ctrlrange="0 1.6"/>
<position name="A_middle_MCP" class="MPL" joint="middle_MCP" ctrlrange="0 1.6"/>
<position name="A_ring_MCP" class="MPL" joint="ring_MCP" ctrlrange="0 1.6"/>
<position name="A_pinky_ABD" class="MPL" joint="pinky_ABD" ctrlrange="0 0.34"/>
<position name="A_pinky_MCP" class="MPL" joint="pinky_MCP" ctrlrange="0 1.6"/>
</actuator>
</mujoco>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,471 @@
<mujoco model="MPL">
<!--
This file and the .stl mesh files referenced from it have been derived by Roboti LLC from the model of the Modular Prosthetic Limb developed by The Johns Hopkins University / Applied Physics Laboratory. The modifications are as follows: the original meshes have been replaced with their convex hulls; the original URDF model has been converted to the MJCF format and a number of MJCF-specific fields have been added.
The Johns Hopkins University / Applied Physics Laboratory has given Roboti LLC permission to distribute the modified model under the following license:
=========================
(C) 2013 The Johns Hopkins University / Applied Physics Laboratory All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
========================
The modifications made by Roboti LLC are also licensed under the Apache License version 2.0.
-->
<compiler angle="radian" meshdir="mesh/" texturedir="texture/"/>
<option timestep="0.002" iterations="50" apirate="50"/>
<size njmax="600" nconmax="150" nstack="300000"/>
<default>
<default class="MPL">
<geom material="MatMesh" contype="1" conaffinity="1" condim="4" friction="1 .5 0.5" margin="0.001"/>
<joint limited="true" damping="0.2" armature=".01"/>
<site material="MatTouch" type="ellipsoid" group="3"/>
<position ctrllimited="true" kp="10"/>
</default>
<default class="IMU">
<site material="MatIMU" type="box" group="4"/>
</default>
<default class="free">
<joint type="free" damping="0" armature="0" limited="false"/>
</default>
</default>
<statistic extent="1" center="0 -0.2 0.2"/>
<visual>
<quality shadowsize="2048"/>
<map fogstart="6" fogend="10"/>
<headlight diffuse=".6 .6 .6" specular="0 0 0"/>
</visual>
<asset>
<mesh name="index0" file="index0_collision.stl"/>
<mesh name="index1" file="index1_collision.stl"/>
<mesh name="index2" file="index2_collision.stl"/>
<mesh name="index3" file="index3_collision.stl"/>
<mesh name="middle0" file="middle0_collision.stl"/>
<mesh name="middle1" file="middle1_collision.stl"/>
<mesh name="middle2" file="middle2_collision.stl"/>
<mesh name="middle3" file="middle3_collision.stl"/>
<mesh name="palm" file="palm_collision.stl"/>
<mesh name="pinky0" file="pinky0_collision.stl"/>
<mesh name="pinky1" file="pinky1_collision.stl"/>
<mesh name="pinky2" file="pinky2_collision.stl"/>
<mesh name="pinky3" file="pinky3_collision.stl"/>
<mesh name="ring0" file="ring0_collision.stl"/>
<mesh name="ring1" file="ring1_collision.stl"/>
<mesh name="ring2" file="ring2_collision.stl"/>
<mesh name="ring3" file="ring3_collision.stl"/>
<mesh name="thumb0" file="thumb0_collision.stl"/>
<mesh name="thumb1" file="thumb1_collision.stl"/>
<mesh name="thumb2" file="thumb2_collision.stl"/>
<mesh name="thumb3" file="thumb3_collision.stl"/>
<mesh name="wristx" file="wristx_collision.stl"/>
<mesh name="wristy" file="wristy_collision.stl"/>
<mesh name="wristz" file="wristz_collision.stl"/>
<texture type="skybox" builtin="gradient" rgb1=".4 .6 .8" rgb2="0 0 0"
width="100" height="100"/>
<texture name="groundplane" type="2d" builtin="checker" rgb1=".2 .3 .4" rgb2=".1 .2 .3"
width="100" height="100"/>
<texture name="skin" type="cube" file="skin.png"/>
<texture name="marble2d" type="2d" file="marble.png"/>
<texture name="marblecube" type="cube" file="marble.png"/>
<material name="groundplane" texture="groundplane" texrepeat="10 10"/>
<material name="table2d" texture="marble2d" reflectance="0.3" rgba=".8 .8 .8 1"/>
<material name="tablecube" texture="marblecube" rgba=".8 .8 .8 1"/>
<material name="MatTouch" rgba=".3 .9 .3 .3"/>
<material name="MatIMU" rgba=".1 .1 .9 1"/>
<material name="MatMesh" texture="skin"/>
</asset>
<contact>
<exclude body1="wristz" body2="wristy"/>
<exclude body1="wristx" body2="thumb0"/>
<exclude body1="palm" body2="thumb1"/>
<exclude body1="palm" body2="index1"/>
<exclude body1="palm" body2="middle1"/>
<exclude body1="palm" body2="ring1"/>
<exclude body1="palm" body2="pinky1"/>
</contact>
<worldbody>
<!-- ======= ROBOT ======= -->
<body childclass="MPL" name="wristy" pos="0 0 0">
<inertial pos="-7.08369e-005 -0.0217787 -0.000286168" quat="0.707488 0.00581744 -0.0107421 0.70662" mass="0.0272932" diaginertia="2.46813e-005 1.77029e-005 1.71079e-005" />
<geom type="mesh" mesh="wristy"/>
<joint type="free"/>
<body name="wristx" pos="-3.36826e-005 -0.0476452 0.00203763">
<inertial pos="0.00139174 -0.00975189 -0.00252668" quat="-0.0729226 0.705959 0.0352732 0.703605" mass="0.010691" diaginertia="5.04455e-006 4.25035e-006 3.25677e-006" />
<joint name="wrist_UDEV" damping="0.4" type="hinge" pos="0 0 0" axis="0 0 -1" range="-0.261 0.785"/>
<geom type="mesh" mesh="wristx"/>
<body name="wristz" pos="0.0001872 -0.03 -0.002094">
<inertial pos="0.000579016 -0.00125952 0.000455968" quat="0.527723 0.475346 0.521597 0.472749" mass="0.00602247" diaginertia="1.58133e-006 1.43102e-006 1.26861e-006" />
<joint name="wrist_FLEX" damping="0.4" type="hinge" pos="0 0 0" axis="1 0 0" range="-1.04 1.04"/>
<geom type="mesh" mesh="wristz"/>
<!-- ======= PALM ======= -->
<body name="palm" pos="0.025625 0 0">
<inertial pos="-0.0217876 -0.0376147 0.00276997" quat="-0.146373 0.723094 0.0985561 0.66783" mass="0.119867" diaginertia="0.000123088 0.000100082 6.89467e-005" />
<geom type="mesh" mesh="palm"/>
<site name="palm_thumb" pos="-0.0052 -0.0438 -0.0182" size=".017 .03 .01"/>
<site name="palm_pinky" pos="-0.0358 -0.0401 -0.0183" size=".017 .03 .01"/>
<site name="palm_side" pos="-0.0604 -0.0329 -0.0048" size=".01 .03 .015"/>
<site name="palm_back" pos="-0.0246 -0.0446 0.018" size=".03 .035 .015"/>
<!-- ======= THUMB ======= -->
<body name="thumb0" pos="0.00835752 -0.0206978 -0.010093" quat="0.990237 0.0412644 -0.0209178 -0.13149">
<inertial pos="0.00863339 -0.000156884 -0.000945846" quat="0.408795 0.551643 0.541079 0.485602" mass="0.00336696" diaginertia="4.50769e-007 4.48758e-007 2.35017e-007" />
<joint name="thumb_ABD" type="hinge" pos="0 0 0" axis="0 1 0" range="0 2.07"/>
<geom type="mesh" mesh="thumb0"/>
<body name="thumb1" pos="0.0209172 -0.00084 0.0014476">
<inertial pos="0.019024 0.000361131 -0.000186763" quat="0.5208 0.469572 0.484571 0.522934" mass="0.00596213" diaginertia="9.88001e-007 9.45125e-007 5.32989e-007" />
<joint name="thumb_MCP" type="hinge" pos="0 0 0" axis="0 0 -1" range="0 1.03"/>
<geom type="mesh" mesh="thumb1"/>
<site name="thumb_proximal" pos="0.0173 -0.008 0.0009" size=".015 .0075 .01"/>
<body name="thumb2" pos="0.0335 0 -0.0007426">
<inertial pos="0.0188965 0.000375725 0.00065381" quat="0.502274 0.484638 0.475673 0.535333" mass="0.00599792" diaginertia="9.96692e-007 9.64948e-007 5.14416e-007" />
<joint name="thumb_PIP" type="hinge" pos="0 0 0" axis="0 0 -1" range="0 1.03"/>
<geom type="mesh" mesh="thumb2"/>
<site name="thumb_medial" pos="0.0182 -0.008 0.0015" size=".015 .0075 .01"/>
<body name="thumb3" pos="0.0335 0 0.0010854">
<inertial pos="0.0188965 0.000375725 0.00065381" quat="0.502274 0.484638 0.475673 0.535333" mass="0.00599792" diaginertia="9.96692e-007 9.64948e-007 5.14416e-007" />
<joint name="thumb_DIP" type="hinge" pos="0 0 0" axis="0 0 -1" range="-0.819 1.28"/>
<geom type="mesh" mesh="thumb3"/>
<site name="thumb_distal" pos="0.0156 -0.007 0.0003" size=".015 .0075 .01" axisangle="0 0 1 0.2"/>
<site class="IMU" name="thumb_IMU" pos="0.0099 -0.00052 0" quat=".5 .5 .5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
<!-- ======= INDEX ======= -->
<body name="index0" pos="0.00986485 -0.0658 0.00101221" quat="0.996195 0 0.0871557 0">
<inertial pos="-0.000142572 -0.00548494 0.000206145" quat="0.699132 0.714861 -0.000723869 0.013694" mass="0.00295579" diaginertia="4.22462e-007 4.02281e-007 1.93868e-007" />
<joint name="index_ABD" type="hinge" pos="0 0 0" axis="0 0 1" range="0 0.345"/>
<geom type="mesh" mesh="index0"/>
<body name="index1" pos="6.26e-005 -0.018 0">
<inertial pos="0.000406487 -0.0213125 0.000655609" quat="0.698452 0.715642 -0.00415384 0.0023049" mass="0.00478235" diaginertia="8.18599e-007 7.95693e-007 3.06254e-007" />
<joint name="index_MCP" type="hinge" pos="0 0 0" axis="1 0 0" range="-0.785 1.57"/>
<geom type="mesh" mesh="index1"/>
<site name="index_proximal" pos="0 -0.0235 -0.007" size=".009 .015 .0075"/>
<body name="index2" pos="0.001086 -0.0435 0.0005">
<inertial pos="-0.000841462 -0.012689 0.000572665" quat="0.734882 0.677481 -0.028511 0.0124827" mass="0.00344764" diaginertia="3.63962e-007 3.59059e-007 1.05304e-007" />
<joint name="index_PIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.72"/>
<geom type="mesh" mesh="index2"/>
<site name="index_medial" pos="0 -0.009 -0.0047" size=".0075 .01 .006"/>
<body name="index3" pos="-0.000635 -0.0245 0">
<inertial pos="4.32004e-005 -0.0125318 0.000903476" quat="0.516251 0.4829 -0.483241 0.516498" mass="0.00274415" diaginertia="1.19635e-007 1.09202e-007 7.77873e-008" />
<joint name="index_DIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.38"/>
<geom type="mesh" mesh="index3"/>
<site name="index_distal" pos="0 -0.0132 -0.0038" size=".0075 .01 .006"/>
<site class="IMU" name="index_IMU" pos="0 -0.0093 0.00063" quat=".5 .5 -.5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
<!-- ======= MIDDLE ======= -->
<body name="middle0" pos="-0.012814 -0.0779014 0.00544608" quat="-3.14 0.0436194 0 0">
<inertial pos="-0.000142567 -0.00548493 0.000206162" quat="0.699131 0.714862 -0.000723874 0.013694" mass="0.00295579" diaginertia="4.22461e-007 4.02281e-007 1.93868e-007" />
<!--<joint name="middle0" type="hinge" pos="0 0 0" range="-0.345 0" axis="0 0 -1" />-->
<geom type="mesh" mesh="middle0"/>
<body name="middle1" pos="6.26e-005 -0.018 0">
<inertial pos="0.000406411 -0.0213125 0.00065565" quat="0.698451 0.715642 -0.00415503 0.00230486" mass="0.00478229" diaginertia="8.18595e-007 7.9569e-007 3.06253e-007" />
<joint name="middle_MCP" type="hinge" pos="0 0 0" axis="1 0 0" range="-0.785 1.57"/>
<geom type="mesh" mesh="middle1"/>
<site name="middle_proximal" pos="0 -0.025 -0.007" size=".009 .015 .0075"/>
<body name="middle2" pos="0.001086 -0.0435 0.0005">
<inertial pos="-0.000841444 -0.012689 0.00057266" quat="0.734883 0.677482 -0.0284727 0.0124412" mass="0.00344765" diaginertia="3.63962e-007 3.5906e-007 1.05304e-007" />
<joint name="middle_PIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.73"/>
<geom type="mesh" mesh="middle2"/>
<site name="middle_medial" pos="0 -0.0146 -0.0047" size=".0075 .01 .006"/>
<body name="middle3" pos="-0.000635 -0.0245 0">
<inertial pos="4.31236e-005 -0.0125318 0.000903446" quat="0.516263 0.482913 -0.483228 0.516487" mass="0.00274417" diaginertia="1.19635e-007 1.09202e-007 7.77884e-008" />
<joint name="middle_DIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.38"/>
<geom type="mesh" mesh="middle3"/>
<site name="middle_distal" pos="0 -0.0129 -0.0038" size=".0075 .01 .006"/>
<site class="IMU" name="middle_IMU" pos="0 -0.0093 0.00063" quat=".5 .5 -.5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
<!-- ======= RING ======= -->
<body name="ring0" pos="-0.0354928 -0.0666999 0.00151221" quat="0.996195 0 -0.0871557 0">
<inertial pos="-0.000142559 -0.00548494 0.000206147" quat="0.699132 0.714861 -0.000720946 0.013691" mass="0.00295579" diaginertia="4.22462e-007 4.02281e-007 1.93868e-007" />
<joint name="ring_ABD" type="hinge" pos="0 0 0" axis="0 0 -1" range="0 0.345"/>
<geom type="mesh" mesh="ring0"/>
<body name="ring1" pos="6.26e-005 -0.018 0">
<inertial pos="0.000406447 -0.0213125 0.00065563" quat="0.698451 0.715642 -0.00415675 0.00230715" mass="0.00478232" diaginertia="8.18597e-007 7.95692e-007 3.06254e-007" />
<joint name="ring_MCP" type="hinge" pos="0 0 0" axis="1 0 0" range="-0.785 1.57"/>
<geom type="mesh" mesh="ring1"/>
<site name="ring_proximal" pos="0 -0.0259 -0.007" size=".009 .015 .0075"/>
<body name="ring2" pos="0.001086 -0.0435 0.0005">
<inertial pos="-0.000841518 -0.012689 0.000572674" quat="0.73488 0.677478 -0.0285773 0.0125557" mass="0.00344767" diaginertia="3.63963e-007 3.59061e-007 1.05305e-007" />
<joint name="ring_PIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.72"/>
<geom type="mesh" mesh="ring2"/>
<site name="ring_medial" pos="0 -0.0137 -0.0047" size=".0075 .01 .006"/>
<body name="ring3" pos="-0.000635 -0.0245 0">
<inertial pos="4.31973e-005 -0.0125318 0.000903457" quat="0.516255 0.482902 -0.483238 0.516495" mass="0.00274416" diaginertia="1.19635e-007 1.09202e-007 7.77877e-008" />
<joint name="ring_DIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.38"/>
<geom type="mesh" mesh="ring3"/>
<site name="ring_distal" pos="0 -0.0117 -0.0038" size=".0075 .01 .006"/>
<site class="IMU" name="ring_IMU" pos="0 -0.0093 0.00063" quat=".5 .5 -.5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
<!-- ======= LITTLE ======= -->
<body name="pinky0" pos="-0.0562459 -0.0554001 -0.00563858" quat="0.996195 0 -0.0871557 0">
<inertial pos="-0.000142559 -0.00538484 0.000206147" quat="0.699132 0.714861 -0.000721037 0.0136911" mass="0.00295579" diaginertia="4.22462e-007 4.02281e-007 1.93868e-007" />
<joint name="pinky_ABD" type="hinge" pos="0 0 0" axis="0 0 -1" range="0 0.345"/>
<geom type="mesh" mesh="pinky0"/>
<body name="pinky1" pos="6.26e-005 -0.0178999 0">
<inertial pos="0.000458624 -0.0160478 0.000924735" quat="0.685529 0.72723 0.021252 -0.0270914" mass="0.0034099" diaginertia="4.03391e-007 3.84061e-007 2.19866e-007" />
<joint name="pinky_MCP" type="hinge" pos="0 0 0" axis="1 0 0" range="-0.785 1.57"/>
<geom type="mesh" mesh="pinky1"/>
<site name="pinky_proximal" pos="0 -0.021 -0.0066" size=".009 .013 .0075"/>
<body name="pinky2" pos="0.000578 -0.033 0.0005">
<inertial pos="-0.000270832 -0.00914628 0.000738493" quat="0.746786 0.664476 -4.11065e-005 -0.0279675" mass="0.00250622" diaginertia="1.79089e-007 1.75934e-007 7.44543e-008" />
<joint name="pinky_PIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.72"/>
<geom type="mesh" mesh="pinky2"/>
<site name="pinky_medial" pos="0 -0.0117 -0.0047" size=".0075 .01 .006"/>
<body name="pinky3" pos="-4.78e-005 -0.0175 0">
<inertial pos="3.85026e-005 -0.0125047 0.000912295" quat="0.516037 0.484447 -0.483043 0.515448" mass="0.00273265" diaginertia="1.19141e-007 1.08629e-007 7.77271e-008" />
<joint name="pinky_DIP" type="hinge" pos="0 0 0" axis="1 0 0" range="0 1.38"/>
<geom type="mesh" mesh="pinky3"/>
<site name="pinky_distal" pos="0 -0.0121 -0.0038" size=".0075 .01 .006"/>
<site class="IMU" name="pinky_IMU" pos="0 -0.0093 0.00063" quat=".5 .5 -.5 .5" size=".003 .003 .003"/>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</body>
</worldbody>
<sensor>
<jointpos name="Sjp_wrist_PRO" joint="wrist_PRO"/>
<jointpos name="Sjp_wrist_UDEV" joint="wrist_UDEV"/>
<jointpos name="Sjp_wrist_FLEX" joint="wrist_FLEX"/>
<jointpos name="Sjp_thumb_ABD" joint="thumb_ABD"/>
<jointpos name="Sjp_thumb_MCP" joint="thumb_MCP"/>
<jointpos name="Sjp_thumb_PIP" joint="thumb_PIP"/>
<jointpos name="Sjp_thumb_DIP" joint="thumb_DIP"/>
<jointpos name="Sjp_index_ABD" joint="index_ABD"/>
<jointpos name="Sjp_index_MCP" joint="index_MCP"/>
<jointpos name="Sjp_index_PIP" joint="index_PIP"/>
<jointpos name="Sjp_index_DIP" joint="index_DIP"/>
<jointpos name="Sjp_middle_MCP" joint="middle_MCP"/>
<jointpos name="Sjp_middle_PIP" joint="middle_PIP"/>
<jointpos name="Sjp_middle_DIP" joint="middle_DIP"/>
<jointpos name="Sjp_ring_ABD" joint="ring_ABD"/>
<jointpos name="Sjp_ring_MCP" joint="ring_MCP"/>
<jointpos name="Sjp_ring_PIP" joint="ring_PIP"/>
<jointpos name="Sjp_ring_DIP" joint="ring_DIP"/>
<jointpos name="Sjp_pinky_ABD" joint="pinky_ABD"/>
<jointpos name="Sjp_pinky_MCP" joint="pinky_MCP"/>
<jointpos name="Sjp_pinky_PIP" joint="pinky_PIP"/>
<jointpos name="Sjp_pinky_DIP" joint="pinky_DIP"/>
<jointvel name="Sjv_wrist_PRO" joint="wrist_PRO"/>
<jointvel name="Sjv_wrist_UDEV" joint="wrist_UDEV"/>
<jointvel name="Sjv_wrist_FLEX" joint="wrist_FLEX"/>
<jointvel name="Sjv_thumb_ABD" joint="thumb_ABD"/>
<jointvel name="Sjv_thumb_MCP" joint="thumb_MCP"/>
<jointvel name="Sjv_thumb_PIP" joint="thumb_PIP"/>
<jointvel name="Sjv_thumb_DIP" joint="thumb_DIP"/>
<jointvel name="Sjv_index_ABD" joint="index_ABD"/>
<jointvel name="Sjv_index_MCP" joint="index_MCP"/>
<jointvel name="Sjv_index_PIP" joint="index_PIP"/>
<jointvel name="Sjv_index_DIP" joint="index_DIP"/>
<jointvel name="Sjv_middle_MCP" joint="middle_MCP"/>
<jointvel name="Sjv_middle_PIP" joint="middle_PIP"/>
<jointvel name="Sjv_middle_DIP" joint="middle_DIP"/>
<jointvel name="Sjv_ring_ABD" joint="ring_ABD"/>
<jointvel name="Sjv_ring_MCP" joint="ring_MCP"/>
<jointvel name="Sjv_ring_PIP" joint="ring_PIP"/>
<jointvel name="Sjv_ring_DIP" joint="ring_DIP"/>
<jointvel name="Sjv_pinky_ABD" joint="pinky_ABD"/>
<jointvel name="Sjv_pinky_MCP" joint="pinky_MCP"/>
<jointvel name="Sjv_pinky_PIP" joint="pinky_PIP"/>
<jointvel name="Sjv_pinky_DIP" joint="pinky_DIP"/>
<actuatorpos name="Sap_wrist_PRO" actuator="A_wrist_PRO" />
<actuatorpos name="Sap_wrist_UDEV" actuator="A_wrist_UDEV" />
<actuatorpos name="Sap_wrist_FLEX" actuator="A_wrist_FLEX" />
<actuatorpos name="Sap_thumb_ABD" actuator="A_thumb_ABD" />
<actuatorpos name="Sap_thumb_MCP" actuator="A_thumb_MCP" />
<actuatorpos name="Sap_thumb_PIP" actuator="A_thumb_PIP" />
<actuatorpos name="Sap_thumb_DIP" actuator="A_thumb_DIP" />
<actuatorpos name="Sap_index_ABD" actuator="A_index_ABD" />
<actuatorpos name="Sap_index_MCP" actuator="A_index_MCP" />
<actuatorpos name="Sap_middle_MCP" actuator="A_middle_MCP"/>
<actuatorpos name="Sap_ring_MCP" actuator="A_ring_MCP" />
<actuatorpos name="Sap_pinky_ABD" actuator="A_pinky_ABD" />
<actuatorpos name="Sap_pinky_MCP" actuator="A_pinky_MCP" />
<actuatorvel name="Sav_wrist_PRO" actuator="A_wrist_PRO" />
<actuatorvel name="Sav_wrist_UDEV" actuator="A_wrist_UDEV"/>
<actuatorvel name="Sav_wrist_FLEX" actuator="A_wrist_FLEX"/>
<actuatorvel name="Sav_thumb_ABD" actuator="A_thumb_ABD" />
<actuatorvel name="Sav_thumb_MCP" actuator="A_thumb_MCP" />
<actuatorvel name="Sav_thumb_PIP" actuator="A_thumb_PIP" />
<actuatorvel name="Sav_thumb_DIP" actuator="A_thumb_DIP" />
<actuatorvel name="Sav_index_ABD" actuator="A_index_ABD" />
<actuatorvel name="Sav_index_MCP" actuator="A_index_MCP" />
<actuatorvel name="Sav_middle_MCP" actuator="A_middle_MCP"/>
<actuatorvel name="Sav_ring_MCP" actuator="A_ring_MCP" />
<actuatorvel name="Sav_pinky_ABD" actuator="A_pinky_ABD" />
<actuatorvel name="Sav_pinky_MCP" actuator="A_pinky_MCP" />
<actuatorfrc name="Saf_wrist_PRO" actuator="A_wrist_PRO"/>
<actuatorfrc name="Saf_wrist_UDEV" actuator="A_wrist_UDEV"/>
<actuatorfrc name="Saf_wrist_FLEX" actuator="A_wrist_FLEX"/>
<actuatorfrc name="Saf_thumb_ABD" actuator="A_thumb_ABD"/>
<actuatorfrc name="Saf_thumb_MCP" actuator="A_thumb_MCP"/>
<actuatorfrc name="Saf_thumb_PIP" actuator="A_thumb_PIP"/>
<actuatorfrc name="Saf_thumb_DIP" actuator="A_thumb_DIP"/>
<actuatorfrc name="Saf_index_ABD" actuator="A_index_ABD"/>
<actuatorfrc name="Saf_index_MCP" actuator="A_index_MCP"/>
<actuatorfrc name="Saf_middle_MCP" actuator="A_middle_MCP"/>
<actuatorfrc name="Saf_ring_MCP" actuator="A_ring_MCP"/>
<actuatorfrc name="Saf_pinky_ABD" actuator="A_pinky_ABD"/>
<actuatorfrc name="Saf_pinky_MCP" actuator="A_pinky_MCP"/>
<accelerometer name="S_thumb_IMU" site="thumb_IMU"/>
<accelerometer name="S_index_IMU" site="index_IMU"/>
<accelerometer name="S_middle_IMU" site="middle_IMU"/>
<accelerometer name="S_ring_IMU" site="ring_IMU"/>
<accelerometer name="S_pinky_IMU" site="pinky_IMU"/>
<gyro site="thumb_IMU"/>
<gyro site="index_IMU"/>
<gyro site="middle_IMU"/>
<gyro site="ring_IMU"/>
<gyro site="pinky_IMU"/>
<touch name="S_palm_thumb" site="palm_thumb"/>
<touch name="S_palm_pinky" site="palm_pinky"/>
<touch name="S_palm_side" site="palm_side"/>
<touch name="S_palm_back" site="palm_back"/>
<touch name="S_thumb_proximal" site="thumb_proximal"/>
<touch name="S_thumb_medial" site="thumb_medial"/>
<touch name="S_thumb_distal" site="thumb_distal"/>
<touch name="S_index_proximal" site="index_proximal"/>
<touch name="S_index_medial" site="index_medial"/>
<touch name="S_index_distal" site="index_distal"/>
<touch name="S_middle_proximal" site="middle_proximal"/>
<touch name="S_middle_medial" site="middle_medial"/>
<touch name="S_middle_distal" site="middle_distal"/>
<touch name="S_ring_proximal" site="ring_proximal"/>
<touch name="S_ring_medial" site="ring_medial"/>
<touch name="S_ring_distal" site="ring_distal"/>
<touch name="S_pinky_proximal" site="pinky_proximal"/>
<touch name="S_pinky_medial" site="pinky_medial"/>
<touch name="S_pinky_distal" site="pinky_distal"/>
</sensor>
<tendon>
<!--Index coupler tendons-->
<fixed name="T_index32_cpl" range="0 1">
<joint joint="index_DIP" coef="0.00705"/>
<joint joint="index_PIP" coef="-0.00805"/>
</fixed>
<fixed name="T_index21_cpl" range="0 1">
<joint joint="index_PIP" coef="0.010"/>
<joint joint="index_MCP" coef="-0.010"/>
</fixed>
<!--Middle coupler tendons-->
<fixed name="T_middle32_cpl">
<joint joint="middle_DIP" coef="0.00705"/>
<joint joint="middle_PIP" coef="-0.00805"/>
</fixed>
<fixed name="T_middle21_cpl">
<joint joint="middle_PIP" coef="0.010"/>
<joint joint="middle_MCP" coef="-0.010"/>
</fixed>
<!--Ring coupler tendons-->
<fixed name="T_ring32_cpl">
<joint joint="ring_DIP" coef="0.00705"/>
<joint joint="ring_PIP" coef="-0.00805"/>
</fixed>
<fixed name="T_ring21_cpl">
<joint joint="ring_PIP" coef="0.010"/>
<joint joint="ring_MCP" coef="-0.010"/>
</fixed>
<!--Little coupler tendons-->
<fixed name="T_pinky32_cpl">
<joint joint="pinky_DIP" coef="0.00705"/>
<joint joint="pinky_PIP" coef="-0.00805"/>
</fixed>
<fixed name="T_pinky21_cpl">
<joint joint="pinky_PIP" coef="0.010"/>
<joint joint="pinky_MCP" coef="-0.010"/>
</fixed>
</tendon>
<equality>
<weld body1="mocap" body2="forearm" solref="0.01 1" solimp=".9 .9 0.01"/>
<!-- DIP-PIP-MCP Couplings -->
<tendon name="E_index32_cpl" tendon1="T_index32_cpl"/>
<tendon name="E_index21_cpl" tendon1="T_index21_cpl"/>
<tendon name="E_middle32_cpl" tendon1="T_middle32_cpl"/>
<tendon name="E_middle21_cpl" tendon1="T_middle21_cpl"/>
<tendon name="E_ring32_cpl" tendon1="T_ring32_cpl"/>
<tendon name="E_ring21_cpl" tendon1="T_ring21_cpl"/>
<tendon name="E_pinky32_cpl" tendon1="T_pinky32_cpl"/>
<tendon name="E_pinky21_cpl" tendon1="T_pinky21_cpl"/>
<!-- AD-AB Coupling -->
<joint name="ring_pinky_cpl" joint1="ring_ABD" joint2="pinky_ABD" polycoef="0 0.5 0 0 0"/>
</equality>
<actuator>
<!-- Wrist -->
<position name="A_wrist_PRO" class="MPL" joint="wrist_PRO" ctrlrange="-1.57 1.57"/>
<position name="A_wrist_UDEV" class="MPL" joint="wrist_UDEV" ctrlrange="-0.26 0.79"/>
<position name="A_wrist_FLEX" class="MPL" joint="wrist_FLEX" ctrlrange="-1 1"/>
<!-- Thumb -->
<position name="A_thumb_ABD" class="MPL" joint="thumb_ABD" ctrlrange="0 2.1"/>
<position name="A_thumb_MCP" class="MPL" joint="thumb_MCP" ctrlrange="0 1.0"/>
<position name="A_thumb_PIP" class="MPL" joint="thumb_PIP" ctrlrange="0 1.0"/>
<position name="A_thumb_DIP" class="MPL" joint="thumb_DIP" ctrlrange="-0.82 1.3"/>
<!-- Fingers -->
<position name="A_index_ABD" class="MPL" joint="index_ABD" ctrlrange="0 0.34"/>
<position name="A_index_MCP" class="MPL" joint="index_MCP" ctrlrange="0 1.6"/>
<position name="A_middle_MCP" class="MPL" joint="middle_MCP" ctrlrange="0 1.6"/>
<position name="A_ring_MCP" class="MPL" joint="ring_MCP" ctrlrange="0 1.6"/>
<position name="A_pinky_ABD" class="MPL" joint="pinky_ABD" ctrlrange="0 0.34"/>
<position name="A_pinky_MCP" class="MPL" joint="pinky_MCP" ctrlrange="0 1.6"/>
</actuator>
</mujoco>

View file

@ -0,0 +1,485 @@
<?xml version="1.0"?>
<!--https://valerolab.org/-->
<!--
Code used for PID control of an inverted pendulum actuated by strings.
-->
<robot name="myfirst">
<material name="blue">
<color rgba="0 0 0.8 1"/>
</material>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
<material name="other">
<color rgba="1 0 0.8 1"/>
</material>
<velocity name="vel">
<speed spd="50"/>
</velocity>
<link name="Rail">
<visual>
<geometry>
<cylinder length="4" radius=".05"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<cylinder length="4" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="100"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<link name="slider">
<visual>
<geometry>
<box size="0.1 0.6 0.3"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<box size="0.1 0.6 0.3"/>
</geometry>
</collision>
<inertial>
<mass value="100"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="rail_slider" type="prismatic">
<axis xyz="0 1 0"/>
<parent link="Rail"/>
<child link="slider"/>
<limit effort="0" lower="-2" upper="2" velocity="25"/>
<origin rpy="-1.570796 0 0" xyz="0 0 0"/>
</joint>
<link name="cart">
<visual>
<geometry>
<box size="0.1 0.6 0.3"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<box size="0.1 0.6 0.3"/>
</geometry>
</collision>
<inertial>
<mass value="100"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="slider_cart" type="fixed">
<parent link="slider"/>
<child link="cart"/>
<origin rpy="0 0 0" xyz="0 0 0.3"/>
</joint>
<!--*****************************************-->
<link name="pendulumAxis">
<visual>
<geometry>
<box size="0.1 0.1 .1"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<box size="0.1 0.1 .1"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="cart_pendulumAxis" type="revolute">
<axis xyz="0 0 1"/>
<parent link="cart"/>
<child link="pendulumAxis"/>
<limit effort="0" lower="1" upper="0" velocity="205"/>
<origin rpy="0 0 0" xyz="0 0 .21"/>
</joint>
<link name="pendulum">
<visual>
<geometry>
<box size="0.1 2 .1"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<geometry>
<box size="0.1 2 .1"/>
</geometry>
</collision>
<inertial>
<mass value="1"/>
<origin rpy="0 0 0" xyz="0 0 0"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="pendulumAxis_pendulum" type="fixed">
<parent link="pendulumAxis"/>
<child link="pendulum"/>
<origin rpy="0 0 1.570796" xyz="1 0 0"/>
</joint>
<!--*****************************************-->
<link name="tendon1_1">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="cart_tendon1_1" type="revolute">
<axis xyz="0 0 1"/>
<parent link="cart"/>
<child link="tendon1_1"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .55 0"/>
</joint>
<link name="tendon1_2">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_1_tendon1_2" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_1"/>
<child link="tendon1_2"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_3">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_2_tendon1_3" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_2"/>
<child link="tendon1_3"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_4">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_3_tendon1_4" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_3"/>
<child link="tendon1_4"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_5">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_4_tendon1_5" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_4"/>
<child link="tendon1_5"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_6">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_5_tendon1_6" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_5"/>
<child link="tendon1_6"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_7">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_6_tendon1_7" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_6"/>
<child link="tendon1_7"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_8">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_7_tendon1_8" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_7"/>
<child link="tendon1_8"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_9">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_8_tendon1_9" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_8"/>
<child link="tendon1_9"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_10">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_9_tendon1_10" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_9"/>
<child link="tendon1_10"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_11">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_10_tendon1_11" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_10"/>
<child link="tendon1_11"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_12">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_11_tendon1_12" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_11"/>
<child link="tendon1_12"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_13">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="other"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_12_tendon1_13" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_12"/>
<child link="tendon1_13"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<link name="tendon1_14">
<visual>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length=".1" radius=".05"/>
</geometry>
</collision>
<inertial>
<mass value="10"/>
<inertia ixx="0" ixy="0.0" ixz="0.0" iyy="0" iyz="0.0" izz="0"/>
</inertial>
</link>
<joint name="tendon1_13_tendon1_14" type="revolute">
<axis xyz="0 0 1"/>
<parent link="tendon1_13"/>
<child link="tendon1_14"/>
<limit effort="0" lower="1" upper="0" velocity="50"/>
<origin rpy="0 0 0" xyz="0 .2 0"/>
</joint>
<!---->
</robot>

View file

@ -0,0 +1,14 @@
URDF created by Erwin Coumans
Bullet Continuous Collision Detection and Physics Library
http://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

View file

@ -0,0 +1,182 @@
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- | This document was autogenerated by xacro from TwoJointRobot.xacro | -->
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
<!-- =================================================================================== -->
<robot name="TwoJointRobot" xmlns:xacro="http://www.ros.org/wiki/xacro">
<material name="blue">
<color rgba="0 0 0.8 1"/>
</material>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
</collision>
<inertial>
<mass value="0.2"/>
<inertia ixx="0.000322916666667" ixy="0.0" ixz="0.0" iyy="0.000322916666667" iyz="0.0" izz="0.0005625"/>
</inertial>
</link>
<link name="link_01_cyl">
<visual>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="blue"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<inertial>
<mass value="0.2"/>
<inertia ixx="0.000322916666667" ixy="0.0" ixz="0.0" iyy="0.000322916666667" iyz="0.0" izz="0.0005625"/>
</inertial>
</link>
<link name="link_12_cyl">
<visual>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="blue"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<inertial>
<mass value="0.2"/>
<inertia ixx="0.000322916666667" ixy="0.0" ixz="0.0" iyy="0.000322916666667" iyz="0.0" izz="0.0005625"/>
</inertial>
</link>
<link name="link_21_cyl">
<visual>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<inertial>
<mass value="0.2"/>
<inertia ixx="0.000322916666667" ixy="0.0" ixz="0.0" iyy="0.000322916666667" iyz="0.0" izz="0.0005625"/>
</inertial>
</link>
<link name="link_23_cyl">
<visual>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<inertial>
<mass value="0.2"/>
<inertia ixx="0.000322916666667" ixy="0.0" ixz="0.0" iyy="0.000322916666667" iyz="0.0" izz="0.0005625"/>
</inertial>
</link>
<link name="link_1">
<visual>
<geometry>
<box size="1.0 0.1 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0.5 0 0"/>
<material name="blue"/>
</visual>
<collision>
<geometry>
<box size="1.0 0.1 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0.5 0 0"/>
</collision>
<inertial>
<mass value="0.5"/>
<inertia ixx="0.00208333333333" ixy="0.0125" ixz="0.00625" iyy="0.167083333333" iyz="0.000625" izz="0.168333333333"/>
</inertial>
</link>
<link name="link_2">
<visual>
<geometry>
<box size="1.0 0.1 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0.5 0 0"/>
<material name="white"/>
</visual>
<collision>
<geometry>
<box size="1.0 0.1 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0.5 0 0"/>
</collision>
<inertial>
<mass value="0.5"/>
<inertia ixx="0.00208333333333" ixy="0.0125" ixz="0.00625" iyy="0.167083333333" iyz="0.000625" izz="0.168333333333"/>
</inertial>
</link>
<joint name="link_01" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="link_01_cyl"/>
<child link="link_1"/>
</joint>
<joint name="link_12" type="fixed">
<origin rpy="0 0 0" xyz="1.0 0 0"/>
<parent link="link_1"/>
<child link="link_12_cyl"/>
</joint>
<joint name="link_21" type="fixed">
<origin rpy="0 0 0" xyz="0 0 0"/>
<parent link="link_21_cyl"/>
<child link="link_2"/>
</joint>
<joint name="link_23" type="fixed">
<origin rpy="0 0 0" xyz="1.0 0 0"/>
<parent link="link_2"/>
<child link="link_23_cyl"/>
</joint>
<joint name="joint_1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort="10000" lower="-3" upper="+3" velocity="5"/>
<dynamics damping="0" friction="0"/>
<origin rpy="0 0 0" xyz="0 0 0.075"/>
<parent link="base_link"/>
<child link="link_01_cyl"/>
</joint>
<joint name="joint_2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort="10000" lower="-3" upper="+3" velocity="5"/>
<dynamics damping="0" friction="0"/>
<origin rpy="0 0 0" xyz="0.0 0. 0.05"/>
<parent link="link_12_cyl"/>
<child link="link_21_cyl"/>
</joint>
</robot>

View file

@ -0,0 +1,110 @@
<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- | This document was autogenerated by xacro from TwoJointRobot_woCyl.xacro | -->
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
<!-- =================================================================================== -->
<robot name="TwoJointRobot" xmlns:xacro="http://www.ros.org/wiki/xacro">
<material name="blue">
<color rgba="0 0 0.8 1"/>
</material>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
<link name="base_link">
<visual>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
</collision>
<inertial>
<mass value="0.2"/>
<inertia ixx="0.000322916666667" ixy="0.0" ixz="0.0" iyy="0.000322916666667" iyz="0.0" izz="0.0005625"/>
</inertial>
</link>
<link name="link_23_cyl">
<visual>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
<material name="white"/>
</visual>
<collision>
<geometry>
<cylinder length="0.05" radius="0.075"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</collision>
<inertial>
<mass value="0.2"/>
<inertia ixx="0.000322916666667" ixy="0.0" ixz="0.0" iyy="0.000322916666667" iyz="0.0" izz="0.0005625"/>
</inertial>
</link>
<link name="link_1">
<visual>
<geometry>
<box size="1.0 0.1 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0.5 0 0"/>
<material name="blue"/>
</visual>
<collision>
<geometry>
<box size="1.0 0.1 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0.5 0 0"/>
</collision>
<inertial>
<mass value="0.5"/>
<inertia ixx="0.00208333333333" ixy="0.0125" ixz="0.00625" iyy="0.167083333333" iyz="0.000625" izz="0.168333333333"/>
</inertial>
</link>
<link name="link_2">
<visual>
<geometry>
<box size="1.0 0.1 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0.5 0 0"/>
<material name="white"/>
</visual>
<collision>
<geometry>
<box size="1.0 0.1 0.05"/>
</geometry>
<origin rpy="0 0 0" xyz="0.5 0 0"/>
</collision>
<inertial>
<mass value="0.5"/>
<inertia ixx="0.00208333333333" ixy="0.0125" ixz="0.00625" iyy="0.167083333333" iyz="0.000625" izz="0.168333333333"/>
</inertial>
</link>
<joint name="joint_1" type="revolute">
<axis xyz="0 0 1"/>
<limit effort="10000" lower="-3.14" upper="3.14" velocity="5"/>
<dynamics damping="0" friction="0"/>
<origin rpy="0 0 0" xyz="0 0 0.075"/>
<parent link="base_link"/>
<child link="link_1"/>
</joint>
<joint name="joint_2" type="revolute">
<axis xyz="0 0 1"/>
<limit effort="10000" lower="-3.14" upper="3.14" velocity="5"/>
<dynamics damping="0" friction="0"/>
<origin rpy="0 0 0" xyz="1.0 0. 0.05"/>
<parent link="link_1"/>
<child link="link_2"/>
</joint>
<joint name="link_23" type="fixed">
<origin rpy="0 0 0" xyz="1.0 0 0"/>
<parent link="link_2"/>
<child link="link_23_cyl"/>
</joint>
</robot>

View file

@ -0,0 +1,11 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl None
Ns 0
Ka 0.000000 0.000000 0.000000
Kd 0.8 0.8 0.8
Ks 0.8 0.8 0.8
d 1
illum 2
map_Kd uvmap.png

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl None
Ns 0
Ka 0.000000 0.000000 0.000000
Kd 0.8 0.8 0.8
Ks 0.8 0.8 0.8
d 1
illum 2
map_Kd banana.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,29 @@
<?xml version="1.0"?>
<robot name="block_2">
<link name="block_2_base_link">
<contact>
<lateral_friction value="1.0"/>
<spinning_friction value=".001"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="0.02"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<geometry>
<box size="0.10 0.018 0.018"/>
</geometry>
<material name="blockmat">
<color rgba="0.1 0.7 0.1 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<geometry>
<box size="0.10 0.018 0.018"/>
</geometry>
</collision>
</link>
</robot>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,23 @@
<?xml version="1.0" ?>
<robot name="urdf_robot">
<link name="base_link">
<contact>
<rolling_friction value="0.001"/>
<spinning_friction value="0.001"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value=".1"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<capsule length="0.1" radius="0.02"/>
</geometry>
</collision>
</link>
</robot>

View file

@ -0,0 +1,80 @@
<?xml version="1.0"?>
<robot name="physics">
<link name="slideBar">
<visual>
<geometry>
<box size="30 0.05 0.05"/>
</geometry>
<origin xyz="0 0 0"/>
<material name="green">
<color rgba="0 0.8 .8 1"/>
</material>
</visual>
<inertial>
<mass value="0"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
<link name="cart">
<visual>
<geometry>
<box size="0.5 0.5 0.2"/>
</geometry>
<origin xyz="0 0 0"/>
<material name="blue">
<color rgba="0 0 .8 1"/>
</material>
</visual>
<collision>
<geometry>
<box size="0.5 0.5 0.2"/>
</geometry>
<origin xyz="0 0 0"/>
</collision>
<inertial>
<mass value="1"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
<joint name="slider_to_cart" type="prismatic">
<axis xyz="1 0 0"/>
<origin xyz="0.0 0.0 0.0"/>
<parent link="slideBar"/>
<child link="cart"/>
<limit effort="1000.0" lower="-15" upper="15" velocity="5"/>
</joint>
<link name="pole">
<visual>
<geometry>
<box size="0.05 0.05 1.0"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.5"/>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<inertial>
<origin xyz="0 0 0.5"/>
<mass value="10"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
<collision>
<geometry>
<box size="0.05 0.05 1.0"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0.5"/>
</collision>
</link>
<joint name="cart_to_pole" type="continuous">
<axis xyz="0 1 0"/>
<origin xyz="0.0 0.0 0"/>
<parent link="cart"/>
<child link="pole"/>
</joint>
</robot>

View file

@ -0,0 +1,13 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl None
Ns 94.117647
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd cube.png

View file

@ -0,0 +1,32 @@
<?xml version="1.0" ?>
<robot name="cube">
<link name="baseLink">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<contact_cfm value="0.0"/>
<contact_erp value="1.0"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="1.0"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="cloth_z_up.obj" scale="1 1 1"/>
</geometry>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="1 1 1"/>
</geometry>
</collision>
</link>
</robot>

View file

@ -1,5 +1,5 @@
<?xml version="0.0" ?>
<robot name="cube.urdf">
<?xml version="1.0" ?>
<robot name="cube">
<link name="baseLink">
<contact>
<lateral_friction value="1.0"/>

View file

@ -0,0 +1,29 @@
<?xml version="1.0" ?>
<robot name="cube">
<link name="baseLink">
<contact>
<lateral_friction value="1"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="1.0"/>
<inertia ixx="100" ixy="0" ixz="0" iyy="100" iyz="0" izz="100"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="cube.obj" scale="1 1 1"/>
</geometry>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision group="0" mask="0">
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<box size="1 1 1"/>
</geometry>
</collision>
</link>
</robot>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" ?>
<robot name="cube">
<link name="baseLink">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<contact_cfm value="0.0"/>
<contact_erp value="1.0"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="1.0"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="cube.obj" scale="1 1 1"/>
</geometry>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision concave="yes">
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="cube.obj" scale="1 1 1"/>
</geometry>
</collision>
</link>
</robot>

View file

@ -0,0 +1,32 @@
<?xml version="1.0" ?>
<robot name="cube">
<link name="baseLink">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<contact_cfm value="0.0"/>
<contact_erp value="1.0"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>
<mass value="1.0"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="cube.obj" scale="1 1 1"/>
</geometry>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="cube.obj" scale="1 1 1"/>
</geometry>
</collision>
</link>
</robot>

View file

@ -1,4 +1,4 @@
<?xml version="0.0" ?>
<?xml version="1.0" ?>
<robot name="cube_gripper_left.urdf">
<link name="world">
</link>

View file

@ -1,4 +1,4 @@
<?xml version="0.0" ?>
<?xml version="1.0" ?>
<robot name="cube_gripper_right.urdf">
<link name="world">
</link>

View file

@ -1,4 +1,4 @@
<?xml version="0.0" ?>
<?xml version="1.0" ?>
<robot name="cube.urdf">
<link name="baseLink">
<contact>

View file

@ -1,9 +1,9 @@
<?xml version="0.0" ?>
<?xml version="1.0" ?>
<robot name="cube.urdf">
<link name="baseLink">
<contact>
<lateral_friction value="1.0"/>
<inertia_scaling value="3.0"/>
<friction_anchor/>
<lateral_friction value="1.0"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0"/>

View file

@ -1,8 +1,9 @@
<?xml version="0.0" ?>
<?xml version="1.0" ?>
<robot name="cube.urdf">
<link name="baseLink">
<contact>
<lateral_friction value="1.0"/>
<friction_anchor/>
<lateral_friction value="1.3"/>
<rolling_friction value="0.0"/>
<stiffness value="300"/>
<damping value="10"/>

View file

@ -0,0 +1,14 @@
URDF created by Erwin Coumans
Bullet Continuous Collision Detection and Physics Library
http://bulletphysics.org
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,198 @@
<?xml version="1.0" ?>
<robot name="husky_robot" xmlns:xacro="http://ros.org/wiki/xacro">
<material name="White">
<color rgba="1.0 1.0 1.0 1.0"/>
</material>
<link name="world"/>
<link name="diff_ring">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<stiffness value="30000"/>
<damping value="1000"/>
</contact>
<inertial>
<mass value="2.637"/>
<origin xyz="0 0 0"/>
<inertia ixx="0.02467" ixy="0" ixz="0" iyy="0.02467" iyz="0" izz="0.04411"/>
</inertial>
<visual>
<origin rpy="1.57079632679 0 0" xyz="0 0 0"/>
<geometry>
<mesh scale="0.001 0.001 0.001" filename="differential/diff_ring.stl"/>
</geometry>
<material name="DarkGrey"/>
</visual>
<visual>
<origin rpy="1.57079632679 0 0" xyz="0 0 0"/>
<geometry>
<mesh scale="0.001 0.001 0.001" filename="differential/diff_carrier.stl"/>
</geometry>
<material name="DarkGrey"/>
</visual>
<collision>
<origin rpy="1.570795 0 0" xyz="0 0.025 0"/>
<geometry>
<cylinder length="0.01" radius="0.05"/>
</geometry>
</collision>
</link>
<joint name="diff_ring_world" type="continuous">
<parent link="world"/>
<child link="diff_ring"/>
<origin rpy="0 0 0" xyz="0.256 0.2854 0.03282"/>
<axis rpy="0 0 0" xyz="0 1 0"/>
</joint>
<link name="diff_spiderA">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<stiffness value="30000"/>
<damping value="1000"/>
</contact>
<inertial>
<mass value="2.637"/>
<origin xyz="0 0 0"/>
<inertia ixx="0.02467" ixy="0" ixz="0" iyy="0.02467" iyz="0" izz="0.04411"/>
</inertial>
<visual>
<origin rpy="1.57079632679 0 0" xyz="0 0 0"/>
<geometry>
<mesh scale="0.001 0.001 0.001" filename="differential/diff_spider.stl"/>
</geometry>
<material name="DarkGrey"/>
</visual>
<collision>
<origin rpy="1.570795 0 0" xyz="0 0.01 0"/>
<geometry>
<cylinder length="0.01" radius="0.015"/>
</geometry>
</collision>
</link>
<joint name="diff_spiderA_ring" type="continuous">
<parent link="diff_ring"/>
<child link="diff_spiderA"/>
<origin rpy="0 0 1.570795" xyz="0.0 0.0 0.0"/>
<axis rpy="0 0 0" xyz="0 1 0"/>
</joint>
<link name="diff_spiderB">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<stiffness value="30000"/>
<damping value="1000"/>
</contact>
<inertial>
<mass value="2.637"/>
<origin xyz="0 0 0"/>
<inertia ixx="0.02467" ixy="0" ixz="0" iyy="0.02467" iyz="0" izz="0.04411"/>
</inertial>
<visual>
<origin rpy="1.57079632679 0 0" xyz="0 0 0"/>
<geometry>
<mesh scale="0.001 0.001 0.001" filename="differential/diff_spider.stl"/>
</geometry>
<material name="DarkGrey"/>
</visual>
<collision>
<origin rpy="1.570795 0 0" xyz="0 0.01 0"/>
<geometry>
<cylinder length="0.01" radius="0.015"/>
</geometry>
</collision>
</link>
<joint name="diff_spiderB_ring" type="continuous">
<parent link="diff_ring"/>
<child link="diff_spiderB"/>
<origin rpy="0 0 -1.570795" xyz="0.0 0.0 0.0"/>
<axis rpy="0 0 0" xyz="0 1 0"/>
</joint>
<link name="diff_sideA">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<stiffness value="30000"/>
<damping value="1000"/>
</contact>
<inertial>
<mass value="2.637"/>
<origin xyz="0 0 0"/>
<inertia ixx="0.02467" ixy="0" ixz="0" iyy="0.02467" iyz="0" izz="0.04411"/>
</inertial>
<visual>
<origin rpy="1.570795 0 0" xyz="0 0 0"/>
<geometry>
<mesh scale="0.001 0.001 0.001" filename="differential/diff_side.stl"/>
</geometry>
<material name="DarkGrey"/>
</visual>
<collision>
<origin rpy="1.570795 0 0" xyz="0 0.01 0"/>
<geometry>
<cylinder length="0.01" radius="0.015"/>
</geometry>
</collision>
</link>
<joint name="diff_sideA_ring" type="continuous">
<parent link="diff_ring"/>
<child link="diff_sideA"/>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<axis rpy="0 0 0" xyz="0 1 0"/>
</joint>
<link name="diff_sideB">
<contact>
<lateral_friction value="1.0"/>
<rolling_friction value="0.0"/>
<stiffness value="30000"/>
<damping value="1000"/>
</contact>
<inertial>
<mass value="2.637"/>
<origin xyz="0 0 0"/>
<inertia ixx="0.02467" ixy="0" ixz="0" iyy="0.02467" iyz="0" izz="0.04411"/>
</inertial>
<visual>
<origin rpy="-1.570795 0 0" xyz="0 0 0"/>
<geometry>
<mesh scale="0.001 0.001 0.001" filename="differential/diff_side.stl"/>
</geometry>
<material name="DarkGrey"/>
</visual>
<collision>
<origin rpy="-1.570795 0 0" xyz="0 -0.01 0"/>
<geometry>
<cylinder length="0.01" radius="0.015"/>
</geometry>
</collision>
</link>
<joint name="diff_sideB_ring" type="continuous">
<parent link="diff_ring"/>
<child link="diff_sideB"/>
<origin rpy="0 0 0" xyz="0.0 0.0 0.0"/>
<axis rpy="0 0 0" xyz="0 1 0"/>
</joint>
</robot>

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,2 @@
stl files were copied from http://www.otvinta.com/download09.html
URDF file was manually created, along with mimicJointConstraint.py

View file

@ -0,0 +1,128 @@
# Blender MTL File: 'None'
# Material Count: 14
newmtl Shape.014
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.664000 0.688000 0.616000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.015
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.120000 0.744000 0.280000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.016
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.688000 0.736000 0.392000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.017
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.168000 0.496000 0.216000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.018
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.720000 0.472000 0.504000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.019
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.576000 0.288000 0.088000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.020
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.544000 0.536000 0.232000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.021
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.656000 0.240000 0.496000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.022
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.184000 0.536000 0.280000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.023
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.232000 0.016000 0.176000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.024
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.464000 0.552000 0.536000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.025
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.744000 0.448000 0.088000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.026
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.336000 0.232000 0.584000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2
newmtl Shape.027
Ns 400.000000
Ka 0.000000 0.000000 0.000000
Kd 0.168000 0.152000 0.672000
Ks 0.250000 0.250000 0.250000
Ni 1.000000
d 0.500000
illum 2

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

View file

@ -0,0 +1,4 @@
newmtl material_0
# shader_type beckmann
map_Kd textured-0008192-diffuse_map.jpg

View file

@ -0,0 +1,30 @@
<?xml version="1.0" ?>
<robot name="cube.urdf">
<link name="baseLink">
<contact>
<lateral_friction value="1.0"/>
<inertia_scaling value="3.0"/>
</contact>
<inertial>
<origin rpy="0 0 0" xyz="-0.01 0 0.02"/>
<mass value=".1"/>
<inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
</inertial>
<visual>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="Cup/textured-0008192.obj" scale="0.5 0.5 0.5"/>
</geometry>
<material name="white">
<color rgba="1 1 1 1"/>
</material>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0"/>
<geometry>
<mesh filename="Cup/cup_vhacd.obj" scale="0.5 0.5 0.5"/>
</geometry>
</collision>
</link>
</robot>

View file

@ -0,0 +1,21 @@
newmtl porcelain
Ka 0.000000 0.000000 0.000000
Kd 1.000000 1.000000 1.000000
Ks 0.200000 0.200000 0.200000
d 1.000000
illum 2
Ns 0.000000
newmtl solid_color
Ka 0.000000 0.000000 0.000000
Kd 1.000000 1.000000 1.000000
Ks 0.200000 0.200000 0.200000
d 1.000000
illum 2
Ns 0.000000
newmtl pan_tefal
Ka 0.000000 0.000000 0.000000
Kd 0.609804 0.494118 0.486275
Ks 0.330000 0.330000 0.330000
map_Kd pan_tefal.jpg

View file

@ -0,0 +1,253 @@
from __future__ import print_function
import numpy as np
class Obj:
def __init__(self, fn):
self.ind_v = 0
self.ind_vt = 0
self.ind_vn = 0
self.fn = fn
self.out = open(fn + ".tmp", "w")
self.out.write("mtllib dinnerware.mtl\n")
def __del__(self):
self.out.close()
import shutil
shutil.move(self.fn + ".tmp", self.fn)
def push_v(self, v):
self.out.write("v %f %f %f\n" % (v[0], v[1], v[2]))
self.ind_v += 1
return self.ind_v
def push_vt(self, vt):
self.out.write("vt %f %f\n" % (vt[0], vt[1]))
self.ind_vt += 1
return self.ind_vt
def push_vn(self, vn):
vn /= np.linalg.norm(vn)
self.out.write("vn %f %f %f\n" % (vn[0], vn[1], vn[2]))
self.ind_vn += 1
return self.ind_vn
def convex_hull(points, vind, nind, tind, obj):
"super ineffective"
cnt = len(points)
for a in range(cnt):
for b in range(a + 1, cnt):
for c in range(b + 1, cnt):
vec1 = points[a] - points[b]
vec2 = points[a] - points[c]
n = np.cross(vec1, vec2)
n /= np.linalg.norm(n)
C = np.dot(n, points[a])
inner = np.inner(n, points)
pos = (inner <= C + 0.0001).all()
neg = (inner >= C - 0.0001).all()
if not pos and not neg: continue
obj.out.write("f %i//%i %i//%i %i//%i\n" %
((vind[a], nind[a], vind[b], nind[b], vind[c], nind[c]) if
(inner - C).sum() < 0 else
(vind[a], nind[a], vind[c], nind[c], vind[b], nind[b])))
#obj.out.write("f %i/%i/%i %i/%i/%i %i/%i/%i\n" % (
# (vind[a], tind[a], nind[a], vind[b], tind[b], nind[b], vind[c], tind[c], nind[c])
# if (inner - C).sum() < 0 else
# (vind[a], tind[a], nind[a], vind[c], tind[c], nind[c], vind[b], tind[b], nind[b]) ) )
def test_convex_hull():
obj = Obj("convex_test.obj")
vlist = np.random.uniform(low=-0.1, high=+0.1, size=(100, 3))
nlist = vlist.copy()
tlist = np.random.uniform(low=0, high=+1, size=(100, 2))
vind = [obj.push_v(xyz) for xyz in vlist]
nind = [obj.push_vn(xyz) for xyz in nlist]
tind = [obj.push_vt(uv) for uv in tlist]
convex_hull(vlist, vind, nind, tind, obj)
class Contour:
def __init__(self):
self.vprev_vind = None
def f(self, obj, vlist_vind, vlist_tind, vlist_nind):
cnt = len(vlist_vind)
for i1 in range(cnt):
i2 = i1 - 1
obj.out.write("f %i/%i/%i %i/%i/%i %i/%i/%i\n" % (
vlist_vind[i2],
vlist_tind[i2],
vlist_nind[i2],
vlist_vind[i1],
vlist_tind[i1],
vlist_nind[i1],
self.vprev_vind[i1],
self.vprev_tind[i1],
self.vprev_nind[i1],
))
obj.out.write("f %i/%i/%i %i/%i/%i %i/%i/%i\n" % (
vlist_vind[i2],
vlist_tind[i2],
vlist_nind[i2],
self.vprev_vind[i1],
self.vprev_tind[i1],
self.vprev_nind[i1],
self.vprev_vind[i2],
self.vprev_tind[i2],
self.vprev_nind[i2],
))
def belt(self, obj, vlist, nlist, tlist):
vlist_vind = [obj.push_v(xyz) for xyz in vlist]
vlist_tind = [obj.push_vt(xyz) for xyz in tlist]
vlist_nind = [obj.push_vn(xyz) for xyz in nlist]
if self.vprev_vind:
self.f(obj, vlist_vind, vlist_tind, vlist_nind)
else:
self.first_vind = vlist_vind
self.first_tind = vlist_tind
self.first_nind = vlist_nind
self.vprev_vind = vlist_vind
self.vprev_tind = vlist_tind
self.vprev_nind = vlist_nind
def finish(self, obj):
self.f(obj, self.first_vind, self.first_tind, self.first_nind)
def test_contour():
RAD1 = 2.0
RAD2 = 1.5
obj = Obj("torus.obj")
obj.out.write("usemtl porcelain\n")
contour = Contour()
for step in range(100):
angle = step / 100.0 * 2 * np.pi
belt_v = []
belt_n = []
belt_t = []
for b in range(50):
beta = b / 50.0 * 2 * np.pi
r = RAD2 * np.cos(beta) + RAD1
z = RAD2 * np.sin(beta)
belt_v.append(np.array([np.cos(angle) * r, np.sin(angle) * r, z]))
belt_n.append(
np.array([np.cos(angle) * np.cos(beta),
np.sin(angle) * np.cos(beta),
np.sin(beta)]))
belt_t.append((0, 0))
contour.belt(obj, belt_v, belt_n, belt_t)
contour.finish(obj)
#test_convex_hull()
#test_contour()
class RotationFigureParams:
pass
def generate_plate(p, obj, collision_prefix):
contour = Contour()
belt_vlist_3d_prev = None
for step in range(p.N_VIZ + 1):
angle = step / float(p.N_VIZ) * 2 * np.pi
if step % p.COLLISION_EVERY == 0:
vlist_3d = []
for x, y in p.belt_simple:
vlist_3d.append([np.cos(angle) * x * 1.06, np.sin(angle) * x * 1.06, y])
if belt_vlist_3d_prev:
obj2 = Obj(collision_prefix % (step / p.COLLISION_EVERY))
obj2.out.write("usemtl pan_tefal\n")
vlist = np.array(vlist_3d + belt_vlist_3d_prev)
vlist[len(vlist_3d):] *= 1.01 # break points on one plane
vlist[0, 0:2] += 0.01 * vlist[len(vlist_3d), 0:2]
vlist[len(vlist_3d), 0:2] += 0.01 * vlist[0, 0:2]
nlist = np.random.uniform(low=-1, high=+1, size=vlist.shape)
tlist = np.random.uniform(low=0, high=+1, size=(len(vlist), 2))
vind = [obj2.push_v(xyz) for xyz in vlist]
nind = [obj2.push_vn(xyz) for xyz in nlist]
convex_hull(vlist, vind, nind, None, obj2)
belt_vlist_3d_prev = vlist_3d
if step == p.N_VIZ: break
belt_v = []
belt_n = []
belt_t = []
for x, y, nx, ny in p.belt:
belt_v.append(np.array([np.cos(angle) * x, np.sin(angle) * x, y]))
belt_n.append(np.array([np.cos(angle) * nx, np.sin(angle) * nx, ny]))
if ny - nx >= 0:
belt_t.append((127.0 / 512 + np.cos(angle) * x / p.RAD_HIGH * 105 / 512,
(512 - 135.0) / 512 + np.sin(angle) * x / p.RAD_HIGH * 105 / 512))
else:
belt_t.append((382.0 / 512 + np.cos(angle) * x / p.RAD_HIGH * 125 / 512,
(512 - 380.0) / 512 + np.sin(angle) * x / p.RAD_HIGH * 125 / 512))
contour.belt(obj, belt_v, belt_n, belt_t)
contour.finish(obj)
def tefal():
p = RotationFigureParams()
p.RAD_LOW = 0.240 / 2
p.RAD_HIGH = 0.255 / 2
p.H = 0.075
p.THICK = 0.005
p.N_VIZ = 30
p.COLLISION_EVERY = 5
p.belt = [
(p.RAD_HIGH - p.THICK, p.H, -1, 0), # x y norm
(p.RAD_HIGH, p.H, 0, 1),
(p.RAD_HIGH + p.THICK, p.H, +1, 0),
(p.RAD_LOW + p.THICK, p.THICK, +1, 0),
(p.RAD_LOW, 0, 0, -1),
(0, 0, 0, -1),
(0, p.THICK, 0, 1),
(p.RAD_LOW - p.THICK, p.THICK, 0, 1),
(p.RAD_LOW - p.THICK, 3 * p.THICK, -1, 0),
]
p.belt.reverse()
p.belt_simple = [(p.RAD_HIGH - p.THICK, p.H), (p.RAD_HIGH + p.THICK, p.H), (p.RAD_LOW, 0),
(p.RAD_LOW - p.THICK, 0)]
obj = Obj("pan_tefal.obj")
obj.out.write("usemtl pan_tefal\n")
generate_plate(p, obj, "pan_tefal-collision%02i.obj")
def plate():
p = RotationFigureParams()
p.RAD_LOW = 0.110 / 2
p.RAD_HIGH = 0.190 / 2
p.H = 0.060
p.THICK = 0.003
p.N_VIZ = 30
p.COLLISION_EVERY = 5
p.belt = [
(p.RAD_HIGH - p.THICK, p.H, -0.9, 0.5), # x y norm
(p.RAD_HIGH, p.H, 0, 1),
(p.RAD_HIGH + p.THICK, p.H, +1, 0),
(p.RAD_LOW + p.THICK, p.THICK, +1, 0),
(p.RAD_LOW, 0, 0, -1),
(0, 0, 0, -1),
(0, p.THICK, 0, 1),
(p.RAD_LOW - 3 * p.THICK, p.THICK, 0, 1),
(p.RAD_LOW - p.THICK, 3 * p.THICK, -0.5, 1.0),
]
p.belt.reverse()
p.belt_simple = [(p.RAD_HIGH - p.THICK, p.H), (p.RAD_HIGH + p.THICK, p.H), (p.RAD_LOW, 0),
(p.RAD_LOW - p.THICK, 0)]
obj = Obj("plate.obj")
obj.out.write("usemtl solid_color\n")
generate_plate(p, obj, "plate-collision%02i.obj")
plate()

Some files were not shown because too many files have changed in this diff Show more