feat: add knowledge-driven joint design studio

This commit is contained in:
Jerry
2026-08-14 13:53:51 +08:00
parent 7d12459a32
commit 281afdfd9e
57 changed files with 269659 additions and 1152 deletions
@@ -0,0 +1,67 @@
{
"schema_version": "1.0",
"id": "mechanism.planetary.ferguson_wolfrom",
"version": "1.0.0",
"legacy_family": "ferguson_wolfrom",
"description": "Ferguson-Wolfrom mechanical-paradox planetary reducer represented by two coupled sun/ring/planet sets.",
"members": [
{"id": "sun1", "component_ref": "component.gear.cylindrical.external", "role": "sun_fixed_side", "repeat": "single"},
{"id": "sun2", "component_ref": "component.gear.cylindrical.external", "role": "sun_output_side", "repeat": "single"},
{"id": "planet1", "component_ref": "component.gear.cylindrical.external", "role": "input_planet", "repeat": "planet_count"},
{"id": "planet2", "component_ref": "component.gear.cylindrical.external", "role": "output_planet", "repeat": "planet_count"},
{"id": "ring1", "component_ref": "component.gear.cylindrical.internal", "role": "ring_fixed_side", "repeat": "single"},
{"id": "ring2", "component_ref": "component.gear.cylindrical.internal", "role": "ring_output_side", "repeat": "single"},
{"id": "static_carrier", "component_ref": "component.carrier.planetary", "role": "static_carrier", "repeat": "single"},
{"id": "output_carrier", "component_ref": "component.carrier.planetary", "role": "output_carrier", "repeat": "single"},
{"id": "housing", "component_ref": "component.reference.housing", "role": "housing", "repeat": "single"},
{"id": "main_axis", "component_ref": "component.reference.main_axis", "role": "main_axis", "repeat": "single"}
],
"relations": [
{"id": "sun1_planet1", "source": "sun1", "target": "planet1", "relation_ref": "relation.mesh.external_cylindrical", "carrier_ref": "static_carrier"},
{"id": "ring1_planet1", "source": "ring1", "target": "planet1", "relation_ref": "relation.mesh.internal_cylindrical", "carrier_ref": "static_carrier"},
{"id": "sun2_planet2", "source": "sun2", "target": "planet2", "relation_ref": "relation.mesh.external_cylindrical", "carrier_ref": "output_carrier"},
{"id": "ring2_planet2", "source": "ring2", "target": "planet2", "relation_ref": "relation.mesh.internal_cylindrical", "carrier_ref": "output_carrier"},
{"id": "planet1_carrier", "source": "planet1", "target": "static_carrier", "relation_ref": "relation.joint.revolute"},
{"id": "planet2_carrier", "source": "planet2", "target": "output_carrier", "relation_ref": "relation.joint.revolute"},
{"id": "sun_pair", "source": "sun1", "target": "sun2", "relation_ref": "relation.joint.rigid"},
{"id": "ring_pair", "source": "ring1", "target": "ring2", "relation_ref": "relation.joint.rigid"},
{"id": "sun1_axis", "source": "sun1", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "sun2_axis", "source": "sun2", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "ring1_axis", "source": "ring1", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "ring2_axis", "source": "ring2", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "static_carrier_axis", "source": "static_carrier", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "output_carrier_axis", "source": "output_carrier", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "static_carrier_ground", "source": "static_carrier", "target": "housing", "relation_ref": "relation.joint.fixed"}
],
"external_ports": [
{"id": "input_rotation", "member": "planet1", "type": "port.joint.revolute"},
{"id": "output_rotation", "member": "output_carrier", "type": "port.rotation.coaxial"},
{"id": "housing_mount", "member": "housing", "type": "port.mount.stationary"}
],
"boundary_profiles": [
{"id": "planet1_in_static_carrier_fixed_output_carrier_out", "input": "planet1", "fixed": ["static_carrier"], "output": "output_carrier", "production_evidence": true}
],
"constraint_rules": [
"paired_suns_rigid",
"paired_rings_rigid",
"required_tooth_counts_explicit",
"minimum_teeth_exclusive_17",
"graph_kinematics_residual_within_tolerance"
],
"capability_refs": [
"capability.parameter_solver.ferguson_wolfrom",
"capability.kinematics.graph",
"capability.layout.ferguson_wolfrom",
"capability.cad.ferguson_wolfrom",
"capability.validation.reducer"
],
"source_topology": {
"path": "src/configurations/ferguson_wolfrom/topology.template.json",
"sha256": "82a19e71d776628c79d9d16871d7e7a07f093ecaff84d1114d77f620d3ae074c"
},
"limitations": [
"Current implementation supports kinematic_demo detail level only.",
"The eccentric planet-pin input is not compatible with the current coaxial joint-module adapter."
],
"maturity": "geometry_validated"
}
@@ -0,0 +1,60 @@
{
"schema_version": "1.0",
"id": "mechanism.planetary.simple_2k_h",
"version": "1.0.0",
"legacy_family": "simple_2k_h",
"description": "Single simple 2K-H planetary cell with interchangeable input, fixed, and output boundary members.",
"members": [
{"id": "sun", "component_ref": "component.gear.cylindrical.external", "role": "sun", "repeat": "single"},
{"id": "planet", "component_ref": "component.gear.cylindrical.external", "role": "planet", "repeat": "planet_count"},
{"id": "ring", "component_ref": "component.gear.cylindrical.internal", "role": "ring", "repeat": "single"},
{"id": "carrier", "component_ref": "component.carrier.planetary", "role": "carrier", "repeat": "single"},
{"id": "housing", "component_ref": "component.reference.housing", "role": "housing", "repeat": "single"},
{"id": "main_axis", "component_ref": "component.reference.main_axis", "role": "main_axis", "repeat": "single"}
],
"relations": [
{"id": "sun_planet", "source": "sun", "target": "planet", "relation_ref": "relation.mesh.external_cylindrical", "carrier_ref": "carrier"},
{"id": "ring_planet", "source": "ring", "target": "planet", "relation_ref": "relation.mesh.internal_cylindrical", "carrier_ref": "carrier"},
{"id": "planet_carrier", "source": "planet", "target": "carrier", "relation_ref": "relation.joint.revolute"},
{"id": "sun_axis", "source": "sun", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "ring_axis", "source": "ring", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "carrier_axis", "source": "carrier", "target": "main_axis", "relation_ref": "relation.alignment.coaxial"},
{"id": "fixed_member_housing", "source": "ring", "target": "housing", "relation_ref": "relation.joint.fixed", "boundary_substitutable": true}
],
"external_ports": [
{"id": "sun_rotation", "member": "sun", "type": "port.rotation.coaxial"},
{"id": "ring_rotation", "member": "ring", "type": "port.rotation.coaxial"},
{"id": "carrier_rotation", "member": "carrier", "type": "port.rotation.coaxial"},
{"id": "housing_mount", "member": "housing", "type": "port.mount.stationary"}
],
"boundary_profiles": [
{"id": "sun_in_ring_fixed_carrier_out", "input": "sun", "fixed": ["ring"], "output": "carrier", "production_evidence": true},
{"id": "ring_in_sun_fixed_carrier_out", "input": "ring", "fixed": ["sun"], "output": "carrier", "production_evidence": true},
{"id": "carrier_in_ring_fixed_sun_out", "input": "carrier", "fixed": ["ring"], "output": "sun", "production_evidence": true},
{"id": "sun_in_carrier_fixed_ring_out", "input": "sun", "fixed": ["carrier"], "output": "ring", "production_evidence": true}
],
"constraint_rules": [
"z_ring = z_sun + 2*z_planet",
"(z_sun + z_ring) % planet_count = 0",
"common_module",
"common_pressure_angle",
"planet_neighbor_clearance",
"maximum_outer_diameter"
],
"capability_refs": [
"capability.parameter_solver.simple_2kh",
"capability.kinematics.graph",
"capability.layout.simple_2kh",
"capability.cad.simple_2kh",
"capability.validation.reducer"
],
"source_topology": {
"path": "src/configurations/simple_2k_h/topology.template.json",
"sha256": "a444fb2ea3ef16929f99a2f2a8cbd05442cedd91e7e3e67ec95cf344e3e282c3"
},
"limitations": [
"Current CAD supports spur and helical tooth forms.",
"Industrial-core generation currently restricts boundary variants."
],
"maturity": "production"
}
@@ -0,0 +1,47 @@
{
"schema_version": "1.0",
"id": "mechanism.planetary.simple_2k_h_cascade",
"version": "1.0.0",
"legacy_family": "simple_2k_h_cascade",
"description": "Exactly two simple 2K-H stages connected by a rigid stage-output to next-stage-input coupling.",
"members": [
{"id": "stage_1", "mechanism_ref": "mechanism.planetary.simple_2k_h", "role": "first_stage", "repeat": "single"},
{"id": "stage_2", "mechanism_ref": "mechanism.planetary.simple_2k_h", "role": "second_stage", "repeat": "single"},
{"id": "housing", "component_ref": "component.reference.housing", "role": "housing", "repeat": "single"},
{"id": "main_axis", "component_ref": "component.reference.main_axis", "role": "main_axis", "repeat": "single"}
],
"relations": [
{"id": "stage_output_to_next_input", "source": "stage_1", "target": "stage_2", "relation_ref": "relation.joint.rigid", "composition_ref": "composition.coaxial_serial.two_simple_2kh"}
],
"external_ports": [
{"id": "input_rotation", "member": "stage_1", "type": "port.rotation.coaxial"},
{"id": "output_rotation", "member": "stage_2", "type": "port.rotation.coaxial"},
{"id": "housing_mount", "member": "housing", "type": "port.mount.stationary"}
],
"boundary_profiles": [
{"id": "per_stage_boundaries", "input": "stage_1.configured_input", "fixed": ["stage_1.configured_fixed", "stage_2.configured_fixed"], "output": "stage_2.configured_output", "production_evidence": true}
],
"constraint_rules": [
"exactly_two_stages",
"each_stage_is_simple_2k_h",
"stage_output_rigid_to_next_stage_input",
"common_main_axis",
"axial_stack_clearance"
],
"capability_refs": [
"capability.parameter_solver.simple_2kh_cascade",
"capability.kinematics.graph",
"capability.layout.simple_2kh_cascade",
"capability.cad.simple_2kh_cascade",
"capability.validation.reducer"
],
"source_topology": {
"path": "src/configurations/simple_2k_h_cascade/topology.template.json",
"sha256": "308f60804aa1da2be791ce3e90e3d93c9a5f1f5cacdd0379818e908cbefb9613"
},
"limitations": [
"This is a fixed two-stage implementation, not a generic N-stage composer.",
"Only the existing rigid output-to-input composition is production supported."
],
"maturity": "production"
}