天才少年打造無人駕駛「自行車」,網友:特斯拉看了都流淚
自行車什么時候能實現(xiàn)「自己行走」呢?
自行車屬于欠驅動系統(tǒng),如果不進行控制就無法實現(xiàn)穩(wěn)定站立
最近,B站野生技術協(xié)會野生鋼鐵俠、「華為天才少年計劃」入選者、AI算法工程師稚暉君發(fā)布了一個「自動駕駛」自行車項目,自行車化身「自動行走」的車!
視頻講解詳細,網友直呼:666666
那么,稚暉君是如何打造自動駕駛「自行車」的呢?
第一步當然是最基本的讓車子跑起來,這就需要硬件改造,加入自動控制系統(tǒng)。
第二步要去掉駕駛員工具人,這就需要給車子搭載一整套傳感器組成的網絡,還需要一個算力足夠的芯片,而這個芯片也是整個自行車的「大腦」。
最后,在前面的硬件基礎上實現(xiàn)感知和控制算法,也就是給這臺車「注入靈魂」。

改造「死飛」
介紹完步驟,我們具體來看:
改造的對象是一輛「死飛」(Fixed Gear),結構簡單,沒有剎車,靠反向蹬車減速。
像鋼鐵俠造機器人那樣,這臺自動駕駛的自行車也需要用計算機輔助工具CAD來建模,得到一輛虛擬自行車,或者叫做自行車的數(shù)字孿生。
先給車子安裝兩個巨大的無刷電機。

以及一個控制龍頭的舵機。

傳感器方面搭載了一個RGBD的深度相機,加速度計和陀螺儀,以及一個激光雷達。

而電池使用的是6S的航模動力鋰電池,續(xù)航大約有2-3小時。
主控計算模塊被安置在了座椅的后方。

驅動結構方面,控制龍頭的旋轉舵機,前后方向的平衡靠兩個輪子的支撐和地面摩擦力。
那么左右平衡呢?當在騎行狀態(tài)下,可以靠著左右調節(jié)龍頭來獲得轉向加速度以此來抵消重力的影響。
那么靜止狀態(tài)下呢?
這就要靠角動量守恒,學過大學物理的同學都知道角動量守恒定律是自然界中最普遍的守恒定律之一。
當系統(tǒng)一個動力角動量發(fā)生變化的時候,就會將力矩傳遞給其他物體。所以這輛自行車中間的無刷電機,其實就是驅動一個金屬的動量輪。
實際上這也是在太空中衛(wèi)星在沒有摩擦力的情況下調整自身姿態(tài)的一樣的原理。
而后面的無刷電機就是靠摩擦力驅動后輪,讓車子整體前后運動。
關于零件,其中一部分零件可以用3D打印來制作,不過由于這次所需零件比較硬核,3D打印塑料的硬度和剛性都不太適合作為核心的結構件,因此用于固定電機的零件,稚暉君還是選擇用金屬來加工。
此處就要感嘆一下,有一個家里有廠,可以直接開模做零件的朋友也很重要!
安裝機器大腦
在所有的零件安裝完成后,就需要安裝電力系統(tǒng)了 ,也就是主控模塊和AI計算單元。
和人類一樣,將計算單元分為小腦和大腦,小腦包括低算力、低時延、運行實時系統(tǒng),大腦包括高算力、高時延、運行非實時操作系統(tǒng),用于感知、思考和決策。
而在這個項目中,小腦用的是HoloCubic里面的MCU,ESP32,大腦則應用了昇騰邊緣計算機芯片昇騰310 AI處理器,搭載的達芬奇core可以提供高達22TOPS的算力。

