Bolt 四足機(jī)器人:結(jié)構(gòu)示意與核心代碼深度解析
一、系統(tǒng)結(jié)構(gòu)示意(文字版,可直接配合制圖)
1. 分層控制總體架構(gòu)
Bolt 采用典型的“非實(shí)時(shí)計(jì)算 + 實(shí)時(shí)控制 + 功率執(zhí)行”分層設(shè)計(jì),其核心思想是:
Linux 側(cè)負(fù)責(zé)算法與系統(tǒng)調(diào)度,MCU 側(cè)負(fù)責(zé)確定性實(shí)時(shí)控制,電機(jī)驅(qū)動(dòng)器負(fù)責(zé)高頻閉環(huán)。
結(jié)構(gòu)層級(jí)說(shuō)明如下:
ROS2 算法與應(yīng)用層
遙操作(Teleop)
步態(tài)規(guī)劃(Gait Planning)
逆運(yùn)動(dòng)學(xué)(IK Solver)
環(huán)境與定位傳感節(jié)點(diǎn)(氣體、溫濕度、氧氣、VOC、IMU、相機(jī)、雷達(dá)等)
數(shù)據(jù)回傳與監(jiān)控
高層控制層:Raspberry Pi
運(yùn)行 ROS2 Humble
計(jì)算足端軌跡與關(guān)節(jié)目標(biāo)(角度/速度)
傳感器數(shù)據(jù)融合
無(wú)線通信與遠(yuǎn)程控制
不直接驅(qū)動(dòng)電機(jī),僅輸出結(jié)構(gòu)化運(yùn)動(dòng)指令
實(shí)時(shí)控制層:Teensy 4.1
固定頻率執(zhí)行控制循環(huán)
接收關(guān)節(jié)目標(biāo)并施加安全約束
統(tǒng)一管理 12 個(gè)關(guān)節(jié)的控制邏輯
通過(guò) CAN 總線與電機(jī)驅(qū)動(dòng)器通信
電機(jī)控制層:MKS ODrive Mini
BLDC FOC 控制
電流/速度/位置閉環(huán)
編碼器反饋
多軸并行、確定性執(zhí)行
執(zhí)行機(jī)構(gòu)層
12 × BLDC 電機(jī)
9:1 減速箱
四條腿,每腿三自由度(Abduction / Hip / Knee)
2. 模塊化載荷與任務(wù)閉環(huán)
Bolt 并非單一運(yùn)動(dòng)平臺(tái),而是“移動(dòng)偵察系統(tǒng)”:
機(jī)動(dòng)能力:由四足結(jié)構(gòu) + 實(shí)時(shí)控制保障穩(wěn)定站立、行走與跨障。
信息采集:ROS2 傳感節(jié)點(diǎn)實(shí)時(shí)發(fā)布?xì)怏w濃度、環(huán)境參數(shù)、視覺/深度等數(shù)據(jù)。
決策支持:操作端可實(shí)時(shí)監(jiān)控環(huán)境風(fēng)險(xiǎn),在異常情況下觸發(fā)告警或停機(jī)。
二、實(shí)時(shí)控制代碼核心解析(Teensy 側(cè))
Bolt 的 Teensy 程序是整個(gè)系統(tǒng)的“實(shí)時(shí)中樞”。其設(shè)計(jì)重點(diǎn)不在于復(fù)雜算法,而在于 穩(wěn)定、可控、易擴(kuò)展。

