Initial commit: step2urdf tool with handtuned JSON import.

Includes FastAPI backend, vendored step2urdf frontend, and A7 handtuned arm JSON for URDF generation.
This commit is contained in:
sunxianghui
2026-08-26 15:32:47 +08:00
commit 93773f3887
128 changed files with 20119 additions and 0 deletions
+221
View File
@@ -0,0 +1,221 @@
{
"robot_name": "handtuned_arm",
"source": "manual UI screenshots 2026-08-26",
"unit_linear": "m",
"unit_angular": "rad",
"notes": [
"xyz/rpy 来自属性面板:相对 parent link,线性单位米、角度弧度。",
"旋转关节默认绕关节局部 Zaxis=[0,0,1]),姿态由 origin_rpy 决定。",
"导入时:线性量 ×1000→mm;挂在 base_link 下的关节会烘焙成 STEP 世界坐标(页面 FK 从世界原点起步)。"
],
"base_link": {
"name": "base_link",
"solid_names": ["Solid_56", "Solid_55"],
"origin_xyz": [0.1135, 0.6081, 0.0071],
"origin_rpy": [0.0, 0.0, 0.0],
"up_axis": "Z+"
},
"links": [
{
"name": "base_link",
"solid_names": ["Solid_56", "Solid_55"]
},
{
"name": "Link_1",
"solid_names": [
"Solid_54",
"Solid_53",
"Solid_52",
"Solid_48",
"Solid_47",
"Solid_51",
"Solid_49",
"Solid_50"
]
},
{
"name": "Link_2",
"solid_names": [
"Solid_41",
"Solid_42",
"Solid_45",
"Solid_46",
"Solid_43",
"Solid_40"
]
},
{
"name": "Link_3",
"solid_names": [
"Solid_44",
"Solid_39",
"Solid_33",
"Solid_29",
"Solid_38",
"Solid_37",
"Solid_35",
"Solid_36"
]
},
{
"name": "Link_4",
"solid_names": [
"Solid_26",
"Solid_32",
"Solid_24",
"Solid_23",
"Solid_34",
"Solid_30",
"Solid_25",
"Solid_31",
"Solid_28",
"Solid_27",
"Solid_22"
]
},
{
"name": "Link_5",
"solid_names": [
"Solid_21",
"Solid_15",
"Solid_17",
"Solid_16",
"Solid_20"
]
},
{
"name": "Link_6",
"solid_names": [
"Solid_11",
"Solid_12",
"Solid_8",
"Solid_13",
"Solid_9",
"Solid_14",
"Solid_19",
"Solid_18"
]
},
{
"name": "Link_7",
"solid_names": [
"Solid_6",
"Solid_5",
"Solid_2",
"Solid_10",
"Solid_1",
"Solid_4",
"Solid_3",
"Solid_7",
"Solid_0"
]
}
],
"joints": [
{
"name": "Joint_1",
"joint_type": "revolute",
"parent": "base_link",
"child": "Link_1",
"origin_xyz": [-0.048, 0.001, 0.0],
"origin_rpy": [0.0, 1.57, 0.0],
"axis": [0.0, 0.0, 1.0],
"limits": {
"lower": -3.142,
"upper": 3.142,
"effort": 10.0,
"velocity": 1.0
}
},
{
"name": "Joint_2",
"joint_type": "revolute",
"parent": "Link_1",
"child": "Link_2",
"origin_xyz": [0.0, -0.001, -0.062],
"origin_rpy": [0.0, 1.57, 0.0],
"axis": [0.0, 0.0, 1.0],
"limits": {
"lower": -3.142,
"upper": 3.142,
"effort": 10.0,
"velocity": 1.0
}
},
{
"name": "Joint_3",
"joint_type": "revolute",
"parent": "Link_2",
"child": "Link_3",
"origin_xyz": [0.0, -0.121, 0.0],
"origin_rpy": [1.57, 0.0, 0.0],
"axis": [0.0, 0.0, 1.0],
"limits": {
"lower": -3.142,
"upper": 3.142,
"effort": 10.0,
"velocity": 1.0
}
},
{
"name": "Joint_4",
"joint_type": "revolute",
"parent": "Link_3",
"child": "Link_4",
"origin_xyz": [0.003, 0.0, 0.159],
"origin_rpy": [0.0, 1.57, 0.0],
"axis": [0.0, 0.0, 1.0],
"limits": {
"lower": -3.142,
"upper": 3.142,
"effort": 10.0,
"velocity": 1.0
}
},
{
"name": "Joint_5",
"joint_type": "revolute",
"parent": "Link_4",
"child": "Link_5",
"origin_xyz": [-0.128, 0.0, 0.0],
"origin_rpy": [0.0, 1.57, 0.0],
"axis": [0.0, 0.0, 1.0],
"limits": {
"lower": -3.142,
"upper": 3.142,
"effort": 10.0,
"velocity": 1.0
}
},
{
"name": "Joint_6",
"joint_type": "revolute",
"parent": "Link_5",
"child": "Link_6",
"origin_xyz": [0.0, -0.001, -0.089],
"origin_rpy": [0.0, 1.57, 0.0],
"axis": [0.0, 0.0, 1.0],
"limits": {
"lower": -3.142,
"upper": 3.142,
"effort": 10.0,
"velocity": 1.0
}
},
{
"name": "Joint_7",
"joint_type": "revolute",
"parent": "Link_6",
"child": "Link_7",
"origin_xyz": [0.065, 0.0, 0.0],
"origin_rpy": [1.57, 0.0, 0.0],
"axis": [0.0, 0.0, 1.0],
"limits": {
"lower": -3.142,
"upper": 3.142,
"effort": 10.0,
"velocity": 1.0
}
}
]
}