1. 从零搭建一台步兵机器人:硬件选型的底层逻辑
很多人第一次接触RoboMaster这类机器人竞赛,最容易犯的错误就是拿到规则手册就开始列物料清单,看到别人用什么主控就跟着买什么,结果装到一半发现供电对不上、通信协议不兼容、结构件干涉。我在前几年带新人做步兵机器人时,几乎每一届都会遇到同样的问题:底盘还没跑起来,光是在硬件选型上就反复推倒重来两三次。
硬件选型这件事,本质上不是“买什么”的问题,而是“先确定什么”的问题。一台步兵机器人涉及的核心模块无非几块:主控与计算平台、电机与驱动、电源与配电、传感器、通信链路、结构承载。这些模块之间存在严格的依赖关系,选型顺序错了,后面全是返工。
1.1 先定功率预算,再谈其他一切
我习惯把功率预算放在最前面,因为整台车的重量、电池容量、电机型号、甚至结构材料的选择,全都跟它挂钩。步兵机器人典型配置是四轮麦轮底盘加一个拨弹机构,底盘电机通常选无刷直流电机,单颗峰值功率在100W到200W之间,四颗加起来峰值可能到600W以上。拨弹电机功率小一些,但也要留出50W左右的余量。
电池方面,主流选择是6S锂聚合物电池,标称电压22.2V,容量在5000mAh到8000mAh之间。这里有个容易忽略的点:电池的持续放电倍率必须覆盖整车的峰值电流。假设你的峰值功率是700W,电池电压按22.2V算,峰值电流大约31.5A。如果电池是5000mAh容量,放电倍率至少要到10C才能稳定输出50A。很多人只看容量不看倍率,结果一加速就触发低压保护,车直接趴窝。
提示:功率预算不是拍脑袋估的,建议把每个电机的堵转电流、额定电流、峰值电流都查清楚,列一张表,按最坏情况叠加。留20%到30%的余量是底线。
1.2 主控平台的选择:性能与生态的权衡
主控这块,目前常见的方案有两类:一类是单片机方案,比如STM32系列,适合做实时控制;另一类是嵌入式Linux方案,比如树莓派或类似的计算平台,适合跑视觉和决策。很多队伍会选择“双主控”架构:STM32负责电机闭环、传感器采集和实时通信,Linux板子负责视觉识别和上层决策,两者通过串口或CAN总线交换数据。
选STM32的时候,重点看几个参数:主频、定时器数量、CAN控制器数量、串口数量、ADC通道数。以STM32F4系列为例,主频168MHz,带两个CAN控制器,对于四电机加拨弹电机的控制需求基本够用。如果要做更复杂的运动控制,比如麦轮解算加PID闭环,F4的计算余量还算充裕。但如果你打算把视觉也放在同一颗芯片上,那就不现实了,算力差着数量级。
Linux板子的选择更看重接口丰富度和社区支持。需要关注的接口包括:USB口数量(接摄像头和调试设备)、串口数量(和STM32通信)、网口(调试和日志导出)、GPIO(用于外设控制)。另外,供电电压要匹配,大多数Linux板子需要5V供电,而电池是22.2V,中间需要DC-DC降压模块。
1.3 电机与驱动的匹配:别让驱动器成为瓶颈
无刷电机和驱动器的匹配是另一个高频踩坑点。电机的KV值、极对数、额定电流、峰值电流,驱动器的持续电流、峰值电流、支持的最高电调频率,这些参数必须一一对应。我见过有人买了一个持续电流20A的驱动器去带峰值电流40A的电机,结果一上负载驱动器就过热保护。
驱动器选型时,持续电流至少要是电机额定电流的1.5倍,峰值电流要能覆盖电机的堵转电流。另外,驱动器的通信接口要和主控匹配,常见的有PWM、CAN、UART。CAN总线在机器人上用得比较多,因为抗干扰能力强,布线也简单,一根总线可以挂多个节点。
注意:驱动器固件版本不同,支持的协议和参数范围可能不一样。批量采购前一定要拿样品实测,确认通信协议和主控兼容。
1.4 结构件与材料:重量和刚性的博弈
结构件这块,碳纤维板是主流选择,密度低、刚性高,但价格贵、加工难度大。玻纤板便宜一些,但重量上去了。铝合金件适合做承力结构,比如电机座和云台支架,但重量也不轻。实际做的时候,通常是碳纤维板和铝合金件混用,底盘大板用碳纤维,电机座和受力节点用铝合金。
结构设计时,重心尽量低、尽量靠近几何中心,这样底盘运动更稳定。麦轮布局的话,四个轮子的中心距和轴距要匹配,否则运动解算会出问题。拨弹机构的位置要考虑弹仓容量和供弹路径,别等到装车了才发现弹道和云台干涉。
2. 供电与配电:机器人稳定运行的隐形基石
供电系统是整台机器人最容易出问题、也最容易被忽视的部分。我见过太多队伍在调试时遇到莫名其妙的复位、通信中断、传感器数据跳变,最后查来查去都是供电的问题。供电没做好,后面所有的调试都是在沙子上盖楼。
2.1 电池管理:从选型到安全使用
锂聚合物电池的使用有几个硬性规矩。第一,绝对不能过放,单节电压低于3.0V就可能永久损坏,低于2.5V基本就废了。第二,充电必须用平衡充,每节电芯的电压差控制在0.05V以内。第三,电池鼓包、破损、摔过之后,坚决不能再用了。
实际使用中,建议在电池输出端加一个电压检测模块,实时监测总电压和单节电压。如果主控能读到电压数据,可以在低压时触发降功率或自动返航逻辑。另外,电池的插头要选质量好的,XT60或XT90都行,但别用劣质插头,接触电阻大了之后发热严重,大电流下可能直接熔化。
2.2 配电板设计:别让一根线毁掉整台车
配电板的作用是把电池的电分配到各个模块,同时提供过流保护和电压转换。设计配电板时,几个关键点:第一,主回路的走线宽度要够,按峰值电流算,1mm线宽大约走1A到2A,留足余量。第二,每个支路加保险丝或自恢复保险丝,防止单个模块短路拖垮整条总线。第三,大电流回路和小信号回路要分开走,避免干扰。
我自己的习惯是,配电板上至少分出以下几路:电机驱动供电(大电流)、主控供电(5V或3.3V)、传感器供电(5V)、通信模块供电(5V或3.3V)。每一路都加滤波电容,电机回路加个大电容缓冲,防止电机启动瞬间把电压拉低导致主控复位。
2.3 电源转换:DC-DC模块的选型与布局
从22.2V降到5V或3.3V,需要DC-DC降压模块。选型时关注几个参数:输入电压范围、输出电压、最大输出电流、转换效率、纹波。输入电压范围要覆盖电池的满电电压(6S满电是25.2V)和截止电压(一般设到19.8V左右)。输出电流要按所有负载的峰值电流之和来算,再留30%余量。
布局上,DC-DC模块尽量靠近负载,减少线损和干扰。如果多个模块共用一个输入,输入端加个共模电感,能有效抑制相互干扰。输出端加LC滤波,纹波能压到比较低的水平。实测下来,纹波控制在50mV以内,主控和传感器的工作会稳定很多。
提示:DC-DC模块的散热也要考虑,尤其是大电流输出的场景。模块背面贴导热垫,固定在金属结构件上,能显著降低温升。
3. 通信链路:让各个模块说同一种语言
机器人上的通信链路就像神经系统,主控、驱动器、传感器、计算平台之间要实时交换数据。通信没调好,轻则数据丢包,重则整个系统失控。我见过因为CAN总线终端电阻没接,导致电机指令时有时无,车在原地抽搐的场面。
3.1 CAN总线:机器人内部通信的首选
CAN总线在机器人上用得最多,原因是抗干扰能力强、支持多节点、有优先级仲裁。标准CAN的速率可以到1Mbps,对于电机控制和传感器数据采集来说够用了。接线的时候,CAN_H和CAN_L要双绞,终端接120欧姆电阻,节点多了之后电阻要相应调整。
实际调试时,先用示波器看CAN_H和CAN_L的差分波形,确认电平正常、没有明显反射。然后用CAN分析仪抓包,看各个节点的报文ID和数据是否正确。如果某个节点一直不发数据,先查供电,再查波特率配置,最后查终端电阻。
3.2 串口通信:简单但容易出幺蛾子
串口通信简单直接,但坑也不少。最常见的问题是电平不匹配,STM32是3.3V电平,有些模块是5V电平,直接连可能烧接口。中间加个电平转换芯片,或者选支持宽电压的串口模块。
另一个问题是波特率误差。两个设备的波特率如果误差超过2%到3%,通信就会不稳定。建议用外部晶振而不是内部RC振荡器,精度更高。数据帧格式也要统一,起始位、数据位、校验位、停止位,两边必须一致。
3.3 无线调试链路:方便但不能依赖
调试阶段,无线链路能省很多事,不用每次都插拔线。但无线链路的稳定性受环境影响大,比赛现场2.4G频段可能很拥挤。我的建议是,无线只用于调试和日志查看,关键控制指令还是走有线。如果一定要用无线做控制,加个超时保护,信号丢了自动进入安全状态。
4. 传感器与执行器:感知与动作的闭环
传感器和执行器是机器人跟物理世界交互的接口。传感器选型要看量程、精度、响应频率、接口类型。执行器选型要看扭矩、转速、控制精度、反馈方式。两者要匹配,否则要么感知不到,要么动作不到位。
4.1 姿态传感器:机器人的内耳
IMU是机器人最核心的传感器之一,用来感知姿态和角速度。选型时关注零偏稳定性、噪声密度、量程。零偏稳定性决定了姿态解算的长期漂移,噪声密度影响短期精度。对于步兵机器人,量程选±500度/秒左右就够用了,太大精度差,太小容易饱和。
安装位置很关键,IMU要固定在刚性好的结构件上,远离电机和驱动器这些振动源。减震做得好,数据质量能提升一大截。我试过用硅胶垫加配重块的方式,效果比硬连接好很多。
4.2 电机反馈:编码器的分辨率与安装
电机闭环控制离不开编码器。增量式编码器便宜、接口简单,但断电后位置丢失。绝对式编码器贵一些,但上电就知道位置。对于底盘电机,增量式够用,因为每次上电可以重新校准。对于云台和拨弹机构,绝对式更方便。
编码器安装时,同心度很重要。偏心会导致读数周期性波动,影响控制精度。联轴器选弹性联轴器,能补偿一点安装误差。线缆要固定好,别让编码器线跟着电机转,容易断。
4.3 拨弹机构:从电机选型到卡弹处理
拨弹机构是步兵机器人的特色模块,负责把弹丸从弹仓送到发射机构。拨弹电机通常选带减速箱的直流电机,扭矩要够,转速不用太高。控制上,用位置闭环加电流限幅,防止卡弹时烧电机。
卡弹是常见问题,处理方式有两种:一是检测电流异常后反转一下再正转,尝试把卡住的弹丸挤过去;二是加个振动电机,卡弹时振一振。实测下来,电流检测加反转的方式成功率比较高,但要注意反转角度别太大,否则弹丸会掉出来。
5. 结构设计与装配:从图纸到实车的最后一公里
结构设计决定了机器人的下限,装配质量决定了上限。图纸画得再好,装配不到位,车跑起来也是松松垮垮。我见过太多设计很漂亮但装出来一跑就散架的案例。
5.1 底盘布局:重心、轴距与轮距的平衡
底盘布局的核心是重心位置。重心越低、越靠近几何中心,运动越稳定。电池和主控这些重的模块尽量放在底盘中间偏下的位置。轴距和轮距的比例影响转向灵活性,轴距短转向快但高速稳定性差,轴距长则相反。步兵机器人一般轴距和轮距接近,做成接近正方形的布局。
麦轮的安装角度很关键,四个轮子的辊子方向必须正确,否则运动解算全错。装完之后用手推一下,看车能不能沿直线走,如果走斜线,说明某个轮子装反了或者角度不对。
5.2 走线与固定:细节决定可靠性
走线是装配中最繁琐但也最重要的环节。线缆要分类捆扎,电源线和信号线分开走,避免干扰。线缆长度留一点余量,但别太长,多余的线盘起来固定好。接插件要插紧,最好用热熔胶或扎带做二次固定,防止振动松脱。
螺丝要加螺纹胶,尤其是电机座和云台这些振动大的地方。我吃过亏,云台螺丝没打胶,跑了几分钟就松了,云台直接歪掉。螺纹胶选中强度就行,低强度容易松,高强度拆不下来。
5.3 防护与散热:别让灰尘和温度毁了比赛
机器人底部和侧面加防护板,防止灰尘和弹丸碎屑进入内部。电机和驱动器加散热片,大电流场景下加风扇。实测下来,驱动器温度控制在60度以内比较安全,超过80度就可能降频或保护。
注意:散热风扇的供电要独立滤波,否则风扇电机的噪声会串到主控电源上,导致通信异常。
6. 上电调试与故障排查:从冒烟到跑通
第一次上电是最紧张的时刻,搞不好就是一股青烟。我的习惯是,上电前先用万用表把各路电源对地阻抗测一遍,确认没有短路。然后分级上电,先上主控,再上传感器,最后上电机。每上一级,观察电流和温度,确认正常再继续。
6.1 分级上电流程与检查清单
分级上电的具体步骤:第一步,不接电池,用稳压电源限流供电,电流限制设到100mA,看各路电压是否正常。第二步,接主控和传感器,看通信是否正常,数据是否合理。第三步,接电机驱动器,但不给电机指令,看驱动器是否待机正常。第四步,给电机小占空比指令,看电机是否转动、方向是否正确。第五步,逐步加大占空比,观察电流和温度。
每一步都要记录数据,方便出问题时回溯。我习惯用一张检查表,每完成一步打个勾,没打勾的绝不进行下一步。
6.2 常见故障的排查链路
通信中断是最常见的故障。排查顺序:先查供电,用万用表测通信模块的电压;再查接线,看接插件是否松动、线序是否正确;然后查配置,波特率、终端电阻、报文ID是否匹配;最后查干扰,用示波器看波形是否干净。
电机不转或抖动,先查驱动器报错码,再查编码器反馈是否正常,然后查电机相线是否接错。如果编码器反馈正常但电机不转,可能是驱动器使能没打开或者电流限幅设得太低。
传感器数据跳变,先查供电纹波,再查安装是否松动,然后查通信是否丢包。IMU数据跳变还可能是振动太大,加减震垫试试。
6.3 实战中的经验教训
我踩过最大的坑是地线环路。主控和驱动器分别接地,两个接地点之间有电位差,导致通信误码率很高。后来改成单点接地,所有模块的地线汇到一个点,问题就解决了。
另一个坑是电源时序。Linux板子和STM32同时上电,Linux板子启动慢,STM32已经开始发指令了,Linux还没准备好,导致数据错乱。后来加了个电源时序控制,先给STM32上电,延时500ms再给Linux上电,就稳定了。
还有一次是电机干扰导致IMU数据漂移。电机相线和IMU信号线捆在一起走,电机换向时IMU数据就跳。后来把线分开走,IMU线加屏蔽层,问题消失。
这些经验在教科书上找不到,都是实际调试中一点点试出来的。硬件这东西,理论是一回事,实际是另一回事。多动手、多测量、多记录,比看多少资料都管用。