編者按:本文來自微信公眾號「大數據文摘」(ID:BigDataDigest),作者:牛婉楊,36氪經授權發布。
還記得今年3月火遍b站的技術宅稚暉君嗎?他的一則自製迷你電視的視頻在b站有著397萬的播放量,更是超越眾多二次元視頻榮登全站排行榜第5名。
為什麼這則視頻這麼火?因為這個電視相當「硬核」,內行外行看了都覺得厲害的那種。
其實這是個長成電視模樣的迷你Linux電腦,連個滑鼠就能用!而且它還集人臉識別、語音助手等AI技術於一體,可以檢測到人臉,還能用語音喚醒,充當一個迷你的語音助手。
稚暉君,一位自稱野生鋼鐵俠的AI算法工程師,他自己也做過不少機器人項目。前不久,他帶著新的作品來了,他自製了一款FOC(Field-Oriented Control)驅動器。
這塊驅動器的厲害之處就在於,是稚暉君獨自一人耗時三個月製成,軟硬體通通由他一人開發。而且這塊驅動器有「機器人心臟」之稱,就連業界在製作機器人的時候也常會用到此方法來做驅動,比如MIT Mini Cheetah四足機器人的驅動單元中就用到了FOC製作的基礎部件。
不僅如此,這塊驅動器還被稚暉君稱為「全能開發板」,除了應用在機器人領域,還能用來模擬各種物理效果!
話不多說,一起來看看。
稚暉君表示,這個驅動器可以驅動市面上幾乎所有類型的無刷電機,而且可以添加很多自定義功能。
這就是驅動器的全貌~ 帶有CAN、USB、I2C等通信接口,單路最大驅動電流超過100A。除此之外,還有一塊小小的OLED屏幕,解析度為128x80。
迷你版雙通道無刷電機驅動器
這塊板子能幹嘛呢?它可以同時驅動兩個無刷電機和兩個舵機。有點難懂?來看下面的例子。
比如通過控制電機1(下方),電機0(上方)也能隨之驅動:
上面這個是最基礎的,稍微調整一下,還可以變成單向驅動的棘輪。如下圖所示,電機0可以跟隨電機1在順時針方向同步旋轉,而電機0卻無法逆時針迴轉,它只能做單向間歇運動。
看了這麼多,那這兩個電機有什麼用途?接下來就要展示這個板子最酷的成果了——模擬機器人零件之間的協作,展示一下機器人是怎麼動起來的。
現在這兩個電機彼此之間是沒有感應的,也就是說,當其中一方受到阻力,另一方是不知道的,顯然這樣是做不成機器人的。所以需要做一些調整,讓其中一方感受到力的反饋。
於是,稚暉君又在固件裡面新建了一個用戶APP,把電機1的位置同步到電機0,同時把電機0的力矩縮小5倍之後同步給電機1。從下圖中可以看到,電機1收到電機0的反饋後能明顯感到阻力~
所謂的機械戰甲、機械外骨骼就是人用肢體動作控制機器人外殼做出一模一樣的動作。看到稚暉君展示的效果,是不是覺得有內味兒了~
稚暉君做了這樣一個驅動器,明顯是要搞事情啊!沒錯,這塊板子就是稚暉君為後面的一個機器人項目準備的零件之一,這塊板子將作為「機器人的心臟」。他之前還開發了一款夸克核心版,將作為這個機器人項目的「大腦」。
左手「心臟」,右手「大腦」
讓我們小小的期待一下稚暉君的這個機器人項目吧~
話說回來,再看看稚暉君是怎麼做成這塊板子的吧。
稚暉君感嘆道,這是他在所有設計中,做的最曲折的一塊板子,花了將近3個月的時間。因為這個是電流達到幾十安的大功率器件,焊好的板子不能有一點bug,否則就廢掉了。
稚暉君做廢的板子~
一次次的失敗也讓稚暉君感到十分沮喪,但他並沒有放棄,經過軟硬體幾十次的修復,終於成功的做出了這款FOC矢量控制驅動器~
稚暉君表示,這款驅動器的硬體設計參考了VESC和ODrive,在此基礎上他進行了一些改進,也添加了很多功能。改進後的板子長這樣👇
迷你版雙通道無刷電機驅動器
別看板子這麼小,接口可真不少,帶有CAN、USB、I2C等通信接口,單路最大驅動電流超過100A。除此之外,還有一塊小小的OLED屏幕,解析度為128x80。
最重要的是,這款驅動器還帶有兩路可配置的PWM輸出,也就是說這個板子可以同時驅動兩個無刷電機和兩個舵機。
這塊板子只是稚暉君的其中一種設計,他還設計了一種分立疊板式的驅動器。分立式設計的好處就是可以把控制電路和驅動電路分離,如果想換成更大功率的電機,替換下面的驅動電路的可以了。
但他也表示,自己還是喜歡第一種的一體式設計。
稚暉君稱,這款驅動器的電路設計其實不算很複雜,其核心在於FOC算法和固件代碼的實現。
FOC(Field-Oriented Control),直譯是磁場定向控制,也被稱作矢量控制(VC,Vector Control),是目前無刷直流電機(BLDC)和永磁同步電機(PMSM)高效控制的最優方法之一。FOC旨在通過精確地控制磁場大小與方向,使得電機的運動轉矩平穩、噪聲小、效率高,並且具有高速的動態響應。
FOC算法可以對無刷電機進行力矩、速度和位置三個閉環控制,FOC驅動器可以驅動無刷電機在極地的轉速下保持力矩,而且超高轉速也完全能hold住。這也是無刷電機被廣泛用於機器人項目的重要原因。
更多關於FOC算法以及相關理論實現,可以在稚暉君的博客看到👇
http://pengzhihui.xyz/2020/07/02/foc/#more
最後,再來感受一下稚暉君口中的這塊「全能驅動器」。之所以全能,是因為除了機器人領域,力矩控制還可以用來模擬各種物理效果。
比如,可以將這個無刷電機模擬成各種旋鈕的效果!
可以把它調整為帶彈簧的旋鈕:
如果設置一定的阻尼,彈簧就可以這樣慢慢回彈:
還能變成多檔開關的效果:
最後,還可以讓它放飛自我:
看到這裡,有沒有覺得很酷呢~
在視頻最後,稚暉君表示在這個「機器人心臟」上還有一個腦洞,文摘菌也小小的期待一下,下期視頻見~