前一篇介紹了 VoCare 機器人的硬體組成,今天就接著往下一步:讓機器人真的動起來。
目前 VoCare 使用 DC 馬達作為移動來源,所以最基本的任務,就是先讓系統可以控制:
DC 馬達本身的概念其實很簡單。
如果改變電流方向,馬達的旋轉方向也會跟著改變。
所以可以把控制概念簡化成:
正轉 → 前進
反轉 → 後退
停止 → 停止移動
如果機器人左右兩側各有馬達,就可以透過控制兩邊的旋轉方向來完成不同動作。
前進與後退
最基本的情況是兩側馬達一起動。
前進
左馬達:向前
右馬達:向前
→ 機器人前進
後退
左馬達:向後
右馬達:向後
→ 機器人後退
只要兩邊的方向一致,機器人就能直線移動。
要怎麼轉彎?
轉彎就需要讓左右兩側馬達產生不同的動作。
例如左轉可以設計成:
左馬達:停止或向後
右馬達:向前
→ 機器人向左轉
右轉則相反:
左馬達:向前
右馬達:停止或向後
→ 機器人向右轉
實際效果還會受到馬達速度、輪子大小以及機器人重量影響,所以後續需要再測試。
控制指令不要直接交給 AI
即使未來 VoCare 可以理解:
往前走一點。
AI 也不應該直接控制馬達。
比較安全的方式是:
使用者語音
↓
AI 理解需求
↓
轉換成標準指令
↓
控制模組確認
↓
馬達執行
例如 AI 只需要輸出:
MOVE_FORWARD
TURN_LEFT
STOP
真正要讓馬達轉多久、轉多快,則交給底層控制程式負責。
為什麼要保留 STOP?
在所有動作裡,我覺得 STOP 反而是最重要的指令之一。
因為實體機器人和一般軟體不同,如果程式發生錯誤,機器人可能還會繼續移動。
所以控制邏輯需要考慮:
指令執行時間限制
異常時停止
無法連線時停止
使用者要求停止時立即停止
讓機器人會動很重要,但能隨時停下來更重要。
先測試基本動作
在接上完整 AI 功能之前,我會先把基本移動分開測試。
測試單顆馬達
↓
測試左右馬達
↓
測試前進 / 後退
↓
測試左右轉
↓
測試停止
↓
再接上 VoCare 控制流程
這樣如果哪個動作出問題,比較容易找到原因。
Day 21 小結
VoCare 的機器人移動其實可以拆成兩個部分:
AI 負責理解「使用者想做什麼」,控制模組負責決定「馬達要怎麼動」。
把兩層分開之後,不只比較容易維護,也能避免 AI 的判斷直接影響硬體。