Spaces:
Running
Running
add URDF assets to public/, fix OpenArm DAE materials, fix lint errors
Browse files- .gitignore +2 -1
- public/urdf/openarm/assets/body_link0.dae +3 -0
- public/urdf/openarm/assets/body_link0.stl +3 -0
- public/urdf/openarm/assets/finger.dae +3 -0
- public/urdf/openarm/assets/finger.stl +3 -0
- public/urdf/openarm/assets/hand.dae +3 -0
- public/urdf/openarm/assets/hand.stl +3 -0
- public/urdf/openarm/assets/link0.dae +3 -0
- public/urdf/openarm/assets/link0.stl +3 -0
- public/urdf/openarm/assets/link1.dae +3 -0
- public/urdf/openarm/assets/link1.stl +3 -0
- public/urdf/openarm/assets/link2.dae +3 -0
- public/urdf/openarm/assets/link2.stl +3 -0
- public/urdf/openarm/assets/link3.dae +3 -0
- public/urdf/openarm/assets/link3.stl +3 -0
- public/urdf/openarm/assets/link4.dae +3 -0
- public/urdf/openarm/assets/link4.stl +3 -0
- public/urdf/openarm/assets/link5.dae +3 -0
- public/urdf/openarm/assets/link5.stl +3 -0
- public/urdf/openarm/assets/link6.dae +3 -0
- public/urdf/openarm/assets/link6.stl +3 -0
- public/urdf/openarm/assets/link7.dae +3 -0
- public/urdf/openarm/assets/link7.stl +3 -0
- public/urdf/openarm/openarm_bimanual.urdf +495 -0
- public/urdf/so101/assets/base_motor_holder_so101_v1.stl +3 -0
- public/urdf/so101/assets/base_so101_v2.stl +3 -0
- public/urdf/so101/assets/motor_holder_so101_base_v1.stl +3 -0
- public/urdf/so101/assets/motor_holder_so101_wrist_v1.stl +3 -0
- public/urdf/so101/assets/moving_jaw_so101_v1.stl +3 -0
- public/urdf/so101/assets/rotation_pitch_so101_v1.stl +3 -0
- public/urdf/so101/assets/sts3215_03a_no_horn_v1.stl +3 -0
- public/urdf/so101/assets/sts3215_03a_v1.stl +3 -0
- public/urdf/so101/assets/under_arm_so101_v1.stl +3 -0
- public/urdf/so101/assets/upper_arm_so101_v1.stl +3 -0
- public/urdf/so101/assets/waveshare_mounting_plate_so101_v2.stl +3 -0
- public/urdf/so101/assets/wrist_roll_follower_so101_v1.stl +3 -0
- public/urdf/so101/assets/wrist_roll_pitch_so101_v2.stl +3 -0
- public/urdf/so101/so100.urdf +406 -0
- public/urdf/so101/so101_new_calib.urdf +453 -0
- src/app/[org]/[dataset]/[episode]/episode-viewer.tsx +1 -4
- src/app/[org]/[dataset]/[episode]/fetch-data.ts +0 -14
- src/components/action-insights-panel.tsx +13 -13
- src/components/data-recharts.tsx +1 -1
- src/components/filtering-panel.tsx +0 -2
- src/components/stats-panel.tsx +1 -6
- src/components/urdf-viewer.tsx +5 -5
.gitignore
CHANGED
|
@@ -16,7 +16,8 @@
|
|
| 16 |
# next.js
|
| 17 |
/.next/
|
| 18 |
/out/
|
| 19 |
-
/public
|
|
|
|
| 20 |
|
| 21 |
# production
|
| 22 |
/build
|
|
|
|
| 16 |
# next.js
|
| 17 |
/.next/
|
| 18 |
/out/
|
| 19 |
+
/public/*
|
| 20 |
+
!/public/urdf/
|
| 21 |
|
| 22 |
# production
|
| 23 |
/build
|
public/urdf/openarm/assets/body_link0.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a05f59379dcf694e5ff336b1ee3a47ea504a2425a2fa774af1b14e096d9a239a
|
| 3 |
+
size 10783948
|
public/urdf/openarm/assets/body_link0.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7ab0afa9a26bebbf5c6149894c41d96622caa649555ae7c5f0f2548f86148d91
|
| 3 |
+
size 7955034
|
public/urdf/openarm/assets/finger.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:64492f6a80a551a7a53e3f769facc42ee4a9bce1634ff63300a9d7f5b3628cb0
|
| 3 |
+
size 6021838
|
public/urdf/openarm/assets/finger.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:25c115c7c55a422f30ad11581dc21576dc8fc4e09e659890772d86fe82ec04d7
|
| 3 |
+
size 432484
|
public/urdf/openarm/assets/hand.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a7a1ff18be1b603544f36645b50e9842ee1ea94d1ba8cbccdeded50946f4bce7
|
| 3 |
+
size 1549205
|
public/urdf/openarm/assets/hand.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8e5d373ebbd3fd001b506058644062ad71a68f1ced5ca5d5ed0f6de20137956b
|
| 3 |
+
size 18284
|
public/urdf/openarm/assets/link0.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:29037f2e51d6b34dbbdbd1eecb557abd900aa1897be4d4a30a7114e649f987b9
|
| 3 |
+
size 5356744
|
public/urdf/openarm/assets/link0.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c77bdc9419947088e1dfc452e29c6092cc7b02b239ff4f2f5be3d77e393af185
|
| 3 |
+
size 4148234
|
public/urdf/openarm/assets/link1.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c25937f901a4c15730927e08bf5fd26a072e801c529f0bd9678ba9758330647d
|
| 3 |
+
size 7655919
|
public/urdf/openarm/assets/link1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:2a182c7fd4d25226aff6d9e2dd9d1008a85fce7df8e16525722a5c5053f8b055
|
| 3 |
+
size 5741534
|
public/urdf/openarm/assets/link2.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5d2a1ec857a22eaa180034e2dcd989c54611abab6ce6659eb4999570c34cc124
|
| 3 |
+
size 6288652
|
public/urdf/openarm/assets/link2.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:de1b190a56c16dea14546fb8e22c86eccabc2ca5e054819630c1932592381745
|
| 3 |
+
size 4543534
|
public/urdf/openarm/assets/link3.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:97d73c4bae3f3f7570bf3e28306da719aa99a6bec662060c9e358e5625b11cce
|
| 3 |
+
size 6846210
|
public/urdf/openarm/assets/link3.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8d47d75d0c47a65021708ba63cb73162bf7c3b1d14e9cfc70dfa47336034ac76
|
| 3 |
+
size 4978834
|
public/urdf/openarm/assets/link4.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:59eb1cbf44b1250ad9533176b30084179f9164fcb998ee2623d89b48968ec426
|
| 3 |
+
size 6644484
|
public/urdf/openarm/assets/link4.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8ca8149f2ce8b1b102270ec0b1a4b75c3e6f98c09b084430a450adce808607e1
|
| 3 |
+
size 4944684
|
public/urdf/openarm/assets/link5.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:96fd3516df16a772a84c268529e5b53b05e6df07da6ccfe850bc091eba947156
|
| 3 |
+
size 9034473
|
public/urdf/openarm/assets/link5.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:30ea7abfdd3661b315f897bb82a5f34fd966357b358e890e155e928e931ea975
|
| 3 |
+
size 6322984
|
public/urdf/openarm/assets/link6.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:adcd37741f4e223bd6fe9925625e84191b525c9d27f151f9178b23989de05459
|
| 3 |
+
size 6133097
|
public/urdf/openarm/assets/link6.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e49f91279f109baecb9ff54f5041eeb4514f757ba6daa65c3ea01fb1991967e4
|
| 3 |
+
size 4818434
|
public/urdf/openarm/assets/link7.dae
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e0e1d59b1e09c5a73198cdf175dbb94844073ec067d4b491dcab8a9e1a7faade
|
| 3 |
+
size 6288812
|
public/urdf/openarm/assets/link7.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a91593b67d2dec16d1dfb6f1305df3ddcd214cdef02e97d5aba30bc633e775b2
|
| 3 |
+
size 5114784
|
public/urdf/openarm/openarm_bimanual.urdf
ADDED
|
@@ -0,0 +1,495 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version='1.0' encoding='utf-8'?>
|
| 2 |
+
<robot name="openarm">
|
| 3 |
+
<link name="world" />
|
| 4 |
+
<joint name="openarm_body_world_joint" type="fixed">
|
| 5 |
+
<parent link="world" />
|
| 6 |
+
<child link="openarm_body_link0" />
|
| 7 |
+
<origin rpy="0 0 0" xyz="0 0 0" />
|
| 8 |
+
</joint>
|
| 9 |
+
<link name="openarm_body_link0">
|
| 10 |
+
<visual name="openarm_body_link0_visual">
|
| 11 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0" />
|
| 12 |
+
<geometry>
|
| 13 |
+
<mesh filename="assets/body_link0.dae" scale="0.001 0.001 0.001" />
|
| 14 |
+
</geometry>
|
| 15 |
+
</visual>
|
| 16 |
+
<collision name="openarm_body_link0_collision">
|
| 17 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0" />
|
| 18 |
+
<geometry>
|
| 19 |
+
<mesh filename="assets/body_link0.dae" scale="0.001 0.001 0.001" />
|
| 20 |
+
</geometry>
|
| 21 |
+
</collision>
|
| 22 |
+
<inertial>
|
| 23 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0" />
|
| 24 |
+
<mass value="13.89" />
|
| 25 |
+
<inertia ixx="1.653" ixy="0.0" ixz="0.0" iyy="1.653" iyz="0.0" izz="0.051" />
|
| 26 |
+
</inertial>
|
| 27 |
+
</link>
|
| 28 |
+
|
| 29 |
+
<!-- ═══ LEFT ARM ═══ -->
|
| 30 |
+
<joint name="openarm_left_openarm_body_link0_joint" type="fixed">
|
| 31 |
+
<parent link="openarm_body_link0" />
|
| 32 |
+
<child link="openarm_left_link0" />
|
| 33 |
+
<origin rpy="-1.5708 0 0" xyz="0.0 0.031 0.698" />
|
| 34 |
+
</joint>
|
| 35 |
+
<link name="openarm_left_link0">
|
| 36 |
+
<visual name="openarm_left_link0_visual">
|
| 37 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0" />
|
| 38 |
+
<geometry>
|
| 39 |
+
<mesh filename="assets/link0.dae" scale="0.001 -0.001 0.001" />
|
| 40 |
+
</geometry>
|
| 41 |
+
</visual>
|
| 42 |
+
<inertial>
|
| 43 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0009483362816297526 -0.0001580207020448382 0.03076860287587199" />
|
| 44 |
+
<mass value="1.1432284943239561" />
|
| 45 |
+
<inertia ixx="0.001128" ixy="-4e-06" ixz="-3.3e-05" iyy="0.000962" iyz="-7e-06" izz="0.00147" />
|
| 46 |
+
</inertial>
|
| 47 |
+
</link>
|
| 48 |
+
<link name="openarm_left_link1">
|
| 49 |
+
<visual name="openarm_left_link1_visual">
|
| 50 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0 0.0 -0.0625" />
|
| 51 |
+
<geometry>
|
| 52 |
+
<mesh filename="assets/link1.dae" scale="0.001 -0.001 0.001" />
|
| 53 |
+
</geometry>
|
| 54 |
+
</visual>
|
| 55 |
+
<inertial>
|
| 56 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0011467657911800769 -3.319987657026362e-05 0.05395284380736254" />
|
| 57 |
+
<mass value="1.1416684646202298" />
|
| 58 |
+
<inertia ixx="0.001567" ixy="-1e-06" ixz="-2.9e-05" iyy="0.001273" iyz="1e-06" izz="0.001016" />
|
| 59 |
+
</inertial>
|
| 60 |
+
</link>
|
| 61 |
+
<joint name="openarm_left_joint1" type="revolute">
|
| 62 |
+
<origin rpy="0 0 0" xyz="0.0 0.0 0.0625" />
|
| 63 |
+
<parent link="openarm_left_link0" />
|
| 64 |
+
<child link="openarm_left_link1" />
|
| 65 |
+
<axis xyz="0 0 1" />
|
| 66 |
+
<limit effort="40" lower="-3.490659" upper="1.3962629999999998" velocity="16.754666" />
|
| 67 |
+
</joint>
|
| 68 |
+
<link name="openarm_left_link2">
|
| 69 |
+
<visual name="openarm_left_link2_visual">
|
| 70 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0301 0.0 -0.1225" />
|
| 71 |
+
<geometry>
|
| 72 |
+
<mesh filename="assets/link2.dae" scale="0.001 -0.001 0.001" />
|
| 73 |
+
</geometry>
|
| 74 |
+
</visual>
|
| 75 |
+
<inertial>
|
| 76 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.00839629182351943 2.0145102027597523e-08 0.03256649300522363" />
|
| 77 |
+
<mass value="0.2775092746011571" />
|
| 78 |
+
<inertia ixx="0.000359" ixy="1e-06" ixz="-0.000109" iyy="0.000376" iyz="1e-06" izz="0.000232" />
|
| 79 |
+
</inertial>
|
| 80 |
+
</link>
|
| 81 |
+
<joint name="openarm_left_joint2" type="revolute">
|
| 82 |
+
<origin rpy="-1.57079632679 0 0" xyz="-0.0301 0.0 0.06" />
|
| 83 |
+
<parent link="openarm_left_link1" />
|
| 84 |
+
<child link="openarm_left_link2" />
|
| 85 |
+
<axis xyz="-1 0 0" />
|
| 86 |
+
<limit effort="40" lower="-3.3161253267948965" upper="0.17453267320510335" velocity="16.754666" />
|
| 87 |
+
</joint>
|
| 88 |
+
<link name="openarm_left_link3">
|
| 89 |
+
<visual name="openarm_left_link3_visual">
|
| 90 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0 -0.0 -0.18875" />
|
| 91 |
+
<geometry>
|
| 92 |
+
<mesh filename="assets/link3.dae" scale="0.001 -0.001 0.001" />
|
| 93 |
+
</geometry>
|
| 94 |
+
</visual>
|
| 95 |
+
<inertial>
|
| 96 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.002104752099628911 -0.0005549085042607548 0.09047470545721961" />
|
| 97 |
+
<mass value="1.073863338202347" />
|
| 98 |
+
<inertia ixx="0.004372" ixy="1e-06" ixz="1.1e-05" iyy="0.004319" iyz="-3.6e-05" izz="0.000661" />
|
| 99 |
+
</inertial>
|
| 100 |
+
</link>
|
| 101 |
+
<joint name="openarm_left_joint3" type="revolute">
|
| 102 |
+
<origin rpy="0 0 0" xyz="0.0301 0.0 0.06625" />
|
| 103 |
+
<parent link="openarm_left_link2" />
|
| 104 |
+
<child link="openarm_left_link3" />
|
| 105 |
+
<axis xyz="0 0 1" />
|
| 106 |
+
<limit effort="27" lower="-1.570796" upper="1.570796" velocity="5.445426" />
|
| 107 |
+
</joint>
|
| 108 |
+
<link name="openarm_left_link4">
|
| 109 |
+
<visual name="openarm_left_link4_visual">
|
| 110 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 -0.0315 -0.3425" />
|
| 111 |
+
<geometry>
|
| 112 |
+
<mesh filename="assets/link4.dae" scale="0.001 0.001 0.001" />
|
| 113 |
+
</geometry>
|
| 114 |
+
</visual>
|
| 115 |
+
<inertial>
|
| 116 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0029006831074562967 -0.03030575826634669 0.06339637422196209" />
|
| 117 |
+
<mass value="0.6348534566833373" />
|
| 118 |
+
<inertia ixx="0.000623" ixy="-1e-06" ixz="-1.9e-05" iyy="0.000511" iyz="3.8e-05" izz="0.000334" />
|
| 119 |
+
</inertial>
|
| 120 |
+
</link>
|
| 121 |
+
<joint name="openarm_left_joint4" type="revolute">
|
| 122 |
+
<origin rpy="0 0 0" xyz="-0.0 0.0315 0.15375" />
|
| 123 |
+
<parent link="openarm_left_link3" />
|
| 124 |
+
<child link="openarm_left_link4" />
|
| 125 |
+
<axis xyz="0 1 0" />
|
| 126 |
+
<limit effort="27" lower="0.0" upper="2.443461" velocity="5.445426" />
|
| 127 |
+
</joint>
|
| 128 |
+
<link name="openarm_left_link5">
|
| 129 |
+
<visual name="openarm_left_link5_visual">
|
| 130 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0 -0.0 -0.438" />
|
| 131 |
+
<geometry>
|
| 132 |
+
<mesh filename="assets/link5.dae" scale="0.001 -0.001 0.001" />
|
| 133 |
+
</geometry>
|
| 134 |
+
</visual>
|
| 135 |
+
<inertial>
|
| 136 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.003049665024221911 -0.0008866902457326625 0.043079803024980934" />
|
| 137 |
+
<mass value="0.6156588026168502" />
|
| 138 |
+
<inertia ixx="0.000423" ixy="-8e-06" ixz="6e-06" iyy="0.000445" iyz="-6e-06" izz="0.000324" />
|
| 139 |
+
</inertial>
|
| 140 |
+
</link>
|
| 141 |
+
<joint name="openarm_left_joint5" type="revolute">
|
| 142 |
+
<origin rpy="0 0 0" xyz="0.0 -0.0315 0.0955" />
|
| 143 |
+
<parent link="openarm_left_link4" />
|
| 144 |
+
<child link="openarm_left_link5" />
|
| 145 |
+
<axis xyz="0 0 1" />
|
| 146 |
+
<limit effort="7" lower="-1.570796" upper="1.570796" velocity="20.943946" />
|
| 147 |
+
</joint>
|
| 148 |
+
<link name="openarm_left_link6">
|
| 149 |
+
<visual name="openarm_left_link6_visual">
|
| 150 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0375 -0.0 -0.5585" />
|
| 151 |
+
<geometry>
|
| 152 |
+
<mesh filename="assets/link6.dae" scale="0.001 -0.001 0.001" />
|
| 153 |
+
</geometry>
|
| 154 |
+
</visual>
|
| 155 |
+
<inertial>
|
| 156 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.037136587005447405 -0.00033230528343419053 -9.498374522309838e-05" />
|
| 157 |
+
<mass value="0.475202773187987" />
|
| 158 |
+
<inertia ixx="0.000143" ixy="1e-06" ixz="1e-06" iyy="0.000157" iyz="1e-06" izz="0.000159" />
|
| 159 |
+
</inertial>
|
| 160 |
+
</link>
|
| 161 |
+
<joint name="openarm_left_joint6" type="revolute">
|
| 162 |
+
<origin rpy="0 0 0" xyz="0.0375 0.0 0.1205" />
|
| 163 |
+
<parent link="openarm_left_link5" />
|
| 164 |
+
<child link="openarm_left_link6" />
|
| 165 |
+
<axis xyz="1 0 0" />
|
| 166 |
+
<limit effort="7" lower="-0.785398" upper="0.785398" velocity="20.943946" />
|
| 167 |
+
</joint>
|
| 168 |
+
<link name="openarm_left_link7">
|
| 169 |
+
<visual name="openarm_left_link7_visual">
|
| 170 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 -0.0 -0.5585" />
|
| 171 |
+
<geometry>
|
| 172 |
+
<mesh filename="assets/link7.dae" scale="0.001 -0.001 0.001" />
|
| 173 |
+
</geometry>
|
| 174 |
+
</visual>
|
| 175 |
+
<inertial>
|
| 176 |
+
<origin rpy="0.0 0.0 0.0" xyz="6.875510271106056e-05 -0.01266175250761268 0.06951945409987448" />
|
| 177 |
+
<mass value="0.4659771327380578" />
|
| 178 |
+
<inertia ixx="0.000639" ixy="1e-06" ixz="1e-06" iyy="0.000497" iyz="8.9e-05" izz="0.000342" />
|
| 179 |
+
</inertial>
|
| 180 |
+
</link>
|
| 181 |
+
<joint name="openarm_left_joint7" type="revolute">
|
| 182 |
+
<origin rpy="0 0 0" xyz="-0.0375 0.0 0.0" />
|
| 183 |
+
<parent link="openarm_left_link6" />
|
| 184 |
+
<child link="openarm_left_link7" />
|
| 185 |
+
<axis xyz="0 -1 0" />
|
| 186 |
+
<limit effort="7" lower="-1.570796" upper="1.570796" velocity="20.943946" />
|
| 187 |
+
</joint>
|
| 188 |
+
|
| 189 |
+
<!-- Left hand -->
|
| 190 |
+
<link name="openarm_left_hand">
|
| 191 |
+
<visual name="openarm_left_hand_visual">
|
| 192 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 -0.6585" />
|
| 193 |
+
<geometry>
|
| 194 |
+
<mesh filename="assets/hand.dae" scale="0.001 0.001 0.001" />
|
| 195 |
+
</geometry>
|
| 196 |
+
</visual>
|
| 197 |
+
<inertial>
|
| 198 |
+
<origin rpy="0 0 0" xyz="0.0 0.002 0.03" />
|
| 199 |
+
<mass value="0.35" />
|
| 200 |
+
<inertia ixx="0.0002473" ixy="1e-06" ixz="1e-06" iyy="1.763e-05" iyz="1e-06" izz="0.0002521" />
|
| 201 |
+
</inertial>
|
| 202 |
+
</link>
|
| 203 |
+
<joint name="left_openarm_hand_joint" type="fixed">
|
| 204 |
+
<parent link="openarm_left_link7" />
|
| 205 |
+
<child link="openarm_left_hand" />
|
| 206 |
+
<origin rpy="0 0 0" xyz="0 -0.0 0.1001" />
|
| 207 |
+
</joint>
|
| 208 |
+
<link name="openarm_left_hand_tcp">
|
| 209 |
+
<inertial>
|
| 210 |
+
<origin xyz="0 0 0" rpy="0 0 0" />
|
| 211 |
+
<mass value="0.001" />
|
| 212 |
+
<inertia ixx="0.000001" ixy="0.0" ixz="0.0" iyy="0.000001" iyz="0.0" izz="0.000001" />
|
| 213 |
+
</inertial>
|
| 214 |
+
</link>
|
| 215 |
+
<joint name="openarm_left_hand_tcp_joint" type="fixed">
|
| 216 |
+
<origin rpy="0 0 0" xyz="0 -0.0 0.08" />
|
| 217 |
+
<parent link="openarm_left_hand" />
|
| 218 |
+
<child link="openarm_left_hand_tcp" />
|
| 219 |
+
</joint>
|
| 220 |
+
<link name="openarm_left_left_finger">
|
| 221 |
+
<visual name="openarm_left_left_finger_visual">
|
| 222 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 -0.05 -0.673001" />
|
| 223 |
+
<geometry>
|
| 224 |
+
<mesh filename="assets/finger.dae" scale="0.001 0.001 0.001" />
|
| 225 |
+
</geometry>
|
| 226 |
+
</visual>
|
| 227 |
+
<inertial>
|
| 228 |
+
<origin rpy="0 0 0" xyz="0.0064528 0.01702 0.0219685" />
|
| 229 |
+
<mass value="0.03602545343277134" />
|
| 230 |
+
<inertia ixx="2.3749999999999997e-06" ixy="1e-06" ixz="1e-06" iyy="2.3749999999999997e-06" iyz="1e-06" izz="7.5e-07" />
|
| 231 |
+
</inertial>
|
| 232 |
+
</link>
|
| 233 |
+
<link name="openarm_left_right_finger">
|
| 234 |
+
<visual name="openarm_left_right_finger_visual">
|
| 235 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.05 -0.673001" />
|
| 236 |
+
<geometry>
|
| 237 |
+
<mesh filename="assets/finger.dae" scale="0.001 -0.001 0.001" />
|
| 238 |
+
</geometry>
|
| 239 |
+
</visual>
|
| 240 |
+
<inertial>
|
| 241 |
+
<origin rpy="0 0 0" xyz="0.0064528 -0.01702 0.0219685" />
|
| 242 |
+
<mass value="0.03602545343277134" />
|
| 243 |
+
<inertia ixx="2.3749999999999997e-06" ixy="1e-06" ixz="1e-06" iyy="2.3749999999999997e-06" iyz="1e-06" izz="7.5e-07" />
|
| 244 |
+
</inertial>
|
| 245 |
+
</link>
|
| 246 |
+
<joint name="openarm_left_finger_joint1" type="prismatic">
|
| 247 |
+
<parent link="openarm_left_hand" />
|
| 248 |
+
<child link="openarm_left_right_finger" />
|
| 249 |
+
<origin rpy="0 0 0" xyz="0 -0.006 0.015" />
|
| 250 |
+
<axis xyz="0 -1 0" />
|
| 251 |
+
<limit effort="333" lower="0.0" upper="0.044" velocity="10.0" />
|
| 252 |
+
</joint>
|
| 253 |
+
<joint name="openarm_left_finger_joint2" type="prismatic">
|
| 254 |
+
<parent link="openarm_left_hand" />
|
| 255 |
+
<child link="openarm_left_left_finger" />
|
| 256 |
+
<origin rpy="0 0 0" xyz="0 0.006 0.015" />
|
| 257 |
+
<axis xyz="0 1 0" />
|
| 258 |
+
<limit effort="333" lower="0.0" upper="0.044" velocity="10.0" />
|
| 259 |
+
<mimic joint="openarm_left_finger_joint1" />
|
| 260 |
+
</joint>
|
| 261 |
+
|
| 262 |
+
<!-- ═══ RIGHT ARM ═══ -->
|
| 263 |
+
<joint name="openarm_right_openarm_body_link0_joint" type="fixed">
|
| 264 |
+
<parent link="openarm_body_link0" />
|
| 265 |
+
<child link="openarm_right_link0" />
|
| 266 |
+
<origin rpy="1.5708 0 0" xyz="0.0 -0.031 0.698" />
|
| 267 |
+
</joint>
|
| 268 |
+
<link name="openarm_right_link0">
|
| 269 |
+
<visual name="openarm_right_link0_visual">
|
| 270 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 0.0" />
|
| 271 |
+
<geometry>
|
| 272 |
+
<mesh filename="assets/link0.dae" scale="0.001 0.001 0.001" />
|
| 273 |
+
</geometry>
|
| 274 |
+
</visual>
|
| 275 |
+
<inertial>
|
| 276 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0009483362816297526 0.0001580207020448382 0.03076860287587199" />
|
| 277 |
+
<mass value="1.1432284943239561" />
|
| 278 |
+
<inertia ixx="0.001128" ixy="-4e-06" ixz="-3.3e-05" iyy="0.000962" iyz="-7e-06" izz="0.00147" />
|
| 279 |
+
</inertial>
|
| 280 |
+
</link>
|
| 281 |
+
<link name="openarm_right_link1">
|
| 282 |
+
<visual name="openarm_right_link1_visual">
|
| 283 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0 0.0 -0.0625" />
|
| 284 |
+
<geometry>
|
| 285 |
+
<mesh filename="assets/link1.dae" scale="0.001 0.001 0.001" />
|
| 286 |
+
</geometry>
|
| 287 |
+
</visual>
|
| 288 |
+
<inertial>
|
| 289 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0011467657911800769 3.319987657026362e-05 0.05395284380736254" />
|
| 290 |
+
<mass value="1.1416684646202298" />
|
| 291 |
+
<inertia ixx="0.001567" ixy="-1e-06" ixz="-2.9e-05" iyy="0.001273" iyz="1e-06" izz="0.001016" />
|
| 292 |
+
</inertial>
|
| 293 |
+
</link>
|
| 294 |
+
<joint name="openarm_right_joint1" type="revolute">
|
| 295 |
+
<origin rpy="0 0 0" xyz="0.0 0.0 0.0625" />
|
| 296 |
+
<parent link="openarm_right_link0" />
|
| 297 |
+
<child link="openarm_right_link1" />
|
| 298 |
+
<axis xyz="0 0 1" />
|
| 299 |
+
<limit effort="40" lower="-1.396263" upper="3.490659" velocity="16.754666" />
|
| 300 |
+
</joint>
|
| 301 |
+
<link name="openarm_right_link2">
|
| 302 |
+
<visual name="openarm_right_link2_visual">
|
| 303 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0301 0.0 -0.1225" />
|
| 304 |
+
<geometry>
|
| 305 |
+
<mesh filename="assets/link2.dae" scale="0.001 0.001 0.001" />
|
| 306 |
+
</geometry>
|
| 307 |
+
</visual>
|
| 308 |
+
<inertial>
|
| 309 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.00839629182351943 -2.0145102027597523e-08 0.03256649300522363" />
|
| 310 |
+
<mass value="0.2775092746011571" />
|
| 311 |
+
<inertia ixx="0.000359" ixy="1e-06" ixz="-0.000109" iyy="0.000376" iyz="1e-06" izz="0.000232" />
|
| 312 |
+
</inertial>
|
| 313 |
+
</link>
|
| 314 |
+
<joint name="openarm_right_joint2" type="revolute">
|
| 315 |
+
<origin rpy="1.57079632679 0 0" xyz="-0.0301 0.0 0.06" />
|
| 316 |
+
<parent link="openarm_right_link1" />
|
| 317 |
+
<child link="openarm_right_link2" />
|
| 318 |
+
<axis xyz="-1 0 0" />
|
| 319 |
+
<limit effort="40" lower="-0.17453267320510335" upper="3.3161253267948965" velocity="16.754666" />
|
| 320 |
+
</joint>
|
| 321 |
+
<link name="openarm_right_link3">
|
| 322 |
+
<visual name="openarm_right_link3_visual">
|
| 323 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0 -0.0 -0.18875" />
|
| 324 |
+
<geometry>
|
| 325 |
+
<mesh filename="assets/link3.dae" scale="0.001 0.001 0.001" />
|
| 326 |
+
</geometry>
|
| 327 |
+
</visual>
|
| 328 |
+
<inertial>
|
| 329 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.002104752099628911 0.0005549085042607548 0.09047470545721961" />
|
| 330 |
+
<mass value="1.073863338202347" />
|
| 331 |
+
<inertia ixx="0.004372" ixy="1e-06" ixz="1.1e-05" iyy="0.004319" iyz="-3.6e-05" izz="0.000661" />
|
| 332 |
+
</inertial>
|
| 333 |
+
</link>
|
| 334 |
+
<joint name="openarm_right_joint3" type="revolute">
|
| 335 |
+
<origin rpy="0 0 0" xyz="0.0301 0.0 0.06625" />
|
| 336 |
+
<parent link="openarm_right_link2" />
|
| 337 |
+
<child link="openarm_right_link3" />
|
| 338 |
+
<axis xyz="0 0 1" />
|
| 339 |
+
<limit effort="27" lower="-1.570796" upper="1.570796" velocity="5.445426" />
|
| 340 |
+
</joint>
|
| 341 |
+
<link name="openarm_right_link4">
|
| 342 |
+
<visual name="openarm_right_link4_visual">
|
| 343 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 -0.0315 -0.3425" />
|
| 344 |
+
<geometry>
|
| 345 |
+
<mesh filename="assets/link4.dae" scale="0.001 0.001 0.001" />
|
| 346 |
+
</geometry>
|
| 347 |
+
</visual>
|
| 348 |
+
<inertial>
|
| 349 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0029006831074562967 -0.03030575826634669 0.06339637422196209" />
|
| 350 |
+
<mass value="0.6348534566833373" />
|
| 351 |
+
<inertia ixx="0.000623" ixy="-1e-06" ixz="-1.9e-05" iyy="0.000511" iyz="3.8e-05" izz="0.000334" />
|
| 352 |
+
</inertial>
|
| 353 |
+
</link>
|
| 354 |
+
<joint name="openarm_right_joint4" type="revolute">
|
| 355 |
+
<origin rpy="0 0 0" xyz="-0.0 0.0315 0.15375" />
|
| 356 |
+
<parent link="openarm_right_link3" />
|
| 357 |
+
<child link="openarm_right_link4" />
|
| 358 |
+
<axis xyz="0 1 0" />
|
| 359 |
+
<limit effort="27" lower="0.0" upper="2.443461" velocity="5.445426" />
|
| 360 |
+
</joint>
|
| 361 |
+
<link name="openarm_right_link5">
|
| 362 |
+
<visual name="openarm_right_link5_visual">
|
| 363 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0 -0.0 -0.438" />
|
| 364 |
+
<geometry>
|
| 365 |
+
<mesh filename="assets/link5.dae" scale="0.001 0.001 0.001" />
|
| 366 |
+
</geometry>
|
| 367 |
+
</visual>
|
| 368 |
+
<inertial>
|
| 369 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.003049665024221911 0.0008866902457326625 0.043079803024980934" />
|
| 370 |
+
<mass value="0.6156588026168502" />
|
| 371 |
+
<inertia ixx="0.000423" ixy="-8e-06" ixz="6e-06" iyy="0.000445" iyz="-6e-06" izz="0.000324" />
|
| 372 |
+
</inertial>
|
| 373 |
+
</link>
|
| 374 |
+
<joint name="openarm_right_joint5" type="revolute">
|
| 375 |
+
<origin rpy="0 0 0" xyz="0.0 -0.0315 0.0955" />
|
| 376 |
+
<parent link="openarm_right_link4" />
|
| 377 |
+
<child link="openarm_right_link5" />
|
| 378 |
+
<axis xyz="0 0 1" />
|
| 379 |
+
<limit effort="7" lower="-1.570796" upper="1.570796" velocity="20.943946" />
|
| 380 |
+
</joint>
|
| 381 |
+
<link name="openarm_right_link6">
|
| 382 |
+
<visual name="openarm_right_link6_visual">
|
| 383 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.0375 -0.0 -0.5585" />
|
| 384 |
+
<geometry>
|
| 385 |
+
<mesh filename="assets/link6.dae" scale="0.001 0.001 0.001" />
|
| 386 |
+
</geometry>
|
| 387 |
+
</visual>
|
| 388 |
+
<inertial>
|
| 389 |
+
<origin rpy="0.0 0.0 0.0" xyz="-0.037136587005447405 0.00033230528343419053 -9.498374522309838e-05" />
|
| 390 |
+
<mass value="0.475202773187987" />
|
| 391 |
+
<inertia ixx="0.000143" ixy="1e-06" ixz="1e-06" iyy="0.000157" iyz="1e-06" izz="0.000159" />
|
| 392 |
+
</inertial>
|
| 393 |
+
</link>
|
| 394 |
+
<joint name="openarm_right_joint6" type="revolute">
|
| 395 |
+
<origin rpy="0 0 0" xyz="0.0375 0.0 0.1205" />
|
| 396 |
+
<parent link="openarm_right_link5" />
|
| 397 |
+
<child link="openarm_right_link6" />
|
| 398 |
+
<axis xyz="1 0 0" />
|
| 399 |
+
<limit effort="7" lower="-0.785398" upper="0.785398" velocity="20.943946" />
|
| 400 |
+
</joint>
|
| 401 |
+
<link name="openarm_right_link7">
|
| 402 |
+
<visual name="openarm_right_link7_visual">
|
| 403 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 -0.0 -0.5585" />
|
| 404 |
+
<geometry>
|
| 405 |
+
<mesh filename="assets/link7.dae" scale="0.001 0.001 0.001" />
|
| 406 |
+
</geometry>
|
| 407 |
+
</visual>
|
| 408 |
+
<inertial>
|
| 409 |
+
<origin rpy="0.0 0.0 0.0" xyz="6.875510271106056e-05 0.01266175250761268 0.06951945409987448" />
|
| 410 |
+
<mass value="0.4659771327380578" />
|
| 411 |
+
<inertia ixx="0.000639" ixy="1e-06" ixz="1e-06" iyy="0.000497" iyz="8.9e-05" izz="0.000342" />
|
| 412 |
+
</inertial>
|
| 413 |
+
</link>
|
| 414 |
+
<joint name="openarm_right_joint7" type="revolute">
|
| 415 |
+
<origin rpy="0 0 0" xyz="-0.0375 0.0 0.0" />
|
| 416 |
+
<parent link="openarm_right_link6" />
|
| 417 |
+
<child link="openarm_right_link7" />
|
| 418 |
+
<axis xyz="0 1 0" />
|
| 419 |
+
<limit effort="7" lower="-1.570796" upper="1.570796" velocity="20.943946" />
|
| 420 |
+
</joint>
|
| 421 |
+
|
| 422 |
+
<!-- Right hand -->
|
| 423 |
+
<link name="openarm_right_hand">
|
| 424 |
+
<visual name="openarm_right_hand_visual">
|
| 425 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.0 -0.6585" />
|
| 426 |
+
<geometry>
|
| 427 |
+
<mesh filename="assets/hand.dae" scale="0.001 0.001 0.001" />
|
| 428 |
+
</geometry>
|
| 429 |
+
</visual>
|
| 430 |
+
<inertial>
|
| 431 |
+
<origin rpy="0 0 0" xyz="0.0 0.002 0.03" />
|
| 432 |
+
<mass value="0.35" />
|
| 433 |
+
<inertia ixx="0.0002473" ixy="1e-06" ixz="1e-06" iyy="1.763e-05" iyz="1e-06" izz="0.0002521" />
|
| 434 |
+
</inertial>
|
| 435 |
+
</link>
|
| 436 |
+
<joint name="right_openarm_hand_joint" type="fixed">
|
| 437 |
+
<parent link="openarm_right_link7" />
|
| 438 |
+
<child link="openarm_right_hand" />
|
| 439 |
+
<origin rpy="0 0 0" xyz="0 -0.0 0.1001" />
|
| 440 |
+
</joint>
|
| 441 |
+
<link name="openarm_right_hand_tcp">
|
| 442 |
+
<inertial>
|
| 443 |
+
<origin xyz="0 0 0" rpy="0 0 0" />
|
| 444 |
+
<mass value="0.001" />
|
| 445 |
+
<inertia ixx="0.000001" ixy="0.0" ixz="0.0" iyy="0.000001" iyz="0.0" izz="0.000001" />
|
| 446 |
+
</inertial>
|
| 447 |
+
</link>
|
| 448 |
+
<joint name="openarm_right_hand_tcp_joint" type="fixed">
|
| 449 |
+
<origin rpy="0 0 0" xyz="0 -0.0 0.08" />
|
| 450 |
+
<parent link="openarm_right_hand" />
|
| 451 |
+
<child link="openarm_right_hand_tcp" />
|
| 452 |
+
</joint>
|
| 453 |
+
<link name="openarm_right_left_finger">
|
| 454 |
+
<visual name="openarm_right_left_finger_visual">
|
| 455 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 -0.05 -0.673001" />
|
| 456 |
+
<geometry>
|
| 457 |
+
<mesh filename="assets/finger.dae" scale="0.001 0.001 0.001" />
|
| 458 |
+
</geometry>
|
| 459 |
+
</visual>
|
| 460 |
+
<inertial>
|
| 461 |
+
<origin rpy="0 0 0" xyz="0.0064528 0.01702 0.0219685" />
|
| 462 |
+
<mass value="0.03602545343277134" />
|
| 463 |
+
<inertia ixx="2.3749999999999997e-06" ixy="1e-06" ixz="1e-06" iyy="2.3749999999999997e-06" iyz="1e-06" izz="7.5e-07" />
|
| 464 |
+
</inertial>
|
| 465 |
+
</link>
|
| 466 |
+
<link name="openarm_right_right_finger">
|
| 467 |
+
<visual name="openarm_right_right_finger_visual">
|
| 468 |
+
<origin rpy="0.0 0.0 0.0" xyz="0.0 0.05 -0.673001" />
|
| 469 |
+
<geometry>
|
| 470 |
+
<mesh filename="assets/finger.dae" scale="0.001 -0.001 0.001" />
|
| 471 |
+
</geometry>
|
| 472 |
+
</visual>
|
| 473 |
+
<inertial>
|
| 474 |
+
<origin rpy="0 0 0" xyz="0.0064528 -0.01702 0.0219685" />
|
| 475 |
+
<mass value="0.03602545343277134" />
|
| 476 |
+
<inertia ixx="2.3749999999999997e-06" ixy="1e-06" ixz="1e-06" iyy="2.3749999999999997e-06" iyz="1e-06" izz="7.5e-07" />
|
| 477 |
+
</inertial>
|
| 478 |
+
</link>
|
| 479 |
+
<joint name="openarm_right_finger_joint1" type="prismatic">
|
| 480 |
+
<parent link="openarm_right_hand" />
|
| 481 |
+
<child link="openarm_right_right_finger" />
|
| 482 |
+
<origin rpy="0 0 0" xyz="0 -0.006 0.015" />
|
| 483 |
+
<axis xyz="0 -1 0" />
|
| 484 |
+
<limit effort="333" lower="0.0" upper="0.044" velocity="10.0" />
|
| 485 |
+
</joint>
|
| 486 |
+
<joint name="openarm_right_finger_joint2" type="prismatic">
|
| 487 |
+
<parent link="openarm_right_hand" />
|
| 488 |
+
<child link="openarm_right_left_finger" />
|
| 489 |
+
<origin rpy="0 0 0" xyz="0 0.006 0.015" />
|
| 490 |
+
<axis xyz="0 1 0" />
|
| 491 |
+
<limit effort="333" lower="0.0" upper="0.044" velocity="10.0" />
|
| 492 |
+
<mimic joint="openarm_right_finger_joint1" />
|
| 493 |
+
</joint>
|
| 494 |
+
</robot>
|
| 495 |
+
|
public/urdf/so101/assets/base_motor_holder_so101_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8cd2f241037ea377af1191fffe0dd9d9006beea6dcc48543660ed41647072424
|
| 3 |
+
size 1877084
|
public/urdf/so101/assets/base_so101_v2.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bb12b7026575e1f70ccc7240051f9d943553bf34e5128537de6cd86fae33924d
|
| 3 |
+
size 471584
|
public/urdf/so101/assets/motor_holder_so101_base_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:31242ae6fb59d8b15c66617b88ad8e9bded62d57c35d11c0c43a70d2f4caa95b
|
| 3 |
+
size 1129384
|
public/urdf/so101/assets/motor_holder_so101_wrist_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:887f92e6013cb64ea3a1ab8675e92da1e0beacfd5e001f972523540545e08011
|
| 3 |
+
size 1052184
|
public/urdf/so101/assets/moving_jaw_so101_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:785a9dded2f474bc1d869e0d3dae398a3dcd9c0c345640040472210d2861fa9d
|
| 3 |
+
size 1413584
|
public/urdf/so101/assets/rotation_pitch_so101_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9be900cc2a2bf718102841ef82ef8d2873842427648092c8ed2ca1e2ef4ffa34
|
| 3 |
+
size 883684
|
public/urdf/so101/assets/sts3215_03a_no_horn_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:75ef3781b752e4065891aea855e34dc161a38a549549cd0970cedd07eae6f887
|
| 3 |
+
size 865884
|
public/urdf/so101/assets/sts3215_03a_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:a37c871fb502483ab96c256baf457d36f2e97afc9205313d9c5ab275ef941cd0
|
| 3 |
+
size 954084
|
public/urdf/so101/assets/under_arm_so101_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d01d1f2de365651dcad9d6669e94ff87ff7652b5bb2d10752a66a456a86dbc71
|
| 3 |
+
size 1975884
|
public/urdf/so101/assets/upper_arm_so101_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:475056e03a17e71919b82fd88ab9a0b898ab50164f2a7943652a6b2941bb2d4f
|
| 3 |
+
size 1303484
|
public/urdf/so101/assets/waveshare_mounting_plate_so101_v2.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e197e24005a07d01bbc06a8c42311664eaeda415bf859f68fa247884d0f1a6e9
|
| 3 |
+
size 62784
|
public/urdf/so101/assets/wrist_roll_follower_so101_v1.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:4b17b410a12d64ec39554abc3e8054d8a97384b2dc4a8d95a5ecb2a93670f5f4
|
| 3 |
+
size 1439884
|
public/urdf/so101/assets/wrist_roll_pitch_so101_v2.stl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6c7ec5525b4d8b9e397a30ab4bb0037156a5d5f38a4adf2c7d943d6c56eda5ae
|
| 3 |
+
size 2699784
|
public/urdf/so101/so100.urdf
ADDED
|
@@ -0,0 +1,406 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
|
| 3 |
+
<!-- Originally Generated using onshape-to-robot -->
|
| 4 |
+
<!-- Onshape
|
| 5 |
+
https://cad.onshape.com/documents/7715cc284bb430fe6dab4ffd/w/4fd0791b683777b02f8d975a/e/826c553ede3b7592eb9ca800 -->
|
| 6 |
+
<robot name="so100">
|
| 7 |
+
<!-- Materials -->
|
| 8 |
+
<material name="green">
|
| 9 |
+
<color rgba="0.06 0.4 0.1 1.0" />
|
| 10 |
+
</material>
|
| 11 |
+
<material name="black">
|
| 12 |
+
<color rgba="0.1 0.1 0.1 1.0" />
|
| 13 |
+
</material>
|
| 14 |
+
|
| 15 |
+
<!-- World link -->
|
| 16 |
+
<link name="world" />
|
| 17 |
+
|
| 18 |
+
<!-- Joint from world to base -->
|
| 19 |
+
<joint name="world_to_base" type="fixed">
|
| 20 |
+
<parent link="world" />
|
| 21 |
+
<child link="base" />
|
| 22 |
+
<origin xyz="0.163038 0.168068 -0.0300817" rpy="0 0 0" />
|
| 23 |
+
</joint>
|
| 24 |
+
|
| 25 |
+
<!-- Link base -->
|
| 26 |
+
<link name="base">
|
| 27 |
+
<inertial>
|
| 28 |
+
<origin xyz="-0.14932 -0.16812 0.065966" rpy="0 0 0" />
|
| 29 |
+
<mass value="0.147" />
|
| 30 |
+
<inertia ixx="0.000114686" ixy="-4.59787e-07" ixz="4.97151e-06" iyy="0.000136117"
|
| 31 |
+
iyz="9.75275e-08" izz="0.000130364" />
|
| 32 |
+
</inertial>
|
| 33 |
+
<!-- Part base_motor_holder_so101_v1 -->
|
| 34 |
+
<visual>
|
| 35 |
+
<origin xyz="-0.169402 -0.168167 0.0300817" rpy="1.5708 -1.67685e-15 1.5708" />
|
| 36 |
+
<geometry>
|
| 37 |
+
<mesh filename="assets/base_motor_holder_so101_v1.stl" />
|
| 38 |
+
</geometry>
|
| 39 |
+
<material name="green" />
|
| 40 |
+
</visual>
|
| 41 |
+
<collision>
|
| 42 |
+
<origin xyz="-0.169402 -0.168167 0.0300817" rpy="1.5708 -1.67685e-15 1.5708" />
|
| 43 |
+
<geometry>
|
| 44 |
+
<mesh filename="assets/base_motor_holder_so101_v1.stl" />
|
| 45 |
+
</geometry>
|
| 46 |
+
</collision>
|
| 47 |
+
<!-- Part base_so101_v2 -->
|
| 48 |
+
<visual>
|
| 49 |
+
<origin xyz="-0.169402 -0.168068 0.0300817" rpy="1.5708 -1.6144e-15 1.5708" />
|
| 50 |
+
<geometry>
|
| 51 |
+
<mesh filename="assets/base_so101_v2.stl" />
|
| 52 |
+
</geometry>
|
| 53 |
+
<material name="green" />
|
| 54 |
+
</visual>
|
| 55 |
+
<collision>
|
| 56 |
+
<origin xyz="-0.169402 -0.168068 0.0300817" rpy="1.5708 -1.6144e-15 1.5708" />
|
| 57 |
+
<geometry>
|
| 58 |
+
<mesh filename="assets/base_so101_v2.stl" />
|
| 59 |
+
</geometry>
|
| 60 |
+
</collision>
|
| 61 |
+
<!-- Part sts3215_03a_v1 -->
|
| 62 |
+
<visual>
|
| 63 |
+
<origin xyz="-0.136702 -0.168068 0.0761817" rpy="-8.21148e-16 7.84513e-18 1.249e-15" />
|
| 64 |
+
<geometry>
|
| 65 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 66 |
+
</geometry>
|
| 67 |
+
<material name="black" />
|
| 68 |
+
</visual>
|
| 69 |
+
<collision>
|
| 70 |
+
<origin xyz="-0.136702 -0.168068 0.0761817" rpy="-8.21148e-16 7.84513e-18 1.249e-15" />
|
| 71 |
+
<geometry>
|
| 72 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 73 |
+
</geometry>
|
| 74 |
+
</collision>
|
| 75 |
+
<!-- Part waveshare_mounting_plate_so101_v2 -->
|
| 76 |
+
<visual>
|
| 77 |
+
<origin xyz="-0.19402 -0.168267 0.0798817" rpy="1.5708 -1.35493e-14 1.5708" />
|
| 78 |
+
<geometry>
|
| 79 |
+
<mesh filename="assets/waveshare_mounting_plate_so101_v2.stl" />
|
| 80 |
+
</geometry>
|
| 81 |
+
<material name="green" />
|
| 82 |
+
</visual>
|
| 83 |
+
<collision>
|
| 84 |
+
<origin xyz="-0.19402 -0.168267 0.0798817" rpy="1.5708 -1.35493e-14 1.5708" />
|
| 85 |
+
<geometry>
|
| 86 |
+
<mesh filename="assets/waveshare_mounting_plate_so101_v2.stl" />
|
| 87 |
+
</geometry>
|
| 88 |
+
</collision>
|
| 89 |
+
</link>
|
| 90 |
+
<!-- Frame baseframe (dummy link + fixed joint) -->
|
| 91 |
+
<link name="baseframe">
|
| 92 |
+
<origin xyz="0 0 0" rpy="0 -0 0" />
|
| 93 |
+
<inertial>
|
| 94 |
+
<origin xyz="0 0 0" rpy="0 0 0" />
|
| 95 |
+
<mass value="1e-9" />
|
| 96 |
+
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />
|
| 97 |
+
</inertial>
|
| 98 |
+
</link>
|
| 99 |
+
<joint name="baseframe_frame" type="fixed">
|
| 100 |
+
<origin xyz="-0.163038 -0.168068 0.0324817" rpy="1.6144e-15 7.84513e-18 1.33799e-15" />
|
| 101 |
+
<parent link="base" />
|
| 102 |
+
<child link="baseframe" />
|
| 103 |
+
<axis xyz="0 0 0" />
|
| 104 |
+
</joint>
|
| 105 |
+
<!-- Link shoulder -->
|
| 106 |
+
<link name="shoulder">
|
| 107 |
+
<inertial>
|
| 108 |
+
<origin xyz="-0.0307604 -1.66727e-05 -0.0252713" rpy="0 0 0" />
|
| 109 |
+
<mass value="0.100006" />
|
| 110 |
+
<inertia ixx="8.3759e-05" ixy="7.55525e-08" ixz="-1.16342e-06" iyy="8.10403e-05"
|
| 111 |
+
iyz="1.54663e-07" izz="2.39783e-05" />
|
| 112 |
+
</inertial>
|
| 113 |
+
<!-- Part sts3215_03a_v1_2 -->
|
| 114 |
+
<visual>
|
| 115 |
+
<origin xyz="-0.0303992 0.000422241 -0.0417" rpy="1.5708 1.5708 0" />
|
| 116 |
+
<geometry>
|
| 117 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 118 |
+
</geometry>
|
| 119 |
+
<material name="black" />
|
| 120 |
+
</visual>
|
| 121 |
+
<collision>
|
| 122 |
+
<origin xyz="-0.0303992 0.000422241 -0.0417" rpy="1.5708 1.5708 0" />
|
| 123 |
+
<geometry>
|
| 124 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 125 |
+
</geometry>
|
| 126 |
+
</collision>
|
| 127 |
+
<!-- Part motor_holder_so101_base_v1 -->
|
| 128 |
+
<visual>
|
| 129 |
+
<origin xyz="-0.0675992 -0.000177759 0.0158499" rpy="1.5708 -1.5708 0" />
|
| 130 |
+
<geometry>
|
| 131 |
+
<mesh filename="assets/motor_holder_so101_base_v1.stl" />
|
| 132 |
+
</geometry>
|
| 133 |
+
<material name="green" />
|
| 134 |
+
</visual>
|
| 135 |
+
<collision>
|
| 136 |
+
<origin xyz="-0.0675992 -0.000177759 0.0158499" rpy="1.5708 -1.5708 0" />
|
| 137 |
+
<geometry>
|
| 138 |
+
<mesh filename="assets/motor_holder_so101_base_v1.stl" />
|
| 139 |
+
</geometry>
|
| 140 |
+
</collision>
|
| 141 |
+
<!-- Part rotation_pitch_so101_v1 -->
|
| 142 |
+
<visual>
|
| 143 |
+
<origin xyz="0.0122008 2.22413e-05 0.0464" rpy="-1.5708 2.35221e-33 0" />
|
| 144 |
+
<geometry>
|
| 145 |
+
<mesh filename="assets/rotation_pitch_so101_v1.stl" />
|
| 146 |
+
</geometry>
|
| 147 |
+
<material name="green" />
|
| 148 |
+
</visual>
|
| 149 |
+
<collision>
|
| 150 |
+
<origin xyz="0.0122008 2.22413e-05 0.0464" rpy="-1.5708 2.35221e-33 0" />
|
| 151 |
+
<geometry>
|
| 152 |
+
<mesh filename="assets/rotation_pitch_so101_v1.stl" />
|
| 153 |
+
</geometry>
|
| 154 |
+
</collision>
|
| 155 |
+
</link>
|
| 156 |
+
<!-- Link upper_arm -->
|
| 157 |
+
<link name="upper_arm">
|
| 158 |
+
<inertial>
|
| 159 |
+
<origin xyz="-0.0898471 -0.00838224 0.0184089" rpy="0 0 0" />
|
| 160 |
+
<mass value="0.103" />
|
| 161 |
+
<inertia ixx="4.08002e-05" ixy="-1.97819e-05" ixz="-4.03016e-08" iyy="0.000147318"
|
| 162 |
+
iyz="8.97326e-09" izz="0.000142487" />
|
| 163 |
+
</inertial>
|
| 164 |
+
<!-- Part sts3215_03a_v1_3 -->
|
| 165 |
+
<visual>
|
| 166 |
+
<origin xyz="-0.11257 -0.0155 0.0187" rpy="-3.14159 -5.27356e-16 -1.5708" />
|
| 167 |
+
<geometry>
|
| 168 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 169 |
+
</geometry>
|
| 170 |
+
<material name="black" />
|
| 171 |
+
</visual>
|
| 172 |
+
<collision>
|
| 173 |
+
<origin xyz="-0.11257 -0.0155 0.0187" rpy="-3.14159 -5.27356e-16 -1.5708" />
|
| 174 |
+
<geometry>
|
| 175 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 176 |
+
</geometry>
|
| 177 |
+
</collision>
|
| 178 |
+
<!-- Part upper_arm_so101_v1 -->
|
| 179 |
+
<visual>
|
| 180 |
+
<origin xyz="-0.065085 0.012 0.0182" rpy="3.14159 -0 -1.30911e-30" />
|
| 181 |
+
<geometry>
|
| 182 |
+
<mesh filename="assets/upper_arm_so101_v1.stl" />
|
| 183 |
+
</geometry>
|
| 184 |
+
<material name="green" />
|
| 185 |
+
</visual>
|
| 186 |
+
<collision>
|
| 187 |
+
<origin xyz="-0.065085 0.012 0.0182" rpy="3.14159 -0 -1.30911e-30" />
|
| 188 |
+
<geometry>
|
| 189 |
+
<mesh filename="assets/upper_arm_so101_v1.stl" />
|
| 190 |
+
</geometry>
|
| 191 |
+
</collision>
|
| 192 |
+
</link>
|
| 193 |
+
<!-- Link lower_arm -->
|
| 194 |
+
<link name="lower_arm">
|
| 195 |
+
<inertial>
|
| 196 |
+
<origin xyz="-0.0980701 0.00324376 0.0182831" rpy="0 0 0" />
|
| 197 |
+
<mass value="0.104" />
|
| 198 |
+
<inertia ixx="2.87438e-05" ixy="7.41152e-06" ixz="1.26409e-06" iyy="0.000159844"
|
| 199 |
+
iyz="-4.90188e-08" izz="0.00014529" />
|
| 200 |
+
</inertial>
|
| 201 |
+
<!-- Part under_arm_so101_v1 -->
|
| 202 |
+
<visual>
|
| 203 |
+
<origin xyz="-0.0648499 -0.032 0.0182" rpy="3.14159 -0 6.67202e-31" />
|
| 204 |
+
<geometry>
|
| 205 |
+
<mesh filename="assets/under_arm_so101_v1.stl" />
|
| 206 |
+
</geometry>
|
| 207 |
+
<material name="green" />
|
| 208 |
+
</visual>
|
| 209 |
+
<collision>
|
| 210 |
+
<origin xyz="-0.0648499 -0.032 0.0182" rpy="3.14159 -0 6.67202e-31" />
|
| 211 |
+
<geometry>
|
| 212 |
+
<mesh filename="assets/under_arm_so101_v1.stl" />
|
| 213 |
+
</geometry>
|
| 214 |
+
</collision>
|
| 215 |
+
<!-- Part motor_holder_so101_wrist_v1 -->
|
| 216 |
+
<visual>
|
| 217 |
+
<origin xyz="-0.0648499 -0.032 0.018" rpy="-3.14159 -2.55351e-15 -2.56146e-31" />
|
| 218 |
+
<geometry>
|
| 219 |
+
<mesh filename="assets/motor_holder_so101_wrist_v1.stl" />
|
| 220 |
+
</geometry>
|
| 221 |
+
<material name="green" />
|
| 222 |
+
</visual>
|
| 223 |
+
<collision>
|
| 224 |
+
<origin xyz="-0.0648499 -0.032 0.018" rpy="-3.14159 -2.55351e-15 -2.56146e-31" />
|
| 225 |
+
<geometry>
|
| 226 |
+
<mesh filename="assets/motor_holder_so101_wrist_v1.stl" />
|
| 227 |
+
</geometry>
|
| 228 |
+
</collision>
|
| 229 |
+
<!-- Part sts3215_03a_v1_4 -->
|
| 230 |
+
<visual>
|
| 231 |
+
<origin xyz="-0.1224 0.0052 0.0187" rpy="-3.14159 -7.88861e-31 -3.14159" />
|
| 232 |
+
<geometry>
|
| 233 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 234 |
+
</geometry>
|
| 235 |
+
<material name="black" />
|
| 236 |
+
</visual>
|
| 237 |
+
<collision>
|
| 238 |
+
<origin xyz="-0.1224 0.0052 0.0187" rpy="-3.14159 -7.88861e-31 -3.14159" />
|
| 239 |
+
<geometry>
|
| 240 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 241 |
+
</geometry>
|
| 242 |
+
</collision>
|
| 243 |
+
</link>
|
| 244 |
+
<!-- Link wrist -->
|
| 245 |
+
<link name="wrist">
|
| 246 |
+
<inertial>
|
| 247 |
+
<origin xyz="-0.000103312 -0.0386143 0.0281156" rpy="0 0 0" />
|
| 248 |
+
<mass value="0.079" />
|
| 249 |
+
<inertia ixx="3.68263e-05" ixy="1.7893e-08" ixz="-5.28128e-08" iyy="2.5391e-05"
|
| 250 |
+
iyz="3.6412e-06" izz="2.1e-05" />
|
| 251 |
+
</inertial>
|
| 252 |
+
<!-- Part sts3215_03a_no_horn_v1 -->
|
| 253 |
+
<visual>
|
| 254 |
+
<origin xyz="5.55112e-17 -0.0424 0.0306" rpy="1.5708 1.5708 0" />
|
| 255 |
+
<geometry>
|
| 256 |
+
<mesh filename="assets/sts3215_03a_no_horn_v1.stl" />
|
| 257 |
+
</geometry>
|
| 258 |
+
<material name="black" />
|
| 259 |
+
</visual>
|
| 260 |
+
<collision>
|
| 261 |
+
<origin xyz="5.55112e-17 -0.0424 0.0306" rpy="1.5708 1.5708 0" />
|
| 262 |
+
<geometry>
|
| 263 |
+
<mesh filename="assets/sts3215_03a_no_horn_v1.stl" />
|
| 264 |
+
</geometry>
|
| 265 |
+
</collision>
|
| 266 |
+
<!-- Part wrist_roll_pitch_so101_v2 -->
|
| 267 |
+
<visual>
|
| 268 |
+
<origin xyz="0 -0.028 0.0181" rpy="-1.5708 -1.5708 0" />
|
| 269 |
+
<geometry>
|
| 270 |
+
<mesh filename="assets/wrist_roll_pitch_so101_v2.stl" />
|
| 271 |
+
</geometry>
|
| 272 |
+
<material name="green" />
|
| 273 |
+
</visual>
|
| 274 |
+
<collision>
|
| 275 |
+
<origin xyz="0 -0.028 0.0181" rpy="-1.5708 -1.5708 0" />
|
| 276 |
+
<geometry>
|
| 277 |
+
<mesh filename="assets/wrist_roll_pitch_so101_v2.stl" />
|
| 278 |
+
</geometry>
|
| 279 |
+
</collision>
|
| 280 |
+
</link>
|
| 281 |
+
<!-- Link gripper -->
|
| 282 |
+
<link name="gripper">
|
| 283 |
+
<inertial>
|
| 284 |
+
<origin xyz="0.000213627 0.000245138 -0.025187" rpy="0 0 0" />
|
| 285 |
+
<mass value="0.087" />
|
| 286 |
+
<inertia ixx="2.75087e-05" ixy="-3.35241e-07" ixz="-5.7352e-06" iyy="4.33657e-05"
|
| 287 |
+
iyz="-5.17847e-08" izz="3.45059e-05" />
|
| 288 |
+
</inertial>
|
| 289 |
+
<!-- Part sts3215_03a_v1_5 -->
|
| 290 |
+
<visual>
|
| 291 |
+
<origin xyz="0.0077 0.0001 -0.0234" rpy="-1.5708 -5.19179e-17 -1.66533e-16" />
|
| 292 |
+
<geometry>
|
| 293 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 294 |
+
</geometry>
|
| 295 |
+
<material name="black" />
|
| 296 |
+
</visual>
|
| 297 |
+
<collision>
|
| 298 |
+
<origin xyz="0.0077 0.0001 -0.0234" rpy="-1.5708 -5.19179e-17 -1.66533e-16" />
|
| 299 |
+
<geometry>
|
| 300 |
+
<mesh filename="assets/sts3215_03a_v1.stl" />
|
| 301 |
+
</geometry>
|
| 302 |
+
</collision>
|
| 303 |
+
<!-- Part wrist_roll_follower_so101_v1 -->
|
| 304 |
+
<visual>
|
| 305 |
+
<origin xyz="0 -0.000218214 0.000949706" rpy="-3.14159 -5.55112e-17 0" />
|
| 306 |
+
<geometry>
|
| 307 |
+
<mesh filename="assets/wrist_roll_follower_so101_v1.stl" />
|
| 308 |
+
</geometry>
|
| 309 |
+
<material name="green" />
|
| 310 |
+
</visual>
|
| 311 |
+
<collision>
|
| 312 |
+
<origin xyz="0 -0.000218214 0.000949706" rpy="-3.14159 -5.55112e-17 0" />
|
| 313 |
+
<geometry>
|
| 314 |
+
<mesh filename="assets/wrist_roll_follower_so101_v1.stl" />
|
| 315 |
+
</geometry>
|
| 316 |
+
</collision>
|
| 317 |
+
</link>
|
| 318 |
+
<!-- Frame gripperframe (dummy link + fixed joint) -->
|
| 319 |
+
<link name="gripperframe">
|
| 320 |
+
<origin xyz="0 0 0" rpy="0 -0 0" />
|
| 321 |
+
<inertial>
|
| 322 |
+
<origin xyz="0 0 0" rpy="0 0 0" />
|
| 323 |
+
<mass value="1e-9" />
|
| 324 |
+
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />
|
| 325 |
+
</inertial>
|
| 326 |
+
</link>
|
| 327 |
+
<joint name="gripperframe_frame" type="fixed">
|
| 328 |
+
<origin xyz="-0.0079 -0.000218121 -0.0981274" rpy="-0 1.5708 0" />
|
| 329 |
+
<parent link="gripper" />
|
| 330 |
+
<child link="gripperframe" />
|
| 331 |
+
<axis xyz="0 0 0" />
|
| 332 |
+
</joint>
|
| 333 |
+
<!-- Link moving_jaw_so101_v1 -->
|
| 334 |
+
<link name="moving_jaw_so101_v1">
|
| 335 |
+
<inertial>
|
| 336 |
+
<origin xyz="-0.00157495 -0.0300244 0.0192755" rpy="0 0 0" />
|
| 337 |
+
<mass value="0.012" />
|
| 338 |
+
<inertia ixx="6.61427e-06" ixy="-3.19807e-07" ixz="-5.90717e-09" iyy="1.89032e-06"
|
| 339 |
+
iyz="-1.09945e-07" izz="5.28738e-06" />
|
| 340 |
+
</inertial>
|
| 341 |
+
<!-- Part moving_jaw_so101_v1 -->
|
| 342 |
+
<visual>
|
| 343 |
+
<origin xyz="-5.55112e-17 0 0.0189" rpy="9.53145e-17 6.93889e-18 1.24077e-24" />
|
| 344 |
+
<geometry>
|
| 345 |
+
<mesh filename="assets/moving_jaw_so101_v1.stl" />
|
| 346 |
+
</geometry>
|
| 347 |
+
<material name="green" />
|
| 348 |
+
</visual>
|
| 349 |
+
<collision>
|
| 350 |
+
<origin xyz="-5.55112e-17 0 0.0189" rpy="9.53145e-17 6.93889e-18 1.24077e-24" />
|
| 351 |
+
<geometry>
|
| 352 |
+
<mesh filename="assets/moving_jaw_so101_v1.stl" />
|
| 353 |
+
</geometry>
|
| 354 |
+
</collision>
|
| 355 |
+
</link>
|
| 356 |
+
|
| 357 |
+
<!-- Joint from base to shoulder -->
|
| 358 |
+
<joint name="Rotation" type="revolute">
|
| 359 |
+
<origin xyz="-0.124202 -0.168068 0.0948817" rpy="3.14159 0 0" />
|
| 360 |
+
<parent link="base" />
|
| 361 |
+
<child link="shoulder" />
|
| 362 |
+
<axis xyz="0 0 1" />
|
| 363 |
+
<limit effort="10" velocity="10" lower="1.22014" upper="5.05986" />
|
| 364 |
+
</joint>
|
| 365 |
+
<!-- Joint from shoulder to upper_arm -->
|
| 366 |
+
<joint name="Pitch" type="revolute">
|
| 367 |
+
<origin xyz="-0.0303992 -0.0182778 -0.0542" rpy="-1.5708 1.5692 0" />
|
| 368 |
+
<parent link="shoulder" />
|
| 369 |
+
<child link="upper_arm" />
|
| 370 |
+
<axis xyz="0 0 1" />
|
| 371 |
+
<limit effort="10" velocity="10" lower="1.39467" upper="4.88692" />
|
| 372 |
+
</joint>
|
| 373 |
+
<!-- Joint from upper_arm to lower_arm -->
|
| 374 |
+
<joint name="Elbow" type="revolute">
|
| 375 |
+
<origin xyz="-0.11257 -0.028 2.09886e-16" rpy="0 0 4.71239" />
|
| 376 |
+
<parent link="upper_arm" />
|
| 377 |
+
<child link="lower_arm" />
|
| 378 |
+
<axis xyz="0 0 1" />
|
| 379 |
+
<limit effort="10" velocity="10" lower="1.39626" upper="4.71239" />
|
| 380 |
+
</joint>
|
| 381 |
+
<!-- Joint from lower_arm to wrist -->
|
| 382 |
+
<joint name="Wrist_Pitch" type="revolute">
|
| 383 |
+
<origin xyz="-0.1349 0.0052 8.44651e-17" rpy="0 0 1.57079" />
|
| 384 |
+
<parent link="lower_arm" />
|
| 385 |
+
<child link="wrist" />
|
| 386 |
+
<axis xyz="0 0 1" />
|
| 387 |
+
<limit effort="10" velocity="10" lower="1.48353" upper="4.79965" />
|
| 388 |
+
</joint>
|
| 389 |
+
<!-- Joint from wrist to gripper -->
|
| 390 |
+
<joint name="Wrist_Roll" type="revolute">
|
| 391 |
+
<origin xyz="2.77556e-16 -0.0611 0.0181" rpy="1.5708 3.1902695 3.14159" />
|
| 392 |
+
<parent link="wrist" />
|
| 393 |
+
<child link="gripper" />
|
| 394 |
+
<axis xyz="0 0 1" />
|
| 395 |
+
<limit effort="10" velocity="10" lower="0.39774" upper="5.9828" />
|
| 396 |
+
</joint>
|
| 397 |
+
<!-- Joint from gripper to moving_jaw_so101_v1 -->
|
| 398 |
+
<joint name="Jaw" type="revolute">
|
| 399 |
+
<origin xyz="0.0202 0.0188 -0.0234" rpy="1.5708 3.315 0" />
|
| 400 |
+
<parent link="gripper" />
|
| 401 |
+
<child link="moving_jaw_so101_v1" />
|
| 402 |
+
<axis xyz="0 0 1" />
|
| 403 |
+
<limit effort="10" velocity="10" lower="3.14" upper="4.88692" />
|
| 404 |
+
</joint>
|
| 405 |
+
</robot>
|
| 406 |
+
|
public/urdf/so101/so101_new_calib.urdf
ADDED
|
@@ -0,0 +1,453 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" encoding="utf-8"?>
|
| 2 |
+
<!-- Generated using onshape-to-robot -->
|
| 3 |
+
<!-- Onshape https://cad.onshape.com/documents/7715cc284bb430fe6dab4ffd/w/4fd0791b683777b02f8d975a/e/826c553ede3b7592eb9ca800 -->
|
| 4 |
+
<robot name="so101_new_calib">
|
| 5 |
+
|
| 6 |
+
<!-- Materials -->
|
| 7 |
+
<material name="3d_printed">
|
| 8 |
+
<color rgba="1.0 0.82 0.12 1.0"/>
|
| 9 |
+
</material>
|
| 10 |
+
<material name="sts3215">
|
| 11 |
+
<color rgba="0.1 0.1 0.1 1.0"/>
|
| 12 |
+
</material>
|
| 13 |
+
|
| 14 |
+
<!-- Link base -->
|
| 15 |
+
<link name="base_link">
|
| 16 |
+
<inertial>
|
| 17 |
+
<origin xyz="0.0137179 -5.19711e-05 0.0334843" rpy="0 0 0"/>
|
| 18 |
+
<mass value="0.147"/>
|
| 19 |
+
<inertia ixx="0.000114686" ixy="-4.59787e-07" ixz="4.97151e-06" iyy="0.000136117" iyz="9.75275e-08" izz="0.000130364"/>
|
| 20 |
+
</inertial>
|
| 21 |
+
<!-- Part base_motor_holder_so101_v1 -->
|
| 22 |
+
<visual>
|
| 23 |
+
<origin xyz="-0.00636471 -9.94414e-05 -0.0024" rpy="1.5708 -1.67685e-15 1.5708"/>
|
| 24 |
+
<geometry>
|
| 25 |
+
<mesh filename="assets/base_motor_holder_so101_v1.stl"/>
|
| 26 |
+
</geometry>
|
| 27 |
+
<material name="3d_printed"/>
|
| 28 |
+
</visual>
|
| 29 |
+
<collision>
|
| 30 |
+
<origin xyz="-0.00636471 -9.94414e-05 -0.0024" rpy="1.5708 -1.67685e-15 1.5708"/>
|
| 31 |
+
<geometry>
|
| 32 |
+
<mesh filename="assets/base_motor_holder_so101_v1.stl"/>
|
| 33 |
+
</geometry>
|
| 34 |
+
</collision>
|
| 35 |
+
<!-- Part base_so101_v2 -->
|
| 36 |
+
<visual>
|
| 37 |
+
<origin xyz="-0.00636471 -8.97657e-09 -0.0024" rpy="1.5708 -2.78073e-29 1.5708"/>
|
| 38 |
+
<geometry>
|
| 39 |
+
<mesh filename="assets/base_so101_v2.stl"/>
|
| 40 |
+
</geometry>
|
| 41 |
+
<material name="3d_printed"/>
|
| 42 |
+
</visual>
|
| 43 |
+
<collision>
|
| 44 |
+
<origin xyz="-0.00636471 -8.97657e-09 -0.0024" rpy="1.5708 -2.78073e-29 1.5708"/>
|
| 45 |
+
<geometry>
|
| 46 |
+
<mesh filename="assets/base_so101_v2.stl"/>
|
| 47 |
+
</geometry>
|
| 48 |
+
</collision>
|
| 49 |
+
<!-- Part sts3215_03a_v1 -->
|
| 50 |
+
<visual>
|
| 51 |
+
<origin xyz="0.0263353 -8.97657e-09 0.0437" rpy="-8.21148e-16 7.84513e-18 1.249e-15"/>
|
| 52 |
+
<geometry>
|
| 53 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 54 |
+
</geometry>
|
| 55 |
+
<material name="sts3215"/>
|
| 56 |
+
</visual>
|
| 57 |
+
<collision>
|
| 58 |
+
<origin xyz="0.0263353 -8.97657e-09 0.0437" rpy="-8.21148e-16 7.84513e-18 1.249e-15"/>
|
| 59 |
+
<geometry>
|
| 60 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 61 |
+
</geometry>
|
| 62 |
+
</collision>
|
| 63 |
+
<!-- Part waveshare_mounting_plate_so101_v2 -->
|
| 64 |
+
<visual>
|
| 65 |
+
<origin xyz="-0.0309827 -0.000199441 0.0474" rpy="1.5708 -1.35493e-14 1.5708"/>
|
| 66 |
+
<geometry>
|
| 67 |
+
<mesh filename="assets/waveshare_mounting_plate_so101_v2.stl"/>
|
| 68 |
+
</geometry>
|
| 69 |
+
<material name="3d_printed"/>
|
| 70 |
+
</visual>
|
| 71 |
+
<collision>
|
| 72 |
+
<origin xyz="-0.0309827 -0.000199441 0.0474" rpy="1.5708 -1.35493e-14 1.5708"/>
|
| 73 |
+
<geometry>
|
| 74 |
+
<mesh filename="assets/waveshare_mounting_plate_so101_v2.stl"/>
|
| 75 |
+
</geometry>
|
| 76 |
+
</collision>
|
| 77 |
+
</link>
|
| 78 |
+
|
| 79 |
+
<!-- Link shoulder -->
|
| 80 |
+
<link name="shoulder_link">
|
| 81 |
+
<inertial>
|
| 82 |
+
<origin xyz="-0.0307604 -1.66727e-05 -0.0252713" rpy="0 0 0"/>
|
| 83 |
+
<mass value="0.100006"/>
|
| 84 |
+
<inertia ixx="8.3759e-05" ixy="7.55525e-08" ixz="-1.16342e-06" iyy="8.10403e-05" iyz="1.54663e-07" izz="2.39783e-05"/>
|
| 85 |
+
</inertial>
|
| 86 |
+
<!-- Part sts3215_03a_v1_2 -->
|
| 87 |
+
<visual>
|
| 88 |
+
<origin xyz="-0.0303992 0.000422241 -0.0417" rpy="1.5708 1.5708 0"/>
|
| 89 |
+
<geometry>
|
| 90 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 91 |
+
</geometry>
|
| 92 |
+
<material name="sts3215"/>
|
| 93 |
+
</visual>
|
| 94 |
+
<collision>
|
| 95 |
+
<origin xyz="-0.0303992 0.000422241 -0.0417" rpy="1.5708 1.5708 0"/>
|
| 96 |
+
<geometry>
|
| 97 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 98 |
+
</geometry>
|
| 99 |
+
</collision>
|
| 100 |
+
<!-- Part motor_holder_so101_base_v1 -->
|
| 101 |
+
<visual>
|
| 102 |
+
<origin xyz="-0.0675992 -0.000177759 0.0158499" rpy="1.5708 -1.5708 0"/>
|
| 103 |
+
<geometry>
|
| 104 |
+
<mesh filename="assets/motor_holder_so101_base_v1.stl"/>
|
| 105 |
+
</geometry>
|
| 106 |
+
<material name="3d_printed"/>
|
| 107 |
+
</visual>
|
| 108 |
+
<collision>
|
| 109 |
+
<origin xyz="-0.0675992 -0.000177759 0.0158499" rpy="1.5708 -1.5708 0"/>
|
| 110 |
+
<geometry>
|
| 111 |
+
<mesh filename="assets/motor_holder_so101_base_v1.stl"/>
|
| 112 |
+
</geometry>
|
| 113 |
+
</collision>
|
| 114 |
+
<!-- Part rotation_pitch_so101_v1 -->
|
| 115 |
+
<visual>
|
| 116 |
+
<origin xyz="0.0122008 2.22413e-05 0.0464" rpy="-1.5708 2.35221e-33 0"/>
|
| 117 |
+
<geometry>
|
| 118 |
+
<mesh filename="assets/rotation_pitch_so101_v1.stl"/>
|
| 119 |
+
</geometry>
|
| 120 |
+
<material name="3d_printed"/>
|
| 121 |
+
</visual>
|
| 122 |
+
<collision>
|
| 123 |
+
<origin xyz="0.0122008 2.22413e-05 0.0464" rpy="-1.5708 2.35221e-33 0"/>
|
| 124 |
+
<geometry>
|
| 125 |
+
<mesh filename="assets/rotation_pitch_so101_v1.stl"/>
|
| 126 |
+
</geometry>
|
| 127 |
+
</collision>
|
| 128 |
+
</link>
|
| 129 |
+
|
| 130 |
+
<!-- Link upper_arm -->
|
| 131 |
+
<link name="upper_arm_link">
|
| 132 |
+
<inertial>
|
| 133 |
+
<origin xyz="-0.0898471 -0.00838224 0.0184089" rpy="0 0 0"/>
|
| 134 |
+
<mass value="0.103"/>
|
| 135 |
+
<inertia ixx="4.08002e-05" ixy="-1.97819e-05" ixz="-4.03016e-08" iyy="0.000147318" iyz="8.97326e-09" izz="0.000142487"/>
|
| 136 |
+
</inertial>
|
| 137 |
+
<!-- Part sts3215_03a_v1_3 -->
|
| 138 |
+
<visual>
|
| 139 |
+
<origin xyz="-0.11257 -0.0155 0.0187" rpy="-3.14159 -5.27356e-16 -1.5708"/>
|
| 140 |
+
<geometry>
|
| 141 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 142 |
+
</geometry>
|
| 143 |
+
<material name="sts3215"/>
|
| 144 |
+
</visual>
|
| 145 |
+
<collision>
|
| 146 |
+
<origin xyz="-0.11257 -0.0155 0.0187" rpy="-3.14159 -5.27356e-16 -1.5708"/>
|
| 147 |
+
<geometry>
|
| 148 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 149 |
+
</geometry>
|
| 150 |
+
</collision>
|
| 151 |
+
<!-- Part upper_arm_so101_v1 -->
|
| 152 |
+
<visual>
|
| 153 |
+
<origin xyz="-0.065085 0.012 0.0182" rpy="3.14159 -0 -1.30911e-30"/>
|
| 154 |
+
<geometry>
|
| 155 |
+
<mesh filename="assets/upper_arm_so101_v1.stl"/>
|
| 156 |
+
</geometry>
|
| 157 |
+
<material name="3d_printed"/>
|
| 158 |
+
</visual>
|
| 159 |
+
<collision>
|
| 160 |
+
<origin xyz="-0.065085 0.012 0.0182" rpy="3.14159 -0 -1.30911e-30"/>
|
| 161 |
+
<geometry>
|
| 162 |
+
<mesh filename="assets/upper_arm_so101_v1.stl"/>
|
| 163 |
+
</geometry>
|
| 164 |
+
</collision>
|
| 165 |
+
</link>
|
| 166 |
+
|
| 167 |
+
<!-- Link lower_arm -->
|
| 168 |
+
<link name="lower_arm_link">
|
| 169 |
+
<inertial>
|
| 170 |
+
<origin xyz="-0.0980701 0.00324376 0.0182831" rpy="0 0 0"/>
|
| 171 |
+
<mass value="0.104"/>
|
| 172 |
+
<inertia ixx="2.87438e-05" ixy="7.41152e-06" ixz="1.26409e-06" iyy="0.000159844" iyz="-4.90188e-08" izz="0.00014529"/>
|
| 173 |
+
</inertial>
|
| 174 |
+
<!-- Part under_arm_so101_v1 -->
|
| 175 |
+
<visual>
|
| 176 |
+
<origin xyz="-0.0648499 -0.032 0.0182" rpy="3.14159 -0 6.67202e-31"/>
|
| 177 |
+
<geometry>
|
| 178 |
+
<mesh filename="assets/under_arm_so101_v1.stl"/>
|
| 179 |
+
</geometry>
|
| 180 |
+
<material name="3d_printed"/>
|
| 181 |
+
</visual>
|
| 182 |
+
<collision>
|
| 183 |
+
<origin xyz="-0.0648499 -0.032 0.0182" rpy="3.14159 -0 6.67202e-31"/>
|
| 184 |
+
<geometry>
|
| 185 |
+
<mesh filename="assets/under_arm_so101_v1.stl"/>
|
| 186 |
+
</geometry>
|
| 187 |
+
</collision>
|
| 188 |
+
<!-- Part motor_holder_so101_wrist_v1 -->
|
| 189 |
+
<visual>
|
| 190 |
+
<origin xyz="-0.0648499 -0.032 0.018" rpy="-3.14159 -2.55351e-15 -1.83387e-30"/>
|
| 191 |
+
<geometry>
|
| 192 |
+
<mesh filename="assets/motor_holder_so101_wrist_v1.stl"/>
|
| 193 |
+
</geometry>
|
| 194 |
+
<material name="3d_printed"/>
|
| 195 |
+
</visual>
|
| 196 |
+
<collision>
|
| 197 |
+
<origin xyz="-0.0648499 -0.032 0.018" rpy="-3.14159 -2.55351e-15 -1.83387e-30"/>
|
| 198 |
+
<geometry>
|
| 199 |
+
<mesh filename="assets/motor_holder_so101_wrist_v1.stl"/>
|
| 200 |
+
</geometry>
|
| 201 |
+
</collision>
|
| 202 |
+
<!-- Part sts3215_03a_v1_4 -->
|
| 203 |
+
<visual>
|
| 204 |
+
<origin xyz="-0.1224 0.0052 0.0187" rpy="-3.14159 -7.88861e-31 -3.14159"/>
|
| 205 |
+
<geometry>
|
| 206 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 207 |
+
</geometry>
|
| 208 |
+
<material name="sts3215"/>
|
| 209 |
+
</visual>
|
| 210 |
+
<collision>
|
| 211 |
+
<origin xyz="-0.1224 0.0052 0.0187" rpy="-3.14159 -7.88861e-31 -3.14159"/>
|
| 212 |
+
<geometry>
|
| 213 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 214 |
+
</geometry>
|
| 215 |
+
</collision>
|
| 216 |
+
</link>
|
| 217 |
+
|
| 218 |
+
<!-- Link wrist -->
|
| 219 |
+
<link name="wrist_link">
|
| 220 |
+
<inertial>
|
| 221 |
+
<origin xyz="-0.000103312 -0.0386143 0.0281156" rpy="0 0 0"/>
|
| 222 |
+
<mass value="0.079"/>
|
| 223 |
+
<inertia ixx="3.68263e-05" ixy="1.7893e-08" ixz="-5.28128e-08" iyy="2.5391e-05" iyz="3.6412e-06" izz="2.1e-05"/>
|
| 224 |
+
</inertial>
|
| 225 |
+
<!-- Part sts3215_03a_no_horn_v1 -->
|
| 226 |
+
<visual>
|
| 227 |
+
<origin xyz="8.32667e-17 -0.0424 0.0306" rpy="1.5708 1.5708 0"/>
|
| 228 |
+
<geometry>
|
| 229 |
+
<mesh filename="assets/sts3215_03a_no_horn_v1.stl"/>
|
| 230 |
+
</geometry>
|
| 231 |
+
<material name="sts3215"/>
|
| 232 |
+
</visual>
|
| 233 |
+
<collision>
|
| 234 |
+
<origin xyz="8.32667e-17 -0.0424 0.0306" rpy="1.5708 1.5708 0"/>
|
| 235 |
+
<geometry>
|
| 236 |
+
<mesh filename="assets/sts3215_03a_no_horn_v1.stl"/>
|
| 237 |
+
</geometry>
|
| 238 |
+
</collision>
|
| 239 |
+
<!-- Part wrist_roll_pitch_so101_v2 -->
|
| 240 |
+
<visual>
|
| 241 |
+
<origin xyz="0 -0.028 0.0181" rpy="-1.5708 -1.5708 0"/>
|
| 242 |
+
<geometry>
|
| 243 |
+
<mesh filename="assets/wrist_roll_pitch_so101_v2.stl"/>
|
| 244 |
+
</geometry>
|
| 245 |
+
<material name="3d_printed"/>
|
| 246 |
+
</visual>
|
| 247 |
+
<collision>
|
| 248 |
+
<origin xyz="0 -0.028 0.0181" rpy="-1.5708 -1.5708 0"/>
|
| 249 |
+
<geometry>
|
| 250 |
+
<mesh filename="assets/wrist_roll_pitch_so101_v2.stl"/>
|
| 251 |
+
</geometry>
|
| 252 |
+
</collision>
|
| 253 |
+
</link>
|
| 254 |
+
|
| 255 |
+
<!-- Link gripper -->
|
| 256 |
+
<link name="gripper_link">
|
| 257 |
+
<inertial>
|
| 258 |
+
<origin xyz="0.000213627 0.000245138 -0.025187" rpy="0 0 0"/>
|
| 259 |
+
<mass value="0.087"/>
|
| 260 |
+
<inertia ixx="2.75087e-05" ixy="-3.35241e-07" ixz="-5.7352e-06" iyy="4.33657e-05" iyz="-5.17847e-08" izz="3.45059e-05"/>
|
| 261 |
+
</inertial>
|
| 262 |
+
<!-- Part sts3215_03a_v1_5 -->
|
| 263 |
+
<visual>
|
| 264 |
+
<origin xyz="0.0077 0.0001 -0.0234" rpy="-1.5708 -5.19179e-17 -1.66533e-16"/>
|
| 265 |
+
<geometry>
|
| 266 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 267 |
+
</geometry>
|
| 268 |
+
<material name="sts3215"/>
|
| 269 |
+
</visual>
|
| 270 |
+
<collision>
|
| 271 |
+
<origin xyz="0.0077 0.0001 -0.0234" rpy="-1.5708 -5.19179e-17 -1.66533e-16"/>
|
| 272 |
+
<geometry>
|
| 273 |
+
<mesh filename="assets/sts3215_03a_v1.stl"/>
|
| 274 |
+
</geometry>
|
| 275 |
+
</collision>
|
| 276 |
+
<!-- Part wrist_roll_follower_so101_v1 -->
|
| 277 |
+
<visual>
|
| 278 |
+
<origin xyz="8.32667e-17 -0.000218214 0.000949706" rpy="-3.14159 -5.55112e-17 0"/>
|
| 279 |
+
<geometry>
|
| 280 |
+
<mesh filename="assets/wrist_roll_follower_so101_v1.stl"/>
|
| 281 |
+
</geometry>
|
| 282 |
+
<material name="3d_printed"/>
|
| 283 |
+
</visual>
|
| 284 |
+
<collision>
|
| 285 |
+
<origin xyz="8.32667e-17 -0.000218214 0.000949706" rpy="-3.14159 -5.55112e-17 0"/>
|
| 286 |
+
<geometry>
|
| 287 |
+
<mesh filename="assets/wrist_roll_follower_so101_v1.stl"/>
|
| 288 |
+
</geometry>
|
| 289 |
+
</collision>
|
| 290 |
+
</link>
|
| 291 |
+
|
| 292 |
+
<!-- Gripper frame (dummy link + fixed joint) -->
|
| 293 |
+
<link name="gripper_frame_link">
|
| 294 |
+
<origin xyz="0 0 0" rpy="0 -0 0"/>
|
| 295 |
+
<inertial>
|
| 296 |
+
<origin xyz="0 0 0" rpy="0 0 0"/>
|
| 297 |
+
<mass value="1e-9"/>
|
| 298 |
+
<inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0"/>
|
| 299 |
+
</inertial>
|
| 300 |
+
</link>
|
| 301 |
+
|
| 302 |
+
<joint name="gripper_frame_joint" type="fixed">
|
| 303 |
+
<origin xyz="-0.0079 -0.000218121 -0.0981274" rpy="0 3.14159 0"/>
|
| 304 |
+
<parent link="gripper_link"/>
|
| 305 |
+
<child link="gripper_frame_link"/>
|
| 306 |
+
<axis xyz="0 0 0"/>
|
| 307 |
+
</joint>
|
| 308 |
+
|
| 309 |
+
<!-- Link moving_jaw_so101_v1 -->
|
| 310 |
+
<link name="moving_jaw_so101_v1_link">
|
| 311 |
+
<inertial>
|
| 312 |
+
<origin xyz="-0.00157495 -0.0300244 0.0192755" rpy="0 0 0"/>
|
| 313 |
+
<mass value="0.012"/>
|
| 314 |
+
<inertia ixx="6.61427e-06" ixy="-3.19807e-07" ixz="-5.90717e-09" iyy="1.89032e-06" iyz="-1.09945e-07" izz="5.28738e-06"/>
|
| 315 |
+
</inertial>
|
| 316 |
+
<!-- Part moving_jaw_so101_v1 -->
|
| 317 |
+
<visual>
|
| 318 |
+
<origin xyz="-5.55112e-17 -5.55112e-17 0.0189" rpy="9.53145e-17 6.93889e-18 1.24077e-24"/>
|
| 319 |
+
<geometry>
|
| 320 |
+
<mesh filename="assets/moving_jaw_so101_v1.stl"/>
|
| 321 |
+
</geometry>
|
| 322 |
+
<material name="3d_printed"/>
|
| 323 |
+
</visual>
|
| 324 |
+
<collision>
|
| 325 |
+
<origin xyz="-5.55112e-17 -5.55112e-17 0.0189" rpy="9.53145e-17 6.93889e-18 1.24077e-24"/>
|
| 326 |
+
<geometry>
|
| 327 |
+
<mesh filename="assets/moving_jaw_so101_v1.stl"/>
|
| 328 |
+
</geometry>
|
| 329 |
+
</collision>
|
| 330 |
+
</link>
|
| 331 |
+
|
| 332 |
+
<!-- Joint from gripper to moving_jaw_so101_v1 -->
|
| 333 |
+
<joint name="gripper" type="revolute">
|
| 334 |
+
<origin xyz="0.0202 0.0188 -0.0234" rpy="1.5708 -5.24284e-08 -1.41553e-15"/>
|
| 335 |
+
<parent link="gripper_link"/>
|
| 336 |
+
<child link="moving_jaw_so101_v1_link"/>
|
| 337 |
+
<axis xyz="0 0 1"/>
|
| 338 |
+
<limit effort="10" velocity="10" lower="-0.174533" upper="1.74533"/>
|
| 339 |
+
</joint>
|
| 340 |
+
|
| 341 |
+
<transmission name="gripper_trans">
|
| 342 |
+
<type>transmission_interface/SimpleTransmission</type>
|
| 343 |
+
<joint name="gripper">
|
| 344 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 345 |
+
</joint>
|
| 346 |
+
<actuator name="motor6">
|
| 347 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 348 |
+
<mechanicalReduction>1</mechanicalReduction>
|
| 349 |
+
</actuator>
|
| 350 |
+
</transmission>
|
| 351 |
+
|
| 352 |
+
<!-- Joint from wrist to gripper -->
|
| 353 |
+
<joint name="wrist_roll" type="revolute">
|
| 354 |
+
<origin xyz="5.55112e-17 -0.0611 0.0181" rpy="1.5708 0.0486795 3.14159"/>
|
| 355 |
+
<parent link="wrist_link"/>
|
| 356 |
+
<child link="gripper_link"/>
|
| 357 |
+
<axis xyz="0 0 1"/>
|
| 358 |
+
<limit effort="10" velocity="10" lower="-2.74385" upper="2.84121"/>
|
| 359 |
+
</joint>
|
| 360 |
+
|
| 361 |
+
<transmission name="wrist_roll_trans">
|
| 362 |
+
<type>transmission_interface/SimpleTransmission</type>
|
| 363 |
+
<joint name="wrist_roll">
|
| 364 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 365 |
+
</joint>
|
| 366 |
+
<actuator name="motor5">
|
| 367 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 368 |
+
<mechanicalReduction>1</mechanicalReduction>
|
| 369 |
+
</actuator>
|
| 370 |
+
</transmission>
|
| 371 |
+
|
| 372 |
+
<!-- Joint from lower_arm to wrist -->
|
| 373 |
+
<joint name="wrist_flex" type="revolute">
|
| 374 |
+
<origin xyz="-0.1349 0.0052 3.62355e-17" rpy="4.02456e-15 8.67362e-16 -1.5708"/>
|
| 375 |
+
<parent link="lower_arm_link"/>
|
| 376 |
+
<child link="wrist_link"/>
|
| 377 |
+
<axis xyz="0 0 1"/>
|
| 378 |
+
<limit effort="10" velocity="10" lower="-1.65806" upper="1.65806"/>
|
| 379 |
+
</joint>
|
| 380 |
+
|
| 381 |
+
<transmission name="wrist_flex_trans">
|
| 382 |
+
<type>transmission_interface/SimpleTransmission</type>
|
| 383 |
+
<joint name="wrist_flex">
|
| 384 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 385 |
+
</joint>
|
| 386 |
+
<actuator name="motor4">
|
| 387 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 388 |
+
<mechanicalReduction>1</mechanicalReduction>
|
| 389 |
+
</actuator>
|
| 390 |
+
</transmission>
|
| 391 |
+
|
| 392 |
+
<!-- Joint from upper_arm to lower_arm -->
|
| 393 |
+
<!-- Note: 5-degree calibration offset applied to joint limits -->
|
| 394 |
+
<joint name="elbow_flex" type="revolute">
|
| 395 |
+
<origin xyz="-0.11257 -0.028 1.73763e-16" rpy="-3.63608e-16 8.74301e-16 1.5708"/>
|
| 396 |
+
<parent link="upper_arm_link"/>
|
| 397 |
+
<child link="lower_arm_link"/>
|
| 398 |
+
<axis xyz="0 0 1"/>
|
| 399 |
+
<limit effort="10" velocity="10" lower="-1.69" upper="1.69"/>
|
| 400 |
+
</joint>
|
| 401 |
+
|
| 402 |
+
<transmission name="elbow_flex_trans">
|
| 403 |
+
<type>transmission_interface/SimpleTransmission</type>
|
| 404 |
+
<joint name="elbow_flex">
|
| 405 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 406 |
+
</joint>
|
| 407 |
+
<actuator name="motor3">
|
| 408 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 409 |
+
<mechanicalReduction>1</mechanicalReduction>
|
| 410 |
+
</actuator>
|
| 411 |
+
</transmission>
|
| 412 |
+
|
| 413 |
+
<!-- Joint from shoulder to upper_arm -->
|
| 414 |
+
<joint name="shoulder_lift" type="revolute">
|
| 415 |
+
<origin xyz="-0.0303992 -0.0182778 -0.0542" rpy="-1.5708 -1.5708 0"/>
|
| 416 |
+
<parent link="shoulder_link"/>
|
| 417 |
+
<child link="upper_arm_link"/>
|
| 418 |
+
<axis xyz="0 0 1"/>
|
| 419 |
+
<limit effort="10" velocity="10" lower="-1.74533" upper="1.74533"/>
|
| 420 |
+
</joint>
|
| 421 |
+
|
| 422 |
+
<transmission name="shoulder_lift_trans">
|
| 423 |
+
<type>transmission_interface/SimpleTransmission</type>
|
| 424 |
+
<joint name="shoulder_lift">
|
| 425 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 426 |
+
</joint>
|
| 427 |
+
<actuator name="motor2">
|
| 428 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 429 |
+
<mechanicalReduction>1</mechanicalReduction>
|
| 430 |
+
</actuator>
|
| 431 |
+
</transmission>
|
| 432 |
+
|
| 433 |
+
<!-- Joint from base to shoulder -->
|
| 434 |
+
<joint name="shoulder_pan" type="revolute">
|
| 435 |
+
<origin xyz="0.0388353 -8.97657e-09 0.0624" rpy="3.14159 4.18253e-17 -3.14159"/>
|
| 436 |
+
<parent link="base_link"/>
|
| 437 |
+
<child link="shoulder_link"/>
|
| 438 |
+
<axis xyz="0 0 1"/>
|
| 439 |
+
<limit effort="10" velocity="10" lower="-1.91986" upper="1.91986"/>
|
| 440 |
+
</joint>
|
| 441 |
+
|
| 442 |
+
<transmission name="shoulder_pan_trans">
|
| 443 |
+
<type>transmission_interface/SimpleTransmission</type>
|
| 444 |
+
<joint name="shoulder_pan">
|
| 445 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 446 |
+
</joint>
|
| 447 |
+
<actuator name="motor1">
|
| 448 |
+
<hardwareInterface>hardware_interface/PositionJointInterface</hardwareInterface>
|
| 449 |
+
<mechanicalReduction>1</mechanicalReduction>
|
| 450 |
+
</actuator>
|
| 451 |
+
</transmission>
|
| 452 |
+
|
| 453 |
+
</robot>
|
src/app/[org]/[dataset]/[episode]/episode-viewer.tsx
CHANGED
|
@@ -99,7 +99,7 @@ function EpisodeViewerInner({ data, org, dataset }: { data: EpisodeData; org?: s
|
|
| 99 |
}
|
| 100 |
return "episodes";
|
| 101 |
});
|
| 102 |
-
const [
|
| 103 |
const [episodeLengthStats, setEpisodeLengthStats] = useState<EpisodeLengthStats | null>(null);
|
| 104 |
const [statsLoading, setStatsLoading] = useState(false);
|
| 105 |
const statsLoadedRef = useRef(false);
|
|
@@ -478,8 +478,6 @@ function EpisodeViewerInner({ data, org, dataset }: { data: EpisodeData; org?: s
|
|
| 478 |
{activeTab === "statistics" && (
|
| 479 |
<StatsPanel
|
| 480 |
datasetInfo={datasetInfo}
|
| 481 |
-
episodeId={episodeId}
|
| 482 |
-
columnMinMax={columnMinMax}
|
| 483 |
episodeLengthStats={episodeLengthStats}
|
| 484 |
loading={statsLoading}
|
| 485 |
/>
|
|
@@ -508,7 +506,6 @@ function EpisodeViewerInner({ data, org, dataset }: { data: EpisodeData; org?: s
|
|
| 508 |
crossEpisodeLoading={insightsLoading}
|
| 509 |
episodeLengthStats={episodeLengthStats}
|
| 510 |
flatChartData={data.flatChartData}
|
| 511 |
-
fps={datasetInfo.fps || 30}
|
| 512 |
onViewFlaggedEpisodes={() => {
|
| 513 |
setSidebarFlaggedOnly(true);
|
| 514 |
handleTabChange("episodes");
|
|
|
|
| 99 |
}
|
| 100 |
return "episodes";
|
| 101 |
});
|
| 102 |
+
const [, setColumnMinMax] = useState<ColumnMinMax[] | null>(null);
|
| 103 |
const [episodeLengthStats, setEpisodeLengthStats] = useState<EpisodeLengthStats | null>(null);
|
| 104 |
const [statsLoading, setStatsLoading] = useState(false);
|
| 105 |
const statsLoadedRef = useRef(false);
|
|
|
|
| 478 |
{activeTab === "statistics" && (
|
| 479 |
<StatsPanel
|
| 480 |
datasetInfo={datasetInfo}
|
|
|
|
|
|
|
| 481 |
episodeLengthStats={episodeLengthStats}
|
| 482 |
loading={statsLoading}
|
| 483 |
/>
|
|
|
|
| 506 |
crossEpisodeLoading={insightsLoading}
|
| 507 |
episodeLengthStats={episodeLengthStats}
|
| 508 |
flatChartData={data.flatChartData}
|
|
|
|
| 509 |
onViewFlaggedEpisodes={() => {
|
| 510 |
setSidebarFlaggedOnly(true);
|
| 511 |
handleTabChange("episodes");
|
src/app/[org]/[dataset]/[episode]/fetch-data.ts
CHANGED
|
@@ -301,11 +301,6 @@ async function getEpisodeDataV2(
|
|
| 301 |
const filteredColumns = columnNames.filter(
|
| 302 |
(column) => !excludedColumns.includes(column.key),
|
| 303 |
);
|
| 304 |
-
const filteredColumnNames = [
|
| 305 |
-
"timestamp",
|
| 306 |
-
...filteredColumns.map((column) => column.key),
|
| 307 |
-
];
|
| 308 |
-
|
| 309 |
const columns: ColumnDef[] = filteredColumns.map(({ key }) => {
|
| 310 |
let column_names: unknown = info.features[key].names;
|
| 311 |
while (typeof column_names === "object" && column_names !== null) {
|
|
@@ -613,15 +608,6 @@ function processEpisodeDataForCharts(
|
|
| 613 |
episodeMetadata?: EpisodeMetadataV3,
|
| 614 |
): { chartDataGroups: ChartRow[][]; flatChartData: Record<string, number>[]; ignoredColumns: string[] } {
|
| 615 |
|
| 616 |
-
// Get numeric column features
|
| 617 |
-
const columnNames = Object.entries(info.features)
|
| 618 |
-
.filter(
|
| 619 |
-
([, value]) =>
|
| 620 |
-
["float32", "int32"].includes(value.dtype) &&
|
| 621 |
-
value.shape.length === 1,
|
| 622 |
-
)
|
| 623 |
-
.map(([key, value]) => ({ key, value }));
|
| 624 |
-
|
| 625 |
// Convert parquet data to chart format
|
| 626 |
let seriesNames: string[] = [];
|
| 627 |
|
|
|
|
| 301 |
const filteredColumns = columnNames.filter(
|
| 302 |
(column) => !excludedColumns.includes(column.key),
|
| 303 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 304 |
const columns: ColumnDef[] = filteredColumns.map(({ key }) => {
|
| 305 |
let column_names: unknown = info.features[key].names;
|
| 306 |
while (typeof column_names === "object" && column_names !== null) {
|
|
|
|
| 608 |
episodeMetadata?: EpisodeMetadataV3,
|
| 609 |
): { chartDataGroups: ChartRow[][]; flatChartData: Record<string, number>[]; ignoredColumns: string[] } {
|
| 610 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 611 |
// Convert parquet data to chart format
|
| 612 |
let seriesNames: string[] = [];
|
| 613 |
|
src/components/action-insights-panel.tsx
CHANGED
|
@@ -302,15 +302,14 @@ function ActionVelocitySection({ data, agg, numEpisodes, jerkyEpisodes }: { data
|
|
| 302 |
});
|
| 303 |
}, [data, actionKeys, agg]);
|
| 304 |
|
| 305 |
-
const stats = (agg && agg.length > 0) ? agg : fallbackStats ?? [];
|
| 306 |
const isAgg = agg && agg.length > 0;
|
| 307 |
|
| 308 |
-
|
| 309 |
-
|
| 310 |
-
const maxBinCount = Math.max(...stats.flatMap(s => s.bins));
|
| 311 |
-
const maxStd = Math.max(...stats.map(s => s.std));
|
| 312 |
|
| 313 |
const insight = useMemo(() => {
|
|
|
|
| 314 |
const smooth = stats.filter(s => s.std / maxStd < 0.4);
|
| 315 |
const moderate = stats.filter(s => s.std / maxStd >= 0.4 && s.std / maxStd < 0.7);
|
| 316 |
const jerky = stats.filter(s => s.std / maxStd >= 0.7);
|
|
@@ -348,6 +347,8 @@ function ActionVelocitySection({ data, agg, numEpisodes, jerkyEpisodes }: { data
|
|
| 348 |
return { verdict, lines, tip };
|
| 349 |
}, [stats, maxStd]);
|
| 350 |
|
|
|
|
|
|
|
| 351 |
return (
|
| 352 |
<div className="bg-slate-800/60 rounded-lg p-5 border border-slate-700 space-y-4">
|
| 353 |
<div>
|
|
@@ -462,6 +463,8 @@ function JerkyEpisodesList({ episodes }: { episodes: JerkyEpisode[] }) {
|
|
| 462 |
// ─── Cross-Episode Variance Heatmap ──────────────────────────────
|
| 463 |
|
| 464 |
function VarianceHeatmap({ data, loading }: { data: CrossEpisodeVarianceData | null; loading: boolean }) {
|
|
|
|
|
|
|
| 465 |
if (loading) {
|
| 466 |
return (
|
| 467 |
<div className="bg-slate-800/60 rounded-lg p-5 border border-slate-700">
|
|
@@ -485,8 +488,6 @@ function VarianceHeatmap({ data, loading }: { data: CrossEpisodeVarianceData | n
|
|
| 485 |
</div>
|
| 486 |
);
|
| 487 |
}
|
| 488 |
-
|
| 489 |
-
const isFs = useIsFullscreen();
|
| 490 |
const { actionNames, timeBins, variance, numEpisodes } = data;
|
| 491 |
const numDims = actionNames.length;
|
| 492 |
const numBins = timeBins.length;
|
|
@@ -918,14 +919,11 @@ const BC_THRESHOLD = 5 / 9;
|
|
| 918 |
function MultimodalitySection({ data }: { data: CrossEpisodeVarianceData }) {
|
| 919 |
const isFs = useIsFullscreen();
|
| 920 |
const { actionNames, timeBins, multimodality, numEpisodes } = data;
|
| 921 |
-
if (!multimodality || multimodality.length === 0) return null;
|
| 922 |
-
|
| 923 |
-
const numDims = actionNames.length;
|
| 924 |
-
const numBins = timeBins.length;
|
| 925 |
|
| 926 |
const { bimodalPct, verdict } = useMemo(() => {
|
|
|
|
| 927 |
let bimodal = 0, total = 0;
|
| 928 |
-
for (const row of multimodality
|
| 929 |
const pct = total > 0 ? (bimodal / total * 100) : 0;
|
| 930 |
|
| 931 |
let v: { label: string; color: string };
|
|
@@ -936,6 +934,8 @@ function MultimodalitySection({ data }: { data: CrossEpisodeVarianceData }) {
|
|
| 936 |
return { bimodalPct: pct, verdict: v };
|
| 937 |
}, [multimodality]);
|
| 938 |
|
|
|
|
|
|
|
| 939 |
const mBaseW = isFs ? 1000 : 560;
|
| 940 |
const mBaseH = isFs ? 500 : 300;
|
| 941 |
const cellW = Math.max(6, Math.min(isFs ? 24 : 14, Math.floor(mBaseW / numBins)));
|
|
@@ -1168,7 +1168,7 @@ function TrajectoryClusteringSection({ data, numEpisodes }: { data: TrajectoryCl
|
|
| 1168 |
width={plotW} height={plotH}
|
| 1169 |
className="block bg-slate-900/50 rounded cursor-grab active:cursor-grabbing select-none"
|
| 1170 |
onMouseDown={onMouseDown} onMouseMove={onMouseMove} onMouseUp={onMouseUp}
|
| 1171 |
-
onMouseLeave={(
|
| 1172 |
>
|
| 1173 |
{axisLines.map(a => (
|
| 1174 |
<React.Fragment key={a.label}>
|
|
|
|
| 302 |
});
|
| 303 |
}, [data, actionKeys, agg]);
|
| 304 |
|
| 305 |
+
const stats = useMemo(() => (agg && agg.length > 0) ? agg : fallbackStats ?? [], [agg, fallbackStats]);
|
| 306 |
const isAgg = agg && agg.length > 0;
|
| 307 |
|
| 308 |
+
const maxBinCount = useMemo(() => stats.length > 0 ? Math.max(...stats.flatMap(s => s.bins)) : 0, [stats]);
|
| 309 |
+
const maxStd = useMemo(() => stats.length > 0 ? Math.max(...stats.map(s => s.std)) : 1, [stats]);
|
|
|
|
|
|
|
| 310 |
|
| 311 |
const insight = useMemo(() => {
|
| 312 |
+
if (stats.length === 0) return null;
|
| 313 |
const smooth = stats.filter(s => s.std / maxStd < 0.4);
|
| 314 |
const moderate = stats.filter(s => s.std / maxStd >= 0.4 && s.std / maxStd < 0.7);
|
| 315 |
const jerky = stats.filter(s => s.std / maxStd >= 0.7);
|
|
|
|
| 347 |
return { verdict, lines, tip };
|
| 348 |
}, [stats, maxStd]);
|
| 349 |
|
| 350 |
+
if (stats.length === 0) return <p className="text-slate-500 italic">No action data for velocity analysis.</p>;
|
| 351 |
+
|
| 352 |
return (
|
| 353 |
<div className="bg-slate-800/60 rounded-lg p-5 border border-slate-700 space-y-4">
|
| 354 |
<div>
|
|
|
|
| 463 |
// ─── Cross-Episode Variance Heatmap ──────────────────────────────
|
| 464 |
|
| 465 |
function VarianceHeatmap({ data, loading }: { data: CrossEpisodeVarianceData | null; loading: boolean }) {
|
| 466 |
+
const isFs = useIsFullscreen();
|
| 467 |
+
|
| 468 |
if (loading) {
|
| 469 |
return (
|
| 470 |
<div className="bg-slate-800/60 rounded-lg p-5 border border-slate-700">
|
|
|
|
| 488 |
</div>
|
| 489 |
);
|
| 490 |
}
|
|
|
|
|
|
|
| 491 |
const { actionNames, timeBins, variance, numEpisodes } = data;
|
| 492 |
const numDims = actionNames.length;
|
| 493 |
const numBins = timeBins.length;
|
|
|
|
| 919 |
function MultimodalitySection({ data }: { data: CrossEpisodeVarianceData }) {
|
| 920 |
const isFs = useIsFullscreen();
|
| 921 |
const { actionNames, timeBins, multimodality, numEpisodes } = data;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 922 |
|
| 923 |
const { bimodalPct, verdict } = useMemo(() => {
|
| 924 |
+
if (!multimodality || multimodality.length === 0) return { bimodalPct: 0, verdict: { label: "", color: "" } };
|
| 925 |
let bimodal = 0, total = 0;
|
| 926 |
+
for (const row of multimodality) for (const v of row) { total++; if (v > BC_THRESHOLD) bimodal++; }
|
| 927 |
const pct = total > 0 ? (bimodal / total * 100) : 0;
|
| 928 |
|
| 929 |
let v: { label: string; color: string };
|
|
|
|
| 934 |
return { bimodalPct: pct, verdict: v };
|
| 935 |
}, [multimodality]);
|
| 936 |
|
| 937 |
+
if (!multimodality || multimodality.length === 0) return null;
|
| 938 |
+
|
| 939 |
const mBaseW = isFs ? 1000 : 560;
|
| 940 |
const mBaseH = isFs ? 500 : 300;
|
| 941 |
const cellW = Math.max(6, Math.min(isFs ? 24 : 14, Math.floor(mBaseW / numBins)));
|
|
|
|
| 1168 |
width={plotW} height={plotH}
|
| 1169 |
className="block bg-slate-900/50 rounded cursor-grab active:cursor-grabbing select-none"
|
| 1170 |
onMouseDown={onMouseDown} onMouseMove={onMouseMove} onMouseUp={onMouseUp}
|
| 1171 |
+
onMouseLeave={() => { onMouseUp(); setHoveredEp(null); }}
|
| 1172 |
>
|
| 1173 |
{axisLines.map(a => (
|
| 1174 |
<React.Fragment key={a.label}>
|
src/components/data-recharts.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
"use client";
|
| 2 |
|
| 3 |
-
import { useEffect, useState
|
| 4 |
import { useTime } from "../context/time-context";
|
| 5 |
import {
|
| 6 |
LineChart,
|
|
|
|
| 1 |
"use client";
|
| 2 |
|
| 3 |
+
import { useEffect, useState } from "react";
|
| 4 |
import { useTime } from "../context/time-context";
|
| 5 |
import {
|
| 6 |
LineChart,
|
src/components/filtering-panel.tsx
CHANGED
|
@@ -247,7 +247,6 @@ interface FilteringPanelProps {
|
|
| 247 |
crossEpisodeLoading: boolean;
|
| 248 |
episodeLengthStats: EpisodeLengthStats | null;
|
| 249 |
flatChartData: Record<string, number>[];
|
| 250 |
-
fps: number;
|
| 251 |
onViewFlaggedEpisodes?: () => void;
|
| 252 |
}
|
| 253 |
|
|
@@ -315,7 +314,6 @@ const FilteringPanel: React.FC<FilteringPanelProps> = ({
|
|
| 315 |
crossEpisodeLoading,
|
| 316 |
episodeLengthStats,
|
| 317 |
flatChartData,
|
| 318 |
-
fps,
|
| 319 |
onViewFlaggedEpisodes,
|
| 320 |
}) => {
|
| 321 |
return (
|
|
|
|
| 247 |
crossEpisodeLoading: boolean;
|
| 248 |
episodeLengthStats: EpisodeLengthStats | null;
|
| 249 |
flatChartData: Record<string, number>[];
|
|
|
|
| 250 |
onViewFlaggedEpisodes?: () => void;
|
| 251 |
}
|
| 252 |
|
|
|
|
| 314 |
crossEpisodeLoading,
|
| 315 |
episodeLengthStats,
|
| 316 |
flatChartData,
|
|
|
|
| 317 |
onViewFlaggedEpisodes,
|
| 318 |
}) => {
|
| 319 |
return (
|
src/components/stats-panel.tsx
CHANGED
|
@@ -1,17 +1,14 @@
|
|
| 1 |
"use client";
|
| 2 |
|
| 3 |
-
import React
|
| 4 |
import type {
|
| 5 |
DatasetDisplayInfo,
|
| 6 |
-
ColumnMinMax,
|
| 7 |
EpisodeLengthStats,
|
| 8 |
CameraInfo,
|
| 9 |
} from "@/app/[org]/[dataset]/[episode]/fetch-data";
|
| 10 |
|
| 11 |
interface StatsPanelProps {
|
| 12 |
datasetInfo: DatasetDisplayInfo;
|
| 13 |
-
episodeId: number;
|
| 14 |
-
columnMinMax: ColumnMinMax[] | null;
|
| 15 |
episodeLengthStats: EpisodeLengthStats | null;
|
| 16 |
loading: boolean;
|
| 17 |
}
|
|
@@ -83,8 +80,6 @@ const Card: React.FC<{ label: string; value: string | number }> = ({ label, valu
|
|
| 83 |
|
| 84 |
const StatsPanel: React.FC<StatsPanelProps> = ({
|
| 85 |
datasetInfo,
|
| 86 |
-
episodeId,
|
| 87 |
-
columnMinMax,
|
| 88 |
episodeLengthStats,
|
| 89 |
loading,
|
| 90 |
}) => {
|
|
|
|
| 1 |
"use client";
|
| 2 |
|
| 3 |
+
import React from "react";
|
| 4 |
import type {
|
| 5 |
DatasetDisplayInfo,
|
|
|
|
| 6 |
EpisodeLengthStats,
|
| 7 |
CameraInfo,
|
| 8 |
} from "@/app/[org]/[dataset]/[episode]/fetch-data";
|
| 9 |
|
| 10 |
interface StatsPanelProps {
|
| 11 |
datasetInfo: DatasetDisplayInfo;
|
|
|
|
|
|
|
| 12 |
episodeLengthStats: EpisodeLengthStats | null;
|
| 13 |
loading: boolean;
|
| 14 |
}
|
|
|
|
| 80 |
|
| 81 |
const StatsPanel: React.FC<StatsPanelProps> = ({
|
| 82 |
datasetInfo,
|
|
|
|
|
|
|
| 83 |
episodeLengthStats,
|
| 84 |
loading,
|
| 85 |
}) => {
|
src/components/urdf-viewer.tsx
CHANGED
|
@@ -13,7 +13,7 @@ import { LineMaterial } from "three/examples/jsm/lines/LineMaterial.js";
|
|
| 13 |
import { LineGeometry } from "three/examples/jsm/lines/LineGeometry.js";
|
| 14 |
import type { EpisodeData } from "@/app/[org]/[dataset]/[episode]/fetch-data";
|
| 15 |
import { fetchEpisodeChartData } from "@/app/[org]/[dataset]/[episode]/actions";
|
| 16 |
-
|
| 17 |
|
| 18 |
const SERIES_DELIM = " | ";
|
| 19 |
const DEG2RAD = Math.PI / 180;
|
|
@@ -21,12 +21,12 @@ const DEG2RAD = Math.PI / 180;
|
|
| 21 |
function getRobotConfig(robotType: string | null) {
|
| 22 |
const lower = (robotType ?? "").toLowerCase();
|
| 23 |
if (lower.includes("openarm")) {
|
| 24 |
-
return { urdfUrl: "/urdf/openarm/openarm_bimanual.urdf", scale: 3
|
| 25 |
}
|
| 26 |
if (lower.includes("so100") && !lower.includes("so101")) {
|
| 27 |
-
return { urdfUrl: "/urdf/so101/so100.urdf", scale: 10
|
| 28 |
}
|
| 29 |
-
return { urdfUrl: "/urdf/so101/so101_new_calib.urdf", scale: 10
|
| 30 |
}
|
| 31 |
|
| 32 |
// Detect unit: servo ticks (0-4096), degrees (>6.28), or radians
|
|
@@ -348,7 +348,7 @@ export default function URDFViewer({
|
|
| 348 |
const { datasetInfo, episodes } = data;
|
| 349 |
const fps = datasetInfo.fps || 30;
|
| 350 |
const robotConfig = useMemo(() => getRobotConfig(datasetInfo.robot_type), [datasetInfo.robot_type]);
|
| 351 |
-
const { urdfUrl, scale
|
| 352 |
|
| 353 |
// Episode selection & chart data
|
| 354 |
const [selectedEpisode, setSelectedEpisode] = useState(data.episodeId);
|
|
|
|
| 13 |
import { LineGeometry } from "three/examples/jsm/lines/LineGeometry.js";
|
| 14 |
import type { EpisodeData } from "@/app/[org]/[dataset]/[episode]/fetch-data";
|
| 15 |
import { fetchEpisodeChartData } from "@/app/[org]/[dataset]/[episode]/actions";
|
| 16 |
+
|
| 17 |
|
| 18 |
const SERIES_DELIM = " | ";
|
| 19 |
const DEG2RAD = Math.PI / 180;
|
|
|
|
| 21 |
function getRobotConfig(robotType: string | null) {
|
| 22 |
const lower = (robotType ?? "").toLowerCase();
|
| 23 |
if (lower.includes("openarm")) {
|
| 24 |
+
return { urdfUrl: "/urdf/openarm/openarm_bimanual.urdf", scale: 3 };
|
| 25 |
}
|
| 26 |
if (lower.includes("so100") && !lower.includes("so101")) {
|
| 27 |
+
return { urdfUrl: "/urdf/so101/so100.urdf", scale: 10 };
|
| 28 |
}
|
| 29 |
+
return { urdfUrl: "/urdf/so101/so101_new_calib.urdf", scale: 10 };
|
| 30 |
}
|
| 31 |
|
| 32 |
// Detect unit: servo ticks (0-4096), degrees (>6.28), or radians
|
|
|
|
| 348 |
const { datasetInfo, episodes } = data;
|
| 349 |
const fps = datasetInfo.fps || 30;
|
| 350 |
const robotConfig = useMemo(() => getRobotConfig(datasetInfo.robot_type), [datasetInfo.robot_type]);
|
| 351 |
+
const { urdfUrl, scale } = robotConfig;
|
| 352 |
|
| 353 |
// Episode selection & chart data
|
| 354 |
const [selectedEpisode, setSelectedEpisode] = useState(data.episodeId);
|