ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

从零搭建低成本类人机器人:机械结构、舵机选型与电子系统实战

从零搭建低成本类人机器人:机械结构、舵机选型与电子系统实战 类人机器人这几年在圈子里热度一直没下来过但大部分人聊起来还是觉得离自己很远要么是波士顿动力那种百万级产品要么是某个实验室放出来的论文展示。实际上以现在的开源社区和供应链完成度个人或小团队用中配预算做一台能走、能抬手、能交互的类人机器人已经没有想象中那么玄乎了。这篇文章就围绕机械结构与电子系统两条主线把从零开始搭一台低成本类人机器人的全流程拆开讲清楚包括自由度规划、关节执行器选型、主控架构、传感器融合、供电设计以及组装调试中那些文档里不会写的问题。所谓“中配低成本”说白了就是你不用在关节模组上花掉几万块也不用买工业级的减速器和伺服驱动器而是用成熟的舵机方案搭配开源控制框架把一台机器人的机械骨架和电子神经搭出来并且保证它真的能动、能走、能复现动作。整套方案更适合两类人一类是正在做毕业设计或机器人竞赛的学生团队另一类是想在个人项目里验证类人机器人算法和结构的独立开发者。读完你至少能搞清楚一台类人机器人的每个关节该怎么选、每块电路该怎么配、上电之后先调什么后调什么。1. 项目定位先想清楚“中配低成本”要的是什么很多人在动手之前就栽在目标不明确。类人机器人这个品类太宽了你要做的到底是上半身仿生机械臂还是带双足能步行的完整人形还是说只需在轮式底盘上做一个拟人上半身这些方向的成本和技术难度差距非常大。1.1 中配方案的预算与技术边界中配方案的大致预算区间在8000到15000元人民币左右。在这个区间里你能获得的硬件配置大概是全身26到32个自由度核心关节使用高扭矩数字舵机主控采用STM32或ESP32加树莓派的组合配合IMU惯性测量单元实现姿态感知加上足底或手部的简单压力传感。这套配置做不出跑酷和跳跃但完成稳定行走、挥手、抓取轻物体、跟随人体动作复现这些经典演示是绰绰有余的。更关键的是技术路径的取舍。中配方案不会去碰液压驱动、行星滚柱丝杠或高精度谐波减速器这些是工业级和科研级的东西一颗关节模组就要两三千起步。中配的核心思路是“用成熟舵机代替昂贵关节模组用算法补足硬件精度”。这样做好处很明显采购周期短、替换成本低、调试门槛小哪怕烧了一个舵机几十块到一百多块就能换新对整个项目影响很小。1.2 设计指标的取舍逻辑我在设计自己的第一台类人机器人时定下的硬性指标只有三条第一整机高度在60到80厘米之间这个尺寸的舵机负载相对可控不会因为重力力矩过大导致频繁堵转第二双腿拥有至少10个自由度每条腿5个保证可以完成前后左右移动和转向动作第三上肢部分至少每臂6个自由度满足基本的仿生动作展示。至于手指中配阶段只做了整体开合没有去做每指独立驱动因为五指独立的成本实在太高而且调试难度会指数级上升。这套指标的取舍逻辑值得说透类人机器人最难的永远是下肢平衡和步态控制所以自由度预算要优先给腿上肢更多承担展示和交互功能耦合度低即使做得粗糙也不影响整机稳定性。很多初学朋友一上来就拼命堆手指自由度结果腿站不稳整个项目翻车这就是典型的需求排序错位。2. 机械结构设计一台“人形骨架”该怎么搭机械结构是类人机器人最容易走弯路的地方。很多人以为3D打印一个外形酷炫的外壳就是结构设计实际上外壳只是最表层的装饰真正的核心在于骨架、关节布局和负载传递路径。2.1 自由度规划从“人”出发但不照搬人体人体大约有200多个自由度类人机器人当然不需要也不可能复刻。中配方案要做的是抽象出运动学层面的关键自由度。我的推荐分配方案是头部2个自由度左右转、上下俯仰、每臂6个自由度肩部3个、肘部1个、腕部2个、每腿5个自由度髋部3个、膝部1个、踝部1个总计约26个自由度。这套方案覆盖了绝大多数展示动作又控制了舵机数量让电池和主控的负载压力都处在一个合理区间。有一个细节要特别提醒髋部一定要做3个自由度横滚、俯仰、偏航很多低端方案为了省钱只做2个导致腿部运动非常僵硬走起来像木偶而且转弯时极不稳定。这条经验是我对比过多套开源方案后的结论省什么都不能省髋关节的自由度。2.2 结构材料与加工方案选型结构件方面我强烈建议以3D打印为主碳纤维管和铝合金板材作为辅助加固。主结构件胯部连接件、大腿小腿骨架、肩胛连接件用PETG材料打印这个材料比PLA耐温更高、韧性更好而且价格不贵受力特别集中的位置比如髋关节支架和脚踝支架用铝合金板材线切割加工厚度选3毫米就够太重反而会增加腿部舵机负担。碳纤维管适合做大腿和小腿的支撑杆重量轻、刚度高但注意不要直接和舵机输出轴硬连接中间要加缓冲垫或橡胶圈否则运动冲击会直接传递到舵机齿轮上打齿概率陡增。整个骨架组装建议用M3不锈钢螺丝配合螺纹嵌件塑料件上不要反复拧自攻螺丝扭矩稍微过头就会滑丝拆装两次基本就废了。2.3 关节执行器中配方案的核心是舵机中配类人机器人几乎都是用舵机作为关节执行器。舵机按控制方式分两类模拟舵机PWM方波控制和总线舵机串行指令控制。模拟舵机便宜基础款十几块就有但精度和反馈能力都很弱根本不知道当前角度是否到达指令位置只能做简单的航模动作。总线舵机则内置了位置反馈、温度反馈、电压反馈主控可以实时读取每个关节的电流和位置这对步态控制和故障排查极其关键我强烈建议关键关节至少使用支持串行反馈的数字总线舵机。选舵机还有一个核心参数扭矩。以我的中配尺寸身高约70厘米整机重量约4公斤为例腿部的髋关节和膝关节需要峰值扭矩在30公斤·厘米以上的舵机踝关节可以略低但不要低于20公斤·厘米手臂关节则在15公斤·厘米左右即可。扭矩买大不买小小舵机的堵转问题会让人崩溃而且频繁过载导致的发热会直接烧毁驱动板。2.4 关键结构件的承力与装配细节机械结构上最值得花时间设计的是髋关节和脚踝。髋关节承受整个上半身的重量而且所有的步态力矩都从这里过一旦结构刚性不够机器人站直时就会前后晃动控制算法再怎么调也救不回来。所以髋关节固定支架不能只用打印件必须加金属加固片舵机输出轴和支架之间用双轴承支撑减小径向摆动。脚踝方面建议脚底使用一块5毫米厚的铝合金踏板面积大概在12厘米乘18厘米左右并且贴上一层防滑硅胶或橡胶垫。脚底还要预留安装压力传感器或薄膜压力电阻FSR的位置这是后续做重心检测和步态平衡的数据来源。很多初学者忽略脚底传感器结果走路调稳的时候全靠猜效率极低。装配时有一个非常重要的顺序原则先把各关节舵机用舵机测试仪独立调到中位再安装结构件。如果先把结构装好再通电找中位舵机在无控制状态下会自行转到初始角度很容易把未固定的结构件卡断或掰弯。我第一台机器人的脚趾就是被这么掰断的后来才学乖了所有关节的机械零点必须在通电校准之后确认。3. 电子系统搭建控制神经与电力血液的协同机械结构是机器人的骨架电子系统就是神经和血管。中配方案的电子系统不需要复杂到上实时以太网或EtherCAT总线但基础的架构分层一定要清晰否则调试阶段就是灾难现场。3.1 主控架构实时控制与上位计算的分离我的中配电子架构采用“双主控”分工模式。底层实时控制板采用STM32F405或同级别芯片负责最核心的舵机指令生成、IMU姿态解算、步态时序控制因为这类任务对实时性要求极高稍有卡顿机器人就会摔倒上层计算板采用树莓派Zero 2W或香橙派这类Linux小板子负责视觉识别、AI交互、语音对话这类重计算任务对实时性要求低但生态丰富、开发方便。两层主控之间用串口或CAN总线通信。我目前用的是串口通信波特率设置在921600传输IMU解算结果和上层规划指令。实测下来如果只跑动作复现和简单避障这套架构的通信完全够用。注意一点两套主控的通信协议一定要自己定义好帧头和校验规则别用裸字符串传输不然数据干扰会导致机器人突然抽搐。3.2 舵机驱动与总线拓扑设计总线舵机的连接建议采用菊花链拓扑也就是一个串口串联所有舵机每只舵机有独立的ID号通过指令区分。千万不要把几十个PWM舵机直接接在主控的PWM引脚上一是IO口数量不够二是PWM信号精度和刷新率都跟不上处理不过来就会出现明显抖动。总线舵机接线的顺序也很有讲究以两条腿和躯干为核心分成三路。左腿一路、右腿一路、上半身一路各路的串口分别接在STM32的不同UART上。这样即使某一路的舵机堵转把总线拉死其他路还能继续工作机器人至少能保持站立状态方便排查故障。电源方面总线舵机供电和主控逻辑供电必须完全隔离否则舵机启动瞬间的压降会让主控直接复位机器人当场僵直倒地。3.3 传感器配置IMU、编码器与足底压力传感器是电子系统里不能省的预算。最重要的传感器是IMU惯性测量单元推荐MPU6050或ICM-20948安装在机器人的骨盆中心位置因为这里是转动惯量最小的位置IMU采集到的角速度和加速度数据最能反映整机姿态变化。我试过把IMU装在胸部数据噪声明显变大因为胸部的机械振动比较多需要更多的滤波运算。IMU的数据不能直接拿来控制必须先做姿态解算。中配方案用Mahony互补滤波或Madgwick算法就够了运行在STM32上毫无压力输出的是机器人当前的横滚角和俯仰角。这两个角度是步态控制的核心输入只要姿态角发散了机器人几乎不可能站稳。关节编码器方面总线舵机本身会返回当前位置值不需要额外安装编码器但要注意校准机械零点和电位器零点的偏差。每次重新组装或更换舵机后都要重新读取舵机在中位时的反馈值并在代码里更新偏移量。足底压力传感器我推荐用FSR薄膜压力电阻贴在脚底前后左右四个区域。调试阶段可以先不用但结构设计时一定要预留安装空间和接线孔。等到步态调稳之后你会发现足底压力是判断支撑相和摆动相的最好信号源比纯靠IMU猜稳当太多。3.4 供电系统设计算清总电流再选电池供电系统设计通常是新手最容易翻车的地方。类人机器人满负载运行时26个舵机同时动作的峰值电流非常可观。以每个舵机峰值电流2.5到3安培计算虽然不可能同时所有舵机都满负载但腿部舵机在迈步瞬间同时发力时总电流超过25安培并不稀奇。因此电池必须用高倍率电池。推荐2S7.4伏锂聚合物电池容量3000到5000毫安时放电倍率至少30C以上。如果电池倍率不够一到大动态动作电压就瞬间被拉低舵机扭矩骤减机器人直接扑街。我踩过这个坑最初用普通无人机电池结果原地起跳测试时电压瞬降触发低压保护整机断电。供电拓扑建议这样设计电池主输出直接给舵机总线供电中间串一个大电流拨动开关或继电器作为急停同时从电池引一路到降压模块降到5.2伏后给STM32主控板和IMU供电再降到5伏给树莓派供电。注意降压模块的地要和舵机电源的地单点共地不能多个点直接相连否则会造成地环路干扰串口通信乱码率会高到没法用。4. 实操流程从BOM清单到第一次稳定站立理论讲了这么多这一段直接给出可以抄作业的实操流程。整个流程按照“先备料、再装机、后调试”的顺序推进正常情况下一个周末可以完成机械装配再加两三天完成电子系统上电和基础调试。4.1 BOM采购清单与实际成本参考以下是我中配机器人的核心物料清单和参考价格整体预算控制在12000元左右。价格根据实际渠道会有浮动仅供参考类别物料数量参考单价备注关节30公斤级总线舵机10约250元双腿髋膝踝髋横滚关节20公斤级总线舵机8约180元肩部与肘部关节15公斤级总线舵机8约130元腕部与头部结构PETG打印耗材3卷约90元大部分结构件结构铝合金定制件1批约500元髋部与脚踝加固结构碳纤维管材若干约200元大中小腿支撑主控STM32F405开发板1约150元底层实时控制主控树莓派Zero 2W套件1约400元上层视觉交互传感MPU6050模块1约30元骨盆姿态测量传感FSR薄膜压力传感器4约50元足底压力感知供电2S 5000mAh 60C电池2约180元一块用一块备供电UBEC降压模块2约60元5V与5.2V隔离通信USB转串口模块2约40元调试用建议采购时舵机多买两三个备用尤其是腿部用的这类高负载舵机在调试初期很容易因为过载或堵转烧驱动现场没有备件就只能干等快递。4.2 装配顺序与零点校准流程装配顺序强烈建议按“脚踝到膝盖、膝盖到髋、两条腿拼骨盆、骨盆固定主控、装配躯干、装配手臂、装配头部”的自下而上顺序进行。这样每一步都有稳固的底面支撑结构不会在装配过程中悬空受力。每装配一个关节都要执行一次“零点校准”先用舵机测试仪或简单串口指令让舵机转到它的物理中位角度通常是舵机出厂定义的0°此时观察机器人该关节是否在机械设计的默认站姿位置如果不对断电后调整舵机舵盘的花键位置重新安装结构件再通电验证。这个过程非常繁琐但重要性极高——零点是所有运动学计算的基础零点歪了后面所有步态数据都是错的。我在这个环节踩过一个印象很深的坑左腿髋关节横滚舵机在中位时舵盘花键和结构臂之间差了大概3个齿的角度当时觉得“差不多就行代码里补一个偏移量”。结果后面调站立姿态时这个偏移量始终在两条腿之间互相干扰导致机器人一直向左侧倾斜花了两天才定位到是机械零点偏差最后重新拆开换齿位、清理代码偏移才解决。机械装配上的“差不多”最终都会变成控制调试上的“差很多”。4.3 固件框架与关节映射调试主控固件不要从零开始造轮子。推荐直接使用开源的SCServo库管理总线舵机通信再配合自己的姿态控制循环。固件框架大致可以分为三层底层是串口指令收发负责和所有舵机通信中间层是关节位置映射把机器人各关节的物理角度映射为舵机控制值顶层是步态序列规定每个时刻各关节的目标角度。关节映射是整个电子系统里最需要注意细节的地方。每个舵机的安装方向不同控制方向就不同必须在代码里做正反转归一化。我的经验是写一个关节配置结构体记录每个舵机的ID、安装位置、安装方向、角度偏移量和限位范围。全部舵机的数据都集中管理调试时只要改配置文件不需要动控制代码。上电调试的正确顺序是第一步单独控制任意一个舵机转到目标角度确认通信链路和ID映射正确第二步让所有关节在慢速下回到初始站姿检查是否出现机械干涉这个阶段速度值不要超过30%任何干涉都有充足时间反应第三步用IMU观察机器人的姿态角调整骨盆安装位置直到站立时横滚角和俯仰角都在正负1度以内第四步才敢开始测试重心转移和单腿支撑。4.4 第一次站立测试的前置检查清单第一次让机器人脱离支架站立是整个项目最刺激也最容易翻车的时刻。我整理了一个上电前检查清单每次必过一遍电池满电电压不低于7.8伏空载情况下舵机总线电压不低于7.2伏所有结构螺丝拧紧尤其髋关节和脚踝的金属件没有在晃动时发出异响线缆全部用螺旋管收纳绑扎在结构件内侧不干涉关节运动急停开关处于可伸手够到的位置代码里的关节限位和物理结构限位一致没有超出行程范围相比正常站立位置两只脚的间距和朝向与代码中初始步态的髋间距匹配全部确认后用一个可调节高度的吊挂支架保护机器人然后接通电源让机器人尝试站立。吊挂支架上的绳子要稍微带一点点力但不能承担太多重量否则机器人永远学不会自己用力。第一次站立时不要追求站稳只需要保证机器人能维持两三秒不倾倒就已经是巨大成功了剩下的交给步态调试慢慢迭代。5. 常见问题与排查思路那些只有动手做过才会懂的事任何一个类人机器人项目做到后面你会发现真正的难点全藏在这些不起眼的问题里。这里把我踩过的坑和排查思路整理成速查表遇到对应症状直接按图索骥能省下大量排查时间。现象可能原因排查思路机器人站立时高频抖动舵机刚性过高或速度环增益过大降低舵机速度上限增加动作间的插补平滑机器人向同一侧倾斜该侧髋关节零点偏移或IMU安装歪斜重新校准机械零点检查IMU安装角度所有舵机同时失灵主控复位或总线供电压降过大用示波器查看总线电压检查电池倍率单个舵机发热严重机械结构卡滞或舵机选型扭矩不足松该关节螺丝测试检查是否有干涉点串口通信偶尔乱码逻辑地与动力地多点连接检查所有模块接地点改为单点共地某一路舵机全部无响应总线中某个舵机损坏拉死线路逐个断开舵机排除换掉损坏单元机器人有规律地迈步但原地转圈左右腿关节方向映射不一致检查左右对称舵机的转向归一化配置姿态角数据漂移IMU未做加计校准或安装面松动重新校准加速度和陀螺仪偏置加固安装除了上面这些明确症状还有一个经验很值得分享类人机器人的调参要小步快跑每次只改一个变量。很多人上电发现机器人站不稳就同时去调PID参数、步态频率、重心高度和落足位置结果所有参数互相干扰完全找不到问题源头。我后来养成的习惯是每次只动一个参数记录下行为变化再返回初始状态验证复现性。这样看似慢实际是最快的路径。另外日常调试一定要准备一个“安全姿势”预设按下急停或检测到姿态角超限时机器人所有关节自动回到蹲姿或默认蜷缩状态降低重心减少摔倒损坏的概率。我在代码里实现的是姿态角超过正负20度时触发保护同时切断腿部舵机扭矩让机器人自然跪下而不是硬邦邦倒下去。这个保护逻辑已经帮我避免了好几次结构件碎裂中配机器人没有昂贵的力传感器保护代码层面必须自己兜底。再提一个很多做机器人久了都会遇到的隐性坑舵机的总线负载率。总线舵机菊花链接了十几个之后波特率如果是默认的115200就很容易出现延迟和丢指令。我的方案是直接把总线波特率提升到1Mbps实测指令周期从原来的十几毫秒降到四五毫秒对步态控制的平滑度有明显改善。前提是确认所有舵机和主控都支持这个波特率采购时就要问清楚。结语从一堆打印件和散装舵机到一台能站起来、走两步、挥挥手的类人机器人整个过程说难不难说简单也绝不简单。我个人最大的体会是类人机器人这个东西技术方案和硬件配置固然重要但在预算受限的中配阶段真正决定项目成败的其实是顺序感和耐心——先机械后电子再控制每一步都要扎扎实实做完验证不要抱着“先跑起来再说”的心态往下推。机械上的一个螺丝没拧紧电子上的一个地线没处理好最后都会以某种奇怪的形式暴露在控制调试里。希望这篇文章能帮你在动手之前把整个项目的坑都提前看到。如果后面有机会我再专门写写步态控制与重心规划那部分那又是一个让人又爱又恨的大坑。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进