貢丸球形機器人

在新竹生活了幾年,總該去考一張貢丸駕駛執照了。 可是,沒有貢丸可以騎去考駕照,那該怎麼辦? 因此,822 將實現一個真正可以騎的貢丸交通工具。 我們打造一台以萬向輪驅動的機器車,並且試圖讓它平衡在瑜伽球上。 我們未來將會更換球體,並且增加載重,讓它成為真正能騎的一顆貢丸!

Source: Random picture from google search

本專案分為三大組:

我們希望這個機器人可以成為能夠走出 822 的亮點展示品,並且在過程中獲得關於自動控制以及系統整合的實務經驗。 目前我們正在嘗試讓機器車平衡在球體上,歡迎加入我們的計畫!

電源組

馬達驅動電路

機器車上驅動萬向輪的馬達是採用3D列印機常見的 NEMA 42 步進馬達。 目前是使用 DRV8825 步進馬達驅動 IC,以 1/4 步驅動的方式來讓馬達轉動。 不過,這個方法常會因為過熱,而沒辦法釋放馬達全部的潛力。 為了解決這個問題,我們正在努力設計與製作FOC驅動模組。 雖然 FOC(Field Orientation Control) 是針對無刷直流馬達的控制演算法,但是其實也可以用在步進馬達上。 FOC 的好處是流經馬達線圈的電流產生的磁場,有更大的比例是用在產生力矩,因此可以提高馬達驅動的效率。

Source: ST Microelectronics

FOC 馬達控制的第一步是測量出馬達的角度,並且將線圈電流轉換至旋轉座標系。 我們目前使用 AS5600 霍爾磁力感測器,搭配 Kalman Filter 做角度以及角速度的估計。 Kalman Filter 是一種自適應濾波器,可以將訊號中的雜訊去除,並且透過我們設計的物理模型估計某些沒有直接測量的物理量。 在以下的範例中,我們透過 Kalman Filter,由測量的角度去估計角速度。 我們也畫了直接用差分計算的角速度,可以看到因為我們已經操作在感測器的解析度極限附近,所以差分出來的雜訊非常大。 但是透過 Kalman Filter 去估計,我們可以得到一個相對來說很乾淨的角速度訊號,這對於接下來要做馬達的速度控制來說非常重要。

在新的 FOC 控制板上,我們將會改用 STM32G431 控制器,直接以 PWM 去控制 HT7K1401 H-bridge。 我們再用一個 opamp 組成的 current sense amplifier 去測量馬達 x, y 方向線圈電流。 座標轉換的過程中我們會用到正餘弦函數,而 STM32G431 的 CORDIC 加速器能夠讓我們快速的算出正餘弦的數值。 目前,測量到的角度會先經過浮點數 Kalman Filter 再進入 CORDIC。 CORDIC 輸入輸出的格式是 q1.15 定點數,而 AS5600 感測器提供的角度是 12-bit 整數,和 CORDIC 輸入格式只要做 bit shift 就可以吻合。 因此,我們正在嘗試能否將 Kalman Filter 改為整數計算,或是 CORDIC 輸入使用未經 Kalman Filter 的原始資料,加速整體的計算。

電池管理電路

目前機器車有兩組供電。 12V 鋰電池供應馬達,5V 行動電源供應車載電腦 (Raspberry Pi 5)。 在完成 FOC 馬達驅動之後,我們將整合兩個電池,並且提昇電壓至 24V。 如果想要一起學習電源管理電路設計的同學,歡迎加入電源組。

控制組

控制流程與設備

先將筆電設備連上 Raspberry Pi 自身的 WiFi 熱點,ssh 進入後即可在車載電腦上執行程式。 而要操作一台遙控貢丸,我們使用簡單好上手的 F710 遊戲搖桿(泰坦號同款手把)進行控制輸入。 進行 python 計算和處理後,車載電腦會以 SPI 通訊方式將三個輪子的轉速輸出給 STM32 模組。

逆向運動學與控制原理

有類比搖桿讀取到的 XY 方向資訊後,需要先反推三個輪子該如何分工,這裡使用逆運動學矩陣,算出三輪的理想速度後,為避免加速過猛而造成馬達失步,還需要檢查最大速度與加速度限制,才是我們最後輸出給下游的指令速度。

因為馬達並非真正徑向安裝,在地面測試時,觀察到會因為力矩不平衡而偏轉的現象,會需要藉由IMU測量的數據或是進階的物理模型修正。 想要學習感測器訊號處理/通訊協定/硬體系統調試的同學歡迎加入控制組。

計畫成員

組別 組長 成員
電源組 陳亮宇 鄒承恩、黃寀庭
機構組 蘇勻郁 何宇恆
控制組 孔祥有 林映君、邱品叡、彭守毅、郭一佑