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
+8 -2
View File
@@ -55,6 +55,7 @@ ACTUATOR_HOUSING_STEP = ROOT / "input" / "assets" / "housings" / "actuator_v2_kn
CHIP_STEP = ROOT / "input" / "assets" / "chip" / "chip.step"
REFERENCE_ASSEMBLY_STEP = ROOT / "input" / "assets" / "references" / "actuator_v2_knee_abd_reference.step"
FIXED_PLATFORM_PROFILE = ROOT / "input" / "assets" / "platforms" / "actuator_v2_fixed_platform.json"
SPLIT_MOTOR_DIR = ROOT / "input" / "assets" / "motors" / "3500_split"
FERGUSON_REDUCER_REQ = ROOT / "input" / "requirements" / "reducers" / "ferguson_wolfrom" / "ferguson_wolfrom_ratio_531p25_spur.json"
CASCADE_TEMPLATE = ROOT / "src" / "configurations" / "simple_2k_h_cascade" / "topology.template.json"
FERGUSON_TEMPLATE = ROOT / "src" / "configurations" / "ferguson_wolfrom" / "topology.template.json"
@@ -224,7 +225,12 @@ def test_joint_requirement_loads() -> None:
assert Path(requirement.housing_step) == ACTUATOR_HOUSING_STEP
assert requirement.chip_step is None
assert Path(requirement.reference_assembly_step or "") == REFERENCE_ASSEMBLY_STEP
assert requirement.motor_placement_policy == "external_flush_input_end"
assert Path(requirement.motor_reference_assembly_step or "") == SPLIT_MOTOR_DIR / "3500_motor_reference.step"
assert Path(requirement.motor_stator_housing_step or "") == SPLIT_MOTOR_DIR / "3500-定子外壳.STEP"
assert Path(requirement.motor_rotor_housing_step or "") == SPLIT_MOTOR_DIR / "3500-转子外壳.STEP"
assert Path(requirement.motor_output_shaft_step or "") == SPLIT_MOTOR_DIR / "输出轴.STEP"
assert Path(requirement.motor_windings_step or "") == SPLIT_MOTOR_DIR / "线圈.STEP"
assert requirement.motor_placement_policy == "reference_pose"
assert requirement.motor_to_reducer_relation == "motor_output_to_sun_keyed_input"
assert requirement.housing_relation == "ring_fixed_to_housing"
@@ -250,7 +256,7 @@ def test_cascade_joint_requirement_loads_and_ports_resolve() -> None:
assert requirement.platform_id == "actuator_v2_fixed_platform"
assert requirement.chip_step is None
assert Path(requirement.reference_assembly_step or "") == REFERENCE_ASSEMBLY_STEP
assert requirement.motor_placement_policy == "external_flush_input_end"
assert requirement.motor_placement_policy == "reference_pose"
assert instance.boundary.input == "s1_sun"
assert instance.boundary.output == "s2_carrier"
assert instance.boundary.fixed_members == ["s1_ring", "s2_ring"]