在工程实践中,组合式机器设计一直是个既基础又复杂的命题。想象一下,给你一堆标准化的齿轮、杠杆和滑轮,要求组装出一台能完成特定任务的机器——这就像用乐高积木搭建一个会动的机器人,只不过规则更严苛、物理更真实。传统上,这需要工程师具备扎实的机械原理知识和丰富的实践经验。但如今,大型语言模型(LLM)正在这个领域展现出令人惊讶的潜力。
组合式机器设计的本质是通过标准化部件的空间组合来实现特定功能。就像用有限的词汇写出无限的故事,关键在于:
这种设计方式与真实世界的机械工程高度吻合。例如汽车发动机就是由活塞、曲轴等标准部件按特定规则组装而成。而在数字领域,我们可以用类似XML的结构化代码精确描述每个部件的位置和连接关系:
xml复制<boulder parent="bucket_1" attach_to="face_1">
<bucket parent="wooden_block_2" attach_to="face_3">
为了系统研究LLM在这方面的能力,研究团队基于物理建造游戏《Besiege》开发了BesiegeField环境。这个平台提供了:

(图示:BesiegeField环境中正在测试的投石机设计)
实际使用中发现,环境中的"旋转块"(Rotating Block)部件特别关键。它相当于现实中的电机,能为机械装置提供动力源。但配置不当会导致结构失衡——这让我想起第一次尝试搭建起重机模型时,电机扭矩太大直接把支架扭垮的经历。
要让LLM理解并生成机械设计,首先需要解决机器结构的数字化表示问题。研究对比了两种主要方式:
| 表示方法 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 全局坐标表示 | 直观,易于渲染 | 隐含结构信息缺失 | 可视化展示 |
| 构造树表示 | 显式结构关系,LLF友好 | 需要空间推理能力 | 设计生成 |
构造树表示采用相对关系描述,更接近人类工程师的思考方式。例如一个简单杠杆可以表示为:
json复制{
"type": "lever",
"id": 2,
"parent": 1,
"face_id": 3,
"orientation": "vertical"
}
研究发现,单一LLM代理很难独立完成优质设计,因此采用了分层工作流:
元设计师:高层蓝图设计
python复制def meta_designer(task):
# 分析需求,划分功能模块
blueprint = analyze_requirements(task)
# 分配部件类型
assign_components(blueprint)
return blueprint
设计师:具体部件组装
检查器:结构合理性验证
优化器:基于仿真反馈迭代
这种分工模仿了真实工程设计团队的协作模式。在实际测试中,Gemini 2.5 Pro的表现尤为突出,其设计的投石机平均投掷距离达到9.83米,远超其他模型。
针对开源模型表现不佳的问题,研究探索了RL微调方案:
实验显示,经过RL微调的Qwen2.5-14B模型,其最佳设计投掷距离从7.14提升到21.69米,验证了RL的有效性。
LLM在机械设计中最常出现的错误类型:
一个典型错误案例是混淆了旋转轴的朝向,导致杠杆运动平面错误。这类似于新手工程师常犯的"左手定则"应用错误。
研究发现,将设计过程分为概念设计和详细设计两个阶段可显著提升成功率:
这种分阶段方法使设计成功率从35%提升至68%。
有效的仿真反馈应包含:
python复制def get_feedback(design):
# 基础指标
metrics = ['max_distance', 'max_height']
# 关键部件状态
component_states = monitor(['pivot', 'arm'])
# 异常检测
failures = check_collisions()
return {**metrics, **component_states, **failures}
实践中发现,反馈频率过高会导致LLM过度拟合特定问题,而间隔0.2秒的采样既能捕捉关键动态又避免信息过载。
一个最小可行投石机需要:
关键参数计算公式:
code复制最佳臂长 L = √(2h/g) × v
其中h为目标高度,v为抛出速度
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 机器向后倾倒 | 重心偏后 | 增加前部配重 |
| 石块不脱离 | 释放角度过早 | 调整旋转块触发时机 |
| 结构断裂 | 连接点应力集中 | 增加支撑件 |
曾遇到一个棘手案例:投石机每次运作都会自我解体。后来发现是因为旋转块扭矩设置过大,通过添加减震垫片(类型87)解决了问题。
当前研究揭示了几个值得深入的方向:
特别有趣的是,在后续实验中,当给LLM提供基础物理公式参考时,其设计合理性提升了27%。这提示我们,纯数据驱动的方法可能需要与符号系统结合。
从工程实践角度看,最实用的建议是:始终在设计的第一个版本预留20%的冗余度。就像那次我们设计的运输车,仿真完美但实地测试时因为地面摩擦系数差异而失败,后来通过可调悬挂解决了问题。
经过大量实验,总结出以下宝贵经验:
材料选择原则:
空间布局技巧:
调试注意事项:
一个反直觉的发现是:有时简化设计反而能提升性能。曾有个包含37个部件的复杂设计,投掷距离还不如一个仅用15个部件的简约版本。这印证了机械设计中的"少即是多"原则。