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