人形机器人硬件平台设计全解析:从关节选型到控制系统实战
发布时间:2026/10/2 1:25:33 作者:尧图编辑部 阅读量:1,286

人形机器人这两年看着热闹但真正上手做过整机的人心里都清楚最难啃的骨头其实不在算法而在硬件平台。很多从仿真入场的开发者在实机阶段翻车翻的不是控制理论而是电机扭矩不足、结构刚度不够、通信延迟抖动这些看似“低级”的问题。青龙这套人形机器人硬件平台就是我们在这些问题上摸爬滚打之后沉淀下来的一个工程样本。这篇文章从整体构型、自由度和关节布局讲起一直聊到传感器选型、控制系统的分层设计以及从仿真迁移到实机时的调试方法和踩坑记录。内容偏工程实践适合准备自研人形硬件或者正从仿真往实机迁移的工程师、研究生和硬件爱好者参考。1. 青龙的定位人形机器人硬件平台的核心约束1.1 浮动基座是硬件设计的分水岭人形机器人和工业机械臂最大的区别在哪儿机械臂基座固定在地面或支架上末端精度靠高刚性结构和绝对编码器就能保证人形机器人则是一个典型的浮动基座系统整机“飘”在地面上脚底没有一颗螺栓固定。这意味着硬件设计从一开始就得同时满足两条完全不同的链路要足够“硬”让机器人站得稳、走得动还要足够“透明”让传感器信号、电流反馈、通信数据在电气和结构上都保持干净否则控制系统就拿不到可信的状态量。青龙的定义从第一天就定了下来它不是用来堆参数刷榜的演示机型而是一个用于验证双足行走和全身运动控制算法的通用硬件底座。所有结构设计、关节选型、电气架构都围绕一个目标展开——把物理世界的不确定性尽量消化在硬件层让控制算法面对的是一个可预测、低噪声的“被控对象”。1.2 先定设计指标再谈结构选型很多团队做机器人喜欢先画图再定指标这其实颠倒了顺序。硬件设计的第一件事是把整机指标用数字写死哪怕后面发现不合理再改也比没有目标强。青龙初版的设计指标如下项目指标整机高度1650mm整机重量55kg全身主动自由度33个腿12 腰3 臂14 颈3 夹爪1髋关节峰值/连续扭矩120Nm / 60Nm膝关节峰值/连续扭矩110Nm / 50Nm踝关节峰值/连续扭矩60Nm / 30Nm单臂末端负载5kg额定位姿供电8S锂电池母线电压29.6V续航混合工况约30分钟关节控制频率1kHz全身控制频率200Hz这些数字不是拍脑袋定的。以髋关节扭矩为例55kg的机器人单腿支撑时髋关节要承受几乎整个体重产生的惯性力和重力矩。粗略算一下机身重量约540N质心到髋关节的水平距离按0.1m估算静态力矩已经到54Nm再考虑起步、急停、抗冲击等工况至少留2倍裕量峰值120Nm是比较稳妥的起点。连续60Nm则对应长时间站立和慢走的稳态负载这个值决定电机散热不能只看峰值。1.3 构型选型在纸面上做加法和减法人形机器人的构型没有标准答案但方向可以分得很清楚。轮腿混合底盘适合室内平地场景运动规划压力小但验证不了真正意义上的双足动态平衡移动底座加机械臂本质上还是把操作问题简化成了固定基座问题。青龙选择标准双足加双臂加躯干是因为团队要验证的正是人形场景里最有难度、也最有价值的组合问题动态行走和全身协同操作。手部构型上我们的判断是初版不碰五指灵巧手先用一个带力反馈的两指夹爪。灵巧手意味着大量微型电机、复杂线束和高昂成本而初版平台的核心矛盾在走路和全身力控手部做复杂反而会稀释调试精力。这种“先砍需求、再补功能”的思路贯穿了青龙整个硬件迭代过程。2. 构型设计关节怎么排、自由度怎么分、质心怎么压2.1 腿部自由度分配髋三轴、膝一轴、踝两轴青龙腿部采用目前双足机器人里最主流的6自由度构型髋关节Roll/Pitch/Yaw三轴、膝关节Pitch单轴、踝关节Roll/Pitch两轴。髋关节三轴设计成近似球心交汇的结构这么做最大的好处是简化运动学模型——从骨盆到髋关节的坐标变换不引入额外偏移量逆运动学有解析解调试时不用依赖数值迭代。踝关节不放Yaw轴是很多人容易忽略的点。从平衡控制的角度说踝偏航对站姿稳定几乎没有贡献支撑脚绕竖直轴转动通常靠髋关节的偏航自由度完成从机械结构的角度说在脚踝位置再塞一个竖直方向的电机和谐波减速器会显著增加脚踝体积和重量直接影响脚部质量分布。把偏航功能全部放在髋关节结构上更干净控制上也没有损失。2.2 关节模组是平台的“乐高块”关节是整机里最核心的硬件单元。当前人形机器人主流的驱动方案大致分三类青龙在选型时做了详细的横向对比方案减速比优点缺点适用场景无框电机谐波减速器80~120力矩密度高、刚度高、体积紧凑反驱阻力大、外力不透明双足行走、全身力控准直驱6~12透明性好、可反驱、带宽高峰值电流大、散热压力大弹跳、动态跑酷串联弹性执行器弹性元件可测力矩、抗冲击带宽低、结构复杂人机协作、轻量手臂青龙双腿最终选了“无框电机谐波减速器”方案核心原因是人形步态的大部分工况是低速大力矩谐波减速器在这个工况下的力矩密度和刚度表现远优于准直驱同样的峰值扭矩下电机本体可以做得更小电池负担也更低。代价是关节对外力不透明后续做全身柔顺控制时需要依靠电流环和力矩观测器来补偿。手臂关节结构类似但尺寸小一号目前没有上准直驱装备成本还是第一优先。2.3 结构质量分布把重量“压”在骨盆人形机器人的质量分布直接决定行走能耗和控制难度。物理规律摆在那里腿部末端每轻1kg髋关节在摆腿和支撑切换时的峰值力矩要减少不止10Nm。青龙的结构设计原则是“下肢轻量化、躯干集中化”大腿和小腿用碳纤维管做骨架关节壳体用7075铝合金机加骨盆则采用铝合金板折弯加焊接把电池、主控、IMU、部分驱动器全部塞在骨盆位置尽量靠近整机质心。质心高度控制在肚脐附近大概在整机高度的55%左右。这个比例来自人体工学的经验值也是双足平衡控制里比较舒服的范围质心太高会让倒立摆模型的等效摆长变长控制增益难以兼顾稳定性和响应速度质心太低又会导致行走时腿部摆动惯量过大。2.4 尺寸链、干涉和线束管理结构设计阶段有一项工作特别容易被赶进度的人跳过——全运动范围干涉检查。人形机器人关节多运动范围大大腿抬到水平时膝关节会不会碰到髋关节壳体手臂交叉时前臂会不会撞到躯干这些都要在三维软件里逐帧检查。青龙初版就吃过亏肩关节在某个姿态下会碰到胸部外壳最后只能返工加高肩关节支架白白浪费了两周时间。线束管理同样不能轻视。动力线和编码器线必须分开走线避免大电流对编码器信号的干扰跨关节线束用螺旋弯折结构固定在关节轴线附近让线束在关节转动时只产生微小形变否则几万次弯折后断线是必然的事。我们在一块关节壳体上专门设计了过线孔和压线卡所有线束用热缩管套装并编号整机装配时线束走向全部按图纸执行不许“自由发挥”。3. 硬件选型与集成从力矩需求反推电机、减速器和传感器3.1 先做一份“扭矩账本”关节电机和减速器选型最忌讳拍脑袋。青龙在设计早期就为每一个关节建立了一张负载表记录关节在典型工况下的角速度、峰值扭矩、连续扭矩和惯量需求。这张表的数据来源是整机动静力学仿真和行走轨迹仿真仿真给出各关节的力矩-速度曲线后再统一乘上1.5到2倍的安全系数作为硬件选型的输入。这里想特别强调一下峰值扭矩和连续扭矩的区别。连续扭矩决定电机的热稳态也就是长时间行走时电机会不会过温峰值扭矩则对应起步、急停、单腿落地冲击这些短时工况电机在这个区间可以短时间过载但持续时间受绕组热容量限制。谐波减速器选型时还要额外看柔轮的冲击力矩承受能力它通常标注的额定转矩是连续值峰值转矩大约只有额定的两倍这个约束经常把整机的动态性能卡死。3.2 电机与减速器匹配的四步法关节模组的电机和减速比匹配我习惯按四步走先根据关节峰值扭矩和减速比反推电机峰值扭矩再根据关节最大角速度验证电机额定转速然后核算电机连续扭矩是否落在绕组热模型的安全区最后用电机转子惯量乘以减速比的平方看负载惯量比是否落在驱动器能稳定控制的范围。以髋关节Pitch为例减速比100的谐波减速器配合一台峰值扭矩1.2Nm左右的电机电机侧峰值扭矩就能放大到120Nm转速也需要满足髋关节至少每秒2弧度的摆动需求。设计时如果把减速比选得过大力矩是够了但关节输出转速不够行走时摆腿跟不上选得太小又会让电机长期工作在低效高电流区发热严重。这是一个在力矩、转速、体积和热量之间反复迭代的优化问题没有捷径可走。3.3 传感器配置不是越贵越好传感器配置上青龙的原则是“够用、可靠、可替换”。每个关节模组集成双编码器电机端用增量式磁编码器做矢量控制的换相和电流环反馈输出端用绝对值磁编码器直接测量关节角这样可以消除减速器背隙带来的角度误差。关节控制器内部再叠一个力矩观测器通过电流和转速估计输出力矩省掉昂贵的关节力矩传感器。IMU方面骨盆和躯干上部各装一个工业级IMU安装支架用减振胶垫隔离高频振动。这个胶垫很关键铝结构外壳会把电机的高频振动直接传给IMU导致角速度信号出现周期性噪声状态估计滤波都救不回来。脚底六维力传感器初版没有装后期迭代时考虑加装暂时通过电流估算和四个脚底压力传感器做ZMP估计也够用——预算有限的情况下单维压力传感器组合方案是性价比非常高的替代。3.4 计算与通信架构实时性是生命线青龙的控制主机是一台工业PC运行实时Linux加Xenomai补丁所有关节驱动器通过EtherCAT总线连接。EtherCAT的同步抖动可以做到微秒级在1kHz关节控制周期下非常稳定。系统分三层PC端跑任务规划、状态估计和全身控制分布式关节驱动器负责电流环和速度环另外还有一块独立的MCU做安全监控直接采集急停按钮、关节温度、母线电压和电机抱闸状态不依赖主控算法进程。很多人会忽略一个细节主控算法进程崩溃时安全监控模块必须还能独立工作。青龙的安全MCU和主控之间只交换状态字主控超过50ms没有刷新心跳安全MCU会主动断使能并合上抱闸防止机器人塌落造成损伤。这个机制经历过多次真实崩溃场景每次都能兜住底线。3.5 供电与散热设计母线电压选29.6V对应的8S锂电池组峰值功率核算后瞬时电流能到120A以上导线截面积、连接器额定电流、电池放电倍率都要按这个峰值来选。青龙使用了XT90连接器和10AWG硅胶导线电池放骨盆正负极经过总开关后分流到各个驱动器。散热是关节模组最容易翻车的隐性指标。无框电机长时间工作在连续扭矩附近时绕组温度上升很快初版关节壳体没有散热齿地面行走十几分钟后髋关节温度就逼近90摄氏度。后来在所有关节壳体表面增加散热鳍片绕组内部埋NTC温度传感器驱动器固件里做了过温降额逻辑温度超过80摄氏度就自动把峰值扭矩限幅往下调。这套热管理策略至少在长时间实验里足够可靠。4. 控制系统的三件套状态估计、动力学模型、平衡控制4.1 控制分层和频率分配青龙的控制系统按频率从低到高分为四层任务规划层跑在10Hz左右负责全局路径和任务分解步态规划和落脚点优化跑在50Hz输出期望质心轨迹和落脚点全身控制层跑在200Hz把任务映射到全身关节力矩关节伺服层跑在1kHz执行角度和力矩指令。电流环则交给驱动器内部硬件20kHz。为什么要做这么多层因为不同控制任务对时域分辨率的诉求完全不同。全局路径规划是慢变量几十毫秒更新一次就够而平衡补偿需要在支撑脚切换瞬间尽快响应全身控制必须跑在200Hz以上。层与层之间通过消息队列解耦任何一层出问题都不能直接拖垮下层伺服这也是从多次实机崩溃中总结出来的架构约束。4.2 浮动基座的状态估计EKF是基本盘人形机器人没有“绝对位置传感器”所以骨盆的位置和姿态只能靠状态估计融合出来。青龙的状态估计采用扩展卡尔曼滤波EKF状态量包括骨盆三维位置、姿态四元数、线速度、角速度以及IMU的加速度计零偏和陀螺零偏。预测步骤用IMU的加速度和角速度做积分更新量测更新则利用关节编码器通过正运动学反算出的“足底相对骨盆位置”作为约束把漂移逐渐修正回来。这里有个很实用的经验加速度计零偏不能简单归零。即使放在水平台面上校准过上路后机身振动和温漂都会让加速度计产生微小偏置如果不把这些偏置放进EKF状态里估计位置积分会以二次方的速度发散双脚站立的姿态角都会跟着歪。青龙实机调试的头两个星期有三分之一的时间花在调这个滤波器的噪声参数上远比调控制增益费劲。4.3 从倒立摆模型到全身控制双足平衡的理论基础是线性倒立摆模型LIPM。在质心高度近似不变的假设下质心的水平动力学可以写成x (g / h) * (x - x_zmp)其中h是质心高度x是质心水平位置x_zmp是零力矩点位置。直观理解是ZMP落在脚底支撑凸包内地面反力就能提供一个使质心稳定的力矩ZMP一旦越出脚底边界机器人就像跷跷板一样绕脚踝倾倒。青龙在离线步态上先做ZMP轨迹规划再用MPC滚动优化落脚点每一控制周期内根据当前状态重新求解未来一段时间的质心轨迹实现了动态步态修正。在MPC输出期望质心轨迹之后全身控制WBC负责把它分配到全身31个主动关节的力矩上。WBC是一个典型的二次规划问题目标函数包含质心跟踪误差、上身姿态误差、手臂任务误差和关节力矩的加权项约束条件包括关节力矩极限、地面接触点的摩擦锥约束和支撑脚不能有拉力。这个QP问题在200Hz下稳定求解是目前人形机器人控制的主流做法。4.4 没有力矩传感器怎么做力控青龙初版没有关节力矩传感器力控靠驱动器电流环的力矩观测器来实现。基本原理是电机电流与电磁力矩近似成正比再结合转速变化率补偿惯性项和摩擦项就能估算出关节输出端的真实力矩。用这个估计力矩可以做两件重要的事碰撞检测和阻抗控制。碰撞检测的原理很简单把期望力矩和实际估计力矩做差残差超过阈值就判定为发生了碰撞立刻切换控制模式关节位置环退出、力矩降至零避免硬怼伤人和损坏设备。阻抗控制则让机器人手臂表现为一个“带弹簧阻尼的柔顺系统”即使没有力传感器也可以让手臂在小误差范围内表现出柔顺性。这套方案虽然精度不如六维力传感器但胜在成本低、稳定对初版平台来说性价比非常高。5. 从仿真到实机调试链路与高频踩坑记录5.1 仿真和实机之间隔着一条“硬件河”青龙的运动控制算法先在MuJoCo里跑通再迁到Isaac Gym做批量步态训练最后才上真机。但仿真里再漂亮的算法上真机也会被各种物理量打回原形仿真的电机力矩是理想值实机有摩擦、有重力矩偏置、有减速器背隙仿真的质心质量分布是均匀的实机每颗螺丝拧紧程度不一样都会改变惯量参数。我们的实机调试顺序非常固定先单关节扫频测试再做双腿静站然后是原地踏步最后才尝试行走。任何一层不稳都不往下一层走。5.2 零点标定与关节校准青龙踩过最基础也最疼的坑是编码器零点和机械零点的错位。关节模组在装配时电机端编码器零点由驱动器标定输出端绝对编码器零点则在机械装配完成后标定。两次标定如果不同步机器人站立时踝关节会一直朝一个方向“顶劲”控制系统以为是姿态偏差实际上只是零点偏置。我们的标定方法很朴素装配完成后让每个关节低速运动到机械限位块以限位信号作为零点再把驱动器读取到的编码器值写死为机械零位。整个过程用自制标定工具配合上位机脚本批量跑33个关节半小时能完成一轮。另一件常被忽略的事是力矩偏置校准让关节在水平悬空状态下采集“零力矩”时的电流值存作偏置否则重力矩会让关节在静止时带着一个恒定电流力控和力矩观测器全部受影响。5.3 关节谐振问题先机械刚再软件滤人形机器人走路时腿部关节承受的是交变载荷谐波减速器和碳纤维杆的有限刚度会在某个频率段形成结构谐振。青龙的膝关节在低速摆动时出现过明显的200Hz高频啸叫空载扫频确认谐振峰后处理方案是两板斧第一结构上增加膝关节壳体的壁厚和加强筋提高一阶模态频率第二在速度环上叠加一个陷波滤波器把谐振峰值打下去。这里的原则是“先机械刚、再软件滤”。软件陷波滤波等于把控制带宽里的一段频率人为挖掉滤得过多会让关节响应变钝损害动态性能。所以谐振问题的解决顺序一定是先想办法提高机械刚度把谐振点推得尽量高再用滤波器做最后修正。5.4 EtherCAT通信抖动与实时性排查EtherCAT总线在实验室里用得好好的一上整机就出诡异问题的场景青龙遇到过不止一次。典型现象是某个关节在正常行走时突然出现几十毫秒的电流跳变整机跟着一抖。排查到最后原因往往不在主站软件而在物理链路网线屏蔽层没有可靠接地或者某一根电缆被动力线并行走线后串入干扰导致从站偶尔丢帧。抓这类问题我推荐一个工具组合示波器抓EtherCAT同步错误信号主站记录每一帧的同步偏差抖动两边对照就能定位到具体是哪个从站、哪一段网线出的问题。另外主站的实时调度也容易埋坑非实时进程的高负载会挤占Xenomai线程导致控制周期出现毫秒级毛刺。青龙的解决方法是给实时控制线程绑核并且把不重要的日志和远程调试全部挪到另一个CPU核心。5.5 安全保护链路不能仰仗算法进程安全保护是实机调试的底线必须独立于算法存在。青龙的安全体系分三层硬件层有一个单独的安全MCU负责采集急停按钮、电机抱闸、驱动器故障标志和母线电压所有信号都走独立线路不经过主控固件层每个关节驱动器内置电流限幅、速度限幅和温度保护算法层则做碰撞检测、支撑脚状态监控和坠落检测。坠落检测有意思的地方在于它利用IMU实时监测机身是否处于自由落体状态一旦判定坠落所有关节立刻切换到抱闸和零力矩模式同时手臂收回胸前避免落地瞬间硬着陆损坏关节。这套逻辑必须放在主控进程里因为它需要高速状态估计但它的优先级又必须低于硬件安全MCU避免算法崩溃时连锁失效。两层配合才能既灵敏又可靠。6. 给想自研人形硬件平台的人几点实在建议6.1 模块化要狠一点关节模组的机械接口、电气接口、通信协议、供电航插在一开始就要定义成统一标准。青龙后期做腿部升级时新关节模组拆下来、旧模组装上去除了动力参数不同机械对接面和软件驱动完全一致换一个关节只需要十分钟。如果你打算做一个长期迭代的平台模块化设计省下的时间会在半年后以几何级数回报你。6.2 先跑“稻草人”验证再烧钱做整机全尺寸整机烧钱和烧时间的速度远超想象。青龙的经验是在整机拼装之前先做单腿试验台和半身站立试验台把电机、减速器、驱动器的匹配问题在小系统上验证掉。单腿试验台能测出关节力矩和散热性能半身试验台能验证质心控制和上身姿态稳定这些数据对整机设计有直接指导意义。等所有不确定项都消掉再进整机阶段返工率会低很多。6.3 硬件团队和算法团队要有“接口共识”硬件和算法之间的沟通不能停留在“这个关节能转吗”的层面上。硬件团队必须提前给出能力上限关节力矩限值、控制带宽、通信延迟、温度降额曲线算法团队也必须给出需求下限控制频率、力矩精度、状态估计延迟、安全响应时间。两边把这些参数签成一份“能力对接表”后续所有争议都以它为准能避开大量扯皮。6.4 别指望硬件一步到位人形机器人硬件平台从来不是一次性交付的产品而是一个持续迭代的载体。第一版青龙的控制性能并不好但硬件底层的结构刚度、通信总线和安全架构足够扎实后面每次算法升级都能看到实打实的改善。硬件和算法应该是螺旋上升的关系设计硬件时给算法留出余量算法成熟后再反过来指导下一版硬件改型。最后再分享一个我做硬件平台的个人体会人形机器人里硬件设计本质上是在“力量”和“感知”之间做权衡。电机给得太大整机变重关节负担反而增加传感器堆得太多成本和故障点同步上升。很多时候最好的设计不是参数最高的设计而是所有环节恰好匹配的设计。仿真里永远碰不到这些“抠细节”的问题只有真机才会逼着你在电气噪声、结构谐振、通信延迟这些脏活累活里把人形机器人一步步磨出来。希望青龙的这些经验能帮你少走几段弯路。