6.7 KiB
构型开发规范
本文档说明如何在本项目中新增或维护行星减速器构型。目标是让复合行星、多级串联、差动行星等新构型沿同一套结构扩展,避免把公式、位姿、CAD 和验证逻辑散落到各个模块中。
1. 总流程
新增构型必须按以下链路接入:
requirement schema
-> configuration registry
-> topology template/runtime
-> parameter solver
-> kinematics
-> placement solver
-> CAD generator
-> assembly reader
-> validators
-> tests/examples
每一步只承担自己的职责:
- requirement 只描述用户目标、边界条件、齿形和候选范围。
- configuration 只描述构型图和构型族专属规则。
- parameter solver 只枚举、过滤、评分,不写死答案。
- kinematics 只从图关系生成运动方程。
- placement solver 只计算零件位姿。
- CAD generator 只按参数和位姿生成真实几何。
- validators 只读取 instance、snapshot、placement 和真实 CAD 输出进行验证。
2. 构型目录规范
每个构型族必须有独立目录:
src/configurations/<family_name>/
family.py
topology.template.json
placement_rules.py
input/requirements/reducers/<family_name>/
tests/
必须在 src/configurations/registry.py 中注册:
CONFIGURATIONS = {
"<family_name>": ConfigurationSpec(
family="<family_name>",
package_dir=CONFIGURATION_ROOT / "<family_name>",
topology_template_path=CONFIGURATION_ROOT / "<family_name>" / "topology.template.json",
),
}
禁止在 CLI、CAD generator、validator 中通过硬编码路径读取构型模板。
3. topology template 规范
topology.template.json 只描述构型,不写死最终齿数或具体输出文件。
节点字段必须遵守:
id
kind: gear / carrier / housing / axis
role
gear_type: external / internal / null
repeat: single / planet_count
formula_ref
stage_id
local_role
关系字段必须遵守:
id
source
target
relation_type: external_mesh / internal_mesh / revolute_joint / fixed / rigid / coaxial
carrier_ref
mesh_id
formula_ref
stage_id
命名规则:
- 单级构型使用
sun/ring/planet/carrier/housing/main_axis。 - 多级构型使用
s1_sun/s1_ring/s1_planet_1/s1_carrier这类 stage 前缀。 - repeated 节点由 runtime 展开,不要在模板里手写
planet_1..planet_n。 - 关系 id 必须能反查来源,例如
sun_to_planet_external_mesh、s1_output_to_s2_input_rigid。
如果要新增 relation type,必须先扩展 relation validator registry 和运动学方程生成逻辑,不能只在模板中写一个新字符串。
4. family 规则规范
family.py 只放构型族专属逻辑,例如:
- 构型专属齿数闭合公式。
- stage/component 命名辅助。
- 多级构型拓扑构造。
- 构型专属派生参数。
通用逻辑必须放到通用模块:
- 通用参数约束放
src/parameter_constraints/或 parameter solver 的通用规则层。 - 通用运动学关系放
src/kinematics.py和src/relation_validators/。 - 通用工业装配关系放
src/physical_validators/。 - 通用齿轮生成放
src/cad/gear_factory.py。
禁止事项:
- solver 中不得写死某组齿数作为答案。
- family 规则不得读取旧
output/runs。 - validation 不得无条件
overall_passed=true。 - SimpleCADAPI/OCP 缺失时不得生成假文件。
5. 参数求解规范
每个构型必须明确:
- 候选变量:齿数、模数、行星数、stage 数、齿形参数等。
- 闭合公式:例如
z_ring = z_sun + 2 * z_planet。 - 装配条件:例如行星均布、中心距一致、邻近行星间隙。
- 边界条件:input/fixed/output 或 fixed_members。
- 评分依据:ratio_error、外径、间隙、齿数惩罚等。
最终速比必须由图驱动运动学求解得到,不能只用手写传动比公式作为通过依据。手写公式只能用于搜索优化或静态交叉验证。
6. PlacementSolver 规范
每个构型必须注册 placement solver,并输出统一 PlacementPlan。
每个真实组件必须有 ComponentPose:
component_id
frame_id
parent_frame_id
translation_mm
rotation_axis_angle_deg
axis_xyz
center_xyz_mm
source_relation_ids
source_formula_refs
details
约束:
center_xyz_mm、axis_xyz、rotation_axis_angle_deg必须来自PlacementPlan。- CAD manifest 中的位姿必须与
placement_plan.json一致。 - CAD generator 不允许重新计算 planet、pin、bearing、spacer、bolt 等坐标。
- stage 构型必须使用 frame + z offset,不要把绝对坐标散落在 CAD 代码里。
7. CAD 生成规范
CAD generator 的职责是按参数和 placement 生成真实几何:
- 齿轮使用
gear_factory。 - 装配坐标使用
PlacementPlan。 - 输出真实
STEP/model.json/session.json/assembly_manifest.json/build_meta.json。 assembly_manifest.components[*]必须能反查 formula node、stage/local_role、tooth_count、module、center、axis、assembled_step_path。
如果某个构型暂时没有 CAD 能力,CLI generate/run 必须明确失败,例如 unsupported_topology_family_for_cad,不能生成占位 STEP。
8. 验证规范
验证分三层:
relation validators
family validators
geometry/OCP validators
relation validators 自动覆盖:
external_meshinternal_meshrevolute_jointfixedrigidcoaxial
family validators 只写构型族专属公式,例如齿数闭合、stage coupling、复合行星同轴齿轮组等。
几何验证必须读取真实 STEP/component STEP:
- STEP 存在且非空。
- 组件体积 > 0。
- 中心距、同轴、均布、轴向 offset 正确。
- OCP 正体积干涉必须失败,并报告 component pair、common volume、possible cause。
9. 最小验收文件
每个新构型至少提供:
- 示例 requirement:
input/requirements/reducers/<family_name>/<example>.json - 构型模板:
src/configurations/<family_name>/topology.template.json - family 逻辑:
src/configurations/<family_name>/family.py - placement solver:
src/placement/<family_name>.py - 注册项:configuration registry 和 placement registry
- 单元测试:注册、拓扑展开、参数求解、运动学、placement
- CAD 集成测试:真实 STEP/model/session/manifest、placement 一致、validation report
10. 推荐新增构型顺序
建议优先:
- 复合行星 / stepped planet:一个行星轴上多个齿轮,验证图驱动和 placement 扩展能力。
- 差动行星:支持两个输入或一个输入一个控制输入。
- 任意 N 级 cascade:从固定两级扩展为 stage list。
- RV / 摆线针轮:单独作为新传动族处理。
新增构型时先做 kinematic_demo,再做 industrial_core,最后再接入关节模组。