1. 模塊化對(duì)象設(shè)計(jì)
代碼在初始化階段即完成關(guān)鍵功能模塊的封裝:
CAN 與 ODrive 控制對(duì)象
統(tǒng)一管理 12 個(gè)電機(jī)軸,通過(guò) CAN 總線發(fā)送位置/模式指令。遙控接收模塊(RC Receiver)
將多通道 PWM 信號(hào)映射為行走、轉(zhuǎn)向、模式切換等控制輸入。LCD 本地交互模塊
提供模式選擇、校準(zhǔn)提示與狀態(tài)確認(rèn),避免誤操作。逆運(yùn)動(dòng)學(xué)模塊(IK)
根據(jù)腿部幾何參數(shù),將足端 (x, y, z) 坐標(biāo)轉(zhuǎn)換為關(guān)節(jié)角度。
工程意義:
Teensy 主循環(huán)只做調(diào)度與安全控制,而非混雜通信、UI 與數(shù)學(xué)計(jì)算,結(jié)構(gòu)清晰,便于后期維護(hù)。
2. 標(biāo)定數(shù)據(jù):offset 與 dir 的關(guān)鍵作用
每條腿、每個(gè)關(guān)節(jié)都存在機(jī)械與裝配差異。代碼通過(guò)兩組數(shù)組解決這一現(xiàn)實(shí)問題:
offset(關(guān)節(jié)零位偏置)
將理論關(guān)節(jié)角對(duì)齊到實(shí)際機(jī)械零位。
不同腿、不同關(guān)節(jié)可獨(dú)立配置。
dir(方向系數(shù) ±1)
統(tǒng)一不同電機(jī)安裝方向?qū)е碌恼?fù)號(hào)差異。
確保“同一動(dòng)作指令”在四條腿上語(yǔ)義一致。
結(jié)論:
這兩張表是四足機(jī)器人“能否穩(wěn)定站起來(lái)”的關(guān)鍵,比算法本身更重要。
3. 從足端坐標(biāo)到電機(jī)位置:核心控制鏈
實(shí)時(shí)控制的核心邏輯可概括為四步:
逆運(yùn)動(dòng)學(xué)計(jì)算
輸入足端坐標(biāo),得到每個(gè)關(guān)節(jié)的理論角度(deg)。零位與方向修正
使用 offset 與 dir 將理論角度映射到實(shí)際機(jī)械坐標(biāo)系。單位換算
角度 → 轉(zhuǎn)數(shù)
乘以減速比(9:1)
得到電機(jī)軸的目標(biāo)位置
下發(fā)至 ODrive
每條腿 3 個(gè)軸
總計(jì) 12 軸并行更新
這種設(shè)計(jì)使得:
上層算法只關(guān)心“腿往哪放”;
下層驅(qū)動(dòng)只關(guān)心“電機(jī)轉(zhuǎn)多少”。
4. 步態(tài)生成方式:關(guān)鍵幀序列法
當(dāng)前實(shí)現(xiàn)采用 足端關(guān)鍵幀 + 時(shí)間延遲 的方式生成步態(tài):
抬腳 → 前擺 → 落腳 → 重心轉(zhuǎn)移
通過(guò)多次調(diào)用位置更新函數(shù)并插入延時(shí)實(shí)現(xiàn)節(jié)律
支持前進(jìn)、后退、左右平移與組合動(dòng)作
工程評(píng)價(jià):
優(yōu)點(diǎn):
邏輯直觀
便于調(diào)試與標(biāo)定
適合原型驗(yàn)證階段
局限:
依賴延時(shí)函數(shù),占用主循環(huán)
難以擴(kuò)展到高速或復(fù)雜地形
5. 遙控與狀態(tài)機(jī)設(shè)計(jì):面向真實(shí)場(chǎng)景的安全邏輯
程序并未直接“通電即動(dòng)”,而是引入明確的狀態(tài)機(jī):
待機(jī)狀態(tài):僅顯示信息,不使能電機(jī)
模式選擇:通過(guò)遙控通道切換功能
確認(rèn)機(jī)制:短按切換、長(zhǎng)按確認(rèn)
分腿校準(zhǔn):每次只校準(zhǔn)一條腿,降低風(fēng)險(xiǎn)
這種設(shè)計(jì)顯著降低了在狹小空間或調(diào)試階段的誤操作風(fēng)險(xiǎn),是工程化實(shí)現(xiàn)的重要體現(xiàn)。
6. Teleop(遙操作)模式的初始化邏輯
在進(jìn)入行走前,程序會(huì):
依次使能 12 個(gè)電機(jī)軸
統(tǒng)一配置控制模式(位置/速度環(huán))
按關(guān)節(jié)類型設(shè)置參數(shù)(而非逐軸單獨(dú)調(diào)參)
進(jìn)入持續(xù)遙控循環(huán),根據(jù)搖桿實(shí)時(shí)觸發(fā)步態(tài)
這種“集中初始化 + 統(tǒng)一參數(shù)模板”的方式,大幅提升了系統(tǒng)一致性和可維護(hù)性。
三、工程總結(jié)
Bolt 的價(jià)值并不只在于“四足會(huì)走”,而在于其 清晰的系統(tǒng)分層、務(wù)實(shí)的實(shí)時(shí)控制策略以及面向真實(shí)應(yīng)用的安全設(shè)計(jì):
Raspberry Pi 專注算法與通信
Teensy 專注確定性控制
ODrive 專注高性能電機(jī)閉環(huán)
標(biāo)定與狀態(tài)機(jī)保障系統(tǒng)可控
這一架構(gòu)為后續(xù)引入力控、更高級(jí)步態(tài)規(guī)劃或?qū)W習(xí)算法打下了扎實(shí)基礎(chǔ),也具備向工業(yè)級(jí)應(yīng)用演進(jìn)的潛力。













評(píng)論