带过机器人比赛队伍的人应该都懂,每年招新之后,硬件组新人问我的问题翻来覆去就那么几个:“这个电机扭矩到底该选多大?”“为什么发射出去的弹丸老是左右飘?”“我的板子一上电就冒烟,是不是电池选太大了?”这些问题靠口头回答一遍两遍可以,但问的人多了、赛季过了一半之后,连我自己都记不清哪句话是在什么场景下说的。于是我把硬件基础内容整理成了讲义,一步步迭代到现在的V0.2.1。这篇博文就来说说这份讲义沉淀了哪些核心内容——底盘、云台、供电、联调,以及我在整理过程中踩过的坑和总结出的经验。如果你也在带队伍或者准备入门Robomaster硬件,希望这份从实际故障里长出来的内容对你有用。
1. 为什么非要写一份“版本化”的硬件讲义:从口口相传到可继承的技术资产
1.1 新队员上手时的三个典型困境
赛季初,新队员接触硬件时会遇到几个非常典型的问题,几乎每年都一样。
第一个困境是“不敢动手”。很多新队员拿到一块陌生的电机驱动板,第一反应是翻数据手册,但数据手册全是英文和晦涩的术语,看半天不敢接线,怕把这个学期唯一的驱动板烧掉。结果就是板子在桌上吃灰,进度一动不动。
第二个困境是“选型靠猜”。问他要选多大的电机,他说“学长说这个型号够用了”;问他要选多大电流的稳压模块,他说“看别人都用这个”。这种“传话式选型”一旦缺少推理过程,换一届、换个车形就直接失效,因为整车重量、摩擦轮压力、负载类型全变了。
第三个困境是“坏了不知道从哪查”。底盘电机通电后咔咔响但不转,新人第一反应是电机坏了,拆下来换新的,结果换上去还是一样,最后发现是编码器AB相线序接反了。还有整车突然断电,查了半天以为是电池坏了,其实是一个XT60插头虚焊。没有排查思路的话,一个简单问题能熬三个通宵。
这三个困境的共同点,是队伍里缺少一份把“为什么选这个、坏了怎么查、装的时候注意什么”写清楚的材料。口头传授的问题在于,老人退役之后知识就断了一半。
1.2 讲义的定位:不是教科书,是“踩坑集+决策依据+规范清单”
我最初想把讲义写成一本迷你教科书,把电机原理、机械设计基础、电路理论都塞进去。写到三分之一就发现方向错了——新人没时间也没必要从麦克斯韦方程组开始学。真正的需求是:看完之后能上手画板子、装车、调车,遇到具体问题能翻到对应章节快速定位。
所以V0.2.1的定位很明确:以模块为单位组织内容,每个模块先给选型依据和关键参数,再给装配要点,最后是常见故障排查清单。它不是用来“学”的,而是用来“查”和“照着做”的。这就意味着每一条内容都必须对应真实发生过的问题,而不是从教材里抄来的原理。例如供电章节里专门写了“稳压模块输出端必须放一个至少470uF的电解电容”,就是因为当年我们出现过调摩擦轮时主控板突然重启的故障。
1.3 版本号里藏着的迭代逻辑
这个讲义能迭代到V0.2.1,靠的不是一次性写得多完整,而是每次赛季结束后的复盘。V0.1只有目录和框架,相当于把脑子里的知识列了个清单;V0.2补充了底盘和云台的选型计算、装配细节,加上了大量实物照片;V0.2.1这次主要是修正供电估算表、补充裁判系统联调流程,并把很多“经验之谈”改成了可执行的检查清单。
我建议任何技术团队都养成给文档做版本管理的习惯。不要因为觉得麻烦就只维护一份“最终版”,因为硬件设计是会有后续改动的,图纸、代码、讲义必须配套更新。每次更新时顺手在文档开头写一句“本次变更了哪些内容”,半年之后再回来看,那就是一条清晰的队伍成长轨迹。
2. 底盘模块:先把“跑得稳”这件事的硬件基础打牢
2.1 电机选型的四个关键参数:不是扭矩越大越好
底盘是机器人的地基,而底盘硬件的核心就是电机选型。很多队伍一上来就选大扭矩电机,结果装上车之后发现加速极快但根本刹不住,而且电池续航严重缩水。选型时真正要看的参数就四个:额定扭矩、空载转速、额定电压、重量。
以常见的四轮麦轮底盘为例,做一个粗略的估算就能定下方向。假设整车重量15kg,取地面摩擦系数近似为0.7,四个轮子分担,那么加速时需要的总牵引力是15×9.8×0.7,也就是约103N。如果轮子半径是0.05m,单个电机需要提供的扭矩大约就是103×0.05/4,约1.3N·m。但这是理论值,实际还要考虑加速余量、摩擦轮预压力以及坡道,所以我通常建议按2倍安全系数选型,也就是单电机额定扭矩在2.5N·m左右。
空载转速则决定了机器人的最高移动速度。假设我们希望最高速度达到3m/s,轮子半径0.05m,那么需要的空载转速约为3/(2×3.14×0.05),换算之后每分钟大概570转,考虑减速比和效率,选型时转速范围在500-600转左右比较合理。
这些计算并不复杂,但价值在于让队员明白选型依据是什么。当车重从15kg变成20kg时,可以重新算一遍,而不是拍脑袋改型号。V0.2.1的底盘章节里专门做了一个电机选型参数表,列了常用型号的扭矩、转速、电流和推荐使用场景,方便新人对比。
2.2 麦轮底盘的装配细节:装错一个轮子,整车运动就“精神分裂”
麦轮是整个比赛里最常用的底盘方案,但它的装配比看起来要讲究得多。麦轮分为A轮和B轮,两者的辊子倾斜方向相反。如果四个轮子的安装方式不对,会出现一个非常诡异的现象:你控制机器人前后移动,它却斜着飘;你想让它原地旋转,它却走出了一个圆弧。
正确的布置方式是:左前轮和右后轮使用同一型号,右前轮和左后轮使用另一型号,形成一个镜像对称关系。安装的时候还要注意辊子的方向必须朝内,也就是两个辊子形成的夹角朝向车体中心,这一点几乎每个新队员都会至少错一次,所以我干脆在讲义里画了一张俯视布置图,用箭头标出四个轮子的辊子朝向。
除了轮子本身,还要检查轮毂的同心度。麦轮压上负载之后,如果存在明显的跳动,往往是轮毂轴承压装不到位或者辊子磨损不一致导致的。硬件组每周应该例行检查一次麦轮状态,用手轮动轮子,听有没有异响,看有没有明显摆动。别小看这件事,底盘抖动带来的振动会直接传导到云台上的陀螺仪,让云台稳得像“喝了酒”。
2.3 编码器与PID调试前必做的三件硬件检查
很多队伍调底盘速度环PID时发现参数怎么调都震荡,于是反复调PID,其实问题根本不在算法上,而在硬件端。我在讲义里总结了三条调参前必须做的硬件检查。
第一,编码器线序。增量式编码器有A、B两相,A相接反会导致速度反馈为负,要么闭环后电机疯狂加速,要么直接不转。排查方法很简单:开环给一个小占空比,波特率调到9600,打印编码器数值,看正方向运动时数值是否为正。如果不是,把A、B两相线对调,或者通过代码取反。
第二,供电能力。底盘四个电机同时起步时瞬时电流非常大,如果电调或电池的瞬时输出能力不足,电压会被拉低,导致编码器供电不稳,反馈数据跳变,PID自然调不好。当时的现象是电机低速时转速波动很大,用示波器一测才发现驱动端电压在起步瞬间跌了2V。解决办法是电调供电线尽量短而粗,并增加一个大容量电容。
第三,机械装配。电机轴和轮子之间的联轴器如果锁紧螺钉松了,会出现在高速时正常、低速时一顿一顿的情况。这种问题非常隐蔽,因为松动的周期不稳定,看起来像随机干扰。检查方法是手动转动轮子,感受是否有轴向窜动,如果联轴器能轴向滑动,就是锁紧力矩不够。
这三条检查做完,再进PID调参,效率会高非常多。V0.2.1里我直接把这三步做成了“底盘调试前置检查表”,每次调车前先过一遍,基本能避免八成“伪软问题”。
3. 云台与发射机构:机械层面的精度,决定弹道的下限
3.1 云台重心:一个被无数队伍忽略的“慢性病”
云台有两根旋转轴,yaw轴负责水平旋转,pitch轴负责俯仰。机械设计时最容易被忽略但影响最大的是重心问题。如果云台重心不在旋转轴线上,电机就需要额外输出力矩去扛住重力产生的偏置力矩,结果是电机发热加剧,响应变慢,而且重心偏差带来的非线性摩擦力会让云台在小角度调整时频繁出现抖动。
检测重心是否合理有一个很简单的测试:装好云台后,让pitch轴处于自由状态,手动把云台转到任意角度,然后松手。如果云台能稳定停在任意角度,说明重心基本通过了旋转轴;如果它总是自己转回最低点,说明偏置力矩存在,需要配重或者重新布局。
配重的方法通常是在pitch轴后方加一个质量块,很多队伍喜欢把电池或部分电路板放在后侧作为“天然配重”。但要注意配重不是加上就完事,它同时增加了整个yaw轴的负载,所以需要在减重和平衡之间做取舍。另外一个容易被忽略的位置是陀螺仪的安装点。IMU越靠近pitch轴,云台转动时它受到的离心干扰就越小,自瞄时的姿态数据也会更干净。
3.2 摩擦轮与拨弹轮:发射机构的“硬伤”多半出在配合上
发射机构看起来简单,两个摩擦轮把弹丸挤着送出去,但真正做起来会发现弹丸乱飞的原因有一大半在机械装配上。
摩擦轮间距是最影响初速一致性的参数。间距过小,弹丸被挤压变形,导致每次发射的能量损耗不同;间距过大,弹丸和摩擦轮之间的摩擦力不足,初速偏低。这个间距的调整需要配合测速模块反复试,而不是按经验固定死。还有摩擦轮表面状态,时间长了会被弹丸磨得发亮,摩擦力下降,表现为初速越来越慢。所以每个比赛周都要检查摩擦轮表面,发现明显光滑就要更换或做表面处理。
拨弹轮和弹仓的配合则是卡弹问题的源头。弹丸在弹仓里流动性有限,拨弹轮的齿形和转速如果和弹仓倾角不匹配,会出现频繁卡弹或者拨空。从硬件角度来说,弹仓底面要做成漏斗状的斜坡,倾角一般不小于20度,让弹丸能靠重力自然滑向拨弹轮。拨弹轮和弹仓出口之间要留出足够的间隙,避免弹丸被卡在缝隙里。
我当时为了解决卡弹问题,尝试过很多弹仓结构方案,最后发现比起换拨盘齿数,先把弹仓内壁的摩擦力降下来更有效。在弹仓内壁贴一层低摩擦材料,卡弹率肉眼可见地下降,这个方案成本几乎为零,强烈建议新队伍先试。
3.3 弹道稳定性的硬件端优化:刚度、对中和线缆管理
发射机构装到云台上之后,弹道稳定性还受一个很少被人提到的因素影响——云台结构刚度。如果发射机构支架的钣金件偏薄,摩擦轮高速转动时会产生高频振动,这个振动会直接传给枪管,让弹丸出膛瞬间的方向变得随机。这时你会看到测速模块显示初速很稳定,但弹着点就是散一大圈。
解决方向是加强发射机构支架的横向刚度。具体做法是用铝合金CNC件替换关键受力位置的钣金件,或者在钣金件上增加翻边和加强筋。一个立竿见影的项目是检查枪管轴线是否和两个摩擦轮的对称面严格垂直,哪怕只有两三度的偏差,在弹丸飞行过程中也会被放大成明显的横向偏移。安装时用直角尺校准,锁紧后再复测一遍。
还有一个细节是云台上方往下走的线缆。yaw和pitch轴持续转动时,过孔处的线缆如果没有做约束,线缆会随着云台来回摆动,其重量和摆动惯性会直接作用在云台结构上,给姿态控制引入随机扰动。处理办法是在活动关节附近做一小段“弹簧弯”线缆缓冲,或者使用更软的硅胶线,并在结构件上固定好走线路径,确保线缆在云台运动范围的两端极限都不被拉紧。
4. 供电系统与线束管理:八成的“玄学故障”都出在电这一环
4.1 电源预算:把每一路电流都列出来,别等到电调过热才后悔
供电系统是我在V0.2.1里花最多精力改写的章节,因为过去一个赛季里我们遇到的离奇故障几乎都跟电有关。供电设计的第一步不是直接买电池和电调,而是把负载列一张电源预算表。
我们还是拿一台典型的步兵车来举例。底盘四个电机,堵转电流按每个15A算,但正常运行平均可能只有5A;云台两个电机,平均3A;摩擦轮两个,每个平均3A;拨弹电机加上舵机和主控,算3A;裁判系统功耗不高,但瞬时可能到1A。把这些加在一起,平均功耗大概在30A-35A,如果出现卡弹、底盘被障碍卡住等情况,瞬时电流会冲上50A以上。
按照电池选择原则,持续放电能力必须覆盖最大瞬时电流的1.2倍以上,也就是至少60A。如果用的是容量5000mAh、20C的电池,最大持续放电只有100A,理论上够用,但实际还要考虑电池放电曲线的压降以及使用一段时间后的内阻增大,所以我建议放电倍率留到30C以上更保险。
稳压方面,主控和传感器需要5V或者3.3V,云台上的摩擦轮电机和舵机需要12V或者更高电压。这里有个容易踩的坑:如果把摩擦轮电机和舵机挂在同一个12V稳压模块上,摩擦轮启动瞬间的大电流会让电压跌落,舵机就可能抖动甚至重启。解决方法是分路供电,一路给摩擦轮这样的连续大功率负载,一路给舵机这样的定位型负载,两路之间做好隔离。
4.2 线径、插头和接法:一个虚焊点能让整车“断魂”
供电系统的第二个大坑在线束和接头上。线径的选择很简单,但很多人会用错:持续10A电流的线路至少要使用AWG14线,也就是截面积2平方毫米左右;短时间大电流的瞬间,例如电池到电调这一段,建议直接上AWG10甚至更粗。
接头的选型也很有讲究。电池输出端普遍使用XT60,这个头最大能承受30A持续电流,如果整车瞬时电流超过40A,用XT60就要谨慎,因为触点会发热,时间长了塑料外壳会变形。电调到电机之间用香蕉头,但香蕉头有两种规格,4mm和6mm的机械互不兼容,买之前一定确认好。传感器和通信线则统一使用防反插的接口,避免新队员插反导致串口通信模块烧毁。
焊接是另一个重灾区。我拆过一辆“偶尔断电”的车,最后发现是XT60插头里的一根线只焊了一半,是虚焊。虚焊点在静态测试时接触良好,一旦车辆开动、线缆受力晃动,接触电阻就会瞬间变大,压降导致整个系统掉电重启。
我的建议是所有动力线焊接缝必须采用“先给线嘴上锡,再给端子镀锡,然后把两者融合在一起”的做法,焊完后用力拉一下线看能不能拽脱。V0.2.1里我把这条写成了必测项:所有动力线焊接完毕,必须逐根做拉力测试。
4.3 布线规范:标签、长度余量和“掷地有声”的捆扎
布线看起来是小事,但它直接决定了排查故障的效率。我在讲义里立了几条新队员必须遵守的规则:每条线两头都套上标签,标明起点、终点和参数;同一模块的线束用编织网套保护;走线路径避开运动部件和尖锐的金属边缘。
线缆长度要留余量,但不能过度。留余量是为了避免云台转动、底盘悬挂运动时线缆被拉断;但线缆太长又会在关节附近堆积,影响运动甚至被卷进皮带轮。所以我会让队员在布完线后实际操作整个运动范围,确认在所有极限位置线缆都不被拉紧、不被夹到。
捆扎也有讲究。线的走向最好沿着车架边缘做直角走线,用线夹固定,而不是一团线堆在电池旁边。这样做的另一个好处是散热——电池本身是发热大户,周围如果有堆积的线缆,热量散不出去,电池温升会更快。上一届我们的电池鼓包,拆开一看电池被厚厚一层线材和扎带裹在中间,几乎是“穿着棉袄跑比赛”。
5. 裁判系统接线与硬件联调:一次规范联调胜过五次熬夜排查
5.1 裁判系统的供电与通信链路
裁判系统是比赛中必须接入的官方硬件模块,很多队伍在连接它时出的问题都集中在供电和通信电平上。裁判系统主控需要稳定供电,而且它有自己的开关机逻辑,不能和整车电源完全混在一起,否则会出现“上电后裁判系统反复重启”的情况。
通信链路方面,机器人主控和裁判系统之间一般走串口,但要注意裁判系统的逻辑电平。不同主控板串口的电平标准不一样,有的是3.3V,有的是5V,混接轻则通信不稳定,表现为上报数据偶尔丢包,重则直接烧毁串口引脚。所以第一件事就是确认电平匹配,不匹配要加电平转换模块,而不是强行直接接。
装甲板、测速模块这类子模块走的是裁判系统自己的总线,接线时要注意防反,别在通电状态下插拔。如果装甲板有一个不亮,先检查这个模块的线序和供电引脚,而不是怀疑主控坏了。这一步看似简单,但在赛场上能救命——很多队伍上场前才发现一块装甲板不亮,手忙脚乱地拆车排查。
5.2 联调时的数据流检查清单
硬件联调的目的不是做出来的那一刻“看着能动”,而是确认整车的电源、信号、数据流全部符合设计预期。我在V0.2.1里加了一份联调检查清单,按顺序执行:
先不通电,用万用表蜂鸣挡测量电源正负之间是否有短路,检查所有电源模块的输出电压是否在标称范围内。然后只给主控上电,确认主控指示灯正常、能下载程序,串口能打印日志。接下来给传感器上电,逐个检查IMU数据、编码器数据、裁判系统数据是否能被主控正确读取。之后才轮到执行器,先开环给一个很小的占空比,确认电机转动方向、舵机角度范围是否正确。最后是闭环,依次启用速度环、位置环,并观察电流和温度。
这里最容易犯的错是跳步检查。很多队员觉得“都通电了、都转了”就是好了,直接上车开跑,结果某个电机正反转反导致车原地打转,回头还要花很久定位是代码问题还是接线问题。按照检查清单逐步确认的好处是,每一步都验证了明确的输入输出关系,之后只要按层排查,问题很快就能锁定在某一级。
5.3 上电顺序和硬件保护:让“冒烟”概率降到最低
最后一节,也是用“学费”换来的经验——上电顺序。整车电路里同时存在着主控低压系统和驱动高压系统时,如果直接一把总闸推上去,驱动系统的浪涌电流很可能把低压系统拉崩。好的做法是先给主控和传感器上电,等系统稳定后再给驱动系统上电。像摩擦轮这种惯性大的电机,上电瞬间会有反电动势冲击,我建议在驱动器和电池之间加一个缓启动电路,或者至少保证驱动器和主控分时上电。
电池防反接是必须做的。每个接电池的入口都应该有两重防反设计:物理上使用防反插结构,电气上在回路中串一个低压降二极管或者使用专用防反保护电路。这个保护看起来简单,但每年都有队伍因为换电池时正负极插反而烧掉一整块主控板。
硬件保护的另一个思路是大功率线上别省保险丝。摩擦轮电机堵转时电流会很大,如果没有保险丝或者电调限流,轻则烧电机,重则起火。我在讲义里给了一个建议:在电池正极端串联一个与线径匹配的慢熔保险管,电流超过设计峰值后先断掉保护整个系统,而不是烧在主控板上。排查时换一个保险管通常比维修烧毁的驱动板便宜得多。
6. V0.2.1迭代里我体会最深的三件事,也是给下一版的规划
6.1 文档里每次看似“无用”的修订,都在降低下一届的试错成本
这次从V0.2到V0.2.1,看起来只是改了供电估算表的几个数字、补充了几条联调检查清单,但每一处修订背后都是真实故障。比如供电表里摩擦轮的电流从“3A”修正为“堵转可能达10A,持续按5A算”,起因是决赛测试时摩擦轮卡弹导致电调过热保护,整车失去动力。如果没有这次修订,下一届还会按3A去选电调,还会在关键时刻掉链子。
我想说的是,技术文档的价值不在于它写得多漂亮,而在于它承不承载真实故障的经验。所以我也鼓励队员在开发记录里不断提问:“这个参数是从哪里来的?”“如果负载翻倍会怎样?”答案写不出来的地方,就是讲义下一版需要重点补充的地方。
6.2 模块化设计介入得越早,联调阶段的日子就越好过
整理讲义的过程中我越发觉得,一套好的硬件架构是“模块化”的。所谓模块化,不是把所有东西都拆成独立小盒子,而是让每个功能单元都有清晰的物理边界、独立的供电入口和独立的信号连接。这样排查的时候可以快速二分定位:把云台模块拔掉,只留底盘测;把发射机构断掉,只测云台。如果每一条线都是手工飞线互相缠绕的,那排查一个故障需要拆半小时螺丝。
所以V0.2.1里把“模块化布线”写进了规范章:底盘、云台、发射机构各自成组,使用统一的连接器面板,并且每组都有独立的供电开关和指示灯。这套做法实施以后,比赛现场换模块从“拆半辆车”变成了“拔两颗卡扣”。强烈建议新队伍从第一台车开始就坚持这个原则,后面会省非常多时间。
6.3 下一版讲义我想做的事
V1.0我还有几个想加的内容:一是针对每个模块做一张“故障排查树”,从现象出发一级级展开,让新人按照路径排查而不是瞎蒙;二是补充云台自瞄相关的硬件标定流程,因为这部分涉及相机、陀螺仪和云台机械零点的对齐,是硬件和算法交叉的地带,也是很多队伍依赖“老师傅手感”的地方;三是增加常用测试工装的设计建议,比如摩擦轮预压力测试架、底盘拉力测试台,这些工装自己做成本很低,但对参数标准化很有帮助。
写文档和做硬件一样,是一个不断迭代的过程。V0.2.1不是终点,只是把当前踩过的坑固定成了一个大家都能拿到的版本。对我个人来说,最大的收获是新队员开始学会在动手之前先查讲义、在选型时先算参数、在上电之前先检查插座。这意味着技术的传承不再依赖某几个“会修车的老队员”,而是变成了一套可以持续更新的团队资产。