整理 | 蘇宓
出品 | CSDN(ID:CSDNnews)
自動駕駛火出天際的時代,自行車能「金雞獨立」,還能「風(fēng)馳電掣」?近日,一位來自 B 站的硬核 up 主稚暉君帶著一輛改裝之后的自動駕駛自行車震撼亮相,他還發(fā)布了一個名為《我把自行車做成了自動駕駛!!》的視頻,短短幾天內(nèi),獲得 180w+ 的播放量,且曾達到全站排行榜第 1 名。與此同時,這條視頻還吸引了 B 站 CEO 陳睿的強勢圍觀,并贊其「重新定義“自行車”」。而要問是什么讓這位博主耗時四個月非要與一輛自行車“過不去”?是因為無聊?對自行車的熱愛?還是因為對技術(shù)的執(zhí)著?某一天,天空不作美,飄著雨,騎著車的稚暉君在轉(zhuǎn)彎的時候因為一個“漂移”,一不小心摔了一跤。在養(yǎng)傷的過程中,稚暉君自我調(diào)侃道,“作為一個掌握了技術(shù)密碼,并且永遠頭鐵的野生鋼鐵俠,我表示這事就不能這么過去了?!?/span>同時,受 2019 年清華大學(xué)依托精密儀器系的類腦計算研究中心施路平教授團隊發(fā)布的類腦計算芯片“天機芯”讓無人自行車落地的啟發(fā),在天空放晴之后,素有“科技教徒”、“野生鋼鐵俠”之稱的稚暉君決定要拯救一下這個糟糕的天氣,哦,不,是糟糕的自行車。于是,他開始著手了自動駕駛之自行車的設(shè)計與落地之路,畢竟“如果自己不能跑,憑什么叫它自行車!”所謂自動駕駛自行車,首先要實現(xiàn)自動,眾所周知,兩個輪子的自行車在沒有外力的支撐下,幾乎不能站穩(wěn),因此相較四輪的汽車,自動駕駛自行車首先需要解決車子“立”起來的問題,這就需要一套自動控制系統(tǒng);其次,需要將駕駛?cè)说拇嬖谛韵@需要靠傳感器網(wǎng)絡(luò)、AI 芯片來實現(xiàn);最后,要實現(xiàn)“駕駛”,即車子需要跑起來,其背后離不開軟件與算法的存在。為了實現(xiàn)以上,稚暉君主要從三個維度出發(fā),逐個擊破,開始改裝傳統(tǒng)的自行車。視頻中,稚暉君采用的是一款騎行愛好者頗為喜歡的自行車——死飛(Fixed Gear)自行車。這款車和普通的自行車有一定的區(qū)別,是一款單速車,其車輪和腳踏板一直是處于聯(lián)動狀態(tài)下,沒有剎車,如果想減速可以通過反向蹬車來實現(xiàn)。重構(gòu),首先要先搞清楚自己想法的可行性與理想狀態(tài),這就需要通過設(shè)計與模擬、驗證來實現(xiàn)。在此,稚暉君使用的是計算機輔助工具 CAD 實現(xiàn)建模工作,構(gòu)建了自行車的數(shù)字孿生,基于此,所有的改造工作都可以在計算機上完成。經(jīng)過多番斟酌之后,稚暉君將構(gòu)想落地到了圖紙上:1. 車頭處安裝一個控制龍頭的舵機,顧名思義,它是用來控制龍頭的,包括轉(zhuǎn)向等;傳感器方面搭載一個 RGBD 深度相機,可以用于識別前方物體,進行避障或跟隨;2. 自行車車桿處安裝一個加速度計、陀螺儀,另外還有一個激光雷達,主要用于自動駕駛的路徑規(guī)劃;3. 下方搭載一個 6S 航模動力鋰電池,續(xù)航可達 2-3 個小時;4. 座椅處前后安裝了 2 個無刷電機,它們的主要作用是讓兩輪的自行車在靜止且無外力支撐狀態(tài)下可以屹立不倒,其中運用到的原理是物理學(xué)、自然界普遍存在的基本定律之一——角動量守恒定律
,即當(dāng)系統(tǒng)中的一個物體角動量發(fā)生變化時,其會將力矩傳遞給其他物體。因此,在自行車中間的這個無刷電機就是用于驅(qū)動一個金屬的動量輪,而后面的無刷電機是用于靠摩擦力驅(qū)動后輪,讓車子整體前后運動;5.主控計算模塊安置在了座椅的后方,其中包含了 AI 計算單元等。針對零件部分,部分可以用 3D 打印制作而成,不過,有的零件對硬度和剛性要求較強,因此只能利用金屬加工而成。在加工好所有的零件之后,組裝好即可。接下來,進入了第二個大環(huán)節(jié)——電路系統(tǒng)設(shè)計與安裝,這其中包含了主控模塊,旨在讓車子跑起來。作為 AI 算法工程師的稚暉君,將電路系統(tǒng)的機器大腦分為兩大板塊:- 一個是用于控制身體的低算力、低時延、運行實時系統(tǒng)的小腦,這一項目中,稚暉君使用的是 MCU ESP32;
- 另一個是用于感知、思考和決策的高算力、高時延、運行非實時操作系統(tǒng)的大腦,這里稚暉君選擇的是華為面向邊緣場景的高能效高集成度 AI 處理器——昇騰310,其搭載的達芬奇 Core 可以提供最高 22TOPS 的AI 算力。
通過一個載板將上述的兩個計算單元整合到一起。在 PCB 打樣之后,基于通過手工焊接方式,將大腦和小腦通過總線相連。- 小腦的框架主要是基于 FreeRTOS 來實現(xiàn)傳感器的數(shù)據(jù)處理,以及電機的控制算法。其中簡單地劃分了三個任務(wù),一是閉環(huán)控制線程、二是電機通信線程、三是屏幕刷新線程。
- 大腦的軟件框架相對而言,復(fù)雜得多,除了基于昇騰的整個 AI 棧之外,在系統(tǒng)中還使用了機器人界常用的框架 ROS,其本質(zhì)上是一個高性能的通信中間件,后續(xù)的消息分發(fā)、業(yè)務(wù)串流、SLAM 等實現(xiàn)都是基于 ROS 開發(fā)的。
基于此,小腦和大腦均已準(zhǔn)備就緒。除了以上,稚暉君選用了其此前自制的 FOC 控制驅(qū)動器(https://www.bilibili.com/video/BV11V41127pq)作為電路的心臟,實現(xiàn)了兩路共 100A 的無刷電機 FOC 控制,同時還順便驅(qū)動了前面的 60 KG 舵機,以及一個散熱風(fēng)扇。
在視頻中,稚暉君透露,這個車子的控制代碼中,包含了控制周期、反饋矩陣、PID 增益、濾波器截止頻率、電機功率、飛輪質(zhì)量、重心分布設(shè)置等 50 個重要參數(shù),而這些參數(shù)都必須在合理的設(shè)置下,才能使得系統(tǒng)進入穩(wěn)定狀態(tài)。
因此,在運行調(diào)試之前,稚暉君借助 Unity 引擎工具實現(xiàn)了一個虛擬的物理環(huán)境,在賦給自行車正式的質(zhì)量、重力后,將控制算法的計算結(jié)果可視化顯示出來。其次,通過 Sim2Real,將仿真結(jié)果遷移到現(xiàn)實環(huán)境中。當(dāng)然在被諸多不定性因素包裹的現(xiàn)實世界中,其調(diào)試過程也并非想象中那么容易,正如稚暉君在視頻中細數(shù)的點滴,如:在姿態(tài)控制中使用的是 LQR 控制器,方向控制使用了經(jīng)典的 PID,傳感器則是對加速度計和陀螺儀數(shù)據(jù)使用了二階的巴特沃斯濾波器之后,再通過卡爾曼濾波進行數(shù)據(jù)融合,最終得到車身的姿態(tài)......幾經(jīng)“折騰”后,這個自行車不僅實現(xiàn)了基礎(chǔ)的自動駕駛功能,而且能夠自主探索環(huán)境。未來這個項目還有很大的提升空間,但當(dāng)前的成果足以讓人驚嘆。當(dāng)稚暉君將這款項目命名為——XUAN(extremely Unnatural Auto-Navigation)的同時,其宣布將項目的結(jié)構(gòu)設(shè)計全部開源。打開其個人網(wǎng)站,我們發(fā)現(xiàn)稚暉君雖然僅畢業(yè)三年,但是其在編程開發(fā)、硬件設(shè)計等層面早已身經(jīng)百戰(zhàn)。據(jù)悉,在學(xué)生時期,稚暉君從大二開始就參加了各種電子設(shè)計競賽,并獲得大量獎項。大三時,開始成立團隊和工作室,專注于嵌入式軟硬件和機器人項目的開發(fā)。研究生階段,組建創(chuàng)業(yè)團隊與公司,聚焦尖端機器人相關(guān)技術(shù)的研發(fā),也獲得過一些投資。在 2018 年從電子科技大學(xué)畢業(yè)后,稚暉君加入 OPPO 研究院 AI 實驗室,負責(zé)算法相關(guān)工作,后成為華為天才少年項目中的一員,目前擔(dān)任華為 AI 算法工程師。與此同時,他從 2017 年便開始在 B 站上開啟了【自制】之路,除了此次自制自動駕駛自行車之外,還自制過便攜顯示器、FOC 矢量控制驅(qū)動器、火星車、門禁卡等等,其背后所運用的知識廣度與寬度不容小覷,而稚暉君的技術(shù)能力也更令人佩服。相關(guān)資料:
視頻地址:https://www.bilibili.com/video/BV1fV411x72a
GitHub 項目開源地址:https://github.com/peng-zhihui/XUAN-Bike
個人網(wǎng)站:http://www.pengzhihui.xyz/
最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫、數(shù)據(jù)結(jié)構(gòu)等等。
獲取方式:點“在看”,關(guān)注公眾號并回復(fù) Java 領(lǐng)取,更多內(nèi)容陸續(xù)奉上。
文章有幫助的話,在看,轉(zhuǎn)發(fā)吧。
謝謝支持喲 (*^__^*)