然后,稚暉君設計一個載板,將這兩個計算單元整合到一起,板子的結構為四層設計。
PCB打樣之后再手工焊接一下,這也是傳統(tǒng)藝能環(huán)節(jié)。
之后通過總線把大腦和小腦相連,在軟件上實現(xiàn)一套RPC框架,讓它們可以方便地通信。
其中小腦的框架基于FreeRtos,主要是實現(xiàn)傳感器的數(shù)據(jù)處理,以及電機的控制算法。
簡單分為三個任務:閉環(huán)控制線程、電機通信線程、以及屏幕刷新線程。
大腦的軟件框架要復雜很多。
除了基于昇騰的整個AI棧之外,還在系統(tǒng)中使用了一個做機器人常用的框架—— ROS,本質上是一個高性能的通信中間件。
到這里,電路方面已經有了腦子,還缺一個很重要的模塊,那就是心臟,也就是此前稚暉君設計的Ctrl-FOC驅動器。
作為Ctrl的二代作品,它的表現(xiàn)還是非常的猛的,在很小的體積之下, 實現(xiàn)了兩路共100安 的無刷電機FOC控制,同時還順便 驅動了前面60Kg的舵機,以及一個散熱風扇。
到這里自動駕駛自行車就整合完成了。
稚暉君簡單做了一個總結:
機器人是一個復雜的系統(tǒng),設計的時候,科學的方法是將機器人進行理論上的分析,也就是運用運動學和動力學的建模,通過數(shù)學模型知道哪些事情是相對 容易的哪些是復雜的。
例如,這輛車子的控制代碼中,有超過50個重要參數(shù):控制周期、反饋矩陣、PID增益、濾波器截止頻率等。
這些魔法數(shù)字要全部得到合理的設置,才能使系統(tǒng)進入穩(wěn)定且快速收斂的狀態(tài)。
而一些物理參數(shù)的設置,如電機功率應該選多大的?飛輪質量應該選多少?
重心的分布應該怎樣設置才比較合理?也都需要準確的數(shù)學模型進行指導才行。
在得到模型之后, 為了進一步驗證理論的準確性,一般要在計算機中進行仿真,這里稚暉君使用的是游戲引擎Unity——先在游戲引擎中構建一個虛擬的物理環(huán)境,賦給小車真實的的質量和重力,接著將控制算法的計算結果可視化呈現(xiàn)出來。
這一步驗證完成之后 ,還有一個sim2real的過程,也就是把仿真結果遷移到現(xiàn)實環(huán)境中。
其實這是一個很復雜的過程,因為現(xiàn)實中有更多的不確定性因素,很多情況下機器人往往在仿真中重拳出擊,而在現(xiàn)實中「唯唯諾諾」秒變智障,這里視頻中舉了一個DARPA參賽作品的例子。
同理,這臺車在調試的過程中也是非常艱辛的。
在這套系統(tǒng)中在姿態(tài)控制中,稚暉君使用的LQR控制器,方向控制使用了經典的PID算法,傳感器則是對加速度計和陀螺儀數(shù)據(jù)使用了二階的巴特沃斯濾波器之后再通過卡爾曼濾波器進行數(shù)據(jù)融合,最終得到車身姿態(tài)。
經過漫長的參數(shù)整定,終于得到了一臺成熟的「自動駕駛」自行車。
那么,自動駕駛效果到底如何呢?
靜態(tài)站立非常穩(wěn)!
戳它也一副「我自巋然不動」的樣子
突然在一側增加重物仍然能保持平衡
甚至可以來點雜技動作
前進、倒退也是一如既往的穩(wěn)
實現(xiàn)自動駕駛功能
至此,能動的基本目標已經達成。
接下來就是引入AI,實現(xiàn)「一定程度」的自動駕駛。
由于這個車子搭載了深度相機,在電腦上就可以看到車子WIFI實時的RGB圖傳畫面,再結合一些AI算法即可實現(xiàn)一些有趣的功能,比如說自動避障、運動識別跟隨。
另外,還有自動駕駛少不了的路徑規(guī)劃,此時車子搭載的激光雷達就排上了用場。
激光雷達通過測量激光發(fā)射到反射所需時間,再乘以光速就可以獲得目標的距離位置。

由此360°成像的結果可獲取攝像頭更加可靠的深度信息,將這些數(shù)據(jù)用于SLAM圖與路徑規(guī)劃,最后就可以實現(xiàn)讓自行車自主探索了。
稚暉君表示這只是「非常基礎」的自動駕駛設計,還有很多地方需要改進。
比如龍頭的傳統(tǒng)結構設計不太合理,如果換成諧波減速伺服電機直驅,那么行駛的穩(wěn)定性將大幅度提升。
另外受限于整車功率,這套系統(tǒng)目前還無法載人,就只能真·無人駕駛了,但是如果換成電動車可能就不一樣了。
稚暉君給這輛自動駕駛自行車取名XUAN(eXtremely Unnatural Auto-Navigation),同時也是「軒」的意思,因為「軒」在古代是車子的意思。
目前該項目已經在GitHub上開源,感興趣的朋友可以前往下載。

https://github.com/peng-zhihui?tab=repositories
并非第一輛「成精」的自行車
以后如果你在晚上看到一輛自行車「鬼鬼祟祟」,不要驚慌,那只不過是一輛「成精」的自行車。
而這其實并不是第一輛成精的自行車。
2019年8月1日,《自然》封面文章介紹了清華大學在通用人工智能上的新嘗試:一款名為「天機」的全新芯片架構,結合類腦計算和人工智能算法,展示了一輛由新型人工智能芯片驅動的自動駕駛自行車。
試驗中,無人自行車不僅可以識別語音指令、自動控制平衡,還能對前方行人進行探測和跟蹤,并自動避開障礙。
沒錯,不僅能自動避障,還在追趕目標,這速度也是相當快了。