diff --git a/public/urdf/g1/g1_body29_hand14.urdf b/public/urdf/g1/g1_body29_hand14.urdf
new file mode 100644
index 0000000000000000000000000000000000000000..156a5fd524b08ae54b0123f589f9f0948dc5f4c7
--- /dev/null
+++ b/public/urdf/g1/g1_body29_hand14.urdf
@@ -0,0 +1,1476 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/urdf/g1/meshes/head_link.STL b/public/urdf/g1/meshes/head_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..401f822751c33dab53c6cee77eb62890aca5cd8f
--- /dev/null
+++ b/public/urdf/g1/meshes/head_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:005fb67fbd3eff94aa8bf4a6e83238174e9f91b6721f7111594322f223724411
+size 932784
diff --git a/public/urdf/g1/meshes/left_ankle_pitch_link.STL b/public/urdf/g1/meshes/left_ankle_pitch_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..7cd705218062fc63478e2ad98418eaaf021f25c7
--- /dev/null
+++ b/public/urdf/g1/meshes/left_ankle_pitch_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d49e3abc6f5b12e532062cd575b87b5ef40cd2a3fc18f54a1ca5bba4f773d51d
+size 71184
diff --git a/public/urdf/g1/meshes/left_ankle_roll_link.STL b/public/urdf/g1/meshes/left_ankle_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..cb69f65c6a8059fc6720cb393540f579b4d0c26e
--- /dev/null
+++ b/public/urdf/g1/meshes/left_ankle_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c4092af943141d4d9f74232f3cfa345afc6565f46a077793b8ae0e68b39dc33f
+size 653384
diff --git a/public/urdf/g1/meshes/left_elbow_link.STL b/public/urdf/g1/meshes/left_elbow_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..7fa05272ef8e4c48ba57532175c7388784414369
--- /dev/null
+++ b/public/urdf/g1/meshes/left_elbow_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa752198accd104d5c4c3a01382e45165b944fbbc5acce085059223324e5bed3
+size 88784
diff --git a/public/urdf/g1/meshes/left_elbow_link_merge.STL b/public/urdf/g1/meshes/left_elbow_link_merge.STL
new file mode 100644
index 0000000000000000000000000000000000000000..f287918e8b94df6efea3a7d117d854faf878c930
--- /dev/null
+++ b/public/urdf/g1/meshes/left_elbow_link_merge.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:73c8adc6346b900eb6a2ae7159e25dfda1be60cd98affe13536e01ab33a6c1de
+size 3136784
diff --git a/public/urdf/g1/meshes/left_hand_index_0_link.STL b/public/urdf/g1/meshes/left_hand_index_0_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..a87568d6835efb4f38efa6935c6ef30a2af633e0
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hand_index_0_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b35f2f77211d5a366f0b9a4e47c4ee35e536731266f1a34e9efa12db579b892
+size 475984
diff --git a/public/urdf/g1/meshes/left_hand_index_1_link.STL b/public/urdf/g1/meshes/left_hand_index_1_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..c6c91dd461805b2f0e89a1202e68f5b095b74a41
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hand_index_1_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e315ebc8a7a0cb98e033985b586b20d81cf8aa761181ae61ce56fcb14077a06
+size 1521784
diff --git a/public/urdf/g1/meshes/left_hand_middle_0_link.STL b/public/urdf/g1/meshes/left_hand_middle_0_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..a87568d6835efb4f38efa6935c6ef30a2af633e0
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hand_middle_0_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b35f2f77211d5a366f0b9a4e47c4ee35e536731266f1a34e9efa12db579b892
+size 475984
diff --git a/public/urdf/g1/meshes/left_hand_middle_1_link.STL b/public/urdf/g1/meshes/left_hand_middle_1_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..c6c91dd461805b2f0e89a1202e68f5b095b74a41
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hand_middle_1_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e315ebc8a7a0cb98e033985b586b20d81cf8aa761181ae61ce56fcb14077a06
+size 1521784
diff --git a/public/urdf/g1/meshes/left_hand_palm_link.STL b/public/urdf/g1/meshes/left_hand_palm_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..c8fcc3e4c3a864842b002eb94f6b692314ec97b8
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hand_palm_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23a486b75bd78a9bf03cec25d84d87f97f3dae038cf21a743b6d469b337e4004
+size 2140184
diff --git a/public/urdf/g1/meshes/left_hand_thumb_0_link.STL b/public/urdf/g1/meshes/left_hand_thumb_0_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..7fb38c1808273a8a54f80318bce7720c9a7cd3f2
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hand_thumb_0_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a90c721661c0622685488a3c74d1e122c7da89242d3a1daef75edb83422d05e0
+size 8884
diff --git a/public/urdf/g1/meshes/left_hand_thumb_1_link.STL b/public/urdf/g1/meshes/left_hand_thumb_1_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..54f77542da4eab84d91035acd25405c09fb9d2e8
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hand_thumb_1_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:445c54a45bc13ce36001556f66bc0f49c83cb40321205ae4d676bb2874325684
+size 475984
diff --git a/public/urdf/g1/meshes/left_hand_thumb_2_link.STL b/public/urdf/g1/meshes/left_hand_thumb_2_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..3e4f124f2311fc11c2dcd7cec417da892ffd14c0
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hand_thumb_2_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3d8dbe5085acfc213d21aa8b0782e89cd79084e9678f3a85fc7b04a86b029db5
+size 1521784
diff --git a/public/urdf/g1/meshes/left_hip_pitch_link.STL b/public/urdf/g1/meshes/left_hip_pitch_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..4cf7475bf6bbaef47d5b3f7644a34c73b3d64037
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hip_pitch_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4725168105ee768ee31638ef22b53f6be2d7641bfd7cfefe803488d884776fa4
+size 181684
diff --git a/public/urdf/g1/meshes/left_hip_roll_link.STL b/public/urdf/g1/meshes/left_hip_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..585f6040c38571177d55519417a0f46ca7b29381
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hip_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91f25922ee8a7c3152790051bebad17b4d9cd243569c38fe340285ff93a97acf
+size 192184
diff --git a/public/urdf/g1/meshes/left_hip_yaw_link.STL b/public/urdf/g1/meshes/left_hip_yaw_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..b46a74134f90c568cbdfb8484eeb83a0503b4504
--- /dev/null
+++ b/public/urdf/g1/meshes/left_hip_yaw_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a16d88aa6ddac8083aa7ad55ed317bea44b1fa003d314fba88965b7ed0f3b55b
+size 296284
diff --git a/public/urdf/g1/meshes/left_knee_link.STL b/public/urdf/g1/meshes/left_knee_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..2dcf84e4018ab9e4cff48cecdafe433601c48480
--- /dev/null
+++ b/public/urdf/g1/meshes/left_knee_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d92b9e3d3a636761150bb8025e32514c4602b91c7028d523ee42b3e632de477
+size 854884
diff --git a/public/urdf/g1/meshes/left_rubber_hand.STL b/public/urdf/g1/meshes/left_rubber_hand.STL
new file mode 100644
index 0000000000000000000000000000000000000000..04a2fa22b7f60f2d00c64ec996b33a5219c2b633
--- /dev/null
+++ b/public/urdf/g1/meshes/left_rubber_hand.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cff2221a690fa69303f61fce68f2d155c1517b52efb6ca9262dd56e0bc6e70fe
+size 2287484
diff --git a/public/urdf/g1/meshes/left_shoulder_pitch_link.STL b/public/urdf/g1/meshes/left_shoulder_pitch_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..926d9807f1cbf6ad0d41170904785eb30427c848
--- /dev/null
+++ b/public/urdf/g1/meshes/left_shoulder_pitch_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f0d1cfd02fcf0d42f95e678eeca33da3afbcc366ffba5c052847773ec4f31d52
+size 176784
diff --git a/public/urdf/g1/meshes/left_shoulder_roll_link.STL b/public/urdf/g1/meshes/left_shoulder_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..4c6840b93ea15d1ba7b4dac0f18f94655867cab7
--- /dev/null
+++ b/public/urdf/g1/meshes/left_shoulder_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb9df21687773522598dc384f1a2945c7519f11cbc8bd372a49170316d6eee88
+size 400284
diff --git a/public/urdf/g1/meshes/left_shoulder_yaw_link.STL b/public/urdf/g1/meshes/left_shoulder_yaw_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..89b0e0661275ed832c674a46893239ad2e5bef85
--- /dev/null
+++ b/public/urdf/g1/meshes/left_shoulder_yaw_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1aa97e9748e924336567992181f78c7cd0652fd52a4afcca3df6b2ef6f9e712e
+size 249184
diff --git a/public/urdf/g1/meshes/left_wrist_pitch_link.STL b/public/urdf/g1/meshes/left_wrist_pitch_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..f9c9e4f6b974a9e46c8f62ec9903f3e34287a335
--- /dev/null
+++ b/public/urdf/g1/meshes/left_wrist_pitch_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b251d8e05047f695d0f536cd78c11973cfa4e78d08cfe82759336cc3471de3a9
+size 85984
diff --git a/public/urdf/g1/meshes/left_wrist_roll_link.STL b/public/urdf/g1/meshes/left_wrist_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..2097ca3e5bbc0af985d150e5dcda4d8ba9bcf43f
--- /dev/null
+++ b/public/urdf/g1/meshes/left_wrist_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:edc387c9a0ba8c2237e9b296d32531426fabeb6f53e58df45c76106bca74148c
+size 356184
diff --git a/public/urdf/g1/meshes/left_wrist_roll_rubber_hand.STL b/public/urdf/g1/meshes/left_wrist_roll_rubber_hand.STL
new file mode 100644
index 0000000000000000000000000000000000000000..7c58819795c4cdfe406a008bfdbe7ea19d765497
--- /dev/null
+++ b/public/urdf/g1/meshes/left_wrist_roll_rubber_hand.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e81030abd023bd9e4a308ef376d814a2c12d684d8a7670c335bbd5cd7809c909
+size 3484884
diff --git a/public/urdf/g1/meshes/left_wrist_yaw_link.STL b/public/urdf/g1/meshes/left_wrist_yaw_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..692f4b07105fa0ec4ffd989dc60be9b2a33ac9c3
--- /dev/null
+++ b/public/urdf/g1/meshes/left_wrist_yaw_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83f8fb3a726bf9613d65dd14f0f447cb918c3c95b3938042a0c9c09749267d3b
+size 318684
diff --git a/public/urdf/g1/meshes/logo_link.STL b/public/urdf/g1/meshes/logo_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..6c25961c594c714ada9d32e922250d326c121f4a
--- /dev/null
+++ b/public/urdf/g1/meshes/logo_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8571a0a19bc4916fa55f91449f51d5fdefd751000054865a842449429d5f155b
+size 243384
diff --git a/public/urdf/g1/meshes/pelvis.STL b/public/urdf/g1/meshes/pelvis.STL
new file mode 100644
index 0000000000000000000000000000000000000000..f98a88dbf6c7698791ba694e16cbcc180c40663c
--- /dev/null
+++ b/public/urdf/g1/meshes/pelvis.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ba6bbc888e630550140d3c26763f10206da8c8bd30ed886b8ede41c61f57a31
+size 1060884
diff --git a/public/urdf/g1/meshes/pelvis_contour_link.STL b/public/urdf/g1/meshes/pelvis_contour_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..8025bc070cd65550f345e9e97bc44a8ff9740dea
--- /dev/null
+++ b/public/urdf/g1/meshes/pelvis_contour_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5cc5c2c7a312329e3feeb2b03d3fc09fc29705bd01864f6767e51be959662420
+size 1805184
diff --git a/public/urdf/g1/meshes/right_ankle_pitch_link.STL b/public/urdf/g1/meshes/right_ankle_pitch_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..94a586a487180b7e6e5a5a5c1a8abdd3f50f6da3
--- /dev/null
+++ b/public/urdf/g1/meshes/right_ankle_pitch_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:15be426539ec1be70246d4d82a168806db64a41301af8b35c197a33348c787a9
+size 71184
diff --git a/public/urdf/g1/meshes/right_ankle_roll_link.STL b/public/urdf/g1/meshes/right_ankle_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..3c38507b9060eda2c40e5e2bb1b174ef5bda0390
--- /dev/null
+++ b/public/urdf/g1/meshes/right_ankle_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b66222ea56653e627711b56d0a8949b4920da5df091da0ceb343f54e884e3a5
+size 653784
diff --git a/public/urdf/g1/meshes/right_elbow_link.STL b/public/urdf/g1/meshes/right_elbow_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..52aa0ebf0159aa4e6dd47890ebc8136e039107b1
--- /dev/null
+++ b/public/urdf/g1/meshes/right_elbow_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1be925d7aa268bb8fddf5362b9173066890c7d32092c05638608126e59d1e2ab
+size 88784
diff --git a/public/urdf/g1/meshes/right_elbow_link_merge.STL b/public/urdf/g1/meshes/right_elbow_link_merge.STL
new file mode 100644
index 0000000000000000000000000000000000000000..b042703b9ec2622e73b708f10f86ef149643e60f
--- /dev/null
+++ b/public/urdf/g1/meshes/right_elbow_link_merge.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6def7100e5bbb276c7498c5b7a8c8812f560ca35d6bd09c376ebab93595be7f
+size 3058284
diff --git a/public/urdf/g1/meshes/right_hand_index_0_link.STL b/public/urdf/g1/meshes/right_hand_index_0_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..5e2ef477e4666a8a26b9f02f89db5641cbbed0ab
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hand_index_0_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12ab4300c95e437e834f9aef772b3b431c671bf34338930b52ad11aef73bbd0d
+size 475984
diff --git a/public/urdf/g1/meshes/right_hand_index_1_link.STL b/public/urdf/g1/meshes/right_hand_index_1_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..8572ae1c90f7c129b2d0a31c1ccfe23e02ed1820
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hand_index_1_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9c34efce4563cacdcfd29fc838a982976d40f5442c71219811dcbbf3923a33d
+size 1521784
diff --git a/public/urdf/g1/meshes/right_hand_middle_0_link.STL b/public/urdf/g1/meshes/right_hand_middle_0_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..5e2ef477e4666a8a26b9f02f89db5641cbbed0ab
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hand_middle_0_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12ab4300c95e437e834f9aef772b3b431c671bf34338930b52ad11aef73bbd0d
+size 475984
diff --git a/public/urdf/g1/meshes/right_hand_middle_1_link.STL b/public/urdf/g1/meshes/right_hand_middle_1_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..8572ae1c90f7c129b2d0a31c1ccfe23e02ed1820
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hand_middle_1_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9c34efce4563cacdcfd29fc838a982976d40f5442c71219811dcbbf3923a33d
+size 1521784
diff --git a/public/urdf/g1/meshes/right_hand_palm_link.STL b/public/urdf/g1/meshes/right_hand_palm_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..fd2f7f0a8a9f75db8c45aef9e1a77c6b6224fd2a
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hand_palm_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86c0b231cc44477d64a6493e5a427ba16617a00738112dd187c652675b086fb9
+size 2140184
diff --git a/public/urdf/g1/meshes/right_hand_thumb_0_link.STL b/public/urdf/g1/meshes/right_hand_thumb_0_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..a385d96acca4aeea51c9bce239a1d3f8ab7a1753
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hand_thumb_0_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:544298d0ea1088f5b276a10cc6a6a9e533efdd91594955fdc956c46211d07f83
+size 8884
diff --git a/public/urdf/g1/meshes/right_hand_thumb_1_link.STL b/public/urdf/g1/meshes/right_hand_thumb_1_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..c118de720dd2b5a467c397f9287f0ea01b2ad0a9
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hand_thumb_1_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a9a820da8dd10f298778b714f1364216e8a5976f4fd3a05689ea26327d44bf6
+size 475984
diff --git a/public/urdf/g1/meshes/right_hand_thumb_2_link.STL b/public/urdf/g1/meshes/right_hand_thumb_2_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..0979fb671e215be58c914ce22f03d47bdd0b6bf3
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hand_thumb_2_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f1bfb37668e8f61801c8d25f171fa1949e08666be86c67acad7e0079937cc45
+size 1521784
diff --git a/public/urdf/g1/meshes/right_hip_pitch_link.STL b/public/urdf/g1/meshes/right_hip_pitch_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..064085fca108bfc2a5a365403ceb6cdac4d5cd5f
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hip_pitch_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4f3c99d7f4a7d34eadbef9461fc66e3486cb5442db1ec50c86317d459f1a9c6
+size 181284
diff --git a/public/urdf/g1/meshes/right_hip_roll_link.STL b/public/urdf/g1/meshes/right_hip_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..6544025eeb7dc7d09da549746ae28272e5bcf224
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hip_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c254ef66a356f492947f360dd931965477b631e3fcc841f91ccc46d945d54f6
+size 192684
diff --git a/public/urdf/g1/meshes/right_hip_yaw_link.STL b/public/urdf/g1/meshes/right_hip_yaw_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..0ad7bee36419f85b490debe929957c6932df393f
--- /dev/null
+++ b/public/urdf/g1/meshes/right_hip_yaw_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e479c2936ca2057e9eb2f7dff6c189b7419d7b8484dea0b298cbb36a2a6aa668
+size 296284
diff --git a/public/urdf/g1/meshes/right_knee_link.STL b/public/urdf/g1/meshes/right_knee_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..65e8a708a7e86f1f242cd32e8959a560ea66c2d7
--- /dev/null
+++ b/public/urdf/g1/meshes/right_knee_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:63c4008449c9bbe701a6e2b557b7a252e90cf3a5abcf54cee46862b9a69f8ec8
+size 852284
diff --git a/public/urdf/g1/meshes/right_rubber_hand.STL b/public/urdf/g1/meshes/right_rubber_hand.STL
new file mode 100644
index 0000000000000000000000000000000000000000..58148fb9e7307176d43f71da139781a77b63d156
--- /dev/null
+++ b/public/urdf/g1/meshes/right_rubber_hand.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:99533b778bca6246144fa511bb9d4e555e075c641f2a0251e04372869cd99d67
+size 2192684
diff --git a/public/urdf/g1/meshes/right_shoulder_pitch_link.STL b/public/urdf/g1/meshes/right_shoulder_pitch_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..48a1c46009929341f2c312966acf81c3c733d7ec
--- /dev/null
+++ b/public/urdf/g1/meshes/right_shoulder_pitch_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24cdb387e0128dfe602770a81c56cdce3a0181d34d039a11d1aaf8819b7b8c02
+size 176784
diff --git a/public/urdf/g1/meshes/right_shoulder_roll_link.STL b/public/urdf/g1/meshes/right_shoulder_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..2a5d22f9e17a986ec8c958a6ff7668d65878a907
--- /dev/null
+++ b/public/urdf/g1/meshes/right_shoulder_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:962b97c48f9ce9e8399f45dd9522e0865d19aa9fd299406b2d475a8fc4a53e81
+size 401884
diff --git a/public/urdf/g1/meshes/right_shoulder_yaw_link.STL b/public/urdf/g1/meshes/right_shoulder_yaw_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..0882a567fc1a11f0cf821182154551058b0517f3
--- /dev/null
+++ b/public/urdf/g1/meshes/right_shoulder_yaw_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0b76489271da0c72461a344c9ffb0f0c6e64f019ea5014c1624886c442a2fe5
+size 249984
diff --git a/public/urdf/g1/meshes/right_wrist_pitch_link.STL b/public/urdf/g1/meshes/right_wrist_pitch_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..2efd25c443f3233ad4d8eeff94a87ab6f661c79c
--- /dev/null
+++ b/public/urdf/g1/meshes/right_wrist_pitch_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d22f8f3b3127f15a63e5be1ee273cd5075786c3142f1c3d9f76cbf43d2a26477
+size 79584
diff --git a/public/urdf/g1/meshes/right_wrist_roll_link.STL b/public/urdf/g1/meshes/right_wrist_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..77d23a77ad6ab659884db4d540e0bd9fd0675d0f
--- /dev/null
+++ b/public/urdf/g1/meshes/right_wrist_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7ee9212ff5b94d6cb7f52bb1bbf3f352194d5b598acff74f4c77d340c5b344f
+size 356084
diff --git a/public/urdf/g1/meshes/right_wrist_roll_rubber_hand.STL b/public/urdf/g1/meshes/right_wrist_roll_rubber_hand.STL
new file mode 100644
index 0000000000000000000000000000000000000000..6f122afac362873186f291d520a255c575a4bf02
--- /dev/null
+++ b/public/urdf/g1/meshes/right_wrist_roll_rubber_hand.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0729aff1ac4356f9314de13a46906267642e58bc47f0d8a7f17f6590a6242ccf
+size 3481584
diff --git a/public/urdf/g1/meshes/right_wrist_yaw_link.STL b/public/urdf/g1/meshes/right_wrist_yaw_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..77edbb4135bb5b9b64357a0226431fd665d794b2
--- /dev/null
+++ b/public/urdf/g1/meshes/right_wrist_yaw_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc9dece2d12509707e0057ba2e48df8f3d56db0c79410212963a25e8a50f61a6
+size 341484
diff --git a/public/urdf/g1/meshes/torso_constraint_L_link.STL b/public/urdf/g1/meshes/torso_constraint_L_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..cc2cbbf2ca4c72a20704c70fb61c80b7c4fa52aa
--- /dev/null
+++ b/public/urdf/g1/meshes/torso_constraint_L_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82be7f93e85b3d303a1d1e1847e2c916939bd61c424ed1ebd28691ec33909dd1
+size 203584
diff --git a/public/urdf/g1/meshes/torso_constraint_L_rod_link.STL b/public/urdf/g1/meshes/torso_constraint_L_rod_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..dd439bf092da4fc85416a72dd1899a910d5f423c
--- /dev/null
+++ b/public/urdf/g1/meshes/torso_constraint_L_rod_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c10de1effa7ea797ac268006aa2a739036c7e1f326b2012d711ee2c20c5a6e96
+size 74884
diff --git a/public/urdf/g1/meshes/torso_constraint_R_link.STL b/public/urdf/g1/meshes/torso_constraint_R_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..422ffe47ee75c14e5767f96ede5f506118c1054e
--- /dev/null
+++ b/public/urdf/g1/meshes/torso_constraint_R_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54ded433a3a0c76027365856fdbd55215643de88846f7d436598a4071e682725
+size 203584
diff --git a/public/urdf/g1/meshes/torso_constraint_R_rod_link.STL b/public/urdf/g1/meshes/torso_constraint_R_rod_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..6df46c89d2838b0cc880ab17201a3d614cef812a
--- /dev/null
+++ b/public/urdf/g1/meshes/torso_constraint_R_rod_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb83fd38a9f06c99e3f301c70f12d94ae770a8f0cf9501f83580a27f908990b4
+size 74884
diff --git a/public/urdf/g1/meshes/torso_link.STL b/public/urdf/g1/meshes/torso_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..e4fb87c4cc736c90970bb5f182981f0cf1544038
--- /dev/null
+++ b/public/urdf/g1/meshes/torso_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e96d023f0368a4e3450b86ca5d4f10227d8141156a373e7da8cb3c93266523e0
+size 2232984
diff --git a/public/urdf/g1/meshes/torso_link_rev_1_0.STL b/public/urdf/g1/meshes/torso_link_rev_1_0.STL
new file mode 100644
index 0000000000000000000000000000000000000000..836b9923b3edac7a1c06ecd2f11bfbbc0dedf7e0
--- /dev/null
+++ b/public/urdf/g1/meshes/torso_link_rev_1_0.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11ddb46f2098efbbd8816b1d65893632d8e78be936376c7cdcd6771899ccc723
+size 2570584
diff --git a/public/urdf/g1/meshes/waist_constraint_L.STL b/public/urdf/g1/meshes/waist_constraint_L.STL
new file mode 100644
index 0000000000000000000000000000000000000000..6ec689bc8d8ca4a17fa3663f29d546837fef4ee2
--- /dev/null
+++ b/public/urdf/g1/meshes/waist_constraint_L.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8ebafdcb4de6871113f0ca2c356618d6e46b1d50f6c0bf9e37f47b9d8e100d99
+size 114684
diff --git a/public/urdf/g1/meshes/waist_constraint_R.STL b/public/urdf/g1/meshes/waist_constraint_R.STL
new file mode 100644
index 0000000000000000000000000000000000000000..69fd76adbd96709fe00b68da0f0da7ef08b03d79
--- /dev/null
+++ b/public/urdf/g1/meshes/waist_constraint_R.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:791902a291ffbd35ab97383b7b44ea5d975de7c80eef838797c970790b382ca9
+size 114684
diff --git a/public/urdf/g1/meshes/waist_roll_link.STL b/public/urdf/g1/meshes/waist_roll_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..007f56d2cd886565a047df6dc6d6d0ce2952ed80
--- /dev/null
+++ b/public/urdf/g1/meshes/waist_roll_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34f0aa73f41131230be4d25876c944fdf6c24d62553f199ff8b980c15e8913df
+size 24184
diff --git a/public/urdf/g1/meshes/waist_roll_link_rev_1_0.STL b/public/urdf/g1/meshes/waist_roll_link_rev_1_0.STL
new file mode 100644
index 0000000000000000000000000000000000000000..36a5a70ef6704deb82407a42ad908886f2f08147
--- /dev/null
+++ b/public/urdf/g1/meshes/waist_roll_link_rev_1_0.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b67c347a05abc3e8ddae600d98a082bee273bb39f8e651647708b0a7140a8a97
+size 85884
diff --git a/public/urdf/g1/meshes/waist_support_link.STL b/public/urdf/g1/meshes/waist_support_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..4a50f94fe3e60c6c128874488869779be9fef816
--- /dev/null
+++ b/public/urdf/g1/meshes/waist_support_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1fae9e1bb609848a1667d32eed8d6083ae443538a306843056a2a660f1b2926a
+size 150484
diff --git a/public/urdf/g1/meshes/waist_yaw_link.STL b/public/urdf/g1/meshes/waist_yaw_link.STL
new file mode 100644
index 0000000000000000000000000000000000000000..c049debc4e0080a06ea95c2e7e9b74613cd42040
--- /dev/null
+++ b/public/urdf/g1/meshes/waist_yaw_link.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2883f20e03f09b669b5b4ce10677ee6b5191c0934b584d7cbaef2d0662856ffb
+size 336284
diff --git a/public/urdf/g1/meshes/waist_yaw_link_rev_1_0.STL b/public/urdf/g1/meshes/waist_yaw_link_rev_1_0.STL
new file mode 100644
index 0000000000000000000000000000000000000000..dc628fbdda04129fda29140243d148cbd2c81c83
--- /dev/null
+++ b/public/urdf/g1/meshes/waist_yaw_link_rev_1_0.STL
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec6db442b11f25eed898b5add07940c85d804f300de24dcbd264ccd8be7d554c
+size 619984
diff --git a/src/components/urdf-viewer.tsx b/src/components/urdf-viewer.tsx
index 18fa085e42c9a18e4d65107b0855b4fafadd4b96..1b33bc8ad084550ff27385b064bf25e7e46b63af 100644
--- a/src/components/urdf-viewer.tsx
+++ b/src/components/urdf-viewer.tsx
@@ -29,6 +29,9 @@ const DEG2RAD = Math.PI / 180;
function getRobotConfig(robotType: string | null) {
const lower = (robotType ?? "").toLowerCase();
+ if (lower.includes("g1") || lower.includes("unitree")) {
+ return { urdfUrl: "/urdf/g1/g1_body29_hand14.urdf", scale: 1 };
+ }
if (lower.includes("openarm")) {
return { urdfUrl: "/urdf/openarm/openarm_bimanual.urdf", scale: 3 };
}
@@ -59,6 +62,39 @@ function groupColumnsByPrefix(keys: string[]): Record {
return groups;
}
+// Unitree G1 SDK column suffix → URDF joint name
+const G1_SDK_TO_URDF: Record = {
+ "klefthippitch.q": "left_hip_pitch_joint",
+ "klefthiproll.q": "left_hip_roll_joint",
+ "klefthipyaw.q": "left_hip_yaw_joint",
+ "kleftknee.q": "left_knee_joint",
+ "kleftanklepitch.q": "left_ankle_pitch_joint",
+ "kleftankleroll.q": "left_ankle_roll_joint",
+ "krighthippitch.q": "right_hip_pitch_joint",
+ "krighthiproll.q": "right_hip_roll_joint",
+ "krighthipyaw.q": "right_hip_yaw_joint",
+ "krightknee.q": "right_knee_joint",
+ "krightanklepitch.q": "right_ankle_pitch_joint",
+ "krightankleroll.q": "right_ankle_roll_joint",
+ "kwaistyaw.q": "waist_yaw_joint",
+ "kwaistroll.q": "waist_roll_joint",
+ "kwaistpitch.q": "waist_pitch_joint",
+ "kleftshoulderpitch.q": "left_shoulder_pitch_joint",
+ "kleftshoulderroll.q": "left_shoulder_roll_joint",
+ "kleftshoulderyaw.q": "left_shoulder_yaw_joint",
+ "kleftelbow.q": "left_elbow_joint",
+ "kleftwristroll.q": "left_wrist_roll_joint",
+ "kleftwristpitch.q": "left_wrist_pitch_joint",
+ "kleftwristyaw.q": "left_wrist_yaw_joint",
+ "krightshoulderpitch.q": "right_shoulder_pitch_joint",
+ "krightshoulderroll.q": "right_shoulder_roll_joint",
+ "krightshoulderyaw.q": "right_shoulder_yaw_joint",
+ "krightelbow.q": "right_elbow_joint",
+ "krightwristroll.q": "right_wrist_roll_joint",
+ "krightwristpitch.q": "right_wrist_pitch_joint",
+ "krightwristyaw.q": "right_wrist_yaw_joint",
+};
+
function autoMatchJoints(
urdfJointNames: string[],
columnKeys: string[],
@@ -68,6 +104,13 @@ function autoMatchJoints(
(k.split(SERIES_DELIM).pop()?.trim() ?? k).toLowerCase(),
);
+ // Build reverse lookup: URDF joint name → column key (for G1 SDK-style columns)
+ const g1Reverse = new Map();
+ for (let i = 0; i < suffixes.length; i++) {
+ const urdfName = G1_SDK_TO_URDF[suffixes[i]];
+ if (urdfName) g1Reverse.set(urdfName, columnKeys[i]);
+ }
+
for (const jointName of urdfJointNames) {
const lower = jointName.toLowerCase();
@@ -78,6 +121,13 @@ function autoMatchJoints(
continue;
}
+ // G1 / Unitree SDK name match
+ const g1Col = g1Reverse.get(lower);
+ if (g1Col) {
+ mapping[jointName] = g1Col;
+ continue;
+ }
+
// OpenArm: openarm_(left|right)_joint(\d+) → (left|right)_joint_(\d+)
const armMatch = lower.match(/^openarm_(left|right)_joint(\d+)$/);
if (armMatch) {
@@ -117,6 +167,7 @@ const SINGLE_ARM_TIP_NAMES = [
"gripper",
];
const DUAL_ARM_TIP_NAMES = ["openarm_left_hand_tcp", "openarm_right_hand_tcp"];
+const G1_TIP_NAMES = ["left_hand_palm_link", "right_hand_palm_link"];
const TRAIL_DURATION = 1.0;
const TRAIL_COLORS = [new THREE.Color("#ff6600"), new THREE.Color("#00aaff")];
const MAX_TRAIL_POINTS = 300;
@@ -211,6 +262,7 @@ function RobotScene({
setLoading(true);
setError(null);
const isOpenArm = urdfUrl.includes("openarm");
+ const isG1 = urdfUrl.includes("g1");
const manager = new THREE.LoadingManager();
const loader = new URDFLoader(manager);
loader.loadMeshCb = (url, mgr, onLoad) => {
@@ -248,7 +300,19 @@ function RobotScene({
let color = "#FFD700";
let metalness = 0.1;
let roughness = 0.6;
- if (url.includes("sts3215")) {
+ if (isG1) {
+ const lower = url.toLowerCase();
+ const isWhitePart =
+ lower.includes("contour") ||
+ lower.includes("roll_link") ||
+ lower.includes("logo") ||
+ lower.includes("rubber") ||
+ lower.includes("constraint") ||
+ lower.includes("support");
+ color = isWhitePart ? "#c0c0c0" : "#2a2a2a";
+ metalness = 0.3;
+ roughness = 0.5;
+ } else if (url.includes("sts3215")) {
color = "#1a1a1a";
metalness = 0.7;
roughness = 0.3;
@@ -281,11 +345,15 @@ function RobotScene({
robot.scale.set(scale, scale, scale);
scene.add(robot);
- const tipNames = isOpenArm ? DUAL_ARM_TIP_NAMES : SINGLE_ARM_TIP_NAMES;
+ const tipNames = isG1
+ ? G1_TIP_NAMES
+ : isOpenArm
+ ? DUAL_ARM_TIP_NAMES
+ : SINGLE_ARM_TIP_NAMES;
const tips: THREE.Object3D[] = [];
for (const name of tipNames) {
if (robot.frames[name]) tips.push(robot.frames[name]);
- if (!isOpenArm && tips.length === 1) break;
+ if (!isOpenArm && !isG1 && tips.length === 1) break;
}
tipLinksRef.current = tips;
ensureTrails(tips.length);
@@ -462,6 +530,7 @@ export default function URDFViewer({
[datasetInfo.robot_type],
);
const { urdfUrl, scale } = robotConfig;
+ const isG1 = urdfUrl.includes("g1");
const repoId = org && dataset ? `${org}/${dataset}` : null;
const datasetInfoRef = useRef<{
version: string;
@@ -686,7 +755,9 @@ export default function URDFViewer({
)}
-
+