UnityにURDFモデルを変換すると初めからぶつかっているモデルは動かなくなってしまうので(Gazeboは適当にコリジョンのペアを選べるので大丈夫だったけど)ぶつからないようなモデルに変更しました。
変更したモデル。回転軸にオフセットを持たせてリンクがぶつからないようにした。見た目はUR-5やMyCobotのようなモデルだが、関節構成は一致させていません。
関節軸の座標を重ねて表示した例。オフセットがあることが分かる。
座標系だけを表示させた図。ベースリンクの真上に手先が来ていないのが気になるが、サンプルなのでそこは割り切ってUnityにロードしてみる。
<?xml version="1.0" ?>
<robot name="sixdofarm2">
<material name="red">
<color rgba="1.0 0.0 0.0 1.0"/>
</material>
<material name="green">
<color rgba="0.0 1.0 0.0 1.0"/>
</material>
<material name="blue">
<color rgba="0.0 0.0 1.0 1.0"/>
</material>
<link name="base_link">
<!-- <visual>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<geometry>
<box size= "0.5 0.5 0.05" />
</geometry>
<material name="red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<geometry>
<box size= "0.5 0.5 0.05" />
</geometry>
</collision> -->
</link>
<joint name="fixed" type="fixed">
<parent link="base_link"/>
<child link="link1"/>
<!-- <origin rpy="0 0 0" xyz="0 0 0.05"/> -->
</joint>
<!-- Link 1 -->
<link name="link1">
<visual>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
<geometry>
<cylinder radius="0.05" length="0.1"/>
</geometry>
<material name="green"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
<geometry>
<cylinder radius="0.05" length="0.1"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
<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="joint1" type="revolute">
<parent link="link1"/>
<child link="link2"/>
<origin rpy="0 0 0" xyz="0 0 0.1"/>
<axis xyz="0 0 1"/>
<limit effort="30" lower="-3.14" upper="3.14" velocity="1.571"/>
</joint>
<!-- Link 2 -->
<link name="link2">
<visual>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<geometry>
<cylinder radius="0.05" length="0.05"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<geometry>
<cylinder radius="0.05" length="0.05"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<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="joint2" type="revolute">
<parent link="link2"/>
<child link="link3"/>
<origin rpy="0 0 0" xyz="0 0.0 0.05"/>
<axis xyz="0 1 0"/>
<limit effort="30" lower="-3.14" upper="3.14" velocity="1.571"/>
</joint>
<!-- Link 3 -->
<link name="link3">
<visual>
<origin rpy="0 0 0" xyz="0 0.1 0.075"/>
<geometry>
<cylinder radius="0.05" length="0.15"/>
</geometry>
<material name="red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0.1 0.075"/>
<geometry>
<cylinder radius="0.05" length="0.15"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0.1 0.075"/>
<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="joint3" type="revolute">
<parent link="link3"/>
<child link="link4"/>
<origin rpy="0 0 0" xyz="0 0.1 0.15"/>
<axis xyz="0 0 1"/>
<limit effort="30" lower="-3.14" upper="3.14" velocity="1.571"/>
</joint>
<!-- Link 4 -->
<link name="link4">
<visual>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
<geometry>
<cylinder radius="0.05" length="0.1"/>
</geometry>
<material name="green"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
<geometry>
<cylinder radius="0.05" length="0.1"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
<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="joint4" type="revolute">
<parent link="link4"/>
<child link="link5"/>
<origin rpy="0 0 0" xyz="0 0.0 0.1"/>
<axis xyz="0 1 0"/>
<limit effort="30" lower="-3.14" upper="3.14" velocity="1.571"/>
</joint>
<!-- Link 5 -->
<link name="link5">
<visual>
<origin rpy="0 0 0" xyz="0 -0.1 0.075"/>
<geometry>
<cylinder radius="0.05" length="0.15"/>
</geometry>
<material name="blue"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 -0.1 0.075"/>
<geometry>
<cylinder radius="0.05" length="0.15"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 -0.1 0.075"/>
<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="joint5" type="revolute">
<parent link="link5"/>
<child link="link6"/>
<origin rpy="0 0 0" xyz="0 -0.2 0.15"/>
<axis xyz="0 1 0"/>
<limit effort="30" lower="-3.14" upper="3.14" velocity="1.571"/>
</joint>
<!-- Link 6 -->
<link name="link6">
<visual>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<geometry>
<cylinder radius="0.05" length="0.05"/>
</geometry>
<material name="red"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<geometry>
<cylinder radius="0.05" length="0.05"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0.025"/>
<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="joint6" type="revolute">
<parent link="link6"/>
<child link="link7"/>
<origin rpy="0 0 0" xyz="0 0 0.05"/>
<axis xyz="0 0 1"/>
<limit effort="30" lower="-3.14" upper="3.14" velocity="1.571"/>
</joint>
<!-- Link 7 (end effector)-->
<link name="link7">
<visual>
<origin rpy="0 0 0" xyz="0 0 0.005"/>
<geometry>
<box size="0.05 0.05 0.01"/>
</geometry>
<material name="green"/>
</visual>
<collision>
<origin rpy="0 0 0" xyz="0 0 0.005"/>
<geometry>
<box size="0.05 0.05 0.1"/>
</geometry>
</collision>
<inertial>
<origin rpy="0 0 0" xyz="0 0 0.005"/>
<mass value="1"/>
<inertia ixx="1.0" ixy="0.0" ixz="0.0" iyy="1.0" iyz="0.0" izz="1.0"/>
</inertial>
</link>
</robot>