
做低成本类人机器人这事我前后折腾了小半年踩了无数的坑最终把这套机械结构和电子系统的方案跑通了。类人机器人听起来很高大上但落到实际的机械结构、电子系统这两个核心板块上其实很多工作是在做取舍。本文就把我这套中配方案的完整思路、关键选型依据和实操过程分享出来给同样想从零动手做一台有头有手、能走能动的类人机器人的朋友做个参考。这套方案适合谁适合刚入坑机器人、预算有限但动手能力还行的大学生创客、硬件爱好者也适合想给科创项目打底子的团队。它的核心价值是用相对低的成本验证双足/多足运动控制、舵机伺服驱动、传感器闭环等类人机器人关键技术同时留出充足的升级空间。我默认你有基本的焊接、3D打印和编程基础如果你纯小白文中的基础概念我也会尽量讲透。1. 整体设计思路与方案选型1.1 先从你想让它做什么反推需求类人机器人这个词太宽泛从手指头能动的仿生手到整机双足行走人形机器人全都可以套这个壳子。如果一开始不看清楚自己的需求你会发现预算像个无底洞结构改来改去最后连站立都费劲。我给自己定下的目标是整机高度40cm左右四肢具备基本自由度能完成缓慢行走、抬手、转头、简单抓取动作主控端能够实时读取关节角度和姿态数据。基于这个目标我把需求拆成三个功能等级基础功能优先级最高稳定站立、重心调整、基础行走。第二优先级是手臂动作肩、肘两个关节自由度的控制。第三优先级是头部和腰部的动作增强机器人的类人观感。这样排优先级直接决定了后面的机械结构复杂度、舵机数量、供电功率和主控计算量。如果你想要的是一台能陪你散步的机器人那整套方案就得推翻重来底盘得换成轮式或更大型的双足结构驱动也得升级成伺服电机加减速箱的方案。1.2 选型逻辑中配到底配在哪中配在我这套方案里指的是不用工业级的伺服电机不用碳纤维结构件不搞IPC工业控制计算机级别的算力但同时也不能用玩具级别的舵机、亚克力板加扎带的组合那样做出来的东西根本走不稳。中配的核心思路是三个字够用就行。具体拆解为运动控制芯片选择ESP32系列兼顾Wi-Fi通信和IO口数量算力能跑轻量级姿态解算。舵机选择MG996R级别的大扭矩舵机兼顾成本和力矩需求关键关节髋、膝用金属齿轮舵机手臂末端可用塑料齿轮舵机减重。结构件主体采用PLA 3D打印配合少量铝合金型材和标准五金件兼顾成型速度和结构强度。传感器以MPU6050惯性测量单元为主辅以接触式限位开关和简单的电位器角度反馈。这套配置单看每个部件都很普通但组合起来能实现的功能已经远超玩具而且每换一个部件都有明确的性能驱动。我见过不少新手上来就买最贵的舵机结果主控端根本没那么多PWM通道来独立控制还得多花几百块买驱动板。这种多余开销在预算有限的场景下就是纯粹的浪费。1.3 为什么不自研关节电机方案类人机器人最核心的部件其实是关节执行器。工业界用的谐波减速器、行星减速器加高精度编码器方案性能很好但成本动辄几千块一个关节已经完全超出了入门体验的范畴。自研关节电机意味着你需要搞定FOC驱动、磁编码器校准、减速箱装配精度等一系列问题没有个三五年经验根本做不出稳定的成品。我最终选的是舵机方案舵机内置减速齿轮箱和反馈电位器位置闭环由内部电路完成外部主控只需要发送PWM脉宽信号即可定位。这个方案的缺陷是精度较低、响应速度偏慢但胜在结构简单、驱动方便特别适合第一代原型机验证运动学和动力学模型。等算法跑通了再换带CAN总线的高端串行总线舵机整个运动控制层的代码基本可以无缝迁移。1.4 仿真先行结构后调这里要提醒所有从零开始做机器人的朋友千万别画完3D模型就急着打印装配。我强烈建议先建一个简单的运动学肌膜模型。所谓肌膜模型就是不用SolidWorks或Fusion 360做严格的三维建模而是把每个运动关节看作一个节点用简单的杆件长度和角度范围搭一个可视化草图去推演它动起来会不会自干涉、重心摆动范围能有多大。这个阶段用到的工具很轻量我用的是一份开源的2D运动学分析脚本配合Python的numpy库做简单的坐标变换计算就能算出双腿在不同姿态下重心的投影位置。这个方法能帮你尽早发现结构尺寸不合理的地方比打印出来再返工要省得多。我自己就是在这个阶段发现初始设计的髋关节间距太窄导致横向稳定性极差在草图阶段改起来非常轻松。2. 机械结构低成本下的骨架搭建2.1 材料选型3D打印与切割件怎么搭类人机器人的每个零件都处在减重和加强的矛盾之中。全用3D打印件优点是加工方便、复杂结构随意做缺点是强度有限、受热易变形全用金属件结实但加工难度大、成本高。中配方案的最佳实践是混合使用。我的具体做法是承受弯矩大且频繁受力的结构件大腿、小腿、胯部连接件使用3D打印PLA材质但提高填充率到70%并在受力方向增加加强筋。结构简单但需要精度的连接板、支架采用3mm铝合金板线切割或手工锯裁辅以角码和标准M3螺丝固定。手臂、头部这类对强度要求相对较低的部件用20%到30%填充率的PLA件即可能显著降低整机重量。PLA材料在受力时会有蠕变特性长期静置在受力状态下会产生形变。这点在实际中会表现为机器人放一段时间后站姿慢慢变歪。解决办法是尽量避免让3D打印件长期承受拉应力改用金属件承担主要的预紧力打印件只做定位和随动。2.2 自由度分配关节数越多越好吗类人机器人给人的直觉是关节越多越灵活但每个自由度都意味着一路PWM信号、一组供电和一份结构重量。在一台40cm级的小型机器人上盲目堆自由度只会带来灾难级别的调试复杂度。我最终确定的自由度分配方案是每条腿5个自由度髋部2个前后摆、外展内收、膝盖1个前后摆、脚踝2个侧向摆动、前后摆动。每条手臂4个自由度肩部2个、肘部1个、腕部1个可简化。头部2个自由度水平转和俯仰。腰部暂不做独立自由度通过髋部动作模拟腰部的转动效果。共计20个自由度MG996R舵机的响应速度来看已经是比合理不算低的配置。再多加自由度舵机数量和重量会快速增长主控处理周期变长供电需求也会翻倍性价比急转直下。2.3 传动细节舵盘、连杆和轴承舵机本身自带减速齿轮箱所以外部传动不需要再做减速比计算但有几个细节直接决定最终运动质量。舵机舵盘和结构件之间的连接务必使用高强度舵盘并在顶丝之外点一滴螺丝胶。否则运转几分钟后舵盘就会松脱导致关节出现间隙。多关节联动部位如膝关节在舵机转轴的另一侧增加一个滚动轴承作为支撑点避免巨大的弯矩全部施加在舵机输出轴上。这个工艺非常关键不加轴承的话舵机输出轴根部容易断裂或产生旷量。连杆机构尽量使用对称的双连杆结构减少结构在运动过程中的扭转。单边悬臂的连接件在受力时会产生明显的弹性变形体现在动作上就是抖动和跑位。2.4 重心控制与配重设计双足机器人的核心难点不在会动而在不倒。重心垂线必须时刻落在双脚支撑面内否则机器人就会向前或向侧倾倒。所谓稳定行走本质上就是不断通过调整姿态把重心投影控制在一个很小的区域内。我在做完腿部结构后专门做了一个配重叠方案在机器人胸口位置预留一个电池仓电池本身1.2kg的重量可以作为活动配重块。通过调整电池安装位置可以改变整机重心的高低和前后位置。实测下来重心越低的机器人姿态收敛越快运动中越稳。所以电池仓安装在胸口偏下的位置而不是头部或背包位置。另外一个常被忽略的要点是线束的布置。机器人在行走过程中线束会来回弯折如果线束质量不均匀或者缠绕在某一边相当于动态地改变了重心。我后来把所有线束都顺着结构件的走线孔理好用螺旋管保护套固定尽量避免左右不对称的悬挂重量。3. 电子系统机器人的神经与大脑3.1 主控选型ESP32为什么够用类人机器人的主控端要完成的任务包括接收上位机指令、读取姿态传感器数据、执行逆运动学计算、输出20路PWM波、处理异常状态。这些任务对算力的要求并不算高但要求IO资源丰富、实时性可控。我选择ESP32-WROOM-32作为主控芯片原因是价格便宜单颗模组10块钱出头整个核心板采购不过三四十元。拥有双核240MHz主频一个核跑通信和逻辑一个核跑PWM生成和传感器采集互不干扰。自带Wi-Fi和蓝牙方便后续做手机或电脑的无线控制。内置16通道LEDCPWM控制器配合软件扩展可以输出20路以上的PWM信号。如果你对实时性有更高要求或者准备上视觉识别那么需要再加一块协处理器比如树莓派Zero 2W或者Luckfox Pico专门跑图像算法通过串口和ESP32通信。体积和算力之间需要再平衡得看实际需求。我这个阶段没上视觉纯靠传感器就够用了。3.2 舵机供电设计最容易翻车的一环先说结论不要用Arduino的5V引脚给多个舵机供电甚至不要用小型USB充电宝引出的5V给舵机阵列供电。舵机启动和堵转时瞬间电流非常大MG996R在8V供电下堵转电流接近2.5A20个舵机同时动作时瞬时总电流可以达到十几安培。如果供电能力跟不上表现就是舵机无力、抖动、系统复位重启让人头大。我的供电方案是分级供电控制逻辑部分ESP32、传感器使用一路稳定的5V/2A DC-DC降压模块单独供电。舵机部分使用独立的2S锂聚合物电池7.4V推荐2200mAh以上通过一个UBEC或者大功率DC-DC模块降压到6V输出电流能力需要大于10A持续和20A瞬时。每个舵机的电源线和地线都汇总到一个铜制接线排或大电流PCB转接板上在物理上形成星型供电而不是串联手拉手接线。大电流回路还需要考虑线径问题。舵机供电主线至少使用18AWG硅胶线分线可以用22AWG或更粗。细线在大电流下会发热电阻变大会进一步压降形成恶性循环。3.3 传感器方案实现感知-反馈-修正类人机器人必须能感知自身的姿态和关节位置否则你只能做开环动作即动一下就不管了。开环的后果是走几步就累积偏差最后跌倒。我在机器人上装了以下几类传感装置主姿态传感器MPU6050六轴惯性测量单元三轴陀螺仪三轴加速度计安装在机器人胸部的几何中心通过I2C总线连接到ESP32。这是实现双足平衡的关键传感器。关节角度反馈每个舵机本身有电位器反馈但读取它的模拟量比较麻烦。我的做法是在关键关节髋、膝、踝额外并联一个10kΩ旋转电位器直接连接到ESP32的ADC引脚。这样能在控制层面实现关节角度闭环而不只依赖舵机内部的位置环。接触式地面感知在每个脚底安装微动开关或薄膜压力传感器用于判断脚掌是否完全着地。这个信号对行走步态中的支撑相和摆动相切换非常有帮助。MPU6050的数据要经过一阶互补滤波或卡尔曼滤波才能获得稳定的角度值。直接读原始值会看到明显的噪声特别是加速度计的振动噪声和陀螺仪的积分漂移。我在代码里用的是一阶互补滤波权重系数需要实测调参不同的安装位置、不同的机体刚度最优权重都不一样。3.4 通信与调试链路调试阶段我一直用USB串口连接ESP32通过串口监视器打印实时角度和状态信息。但无线调试能大大提升效率尤其是机器人站着走动作时拖着线缆会绊住脚。我利用ESP32的Wi-Fi功能实现了一个轻量级的Web控制台手机浏览器打开IP地址就能控制机器人前进、后退、转头、抬手还能实时看到每个关节的角度数值曲线。这个Web控制台用Arduino WebSocket库实现大概几百行代码但带来的调试便利性是无价的。蓝牙手柄也是一个很好的控制方案ESP32自带BLE功能可以直接配对市面上的蓝牙手柄。游戏手柄的左右摇杆映射到左右腿的运动参数上控制逻辑非常直观。4. 实操过程从零开始装配与调试4.1 第一步打印零件与装配骨架具体打印零件之前先把STL文件切片。PLA材料打印参数建议层高0.2mm壁厚1.2mm填充率在结构件上用70%非承力件30%。支撑要根据实际悬空面添加关节孔位处务必检查支撑料是否能顺利去除。打印底板保持平整以防翘边引起装配精度问题。装配顺序上我建议先装腿部再装上身。具体流程是先完成两条腿的髋、膝、踝关节装配然后临时用一根横杆把两条腿串起来手动转动各个关节检查运动范围和干涉情况。确认没卡顿后再安装胸部和臂部。装配时一个很重要的习惯每个舵机通电回中后再安装舵盘和结构件。这样做才能保证软件上的中位和机械上的中位对齐。如果舵机在非中位状态装紧舵盘后面写控制代码时会发现左右腿角度不对称调整起来异常痛苦。4.2 第二步整机接线与供电测试接线按电源线和信号线分区走。信号线PWM、I2C、串口尽量远离舵机电源线以免舵机大电流时产生的电磁干扰耦合进信号线导致舵机抽风抖动。我踩过一次很深的坑早期把PWM信号线跟6V舵机电源线捆在一起走结果舵机一启动扭矩大时ESP32的ADC读数就开始跳变姿态解算完全不可用。后来把信号线全部换成带屏蔽层的双绞线并单独走线槽问题才消失。供电测试严格按先控制后动力的顺序进行先只给主控电路供电烧录测试程序串口确认ESP32和MPU6050通信正常。再逐步给舵机供电先不接负载空载转动测试每个舵机的声音和温度。最后整机通电把机器人悬空吊起来做无负重Full-range运动测试确认所有关节都能到达设计角度且没有异响。4.3 第三步站立姿态与重心调试开机前先把机器人摆成设计的初始站姿然后逐渐给各关节发送中位PWM值。观察机器人是否能在无外力扶持下保持直立。如果不能需要从三个方向排查角度映射错误某个关节的PWM角度方向反了机器人会反着扭。处理办法是在代码中取反或交换PWM范围映射。重心偏移机体向某个方向歪斜调整电池位置或加配重平衡。机械限位关节结构在运动到某个角度时被打印件卡住。用手掰一掰找到干涉点后打磨。站立稳定后再测试姿态闭环。具体做法是读取MPU6050的倾角如果机体向前倾斜则控制脚踝舵机向后摆动形成一个虚拟的不倒翁机制。这个闭环的比例增益P参数从零开始慢慢加加大到出现抖动就回退百分之二十留出稳定裕度。4.4 第四步步态规划与行走调试行走是最难的环节。我没有从零写复杂的ZMP零力矩点算法而是采用了一种相对简单但实用的静态步态方案每次只移动一只脚另一只脚始终在地面保证机器人重心一直处于支撑面内。步幅很小每步约3cm步态周期设为2秒以上。每条腿按抬起-前移-放下-站稳-再动另一条腿的顺序执行。步态序列在代码里写成一个状态机。初版代码直接用时间触发后来改为用脚底压力传感器触发只有当支撑腿完全踩实、重心稳定后才允许下一动作开始。这大大提高了行走的成功率。具体步态参数参考以我的机体重心高约22cm为例抬脚高度1.5cm太高会重心不稳太低会拖地。单步时长1.2s左右。髋关节前摆角度15度。膝关节对应弯曲角度约10度需要配合髋关节角度做运动学计算。实际调试时先让机器人手扶着栏杆比如贴墙走路确认步态时序没问题后再撤掉外部支撑。这个过程肯定摔很多次建议给机器人加上一个小背包作为保护罩至少能减少打印件的摔裂概率。5. 成本清单与升级空间5.1 中配方案成本详单我这里把主要花费列一个参考清单以2024年中市场价为准单位是人民币项目型号/规格数量单价小计主控板ESP32-DevKitC V413535舵机MG996R金属齿轮1425350舵机SG90小扭矩手臂末端6848姿态传感器MPU6050模块11212电位器10k旋转电位器10330结构件PLA 3D打印耗材约1.2kg1卷6565结构件3mm铝合金板含线切割若干6060电池7.4V 2200mAh 2S锂电池17575降压模块UBEC 5V/6V可调输出21836线材五金硅胶线、螺丝、铜柱、轴承、舵盘等若干8080总成本大约790元加上备用件和运费900元左右可以打住。如果家里已有3D打印机和基础工具实际支出的现金还会更少。对比市面上动辄数千上万的成品双足机器人套件这个方案的成本优势是很明显的。5.2 钱花在哪最值得预算有限时把钱花在会直接影响稳定性的部件上最重要。腿部关节的舵机绝对不能省用MG996R档次是底线再低一级的MG90S扭矩太小带不动腿部结构走路一定会抖。电源模块不能省一个虚标的10A UBEC会让你排查半天都找不到抖动根源。我建议买品牌厂家的正品或者直接上两块并联分担电流。轴承非常便宜但对关节寿命的影响非常大。所有受力关节都尽可能加装。相比之下外壳、装饰件、灯光这些完全可以用最低成本的方案搞定甚至第一版直接不装外壳裸奔也行省下的预算花在传感器上获得的体验会好很多。5.3 后续可升级的三个方向这套架构留了充分的升级空间后续想往哪个方向深入都有路径运动控制方向把静态步态升级为使用ZMP理论的动态步态引入PID控制器整定参数但也需要更强的腿部执行器串行总线舵机或直流无刷电机成本会翻倍。感知方向加装激光雷达或深度摄像头模块配合树莓派做SLAM建图和避障这样机器人就有了环境感知能力不再是盲人走路。交互方向加装一个带麦克风和喇叭的语音模块比如离线语音识别模块让机器人能听懂简单的语音指令并做出回应。这块的成本很低但体验提升特别明显。6. 常见问题与排查实录6.1 常见问题速查表我这几个月遇到的问题少说也有几十个把最典型的整理成一个速查表碰到类似情况可以直接对照排查现象可能原因排查方法最终解决方案舵机抖动、定位不准供电不足或PWM信号被干扰万用表测舵机供电电压示波器或逻辑分析仪看PWM信号独立供电、信号线屏蔽与分槽走线机器人总是向前倾倒重心偏前或脚踝舵机力矩不足检查电池位置用手托住观察前倒趋势重心后移配重增大脚踝舵机行程范围走路时一条腿拖地抬脚高度不足或步态时序不对观察拖地瞬间哪只脚着地增加抬髋角度优化状态机转换条件舵机发热严重负载过大或长时间堵转手摸舵机温度听声音判断是否堵转减小运动加速度优化机械间隙减少卡阻ESP32反复重启舵机大电流导致主控供电跌落测试舵机动作瞬间ESP32电源电压控制电源与舵机电源完全隔离姿态角度数值漂移陀螺仪零点偏移或滤波参数不合适静止时查看MPU6050原始输出重新校准零点调整互补滤波权重6.2 独家避坑的经验之谈除了上面能写成表格的参数问题我再补充几个不能写成一行字的小经验第一舵机中立位置的校准一定要做成一键校准程序。我的做法是开机时自动遍历所有通道发中位PWM并在串口打印每路通道的编号逐一核对舵盘朝向。亲眼确认每个关节都在设计的初始角度比什么调试技巧都重要。第二姿态闭环和步态逻辑分开调试别一上来就合在一起。我最开始把MPU6050的倾角矫正直接耦合进步态状态机里结果站立时踉踉跄跄走路时疯狂抽搐。后来把姿态闭环单独做成一个独立模块先纯站立测试稳定后再在步态周期里叠加补偿量逻辑清晰了很多。第三结构件务必做一轮疲劳测试。新装配好的机器人不要直接跑完整行走流程先让它原地做前倾后仰动作100次抬头抬臂交替动作100次观察有没有螺丝松脱、打印件开裂、舵机异响。及时在上路前解决问题否则很容易在一次意外的跌倒中损坏多块零件。第四注意电池电压变化对舵机扭矩的影响。锂电池从满电4.2V/节放到3.7V/节时舵机实际获得的扭矩会明显下降导致同一套参数在不同电量阶段的表现差异很大。稳妥的做法是在主控程序里实时监测电池电压电压低于一定阈值时自动降低步态速度或增加站姿支撑时间。6.3 一个值得投入的调试工具上位机状态面板如果你经常调试只靠串口打印文字效率太低了。我后来花了一晚上时间写了简单的Python上位机通过串口从ESP32接收JSON格式的状态数据然后用matplotlib实时绘制各关节角度、机体重心和电池电压的曲线。这个面板极大提高了排查效率。比如发现膝关节角度曲线在某个位置上有个小平台就知道那个位置可能发生了机械卡滞。看到重心曲线带有周期性波动就能推算出步态周期的动力学特征是否合理。如果你的编程基础好甚至可以把这个状态面板做成一个局域网页面在浏览器里显示3D骨骼模型实时映射机器人的姿态数据。这是我下一步打算做的功能。最后换个话题说说我个人的体会做类人机器人这件事最有趣的地方在于它是机械结构、电子系统、控制算法、甚至心理学的交汇点。每一次机器人的成功站立背后都是多重学科知识被硬生生拧在一起后的结果。前期80%的时间都花在解决结构装好了但舵机抖得跟筛子似的这种琐碎问题上但真正看到它迈出第一步的时候那种成就感确实值得。我的建议是千万别等到所有材料都备齐了再动手。先把最基础的一条腿做出来让它实现前后摆、侧摆和屈膝的动作通电让它动起来你就能感知到不少之前看图纸根本发现不了的问题。整条腿跑通了再复刻第二条两条腿都稳定了再谈上身和交互。这种先让局部动起来的思路会让你少走很多弯路。如果你也准备下单材料动手做一台我的忠告是准备好足够的耐心和一把好用的尖嘴钳。前者用来应对调试后者用来修剪打印件上的毛刺这两样东西在整段旅程里都是必不可少的。