feat: 调整AGV移动方式
This commit is contained in:
parent
0c52f8b909
commit
8d8bcb4e26
13
public/upper_body/assets/arm_link_1.part
Normal file
13
public/upper_body/assets/arm_link_1.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "8c088a46f41b8780aa1cf914",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "M77c5kvnmFYX3+E1/",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "arm_link_1 <2>",
|
||||||
|
"partId": "RHDD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/arm_link_1.stl
Normal file
BIN
public/upper_body/assets/arm_link_1.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/arm_link_2.part
Normal file
13
public/upper_body/assets/arm_link_2.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "8c088a46f41b8780aa1cf914",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "MAagFsEi4vOqUYBnE",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "arm_link_2 <2>",
|
||||||
|
"partId": "JvD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/arm_link_2.stl
Normal file
BIN
public/upper_body/assets/arm_link_2.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/arm_link_3.part
Normal file
13
public/upper_body/assets/arm_link_3.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "8c088a46f41b8780aa1cf914",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "MODZ2heuMlDmDK6JN",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "arm_link_3 <2>",
|
||||||
|
"partId": "RRBD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/arm_link_3.stl
Normal file
BIN
public/upper_body/assets/arm_link_3.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/arm_link_4.part
Normal file
13
public/upper_body/assets/arm_link_4.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "8c088a46f41b8780aa1cf914",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "MmEi+ZosIdG9Wp+iP",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "arm_link_4 <2>",
|
||||||
|
"partId": "RwCD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/arm_link_4.stl
Normal file
BIN
public/upper_body/assets/arm_link_4.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/arm_link_5.part
Normal file
13
public/upper_body/assets/arm_link_5.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "8c088a46f41b8780aa1cf914",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "MBPP2k1l9Xc6L3QvC",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "arm_link_5 <2>",
|
||||||
|
"partId": "RxCD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/arm_link_5.stl
Normal file
BIN
public/upper_body/assets/arm_link_5.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/arm_link_6.part
Normal file
13
public/upper_body/assets/arm_link_6.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "8c088a46f41b8780aa1cf914",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "MIcvuqnQVxIZF1ql0",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "arm_link_6 <2>",
|
||||||
|
"partId": "RyCD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/arm_link_6.stl
Normal file
BIN
public/upper_body/assets/arm_link_6.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/arm_link_7.part
Normal file
13
public/upper_body/assets/arm_link_7.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "8c088a46f41b8780aa1cf914",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "Mv//Etw9ckikOO5Dz",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "arm_link_7 <2>",
|
||||||
|
"partId": "RrCD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/arm_link_7.stl
Normal file
BIN
public/upper_body/assets/arm_link_7.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/body_link.part
Normal file
13
public/upper_body/assets/body_link.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "0384359606fafa70e61c4a9c",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "MdJXCUi9nHtYjnfh4",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "body_link <1>",
|
||||||
|
"partId": "RAQD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/body_link.stl
Normal file
BIN
public/upper_body/assets/body_link.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_1_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_1_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_1_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_1_2_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_1_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_1_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_1_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_1_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_2_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_2_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_2_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_2_2_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_2_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_3_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_3_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_3_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_3_2_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_3_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_3_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_3_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_3_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_4_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_4_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_4_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_4_2_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_4_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_4_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_4_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_4_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_5_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_5_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_5_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_5_2_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_5_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_5_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_5_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_5_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_6_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_6_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_6_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_6_2_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_6_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_6_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_6_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_6_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_7_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_7_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_7_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_7_2_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_7_collision.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_7_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/arm_link_7_visual.stl
Normal file
BIN
public/upper_body/assets/merged/arm_link_7_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/body_link_collision.stl
Normal file
BIN
public/upper_body/assets/merged/body_link_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/body_link_visual.stl
Normal file
BIN
public/upper_body/assets/merged/body_link_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/waist_link_1_collision.stl
Normal file
BIN
public/upper_body/assets/merged/waist_link_1_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/waist_link_1_visual.stl
Normal file
BIN
public/upper_body/assets/merged/waist_link_1_visual.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/waist_link_2_collision.stl
Normal file
BIN
public/upper_body/assets/merged/waist_link_2_collision.stl
Normal file
Binary file not shown.
BIN
public/upper_body/assets/merged/waist_link_2_visual.stl
Normal file
BIN
public/upper_body/assets/merged/waist_link_2_visual.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/waist_link_1.part
Normal file
13
public/upper_body/assets/waist_link_1.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "384bd645b0ca4a89ac420dd3",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "MaMIM7xMUAfPCsjBw",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "waist_link_1 <1>",
|
||||||
|
"partId": "R2ED",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/waist_link_1.stl
Normal file
BIN
public/upper_body/assets/waist_link_1.stl
Normal file
Binary file not shown.
13
public/upper_body/assets/waist_link_2.part
Normal file
13
public/upper_body/assets/waist_link_2.part
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"configuration": "default",
|
||||||
|
"documentId": "3fb6fc43af8407628b8a436e",
|
||||||
|
"documentMicroversion": "5f27bb53d2c263aa503ee4fb",
|
||||||
|
"elementId": "384bd645b0ca4a89ac420dd3",
|
||||||
|
"fullConfiguration": "default",
|
||||||
|
"id": "M751ldLqHrvZy5x87",
|
||||||
|
"isStandardContent": false,
|
||||||
|
"name": "waist_link_2 <1>",
|
||||||
|
"partId": "RWFD",
|
||||||
|
"suppressed": false,
|
||||||
|
"type": "Part"
|
||||||
|
}
|
||||||
BIN
public/upper_body/assets/waist_link_2.stl
Normal file
BIN
public/upper_body/assets/waist_link_2.stl
Normal file
Binary file not shown.
10
public/upper_body/config.json
Normal file
10
public/upper_body/config.json
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
// config.json general options
|
||||||
|
// for urdf or mujoco specific options, see documentation
|
||||||
|
{
|
||||||
|
// Onshape assembly URL
|
||||||
|
"url": "https://cad.onshape.com/documents/3fb6fc43af8407628b8a436e/w/97510b712561d1cd4f61c300/e/926f5c272b7ea2919e153a0d",
|
||||||
|
// Output format: urdf or mujoco (required)
|
||||||
|
"output_format": "urdf",
|
||||||
|
"merge_stls": true,
|
||||||
|
"simplify_stls": "visual"
|
||||||
|
}
|
||||||
541
public/upper_body/robot.urdf
Normal file
541
public/upper_body/robot.urdf
Normal file
@ -0,0 +1,541 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!-- Generated using onshape-to-robot -->
|
||||||
|
<!-- Onshape https://cad.onshape.com/documents/3fb6fc43af8407628b8a436e/w/97510b712561d1cd4f61c300/e/926f5c272b7ea2919e153a0d -->
|
||||||
|
<robot name="upper_body">
|
||||||
|
<!-- Link body_link -->
|
||||||
|
<link name="body_link">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="-0.00770062 -4.54985e-06 -0.105557" rpy="0 0 0"/>
|
||||||
|
<mass value="14.6288"/>
|
||||||
|
<inertia ixx="0.245371" ixy="-1.70664e-06" ixz="-0.00216387" iyy="0.195814" iyz="1.53223e-05" izz="0.131523"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part body_link_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="-0.00770062 -4.54985e-06 -0.105557" rpy="0 -0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/body_link_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="body_link_parts_material">
|
||||||
|
<color rgba="0.980392 0.713725 0.00392157 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="-0.00770062 -4.54985e-06 -0.105557" rpy="0 -0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/body_link_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_1 -->
|
||||||
|
<link name="arm_link_1">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="-1.06869e-05 -0.00369804 -0.0615825" rpy="0 0 0"/>
|
||||||
|
<mass value="2.2038"/>
|
||||||
|
<inertia ixx="0.00398711" ixy="-6.128e-09" ixz="-9.9572e-08" iyy="0.00332264" iyz="-4.52028e-05" izz="0.00327232"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_1_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="-1.06869e-05 -0.00369804 -0.0615825" rpy="-1.5708 1e-11 -1.57077"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_1_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_1_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="-1.06869e-05 -0.00369804 -0.0615825" rpy="-1.5708 1e-11 -1.57077"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_1_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_2 -->
|
||||||
|
<link name="arm_link_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="0.0860616 3.31509e-05 0.0345088" rpy="0 0 0"/>
|
||||||
|
<mass value="1.9456"/>
|
||||||
|
<inertia ixx="0.00232848" ixy="8.86713e-07" ixz="-0.000218608" iyy="0.00607768" iyz="-4.37798e-07" izz="0.00629001"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="0.0860616 3.31509e-05 0.0345088" rpy="4.54761e-07 1.57077 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_2_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="0.0860616 3.31509e-05 0.0345088" rpy="4.54761e-07 1.57077 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_3 -->
|
||||||
|
<link name="arm_link_3">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="4.40212e-05 -0.00236525 -0.104181" rpy="0 0 0"/>
|
||||||
|
<mass value="1.94886"/>
|
||||||
|
<inertia ixx="0.00638928" ixy="-2.96534e-06" ixz="3.84694e-06" iyy="0.00598683" iyz="-0.000187472" izz="0.00215638"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_3_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="4.40212e-05 -0.00236525 -0.104181" rpy="-1.5708 1e-11 -1.57077"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_3_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_3_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="4.40212e-05 -0.00236525 -0.104181" rpy="-1.5708 1e-11 -1.57077"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_3_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_4 -->
|
||||||
|
<link name="arm_link_4">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="0.0678998 -1.73447e-05 0.0344772" rpy="0 0 0"/>
|
||||||
|
<mass value="0.916518"/>
|
||||||
|
<inertia ixx="0.000809181" ixy="5.12238e-07" ixz="-8.56762e-05" iyy="0.00204112" iyz="-3.3225e-08" izz="0.00203466"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_4_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="0.0678998 -1.73447e-05 0.0344772" rpy="4.54761e-07 1.57077 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_4_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_4_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="0.0678998 -1.73447e-05 0.0344772" rpy="4.54761e-07 1.57077 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_4_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_5 -->
|
||||||
|
<link name="arm_link_5">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="0.00175699 -4.98862e-07 -0.0504805" rpy="0 0 0"/>
|
||||||
|
<mass value="0.843691"/>
|
||||||
|
<inertia ixx="0.00115484" ixy="-4.1705e-08" ixz="2.59664e-05" iyy="0.00131635" iyz="1.16286e-07" izz="0.000742072"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_5_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="0.00175699 -4.98862e-07 -0.0504805" rpy="-1.5708 1e-11 -1.57077"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_5_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_5_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="0.00175699 -4.98862e-07 -0.0504805" rpy="-1.5708 1e-11 -1.57077"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_5_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_6 -->
|
||||||
|
<link name="arm_link_6">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="9.27263e-05 -0.004905 -0.0280094" rpy="0 0 0"/>
|
||||||
|
<mass value="0.525446"/>
|
||||||
|
<inertia ixx="0.000275345" ixy="-1.06372e-06" ixz="-5.7647e-08" iyy="0.000233524" iyz="-3.51729e-06" izz="0.000268736"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_6_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="9.27263e-05 -0.004905 -0.0280094" rpy="0 -2.25524e-05 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_6_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_6_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="9.27263e-05 -0.004905 -0.0280094" rpy="0 -2.25524e-05 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_6_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_7 -->
|
||||||
|
<link name="arm_link_7">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="0.0288794 -1.4907e-07 0.0339252" rpy="0 0 0"/>
|
||||||
|
<mass value="0.13521"/>
|
||||||
|
<inertia ixx="0.000149861" ixy="1.66e-10" ixz="-8.09464e-06" iyy="0.000202616" iyz="-2.81e-10" izz="0.000110973"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_7_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="0.0288794 -1.4907e-07 0.0339252" rpy="3.96342e-07 1.57077 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_7_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_7_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="0.0288794 -1.4907e-07 0.0339252" rpy="3.96342e-07 1.57077 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_7_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Joint from arm_link_6 to arm_link_7 -->
|
||||||
|
<joint name="left_arm_J7" type="revolute">
|
||||||
|
<origin xyz="0 -0.036 -0.028" rpy="-1.5708 -0 0"/>
|
||||||
|
<parent link="arm_link_6"/>
|
||||||
|
<child link="arm_link_7"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_5 to arm_link_6 -->
|
||||||
|
<joint name="left_arm_J6" type="revolute">
|
||||||
|
<origin xyz="0.0295 0 -0.131" rpy="0 1.5708 0"/>
|
||||||
|
<parent link="arm_link_5"/>
|
||||||
|
<child link="arm_link_6"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_4 to arm_link_5 -->
|
||||||
|
<joint name="left_arm_J5" type="revolute">
|
||||||
|
<origin xyz="0.1215 -0 0.036" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<parent link="arm_link_4"/>
|
||||||
|
<child link="arm_link_5"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_3 to arm_link_4 -->
|
||||||
|
<joint name="left_arm_J4" type="revolute">
|
||||||
|
<origin xyz="-7.46e-10 -0.036 -0.146" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<parent link="arm_link_3"/>
|
||||||
|
<child link="arm_link_4"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_2 to arm_link_3 -->
|
||||||
|
<joint name="left_arm_J3" type="revolute">
|
||||||
|
<origin xyz="0.1565 -2.41e-10 0.036" rpy="1.5708 0 -1.5708"/>
|
||||||
|
<parent link="arm_link_2"/>
|
||||||
|
<child link="arm_link_3"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_1 to arm_link_2 -->
|
||||||
|
<joint name="left_arm_J2" type="revolute">
|
||||||
|
<origin xyz="-0 -0.036 -0.071" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<parent link="arm_link_1"/>
|
||||||
|
<child link="arm_link_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from body_link to arm_link_1 -->
|
||||||
|
<joint name="left_arm_J1" type="revolute">
|
||||||
|
<origin xyz="-0 0.1425 -0.004" rpy="1.5708 -1.57077 -0"/>
|
||||||
|
<parent link="body_link"/>
|
||||||
|
<child link="arm_link_1"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Link arm_link_1_2 -->
|
||||||
|
<link name="arm_link_1_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="-1.06869e-05 -0.00369804 -0.0615825" rpy="0 0 0"/>
|
||||||
|
<mass value="2.2038"/>
|
||||||
|
<inertia ixx="0.00398711" ixy="-6.128e-09" ixz="-9.9572e-08" iyy="0.00332264" iyz="-4.52028e-05" izz="0.00327232"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_1_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="-1.06869e-05 -0.00369804 -0.0615825" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_1_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_1_2_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="-1.06869e-05 -0.00369804 -0.0615825" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_1_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_2_2 -->
|
||||||
|
<link name="arm_link_2_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="0.0860616 3.31509e-05 0.0345088" rpy="0 0 0"/>
|
||||||
|
<mass value="1.9456"/>
|
||||||
|
<inertia ixx="0.00232848" ixy="8.86713e-07" ixz="-0.000218608" iyy="0.00607768" iyz="-4.37798e-07" izz="0.00629001"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_2_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="0.0860616 3.31509e-05 0.0345088" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_2_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_2_2_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="0.0860616 3.31509e-05 0.0345088" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_2_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_3_2 -->
|
||||||
|
<link name="arm_link_3_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="4.40212e-05 -0.00236525 -0.104181" rpy="0 0 0"/>
|
||||||
|
<mass value="1.94886"/>
|
||||||
|
<inertia ixx="0.00638928" ixy="-2.96534e-06" ixz="3.84694e-06" iyy="0.00598683" iyz="-0.000187472" izz="0.00215638"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_3_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="4.40212e-05 -0.00236525 -0.104181" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_3_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_3_2_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="4.40212e-05 -0.00236525 -0.104181" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_3_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_4_2 -->
|
||||||
|
<link name="arm_link_4_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="0.0678998 -1.73447e-05 0.0344772" rpy="0 0 0"/>
|
||||||
|
<mass value="0.916518"/>
|
||||||
|
<inertia ixx="0.000809181" ixy="5.12238e-07" ixz="-8.56762e-05" iyy="0.00204112" iyz="-3.3225e-08" izz="0.00203466"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_4_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="0.0678998 -1.73447e-05 0.0344772" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_4_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_4_2_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="0.0678998 -1.73447e-05 0.0344772" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_4_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_5_2 -->
|
||||||
|
<link name="arm_link_5_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="0.00175699 -4.98862e-07 -0.0504805" rpy="0 0 0"/>
|
||||||
|
<mass value="0.843691"/>
|
||||||
|
<inertia ixx="0.00115484" ixy="-4.1705e-08" ixz="2.59664e-05" iyy="0.00131635" iyz="1.16286e-07" izz="0.000742072"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_5_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="0.00175699 -4.98862e-07 -0.0504805" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_5_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_5_2_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="0.00175699 -4.98862e-07 -0.0504805" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_5_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_6_2 -->
|
||||||
|
<link name="arm_link_6_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="9.27263e-05 -0.004905 -0.0280094" rpy="0 0 0"/>
|
||||||
|
<mass value="0.525446"/>
|
||||||
|
<inertia ixx="0.000275345" ixy="-1.06372e-06" ixz="-5.7647e-08" iyy="0.000233524" iyz="-3.51729e-06" izz="0.000268736"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_6_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="9.27263e-05 -0.004905 -0.0280094" rpy="3.14159 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_6_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_6_2_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="9.27263e-05 -0.004905 -0.0280094" rpy="3.14159 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_6_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link arm_link_7_2 -->
|
||||||
|
<link name="arm_link_7_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="0.0288794 -1.4907e-07 0.0339252" rpy="0 0 0"/>
|
||||||
|
<mass value="0.13521"/>
|
||||||
|
<inertia ixx="0.000149861" ixy="1.66e-10" ixz="-8.09464e-06" iyy="0.000202616" iyz="-2.81e-10" izz="0.000110973"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part arm_link_7_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="0.0288794 -1.4907e-07 0.0339252" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_7_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="arm_link_7_2_parts_material">
|
||||||
|
<color rgba="0.901961 0.901961 0.901961 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="0.0288794 -1.4907e-07 0.0339252" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/arm_link_7_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Joint from arm_link_6_2 to arm_link_7_2 -->
|
||||||
|
<joint name="right_arm_J7" type="revolute">
|
||||||
|
<origin xyz="0 -0.036 -0.028" rpy="-1.5708 -0 0"/>
|
||||||
|
<parent link="arm_link_6_2"/>
|
||||||
|
<child link="arm_link_7_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_5_2 to arm_link_6_2 -->
|
||||||
|
<joint name="right_arm_J6" type="revolute">
|
||||||
|
<origin xyz="0.0295 0 -0.131" rpy="-0 1.5708 0"/>
|
||||||
|
<parent link="arm_link_5_2"/>
|
||||||
|
<child link="arm_link_6_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_4_2 to arm_link_5_2 -->
|
||||||
|
<joint name="right_arm_J5" type="revolute">
|
||||||
|
<origin xyz="0.1215 -0 0.036" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<parent link="arm_link_4_2"/>
|
||||||
|
<child link="arm_link_5_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_3_2 to arm_link_4_2 -->
|
||||||
|
<joint name="right_arm_J4" type="revolute">
|
||||||
|
<origin xyz="-7.46e-10 -0.036 -0.146" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<parent link="arm_link_3_2"/>
|
||||||
|
<child link="arm_link_4_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_2_2 to arm_link_3_2 -->
|
||||||
|
<joint name="right_arm_J3" type="revolute">
|
||||||
|
<origin xyz="0.1565 -2.41e-10 0.036" rpy="1.5708 -0 -1.5708"/>
|
||||||
|
<parent link="arm_link_2_2"/>
|
||||||
|
<child link="arm_link_3_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from arm_link_1_2 to arm_link_2_2 -->
|
||||||
|
<joint name="right_arm_J2" type="revolute">
|
||||||
|
<origin xyz="-0 -0.036 -0.071" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<parent link="arm_link_1_2"/>
|
||||||
|
<child link="arm_link_2_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from body_link to arm_link_1_2 -->
|
||||||
|
<joint name="right_arm_J1" type="revolute">
|
||||||
|
<origin xyz="1.9742e-08 -0.1425 -0.00399998" rpy="-1.5708 1.5708 0"/>
|
||||||
|
<parent link="body_link"/>
|
||||||
|
<child link="arm_link_1_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Link waist_link_1 -->
|
||||||
|
<link name="waist_link_1">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="3.11467e-06 0.00674712 -0.0457153" rpy="0 0 0"/>
|
||||||
|
<mass value="2.07988"/>
|
||||||
|
<inertia ixx="0.00276958" ixy="-8.367e-08" ixz="8.1856e-07" iyy="0.00250298" iyz="0.000161404" izz="0.00275977"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part waist_link_1_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="3.11467e-06 0.00674712 -0.0457153" rpy="-0 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/waist_link_1_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="waist_link_1_parts_material">
|
||||||
|
<color rgba="0.972549 0.529412 0.00392157 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="3.11467e-06 0.00674712 -0.0457153" rpy="-0 -0 -1.5708"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/waist_link_1_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Link waist_link_2 -->
|
||||||
|
<link name="waist_link_2">
|
||||||
|
<inertial>
|
||||||
|
<origin xyz="1.34175e-07 -0.0201253 -0.0130557" rpy="0 0 0"/>
|
||||||
|
<mass value="4.6278"/>
|
||||||
|
<inertia ixx="0.0212779" ixy="-2.77841e-07" ixz="1.15998e-06" iyy="0.0217788" iyz="0.00445321" izz="0.0141532"/>
|
||||||
|
</inertial>
|
||||||
|
<!-- Part waist_link_2_parts -->
|
||||||
|
<visual>
|
||||||
|
<origin xyz="1.34175e-07 -0.0201253 -0.0130557" rpy="-1.5708 -1.5708 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/waist_link_2_visual.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="waist_link_2_parts_material">
|
||||||
|
<color rgba="0.498039 0.498039 0.498039 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin xyz="1.34175e-07 -0.0201253 -0.0130557" rpy="-1.5708 -1.5708 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://assets/merged/waist_link_2_collision.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<!-- Joint from waist_link_1 to waist_link_2 -->
|
||||||
|
<joint name="waist_J2" type="revolute">
|
||||||
|
<origin xyz="0 0.058 -0.058" rpy="1.5708 2.1e-11 -0"/>
|
||||||
|
<parent link="waist_link_1"/>
|
||||||
|
<child link="waist_link_2"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
<!-- Joint from body_link to waist_link_1 -->
|
||||||
|
<joint name="waist_J1" type="revolute">
|
||||||
|
<origin xyz="0.045 0 -0.367" rpy="0 -0 1.5708"/>
|
||||||
|
<parent link="body_link"/>
|
||||||
|
<child link="waist_link_1"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="10" velocity="10" lower="-3.141592653589793" upper="3.141592653589793"/>
|
||||||
|
</joint>
|
||||||
|
</robot>
|
||||||
@ -234,7 +234,7 @@ app.post('/api/agv/moveRobot', async (req, res) => {
|
|||||||
velocity: {
|
velocity: {
|
||||||
vx: req.body.vx,
|
vx: req.body.vx,
|
||||||
vy: req.body.vy,
|
vy: req.body.vy,
|
||||||
vz: req.body.vz
|
wz: req.body.wz
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -92,7 +92,7 @@ const testConnect = async () => {
|
|||||||
robotStore.setRobotType(ruleForm.value.robotType)
|
robotStore.setRobotType(ruleForm.value.robotType)
|
||||||
if (ruleForm.value.robotType === 'inspection') {
|
if (ruleForm.value.robotType === 'inspection') {
|
||||||
robotStore.setAgvDeviceId('src1100')
|
robotStore.setAgvDeviceId('src1100')
|
||||||
robotStore.setAlmDeviceId('huayan_arm')
|
robotStore.setAlmDeviceId('aubo_arm')
|
||||||
robotStore.setSpkDeviceId('spk1')
|
robotStore.setSpkDeviceId('spk1')
|
||||||
robotStore.setMicDeviceId('mic1')
|
robotStore.setMicDeviceId('mic1')
|
||||||
robotStore.setCameraDeviceId('real_cam1')
|
robotStore.setCameraDeviceId('real_cam1')
|
||||||
@ -104,21 +104,21 @@ const testConnect = async () => {
|
|||||||
robotStore.setCameraDeviceId('real_cam1')
|
robotStore.setCameraDeviceId('real_cam1')
|
||||||
}
|
}
|
||||||
|
|
||||||
// const result = await getRuntimeState({
|
const result = await getRuntimeState({
|
||||||
// ip: robotStore.ip,
|
ip: robotStore.ip,
|
||||||
// deviceId: ruleForm.value.agvDeviceId
|
deviceId: ruleForm.value.agvDeviceId
|
||||||
// })
|
})
|
||||||
loading.value = false
|
loading.value = false
|
||||||
// if (result.code === 200) {
|
if (result.code === 200) {
|
||||||
// robotStore.setPosition(result.data.pose)
|
robotStore.setPosition(result.data.pose)
|
||||||
// robotStore.setBattery(result.data.battery)
|
robotStore.setBattery(result.data.battery)
|
||||||
// robotStore.setCurrentMap(result.data.current_map)
|
robotStore.setCurrentMap(result.data.current_map)
|
||||||
// router.push({
|
router.push({
|
||||||
// path: '/home'
|
path: '/home'
|
||||||
// })
|
})
|
||||||
// } else {
|
} else {
|
||||||
// ElMessage.error(result?.message || '连接服务错误')
|
ElMessage.error(result?.message || '连接服务错误')
|
||||||
// }
|
}
|
||||||
router.push({
|
router.push({
|
||||||
path: '/home'
|
path: '/home'
|
||||||
})
|
})
|
||||||
|
|||||||
@ -7,26 +7,45 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, onBeforeUnmount, nextTick, reactive } from 'vue';
|
import { computed, ref, onMounted, onBeforeUnmount, nextTick, reactive } from 'vue';
|
||||||
import * as THREE from 'three';
|
import * as THREE from 'three';
|
||||||
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
||||||
import { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js';
|
import URDFLoader from 'urdf-loader';
|
||||||
|
|
||||||
import { XacroAdapter } from '@/adapters/XacroAdapter.js'
|
import { XacroAdapter } from '@/adapters/XacroAdapter.js'
|
||||||
import { fileNameMap } from './config'
|
import { URDFAdapter } from '@/adapters/URDFAdapter.js'
|
||||||
import { getThemeColor } from '@/utils/themeColors.js'
|
import { getThemeColor } from '@/utils/themeColors.js'
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
|
modelPath: {
|
||||||
|
type: String,
|
||||||
|
default: '/inspection/elfin10/elfin10.urdf.xacro'
|
||||||
|
},
|
||||||
filePath: {
|
filePath: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '/inspection/elfin10/'
|
default: ''
|
||||||
},
|
},
|
||||||
fileName: {
|
fileName: {
|
||||||
type: String,
|
type: String,
|
||||||
default: 'elfin10.urdf.xacro'
|
default: ''
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const normalizePublicPath = (path) => {
|
||||||
|
let normalized = path.trim().replace(/\\/g, '/')
|
||||||
|
normalized = normalized.replace(/^[a-zA-Z]:.*?\/public\//, '/')
|
||||||
|
normalized = normalized.replace(/^\.?\/?public\//, '/')
|
||||||
|
return normalized.startsWith('/') ? normalized : `/${normalized}`
|
||||||
|
}
|
||||||
|
|
||||||
|
const modelUrl = computed(() => normalizePublicPath(
|
||||||
|
props.filePath && props.fileName
|
||||||
|
? `${props.filePath.replace(/[\\/]?$/, '/')}${props.fileName}`
|
||||||
|
: props.modelPath
|
||||||
|
))
|
||||||
|
|
||||||
|
const modelDirectory = computed(() => modelUrl.value.slice(0, modelUrl.value.lastIndexOf('/') + 1))
|
||||||
|
|
||||||
const viewerContainer = ref(null);
|
const viewerContainer = ref(null);
|
||||||
|
|
||||||
let scene, camera, renderer, controls;
|
let scene, camera, renderer, controls;
|
||||||
@ -97,33 +116,76 @@ const resetJoints = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const fileMap = new Map()
|
const fileMap = new Map()
|
||||||
|
const resolveReferencedUrl = (reference, parentUrl) => {
|
||||||
|
const normalized = reference.replace(/\\/g, '/')
|
||||||
|
const rosPath = normalized.match(/^(?:file:\/\/)?\$\(find\s+[^)]+\)\/(.+)$/)
|
||||||
|
if (rosPath) return `${modelDirectory.value}${rosPath[1]}`
|
||||||
|
|
||||||
|
const packagePath = normalized.match(/^package:\/\/[^/]+\/(.+)$/)
|
||||||
|
if (packagePath) return `${modelDirectory.value}${packagePath[1]}`
|
||||||
|
|
||||||
|
if (/^(?:https?:|blob:|data:)/i.test(normalized)) return normalized
|
||||||
|
return new URL(normalized, new URL(parentUrl, window.location.origin)).pathname
|
||||||
|
}
|
||||||
|
|
||||||
const loadFiles = async () => {
|
const loadFiles = async () => {
|
||||||
const fileNames = fileNameMap[props.filePath]
|
fileMap.clear()
|
||||||
const fetchPromises = fileNames.map(async (name) => {
|
if (!modelUrl.value.toLowerCase().endsWith('.xacro')) return
|
||||||
const url = `${props.filePath}${name}`
|
|
||||||
|
const pendingUrls = [modelUrl.value]
|
||||||
|
const visitedUrls = new Set()
|
||||||
|
while (pendingUrls.length) {
|
||||||
|
const url = pendingUrls.shift()
|
||||||
|
if (visitedUrls.has(url)) continue
|
||||||
|
visitedUrls.add(url)
|
||||||
|
|
||||||
const response = await fetch(url)
|
const response = await fetch(url)
|
||||||
|
if (!response.ok) throw new Error(`加载模型依赖失败:${url} (HTTP ${response.status})`)
|
||||||
const blob = await response.blob()
|
const blob = await response.blob()
|
||||||
return new File([blob], name, { type: blob.type })
|
const fileName = url.split('/').pop()
|
||||||
})
|
const file = new File([blob], fileName, { type: blob.type })
|
||||||
const fileList = await Promise.all(fetchPromises)
|
fileMap.set(url, file)
|
||||||
fileList.forEach(item => {
|
|
||||||
fileMap.set(props.filePath + item.name, item);
|
if (!/\.(?:xacro|urdf|xml)$/i.test(fileName)) continue
|
||||||
|
const content = await blob.text()
|
||||||
|
const references = [...content.matchAll(/\b(?:filename|url)=["']([^"']+)["']/gi)]
|
||||||
|
references.forEach(([, reference]) => {
|
||||||
|
const referencedUrl = resolveReferencedUrl(reference, url)
|
||||||
|
if (!visitedUrls.has(referencedUrl)) pendingUrls.push(referencedUrl)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const currentModel = ref()
|
const currentModel = ref()
|
||||||
let robotInstance = null; // 保存 URDFRobot 对象
|
let robotInstance = null; // 保存 URDFRobot 对象
|
||||||
|
|
||||||
const loadRobot = async () => {
|
const parseUrdf = async (urdfContent) => {
|
||||||
const xacroUrl = `${props.filePath}${props.fileName}`;
|
const loader = new URDFLoader()
|
||||||
|
loader.parseCollision = true
|
||||||
|
|
||||||
const response = await fetch(xacroUrl);
|
const packageNames = [...urdfContent.matchAll(/package:\/\/([^/]+)/g)].map(match => match[1])
|
||||||
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
loader.packages = Object.fromEntries(
|
||||||
const xacroContent = await response.text();
|
[...new Set(packageNames)].map(packageName => [packageName, `${modelDirectory.value}${packageName}`])
|
||||||
const file = fileMap.get(xacroUrl)
|
)
|
||||||
|
|
||||||
|
const robot = loader.parse(urdfContent, modelDirectory.value)
|
||||||
|
return URDFAdapter.convert(robot, urdfContent)
|
||||||
|
}
|
||||||
|
|
||||||
|
const loadRobot = async () => {
|
||||||
|
const response = await fetch(modelUrl.value);
|
||||||
|
if (!response.ok) throw new Error(`加载模型失败:${modelUrl.value} (HTTP ${response.status})`);
|
||||||
|
const content = await response.text();
|
||||||
|
const fileName = modelUrl.value.split('/').pop()
|
||||||
|
const lowerCaseFileName = fileName.toLowerCase()
|
||||||
let model
|
let model
|
||||||
if (props.fileName.split('.').pop() === 'xacro') {
|
if (lowerCaseFileName.endsWith('.xacro')) {
|
||||||
model = await XacroAdapter.parse(xacroContent, file.name, fileMap, file);
|
const file = fileMap.get(modelUrl.value) || new File([content], fileName, { type: 'text/xml' })
|
||||||
|
model = await XacroAdapter.parse(content, file.name, fileMap, file);
|
||||||
|
} else if (lowerCaseFileName.endsWith('.urdf')) {
|
||||||
|
model = await parseUrdf(content)
|
||||||
|
} else {
|
||||||
|
throw new Error(`不支持的模型格式:${fileName},仅支持 .xacro 和 .urdf`)
|
||||||
}
|
}
|
||||||
|
|
||||||
const robot = model.threeObject;
|
const robot = model.threeObject;
|
||||||
|
|||||||
@ -89,7 +89,7 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card">
|
<!-- <div class="card">
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="isDragging"
|
v-model="isDragging"
|
||||||
size="large"
|
size="large"
|
||||||
@ -114,7 +114,7 @@
|
|||||||
⬣ 紧急停止
|
⬣ 紧急停止
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
</aside>
|
</aside>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ const rotationAngle = ref(0)
|
|||||||
|
|
||||||
const paramList = reactive([
|
const paramList = reactive([
|
||||||
{ key: 'speed', label: '速度', model: maxSpeed, min: 0, max: 1, step: 0.1, unit: 'm/s', digits: 1 },
|
{ key: 'speed', label: '速度', model: maxSpeed, min: 0, max: 1, step: 0.1, unit: 'm/s', digits: 1 },
|
||||||
{ key: 'rot', label: '旋转角度', model: rotationAngle, min: -1, max: 1, step: 0.1, unit: 'm/s', digits: 0 },
|
{ key: 'rot', label: '旋转角度', model: rotationAngle, min: -1, max: 1, step: 0.1, unit: 'm/s', digits: 1 },
|
||||||
])
|
])
|
||||||
|
|
||||||
const statusItems = [
|
const statusItems = [
|
||||||
@ -171,8 +171,11 @@ const moveRobotData = ref({
|
|||||||
vz: 0
|
vz: 0
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const running = ref(false)
|
||||||
|
|
||||||
/* long-press stubs */
|
/* long-press stubs */
|
||||||
const onPress = async (_dir) => {
|
const onPress = async (_dir) => {
|
||||||
|
running.value = true
|
||||||
if (_dir === 'forward') {
|
if (_dir === 'forward') {
|
||||||
moveRobotData.value.vx = maxSpeed.value
|
moveRobotData.value.vx = maxSpeed.value
|
||||||
} else if (_dir === 'backward') {
|
} else if (_dir === 'backward') {
|
||||||
@ -182,22 +185,35 @@ const onPress = async (_dir) => {
|
|||||||
} else {
|
} else {
|
||||||
moveRobotData.value.vy = -maxSpeed.value
|
moveRobotData.value.vy = -maxSpeed.value
|
||||||
}
|
}
|
||||||
moveRobotData.value.vz = rotationAngle.value
|
moveRobotData.value.wz = rotationAngle.value
|
||||||
|
run(moveRobotData.value)
|
||||||
|
}
|
||||||
|
|
||||||
|
const run = async (data) => {
|
||||||
|
if (!running.value) {
|
||||||
|
return
|
||||||
|
}
|
||||||
const res = await moveRobot({
|
const res = await moveRobot({
|
||||||
ip: robotStore.ip,
|
ip: robotStore.ip,
|
||||||
deviceId: robotStore.agvDeviceId,
|
deviceId: robotStore.agvDeviceId,
|
||||||
...moveRobotData.value
|
...data
|
||||||
})
|
})
|
||||||
|
console.log('res', res)
|
||||||
|
if (res.code === 200) {
|
||||||
|
run(moveRobotData.value)
|
||||||
|
} else {
|
||||||
|
running.value = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onRelease() {
|
function onRelease() {
|
||||||
|
running.value = false
|
||||||
moveRobotData.value.vx = 0;
|
moveRobotData.value.vx = 0;
|
||||||
moveRobotData.value.vy = 0;
|
moveRobotData.value.vy = 0;
|
||||||
stopRobot({
|
// stopRobot({
|
||||||
ip: robotStore.ip,
|
// ip: robotStore.ip,
|
||||||
// deviceId: VITE_AGV_DEVICE_ID
|
// deviceId: robotStore.agvDeviceId,
|
||||||
deviceId: robotStore.agvDeviceId,
|
// })
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const activePointerIds = new Set()
|
const activePointerIds = new Set()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user