電子發燒友網報道(文/李彎彎)近年來自動駕駛大爆發,不僅僅是各大廠商紛紛入局,網絡上也涌現出一批科技達人,設計各種類型的自動駕駛自行車,自動駕駛電動車……
最近B站一位UP主發了一條視頻,說自己之前以電動汽車為原型,設計了一輛自動駕駛兩輪車,車是設計出來了,結果卻因為意外把一條腿給炸沒了。
車子的核心原理是,基于角動量守恒理論設計的。在車的內部,有一個高速旋轉陀螺儀,速度可達到每分鐘上萬轉,當物體高速旋轉的時候,它的角動量很大,旋轉的軸就會一直穩定的指向一個方向,意思是說,想要更加穩定,就必須轉得足夠快,以此來保證兩輪車平衡。
之所以會出現意外,是因為他當時把轉數調太高,導致內部的陀螺儀炸開,飛出的鐵塊把腿給炸沒了。據他描述當時的場面慘不忍睹,機床上兩公分厚的鑄鐵都沒有抗住,炸了一個缺口,房屋墻壁也炸出來好多洞。
之前稚暉君設計過無人駕駛自行車,與他的自行車相比,這個以電動車為原型設計的無人駕駛兩輪車,可以載人。不過因為受傷的緣故,這位UP主說,之前設計的這個車子也就一直擱置下來,他格外提醒,大家在工作和做研究的時候,一定要注意安全。
真的是被這位UP主深深感動到,可以說是非常勵志了,在他的個性簽名寫的是“意外受傷截肢,很幸運的撿了條命,以后積極生活”,更有意思的是,他給自己設計了各種功能的假肢,果然沒有什么可以抵擋對科技創造的熱情。
如何設計一輛無人駕駛兩輪車
那么具體如何設計一輛兩輪無人駕駛車呢?從稚暉君視頻,可以詳細的了解到每一個設計步驟,他設計的是一輛無人駕駛自行車。
首先,與4個輪子的汽車不同,自行車是一個欠驅動系統,不進行控制的話,不僅不能跑,還站不穩,因此這里需要一套復雜的自動控制系統;
其次,為了把駕駛員工具人的存在性給去掉,需要給車子搭載一套傳感器組成的感知網絡,以及一個算力足夠強大的計算芯片作為大腦;
最后,就是在前面的硬件基礎上開發實現一套巧妙的感知和控制算法,俗稱注入靈魂。
第一步,硬件改造,讓車子跑起來
稚暉君改造的自行車是一輛死飛(Fixed Gear),它結構很簡單,沒有剎車,減速靠反向蹬車。首先是使用計算機輔助工具CAD來進行建模,一通操作之后得到一輛虛擬的自行車。
圖:用CAD建模得到的虛擬自行車
有了車體模型之后,所有的改造工作都可以在計算機上完成。
圖:在設計圖紙上改造完成的車子
稚暉君給車子安裝了兩個巨大的無刷電機,以及一個控制龍頭的舵機。傳感器方面,搭載了一個RGBD的深度相機,加速度計和陀螺儀,以及一個激光雷達。電池使用的是6S的航模動力鋰電池,續航大概有2-3個小時。主控計算模塊被安置在座椅的后方。
兩個無刷電機的作用是什么呢?自行車前后方的平衡靠的是兩個輪子,以及地面的摩擦力,而左右的平衡,在騎行的時候靠左右調節龍頭,來獲得轉向加速度,以此抵消重力的影響,而靜止狀態下怎么平衡呢,靠的是角動量守恒。
角動量守恒定律是自然界中最普遍的守恒定律之一,當系統中一個物體角動量發生變化的時候,就會將力矩傳遞給其他物體,中間的無刷電機,就是用于驅動的動量輪,后面的無刷電機,則是用于靠摩擦力驅動后輪,讓車子整體前后運動。
圖紙設計完之后,就是零件加工,其中一部分零件可以用3D打印制作,但由于做的東西功率比較硬核,3D打印塑料的硬度和剛性,都不太適合作為核心的結構件,所以用于固定電機的零件,使用的是金屬來加工。湊齊改造所需的所有零件,組裝完成就是下面的樣子。
我們在設計機器人時,會將計算系統分為低算力、低時延、運行實時系統的小腦,用于控制身體,以及高算力、高時延、運行非實時操作系統的大腦,用于感知、思考和決策。
在這個系統中,小腦使用的是MCU ESP32,大腦用的是昇騰310 AI處理器,昇騰310搭載達芬奇Core,可以提供最高22TOPS的AI算力。
圖:再設計了一個載板,把兩個計算單元整合到一起
大腦和小腦通過總線相連,并在軟件上實現一套RPC框架,讓它們可以方便地進行通信。
小腦的框架是基于FreeRTOS,主要是實現傳感器的數據處理,以及電機的控制算法,簡單地劃分了三個任務:閉環控制線程,電機通信線程,以及屏幕刷新線程。
大腦的軟件框架則要復雜很多,除了基于昇騰的整個AI棧之外,稚暉君還在系統中使用了ROS,這是機器人界常用的框架,它本質上是一個高性能的通信中間件,后面的消息分發、業務串流、SLAM等的實現都是基于ROS開發的。
大腦和小腦有了之后,電路方面還有一個很重要的模塊,那就是心臟,采用的是Ctrl-FOC驅動器,這個驅動器很厲害,雖然體積很小,卻實現了兩路共100A的無刷電機FOC控制,同時還順便驅動了前面的60KG舵機,以及一個散熱風扇。
圖:把結構零件和電路全部整合起來,就完成了
第三步,算法,給機器注入靈魂
稚暉君介紹,機器人是一個復雜的系統,設計的時候,科學的方法是首先對機器人進行理論上的分析,也就是運動學和動力學的建模,數學建模會告訴我們哪些事情是相對容易的,哪些是復雜的。
舉例來說,在這個車子的控制代碼中,有超過50個重要參數、控制周期、反饋矩陣、PID增益、濾波器截止頻率等,這些數字要全部得到合理設置,才能使系統進入穩定,且快速收斂的狀態。
而一些物理參數的設置,比如說,電機功率應該選多大?飛輪質量應該選多少?重心的分布怎么設置才比較合理等,也都需要有準確的數學模型來進行指導。
在得到模型之后,為了進一部驗證理論的準確性,一般會先在計算機中進行仿真,視頻中,稚暉君用的是一個游戲引擎Unity,在游戲引擎中構建一個虛擬的物理環境,賦給小車真實的質量和重力,然后將控制算法的計算結果可視化顯示出來。
驗證完成之后,還有一個sim2real的過程,就是把仿真的結果遷移到現實環境中,這個過程很復雜,因為現實中有很多的不確定性因素,很多情況下,機器人往往是在仿真中重拳出擊,然后在現實中唯唯諾諾,所以整個調試的過程也是異常艱辛。
這套系統,姿態控制使用的是LQR控制器,方向控制使用的是PID,傳感器則是對加速度計和陀螺儀,數據使用二階的巴特沃斯濾波器之后,再通過卡爾曼濾波進行數據融合,最終得到車身的姿態。經過漫長的參數整定之后,控制算法終于收斂了完美的效果,到這里,一輛成熟的自行車就完成了。
圖:一輛成熟的自行車
經過測試,車載的姿態保持性能非常好,受到一定沖擊,或者突然增加負載,也能穩定的保持平衡。
結合后輪電機的驅動能力,讓它走兩步也毫無壓力。至此,能動的基本目標已經達成了。
最后引入AI,實現一定程度的自動駕駛。這個自行車搭載了深度相機,可以在電腦上看到,車子WIFI實時的RGB圖,再結合一些AI算法,可以實現避障、讓它在行駛過程中,識別各種物體,進行跟隨等功能。
除此之外,自動駕駛中的一個很重要的技術,就是路徑規劃,車子搭載了激光雷達,激光雷達通過測量,激光發射到反射回來所消耗的時間,乘以光速就可以獲得目標的距離位置。
由此360度成像就能夠獲得比攝像頭更可靠的深度信息,將這些數據用于進行SLM圖與路徑規劃,最后就可以實現讓自行車進行自主探索環境了。
小結
稚暉君之前在設計完這輛無人駕駛自行車的時候,提到由于開發時間有限,本次項目只是實現了非常基礎的自動駕駛功能功能,還有很多可以改進的地方,比如,受限于整車的功率,這套系統目前無法實現載人,如果換成電動車,就不一樣了,而如今用無人駕駛電動車載人的設計也已經有人設計出來啦,給科技愛好者們的創造力點贊。
-
電動自行車
+關注
關注
4文章
285瀏覽量
28832 -
自行車
+關注
關注
0文章
112瀏覽量
24653 -
自動駕駛
+關注
關注
784文章
13918瀏覽量
166779 -
稚暉君
+關注
關注
6文章
35瀏覽量
5206
發布評論請先 登錄
相關推薦
評論