
1. 從零搭建一臺步兵機器人硬件選型的底層邏輯很多人第一次接觸RoboMaster這類機器人競賽最容易犯的錯誤就是拿到規(guī)則手冊就開始列物料清單看到別人用什么主控就跟著買什么結果裝到一半發(fā)現(xiàn)供電對不上、通信協(xié)議不兼容、結構件干涉。我在前幾年帶新人做步兵機器人時幾乎每一屆都會遇到同樣的問題底盤還沒跑起來光是在硬件選型上就反復推倒重來兩三次。硬件選型這件事本質上不是“買什么”的問題而是“先確定什么”的問題。一臺步兵機器人涉及的核心模塊無非幾塊主控與計算平臺、電機與驅動、電源與配電、傳感器、通信鏈路、結構承載。這些模塊之間存在嚴格的依賴關系選型順序錯了后面全是返工。1.1 先定功率預算再談其他一切我習慣把功率預算放在最前面因為整臺車的重量、電池容量、電機型號、甚至結構材料的選擇全都跟它掛鉤。步兵機器人典型配置是四輪麥輪底盤加一個撥彈機構底盤電機通常選無刷直流電機單顆峰值功率在100W到200W之間四顆加起來峰值可能到600W以上。撥彈電機功率小一些但也要留出50W左右的余量。電池方面主流選擇是6S鋰聚合物電池標稱電壓22.2V容量在5000mAh到8000mAh之間。這里有個容易忽略的點電池的持續(xù)放電倍率必須覆蓋整車的峰值電流。假設你的峰值功率是700W電池電壓按22.2V算峰值電流大約31.5A。如果電池是5000mAh容量放電倍率至少要到10C才能穩(wěn)定輸出50A。很多人只看容量不看倍率結果一加速就觸發(fā)低壓保護車直接趴窩。提示功率預算不是拍腦袋估的建議把每個電機的堵轉電流、額定電流、峰值電流都查清楚列一張表按最壞情況疊加。留20%到30%的余量是底線。1.2 主控平臺的選擇性能與生態(tài)的權衡主控這塊目前常見的方案有兩類一類是單片機方案比如STM32系列適合做實時控制另一類是嵌入式Linux方案比如樹莓派或類似的計算平臺適合跑視覺和決策。很多隊伍會選擇“雙主控”架構STM32負責電機閉環(huán)、傳感器采集和實時通信Linux板子負責視覺識別和上層決策兩者通過串口或CAN總線交換數(shù)據。選STM32的時候重點看幾個參數(shù)主頻、定時器數(shù)量、CAN控制器數(shù)量、串口數(shù)量、ADC通道數(shù)。以STM32F4系列為例主頻168MHz帶兩個CAN控制器對于四電機加撥彈電機的控制需求基本夠用。如果要做更復雜的運動控制比如麥輪解算加PID閉環(huán)F4的計算余量還算充裕。但如果你打算把視覺也放在同一顆芯片上那就不現(xiàn)實了算力差著數(shù)量級。Linux板子的選擇更看重接口豐富度和社區(qū)支持。需要關注的接口包括USB口數(shù)量接攝像頭和調試設備、串口數(shù)量和STM32通信、網口調試和日志導出、GPIO用于外設控制。另外供電電壓要匹配大多數(shù)Linux板子需要5V供電而電池是22.2V中間需要DC-DC降壓模塊。1.3 電機與驅動的匹配別讓驅動器成為瓶頸無刷電機和驅動器的匹配是另一個高頻踩坑點。電機的KV值、極對數(shù)、額定電流、峰值電流驅動器的持續(xù)電流、峰值電流、支持的最高電調頻率這些參數(shù)必須一一對應。我見過有人買了一個持續(xù)電流20A的驅動器去帶峰值電流40A的電機結果一上負載驅動器就過熱保護。驅動器選型時持續(xù)電流至少要是電機額定電流的1.5倍峰值電流要能覆蓋電機的堵轉電流。另外驅動器的通信接口要和主控匹配常見的有PWM、CAN、UART。CAN總線在機器人上用得比較多因為抗干擾能力強布線也簡單一根總線可以掛多個節(jié)點。注意驅動器固件版本不同支持的協(xié)議和參數(shù)范圍可能不一樣。批量采購前一定要拿樣品實測確認通信協(xié)議和主控兼容。1.4 結構件與材料重量和剛性的博弈結構件這塊碳纖維板是主流選擇密度低、剛性高但價格貴、加工難度大。玻纖板便宜一些但重量上去了。鋁合金件適合做承力結構比如電機座和云臺支架但重量也不輕。實際做的時候通常是碳纖維板和鋁合金件混用底盤大板用碳纖維電機座和受力節(jié)點用鋁合金。結構設計時重心盡量低、盡量靠近幾何中心這樣底盤運動更穩(wěn)定。麥輪布局的話四個輪子的中心距和軸距要匹配否則運動解算會出問題。撥彈機構的位置要考慮彈倉容量和供彈路徑別等到裝車了才發(fā)現(xiàn)彈道和云臺干涉。2. 供電與配電機器人穩(wěn)定運行的隱形基石供電系統(tǒng)是整臺機器人最容易出問題、也最容易被忽視的部分。我見過太多隊伍在調試時遇到莫名其妙的復位、通信中斷、傳感器數(shù)據跳變最后查來查去都是供電的問題。供電沒做好后面所有的調試都是在沙子上蓋樓。2.1 電池管理從選型到安全使用鋰聚合物電池的使用有幾個硬性規(guī)矩。第一絕對不能過放單節(jié)電壓低于3.0V就可能永久損壞低于2.5V基本就廢了。第二充電必須用平衡充每節(jié)電芯的電壓差控制在0.05V以內。第三電池鼓包、破損、摔過之后堅決不能再用了。實際使用中建議在電池輸出端加一個電壓檢測模塊實時監(jiān)測總電壓和單節(jié)電壓。如果主控能讀到電壓數(shù)據可以在低壓時觸發(fā)降功率或自動返航邏輯。另外電池的插頭要選質量好的XT60或XT90都行但別用劣質插頭接觸電阻大了之后發(fā)熱嚴重大電流下可能直接熔化。2.2 配電板設計別讓一根線毀掉整臺車配電板的作用是把電池的電分配到各個模塊同時提供過流保護和電壓轉換。設計配電板時幾個關鍵點第一主回路的走線寬度要夠按峰值電流算1mm線寬大約走1A到2A留足余量。第二每個支路加保險絲或自恢復保險絲防止單個模塊短路拖垮整條總線。第三大電流回路和小信號回路要分開走避免干擾。我自己的習慣是配電板上至少分出以下幾路電機驅動供電大電流、主控供電5V或3.3V、傳感器供電5V、通信模塊供電5V或3.3V。每一路都加濾波電容電機回路加個大電容緩沖防止電機啟動瞬間把電壓拉低導致主控復位。2.3 電源轉換DC-DC模塊的選型與布局從22.2V降到5V或3.3V需要DC-DC降壓模塊。選型時關注幾個參數(shù)輸入電壓范圍、輸出電壓、最大輸出電流、轉換效率、紋波。輸入電壓范圍要覆蓋電池的滿電電壓6S滿電是25.2V和截止電壓一般設到19.8V左右。輸出電流要按所有負載的峰值電流之和來算再留30%余量。布局上DC-DC模塊盡量靠近負載減少線損和干擾。如果多個模塊共用一個輸入輸入端加個共模電感能有效抑制相互干擾。輸出端加LC濾波紋波能壓到比較低的水平。實測下來紋波控制在50mV以內主控和傳感器的工作會穩(wěn)定很多。提示DC-DC模塊的散熱也要考慮尤其是大電流輸出的場景。模塊背面貼導熱墊固定在金屬結構件上能顯著降低溫升。3. 通信鏈路讓各個模塊說同一種語言機器人上的通信鏈路就像神經系統(tǒng)主控、驅動器、傳感器、計算平臺之間要實時交換數(shù)據。通信沒調好輕則數(shù)據丟包重則整個系統(tǒng)失控。我見過因為CAN總線終端電阻沒接導致電機指令時有時無車在原地抽搐的場面。3.1 CAN總線機器人內部通信的首選CAN總線在機器人上用得最多原因是抗干擾能力強、支持多節(jié)點、有優(yōu)先級仲裁。標準CAN的速率可以到1Mbps對于電機控制和傳感器數(shù)據采集來說夠用了。接線的時候CAN_H和CAN_L要雙絞終端接120歐姆電阻節(jié)點多了之后電阻要相應調整。實際調試時先用示波器看CAN_H和CAN_L的差分波形確認電平正常、沒有明顯反射。然后用CAN分析儀抓包看各個節(jié)點的報文ID和數(shù)據是否正確。如果某個節(jié)點一直不發(fā)數(shù)據先查供電再查波特率配置最后查終端電阻。3.2 串口通信簡單但容易出幺蛾子串口通信簡單直接但坑也不少。最常見的問題是電平不匹配STM32是3.3V電平有些模塊是5V電平直接連可能燒接口。中間加個電平轉換芯片或者選支持寬電壓的串口模塊。另一個問題是波特率誤差。兩個設備的波特率如果誤差超過2%到3%通信就會不穩(wěn)定。建議用外部晶振而不是內部RC振蕩器精度更高。數(shù)據幀格式也要統(tǒng)一起始位、數(shù)據位、校驗位、停止位兩邊必須一致。3.3 無線調試鏈路方便但不能依賴調試階段無線鏈路能省很多事不用每次都插拔線。但無線鏈路的穩(wěn)定性受環(huán)境影響大比賽現(xiàn)場2.4G頻段可能很擁擠。我的建議是無線只用于調試和日志查看關鍵控制指令還是走有線。如果一定要用無線做控制加個超時保護信號丟了自動進入安全狀態(tài)。4. 傳感器與執(zhí)行器感知與動作的閉環(huán)傳感器和執(zhí)行器是機器人跟物理世界交互的接口。傳感器選型要看量程、精度、響應頻率、接口類型。執(zhí)行器選型要看扭矩、轉速、控制精度、反饋方式。兩者要匹配否則要么感知不到要么動作不到位。4.1 姿態(tài)傳感器機器人的內耳IMU是機器人最核心的傳感器之一用來感知姿態(tài)和角速度。選型時關注零偏穩(wěn)定性、噪聲密度、量程。零偏穩(wěn)定性決定了姿態(tài)解算的長期漂移噪聲密度影響短期精度。對于步兵機器人量程選±500度/秒左右就夠用了太大精度差太小容易飽和。安裝位置很關鍵IMU要固定在剛性好的結構件上遠離電機和驅動器這些振動源。減震做得好數(shù)據質量能提升一大截。我試過用硅膠墊加配重塊的方式效果比硬連接好很多。4.2 電機反饋編碼器的分辨率與安裝電機閉環(huán)控制離不開編碼器。增量式編碼器便宜、接口簡單但斷電后位置丟失。絕對式編碼器貴一些但上電就知道位置。對于底盤電機增量式夠用因為每次上電可以重新校準。對于云臺和撥彈機構絕對式更方便。編碼器安裝時同心度很重要。偏心會導致讀數(shù)周期性波動影響控制精度。聯(lián)軸器選彈性聯(lián)軸器能補償一點安裝誤差。線纜要固定好別讓編碼器線跟著電機轉容易斷。4.3 撥彈機構從電機選型到卡彈處理撥彈機構是步兵機器人的特色模塊負責把彈丸從彈倉送到發(fā)射機構。撥彈電機通常選帶減速箱的直流電機扭矩要夠轉速不用太高??刂粕嫌梦恢瞄]環(huán)加電流限幅防止卡彈時燒電機。卡彈是常見問題處理方式有兩種一是檢測電流異常后反轉一下再正轉嘗試把卡住的彈丸擠過去二是加個振動電機卡彈時振一振。實測下來電流檢測加反轉的方式成功率比較高但要注意反轉角度別太大否則彈丸會掉出來。5. 結構設計與裝配從圖紙到實車的最后一公里結構設計決定了機器人的下限裝配質量決定了上限。圖紙畫得再好裝配不到位車跑起來也是松松垮垮。我見過太多設計很漂亮但裝出來一跑就散架的案例。5.1 底盤布局重心、軸距與輪距的平衡底盤布局的核心是重心位置。重心越低、越靠近幾何中心運動越穩(wěn)定。電池和主控這些重的模塊盡量放在底盤中間偏下的位置。軸距和輪距的比例影響轉向靈活性軸距短轉向快但高速穩(wěn)定性差軸距長則相反。步兵機器人一般軸距和輪距接近做成接近正方形的布局。麥輪的安裝角度很關鍵四個輪子的輥子方向必須正確否則運動解算全錯。裝完之后用手推一下看車能不能沿直線走如果走斜線說明某個輪子裝反了或者角度不對。5.2 走線與固定細節(jié)決定可靠性走線是裝配中最繁瑣但也最重要的環(huán)節(jié)。線纜要分類捆扎電源線和信號線分開走避免干擾。線纜長度留一點余量但別太長多余的線盤起來固定好。接插件要插緊最好用熱熔膠或扎帶做二次固定防止振動松脫。螺絲要加螺紋膠尤其是電機座和云臺這些振動大的地方。我吃過虧云臺螺絲沒打膠跑了幾分鐘就松了云臺直接歪掉。螺紋膠選中強度就行低強度容易松高強度拆不下來。5.3 防護與散熱別讓灰塵和溫度毀了比賽機器人底部和側面加防護板防止灰塵和彈丸碎屑進入內部。電機和驅動器加散熱片大電流場景下加風扇。實測下來驅動器溫度控制在60度以內比較安全超過80度就可能降頻或保護。注意散熱風扇的供電要獨立濾波否則風扇電機的噪聲會串到主控電源上導致通信異常。6. 上電調試與故障排查從冒煙到跑通第一次上電是最緊張的時刻搞不好就是一股青煙。我的習慣是上電前先用萬用表把各路電源對地阻抗測一遍確認沒有短路。然后分級上電先上主控再上傳感器最后上電機。每上一級觀察電流和溫度確認正常再繼續(xù)。6.1 分級上電流程與檢查清單分級上電的具體步驟第一步不接電池用穩(wěn)壓電源限流供電電流限制設到100mA看各路電壓是否正常。第二步接主控和傳感器看通信是否正常數(shù)據是否合理。第三步接電機驅動器但不給電機指令看驅動器是否待機正常。第四步給電機小占空比指令看電機是否轉動、方向是否正確。第五步逐步加大占空比觀察電流和溫度。每一步都要記錄數(shù)據方便出問題時回溯。我習慣用一張檢查表每完成一步打個勾沒打勾的絕不進行下一步。6.2 常見故障的排查鏈路通信中斷是最常見的故障。排查順序先查供電用萬用表測通信模塊的電壓再查接線看接插件是否松動、線序是否正確然后查配置波特率、終端電阻、報文ID是否匹配最后查干擾用示波器看波形是否干凈。電機不轉或抖動先查驅動器報錯碼再查編碼器反饋是否正常然后查電機相線是否接錯。如果編碼器反饋正常但電機不轉可能是驅動器使能沒打開或者電流限幅設得太低。傳感器數(shù)據跳變先查供電紋波再查安裝是否松動然后查通信是否丟包。IMU數(shù)據跳變還可能是振動太大加減震墊試試。6.3 實戰(zhàn)中的經驗教訓我踩過最大的坑是地線環(huán)路。主控和驅動器分別接地兩個接地點之間有電位差導致通信誤碼率很高。后來改成單點接地所有模塊的地線匯到一個點問題就解決了。另一個坑是電源時序。Linux板子和STM32同時上電Linux板子啟動慢STM32已經開始發(fā)指令了Linux還沒準備好導致數(shù)據錯亂。后來加了個電源時序控制先給STM32上電延時500ms再給Linux上電就穩(wěn)定了。還有一次是電機干擾導致IMU數(shù)據漂移。電機相線和IMU信號線捆在一起走電機換向時IMU數(shù)據就跳。后來把線分開走IMU線加屏蔽層問題消失。這些經驗在教科書上找不到都是實際調試中一點點試出來的。硬件這東西理論是一回事實際是另一回事。多動手、多測量、多記錄比看多少資料都管用。