ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

600美元以内DIY开源四足机器人:树莓派+舵机方案全解析

600美元以内DIY开源四足机器人:树莓派+舵机方案全解析 1. 从斯坦福Pupper到600美元以内的四足机器人这个项目到底在解决什么问题四足机器人这个品类过去几年一直卡在一个很尴尬的位置上。波士顿动力的Spot动辄几十万人民币Unitree的消费级产品也要一万多起步而斯坦福开源的Pupper虽然把门槛拉低了不少但真要照着BOM表采购下来伺服电机、结构件、控制板、电池加在一起轻松突破一千美元。对于大多数想入门四足机器人的人来说这个价格依然不够友好。这个基于树莓派的开源微型机器狗项目核心目标就一句话把一台能跑能走、能远程控制、能二次开发的小型四足机器人整机成本压到600美元以内并且所有软硬件资料全部开源。它借鉴了斯坦福Pupper的腿部构型和运动学模型但在驱动器选型、结构简化、控制架构上做了大量取舍最终把价格打了下来。我拿到这个项目的资料之后第一反应是去核对它的成本结构。因为四足机器人降本这件事最容易出问题的地方就是“看起来便宜装起来贵”。伺服舵机、金属结构件、电池、树莓派本体、扩展板、传感器每一项都有隐藏成本。这个项目之所以能做到600美元以内关键在于它放弃了Pupper原版使用的高精度无刷电机方案转而采用大扭矩数字舵机配合3D打印结构件同时把控制计算全部交给树莓派本体省掉了一颗独立的运动控制协处理器。适合看这篇内容的人大概分三类一是想做一个四足机器人毕设的本科生或研究生预算有限但需要完整可跑的方案二是对嵌入式控制和机器人运动学感兴趣的开发者想找一个能动手拆解的开源平台三是做创客教育或课程设计的老师需要一个成本可控、资料完整的教学载体。如果你属于这三类中的任何一类这个项目的设计思路和踩坑经验都值得仔细看一遍。2. 600美元以内的成本是怎么抠出来的驱动器、结构与计算平台的取舍逻辑2.1 舵机方案替代无刷电机省了多少钱牺牲了什么Pupper原版使用的是Dynamixel系列智能舵机单颗价格在40到60美元之间12个关节就是500到700美元光驱动器就吃掉了整个预算。这个项目改用大扭矩数字舵机单颗成本控制在15到20美元12颗加起来不到240美元直接省出了一半以上的预算。但这里有一个必须说清楚的取舍。Dynamixel舵机支持位置、速度、电流多种控制模式反馈精度高适合做力控和柔顺控制。而普通数字舵机通常只支持位置控制反馈只有位置信息没有力矩反馈。这意味着你没法做真正的力控足端触地检测只能靠电流估算或者加装额外的触觉传感器。实际装下来这个取舍带来的影响主要体现在两个方面。第一行走时的步态需要更保守不能做大幅度的动态平衡动作否则舵机堵转容易烧。第二足端轨迹规划要留足余量落地时的冲击要靠结构件的弹性形变来吸收不能指望控制算法去补偿。我在测试的时候一开始想让它小跑起来结果连续跑了不到十分钟后腿舵机就开始发烫后来把步频从2Hz降到1.2Hz同时把抬腿高度从4cm降到2.5cm温度才稳定下来。2.2 3D打印结构件精度、强度和成本的三角平衡结构件全部采用3D打印材料推荐PETG或者PLA不要用普通PLA因为腿部连接件承受的是交变载荷普通PLA容易在层间开裂。我第一版用PLA打的跑了大概两小时右前腿的髋关节连接件就断了断面很整齐典型的层间剥离。换成PETG之后同样的工况跑了十几个小时没出问题。打印参数方面层高0.2mm壁厚至少3层填充率25%到30%关键受力部位比如髋关节和膝关节的连接孔周围建议用100%填充。打印方向也很讲究腿部连杆最好竖着打让层纹方向垂直于受力方向这样抗弯强度最高。我试过横着打同样的零件横着打的在第三次碰撞测试时就裂了。结构简化是这个项目降本的另一个关键。Pupper原版的腿部有复杂的连杆和轴承座这个项目把很多零件合并成了一体打印件减少了紧固件数量和装配复杂度。代价是维修的时候不能单独换某个小零件得整个腿部拆下来换。但从成本角度算一体打印件比多个零件加轴承便宜太多了而且装配时间从原来的三四个小时缩短到一个小时以内。2.3 树莓派本体做运动控制算力够不够实时性怎么保证这个项目最让我意外的地方是它没有用额外的运动控制板所有步态生成、逆运动学解算、舵机PWM输出全部由树莓派本体完成。树莓派4B或者树莓派5的CPU算力应付12个关节的逆运动学解算绰绰有余真正的问题在于实时性。Linux系统不是实时操作系统PWM输出的抖动可能达到几毫秒甚至十几毫秒。对于舵机控制来说这个抖动在低速步态下问题不大但在快速步态或者动态平衡时就会导致关节动作不同步机器人走起来会扭。这个项目的解决办法是用PCA9685这类I2C转PWM的扩展板把PWM生成的任务交给硬件树莓派只负责计算目标角度并通过I2C下发。PCA9685有自己独立的时钟输出抖动在微秒级别完全够用。我实测下来树莓派4B跑这个方案步态更新频率设在50HzCPU占用率不到30%还有余量跑摄像头图像处理和WiFi通信。如果你用树莓派5余量更大甚至可以跑一些轻量级的视觉模型做目标跟踪。3. 从零组装一台能走的机器狗装配顺序与调试链路3.1 零件清点与预装配检查拿到所有零件之后不要急着拧螺丝。先做三件事第一把所有3D打印件按腿部编号分好左前、右前、左后、右后每个腿的零件单独放一盒避免装到一半发现拿错了。第二给所有舵机做中位校准用舵机测试仪或者树莓派发中位信号让所有舵机转到90度位置再安装舵盘。第三检查PCA9685扩展板的I2C地址默认是0x40如果你要接多个扩展板需要改地址。我踩过的一个坑是舵机舵盘的安装角度。第一遍装的时候没做中位校准直接按舵机出厂的随机位置装了舵盘结果上电之后所有腿的角度都是歪的逆运动学解算出来的目标角度和实际角度差了二三十度机器人一站起来就往前扑。后来老老实实全部拆了重装先校准再装舵盘一次就站住了。3.2 腿部装配的先后顺序与力矩控制每条腿的装配顺序建议是先装髋关节的侧摆舵机再装髋关节的前摆舵机最后装膝关节舵机。因为髋关节的两个舵机是串联的先装外侧的侧摆舵机再装内侧的前摆舵机螺丝刀才有操作空间。反过来装的话内侧舵机的螺丝会被外侧舵机挡住根本拧不进去。拧螺丝的力矩要控制好。舵机舵盘上的螺丝是M2或者M2.5的拧太紧会滑丝拧太松舵盘会晃。我的经验是拧到感觉有明显阻力就停然后用指甲掐一下舵盘和舵机轴之间有没有间隙有间隙就再紧四分之一圈。腿部连杆和舵盘之间的连接螺丝可以稍微紧一点但也不要死拧PETG打印件在螺丝孔周围容易因为过度拧紧而开裂。3.3 电气连接与上电前的安全检查电气连接分三部分电源、信号、通信。电源方面舵机供电和树莓派供电要分开。舵机用2S锂电或者6V镍氢电池组直接供电树莓派用独立的5V降压模块从同一块电池取电。千万不要用树莓派的5V引脚给舵机供电舵机堵转电流能到2A以上会把树莓派的电源管理芯片烧掉。我第一版就是这么干的上电瞬间树莓派就重启了后来查了半天才发现是舵机把电拉垮了。信号方面PCA9685的PWM输出接到舵机信号线注意信号线的正负极不要接反。舵机线一般是橙红棕三色橙色是信号红色是正极棕色是负极。PCA9685的引脚定义要看清楚VCC是逻辑供电V是舵机供电不要搞混。上电之前先用万用表量一下电源输出有没有短路确认舵机供电和逻辑供电的电压都在范围内。然后先只给树莓派上电确认系统能正常启动I2C能识别到PCA9685。最后再给舵机上电上电瞬间观察有没有舵机异常抖动或者发出异响有的话立刻断电检查。4. 步态调试与运动控制从站都站不稳到能走直线4.1 逆运动学参数标定腿长、关节零位与足端坐标逆运动学解算的准确性直接决定了机器人能不能走直线。这个项目用的是简化的二维逆运动学每条腿在矢状面内解算髋关节前摆角和膝关节角侧摆角单独控制。需要标定的参数有三个大腿长度、小腿长度、关节零位偏移。大腿和小腿长度用卡尺量精确到毫米。关节零位偏移是最麻烦的因为舵机安装的时候不可能绝对精确地装在90度位置总会有几度的偏差。标定方法是把机器人架起来让腿悬空发指令让所有关节回到理论零位然后观察实际腿型用量角器或者手机水平仪测量实际角度和理论角度的差值把这个差值写进代码里做补偿。我标定的时候发现12个舵机里有3个的零位偏移超过了5度最大的一个差了8度。如果不补偿这条腿的足端位置会偏出去将近2厘米走起来就会往一边歪。补偿之后足端位置误差能控制在5毫米以内走直线基本没问题。4.2 步态参数调整步频、抬腿高度与占空比步态参数是调出来的不是算出来的。理论计算只能给你一个初始值实际能走多稳得看舵机的响应速度、结构件的刚性、整机的重心位置。这个项目默认用的是三角步态也就是每次抬三条腿中的一条另外三条支撑稳定性最好但速度慢。步频从0.8Hz开始调慢慢往上加加到机器人开始出现明显晃动或者舵机发热严重就停。我的机器狗最终稳定在1.2Hz再高就不行了。抬腿高度从2cm开始每次加0.5cm加到足端能干净地离开地面、不拖地就行。太高会导致重心偏移过大机器人会往抬腿的那一侧倒。占空比是指支撑相和摆动相的时间比例默认是0.75比0.25也就是75%的时间在支撑25%的时间在摆动。这个比例可以微调增大支撑相占比会更稳但速度更慢。4.3 走直线调试偏航校正与足端轨迹微调机器人走不直是最常见的问题原因通常有三个左右腿的零位标定不一致、足端轨迹不对称、重心偏置。排查顺序是先查零位再查轨迹最后查重心。零位检查很简单把机器人架起来发指令让所有腿回到零位看四条腿的足端是不是在同一个水平面上左右腿的足端前后位置是不是对称。不对称就调零位补偿值。足端轨迹不对称通常是代码里的参数问题比如左右腿的抬腿高度或者步长设得不一样。这个项目的代码里左右腿的轨迹参数是分开的检查一下有没有写错。重心偏置是因为电池和树莓派的位置不在正中间。我的机器狗一开始总是往右偏后来把电池从右侧挪到腹部正下方偏航就小了很多。如果重心没法调可以在代码里给左右腿的步长加一个补偿系数让偏航的一侧步长稍微大一点把方向拉回来。5. 树莓派上的软件栈与远程控制链路5.1 系统选型与实时性优化树莓派上跑的是Ubuntu Server或者Raspberry Pi OS Lite不要装桌面环境省资源。系统装好之后第一件事是关掉不需要的服务比如蓝牙、avahi-daemon、ModemManager这些服务会占用CPU和内存还会引入额外的中断延迟。实时性优化方面可以给舵机控制线程设置较高的优先级用chrt命令把线程优先级调到最高。另外把CPU governor设成performance模式避免CPU降频导致控制循环抖动。我实测下来做了这些优化之后控制循环的抖动从原来的正负3毫秒降到了正负0.5毫秒以内步态明显更顺了。5.2 ROS2节点架构与话题设计这个项目提供了ROS2的驱动包节点架构分三层底层是舵机驱动节点负责接收目标角度并输出PWM中间是步态生成节点负责根据速度指令生成足端轨迹并解算逆运动学上层是遥控节点接收手柄或者键盘指令并发布速度话题。话题设计上速度指令用geometry_msgs/Twist关节角度用sensor_msgs/JointState足端位置用自定义消息。这种分层设计的好处是每一层都可以单独替换比如你想换一个步态算法只需要替换步态生成节点底层的舵机驱动和上层的遥控都不用动。5.3 远程控制与WiFi通信的延迟处理远程控制走WiFi树莓派开一个热点或者连到同一个路由器上上位机通过ROS2的DDS通信发指令。WiFi的延迟通常在10到50毫秒之间对于低速步态来说够用但如果你要做实时遥控这个延迟会导致操作手感发虚。我的做法是在树莓派上跑一个轻量级的Web服务器上位机通过浏览器发指令指令先到树莓派本地再由树莓派转发给ROS2节点。这样延迟能控制在20毫秒以内而且不需要在上位机装ROS2环境手机浏览器就能控制。代价是Web服务器的开发工作量但这个项目已经提供了现成的Web控制界面直接用就行。6. 实测中遇到的典型问题与排查过程6.1 舵机堵转与电流保护舵机堵转是调试阶段最容易烧舵机的场景。机器人站起来的时候如果腿的角度不对舵机会试图强行转到目标位置但被结构件卡住电流瞬间飙升到堵转电流几秒钟就能把舵机烧了。我的第一颗舵机就是这么牺牲的当时机器人往前扑前腿舵机拼命想撑住结果冒烟了。预防措施有三个第一上电之前先用手把腿摆到大致站立的位置不要让舵机从完全折叠的状态直接站起来。第二在代码里加电流检测PCA9685本身没有电流检测功能但可以在电源线上串一个采样电阻用ADC读电压超过阈值就切断舵机供电。第三调试步态的时候把机器人架起来让腿悬空跑确认动作正常再放到地面上。6.2 I2C通信不稳定导致舵机抖动I2C通信不稳定是树莓派控制舵机的常见问题表现是舵机偶尔抽一下或者某个舵机突然转到错误位置。原因通常是I2C线太长、上拉电阻不合适、或者电源噪声干扰。解决办法第一I2C线尽量短最好在10厘米以内而且要用双绞线或者屏蔽线。第二PCA9685板子上一般有上拉电阻但如果线太长上拉不够可以在树莓派端再并一个4.7kΩ的上拉电阻。第三舵机电源和逻辑电源之间加一个LC滤波减少电源噪声对I2C信号的干扰。我加了滤波之后舵机抽动的问题基本消失了。6.3 3D打印件疲劳断裂与加固方案3D打印件在交变载荷下会疲劳断裂尤其是髋关节和膝关节的连接件。我的机器狗跑了大概二十个小时之后左后腿的髋关节连接件出现了裂纹位置在螺丝孔附近。裂纹很细不仔细看发现不了但继续跑下去就会突然断掉。加固方案有两个一是增加打印壁厚和填充率把关键受力部位的填充率从25%提到50%以上。二是在螺丝孔周围加金属衬套用铜管或者铝管压进去把螺丝的夹紧力分散到更大的面积上。我后来把髋关节连接件换成了尼龙材料打印韧性比PETG好很多跑了五十个小时没出问题。7. 二次开发方向从能走到能用7.1 加装摄像头做视觉巡线树莓派的CSI接口可以接摄像头这个项目预留了摄像头安装位。加一个OV5647或者IMX219摄像头跑OpenCV做巡线成本增加不到30美元。巡线算法用简单的颜色阈值分割加轮廓提取就行树莓派4B能跑到15帧以上够用。需要注意的是摄像头会增加树莓派的CPU负载如果同时跑步态控制和视觉处理CPU占用率会到70%以上。建议把视觉处理放在单独的线程里或者用树莓派5算力余量更大。7.2 足端触地检测与自适应步态普通数字舵机没有力矩反馈但可以通过电流估算来判断足端是否触地。方法是给每个舵机的电源线串一个采样电阻用ADC读电流当电流突然增大时说明足端碰到了地面。有了触地检测就可以做自适应步态根据地面情况调整抬腿高度和步频走不平的地面会更稳。这个功能的难点在于电流采样精度和噪声滤波。舵机电流本身波动就大加上PWM噪声采样信号很脏。我的做法是用一个低通滤波器加滑动平均把噪声压下去然后设一个动态阈值根据当前步态相位调整触地判断的灵敏度。7.3 开源社区贡献与文档完善这个项目的开源资料包括结构件的STL文件、PCB的Gerber文件、树莓派上的控制代码、ROS2驱动包、以及一份组装指南。但组装指南写得比较简略很多细节需要自己摸索。我在组装过程中把每一步都拍了照片补充了一份更详细的装配文档包括舵机校准的具体步骤、螺丝规格和拧紧力矩、电气连接的注意事项。如果你也做了这个项目建议把调试过程中遇到的问题和解决办法记录下来反馈到开源社区。四足机器人的调试经验非常依赖具体硬件不同批次的舵机、不同品牌的3D打印材料、不同的装配精度都会导致不同的问题。多一个人分享踩坑经验后面的人就能少走很多弯路。8. 关于成本和性能的最后几句实话600美元以内做出一个能走的四足机器人这个目标确实实现了但你要清楚这个价格对应的性能边界。它能慢速行走、能远程控制、能二次开发但不要指望它能跑能跳能翻跟头。舵机的响应速度和结构件的刚性决定了它的动态性能上限做静态步态没问题做动态平衡就很吃力。如果你追求更高的动态性能预算至少要翻倍换无刷电机加行星减速器结构件换成金属或者碳纤维控制板换成带FPU的实时微控制器。但如果你只是想入门四足机器人想理解逆运动学、步态生成、嵌入式控制这些核心概念这个项目是目前性价比最高的选择。我在这个项目上总共花了大概三周时间其中装配用了两天调试用了两周多。调试的时间主要花在步态参数调整和问题排查上这部分没有捷径只能一遍一遍试。但当你看到它第一次稳稳地站起来第一次走出一条直线那种成就感是值得的。
返回列表