首頁 > 科技

自己不能跑的車憑什麼叫自行車?硬核up主把自行車做成自動駕駛

2021-06-09 21:48:45

機器之心報道

編輯:張倩

一個人就是一個團隊,野生鋼鐵俠稚暉君歷時四個月打造了一輛自動駕駛自行車。

2016 年的愚人節,谷歌跟全世界開了一個玩笑。

在一段視訊中,他們展示了一個融合了自動駕駛技術的「真 · 自行車」。它不僅可以自己過馬路,還能接你下班、讓你坐在上面辦公。

不過,在被瘋傳了兩天之後,谷歌又跳出來親自闢謠,說這個視訊是他們 P 的,自行車旁邊其實是有人的:

對此,有網友嘲諷道:「有這 PS 的工夫,做個真的不香嗎?」

或許連谷歌都沒想到,五年後的今天,真有人幫他們把坑填了。

而這個填坑的人,就是 B 站科技區大名鼎鼎的稚暉君。

在投稿這個視訊之前,這位擁有 80 多萬粉絲的 up 主已經鴿了好幾個月了。當事人交代說,除了工作有億點點忙之外,雨天騎車摔跤也是一個很重要的原因。

這次摔跤不僅讓稚暉君領悟到了什麼叫「水太深,你把握不住」,還讓他下定決心設計一個自行車增穩裝置,如下圖:

啊,不好意思,放錯圖了,是這個:

這個改裝後的車有多穩呢?上點難度試試:

原地不動看上去確實挺穩重的,那讓它走兩步看看:

路上有障礙物怎麼辦?上自動駕駛唄:

好傢伙,自動駕駛都已經火到這種程度了嗎?以後年輕人的第一輛自行車都得上自動駕駛了嗎?

稚暉君介紹說,由於受限於整輛車的功率,目前這輛車還不能載人,不過換上電動車可能就不一樣了。

這個項目看上去複雜,其實做起來更加複雜,心靈手巧如稚暉君都花了四個月的時間(雖然大部分是週末)。為了方便大家學習,稚暉君還開源了項目的硬體部分,有興趣復現的同學可以去 GitHub 下載相關資料。(網友:我缺的是開源項目和興趣嗎?)

項目地址:https://github.com/peng-zhihui/XUAN-Bike

把自行車做成自動駕駛有多硬核?

在視訊中,稚暉君向我們介紹了他將自行車改裝成自動駕駛的大體思路。首先,為了讓自行車平穩地跑起來,他設計了一套複雜的自動控制系統;其次,為了去掉車上的工具人,他給車裝了一套感測器組成的感知網路以及算力足夠強大的晶片;最後,他還在這些硬體基礎上開發、實現了一套感知和控制演算法,俗稱「注入靈魂」。

要實現這套裝置,首先需要設計。在這一階段,稚暉君使用 CAD 進行建模,得到了一輛虛擬的「死飛」自行車,之後再慢慢往上新增細節,最終的改造方案如下:

如圖所示:驅動結構方面,車子安裝了兩個較大的無刷電機以及一個控制龍頭的舵機,用於驅動車子運動並保持靜止和運動時的平衡。感測器方面,車子搭載了一個 RGBD 的深度相機、加速計、陀螺儀以及一個鐳射雷達,用於探測周圍環境和車的狀況;動力方面,電池使用的是 6S 的航模動力鋰電池(續航 2~3 小時);控制方面,座椅的後方搭載了主控計算模組。

圖紙設計完成,接下來就是軟硬體的實現了。

為了獲取硬體部分所需的零件,稚暉君選擇了 3D 列印和機床加工相結合的方式(有個家裡有廠的朋友),前者適合列印強度要求不高的塑料零件,後者用來加工金屬零件。

車子的計算單元被分為低算力、低時延、運行實時系統的「小腦」和高算力、高時延、運行非實時系統的「大腦」。前者用於控制車身,用 ESP32 來實現;後者用於感知、思考和決策,用到了昇騰的邊緣計算晶片昇騰 310。

為了將兩部分整合到一起,稚暉君設計了一個四層的載板。PCB 打樣之後,他手工將其焊了出來。「大腦」和「小腦」是通過匯流排相連的。此外,他還在軟體上實現了一套 RPC 框架,讓它們可以方便地進行通訊。

「小腦」的框架是基於 FreeRTOS,主要是實現感測器的資料處理以及電機的控制演算法,還有一個小螢幕實時顯示一些參數:

「大腦」的軟體框架則要複雜很多,除了基於昇騰的整個 AI 棧之外,稚暉君還在系統中使用了 ROS 框架(機器人領域常用框架,集成了大量的工具、庫、協議,提供類似 OS 所提供的功能,簡化對機器人的控制),後面的訊息分發、業務串流、SLAM 等的實現都是基於 ROS 開發的。

「腦子」有了,電路還缺一個「心臟」,也就是驅動器。稚暉君曾經在去年 9 月份展示過他設計的一個超迷你 FOC 向量控制驅動器,那個項目就是為今天的自動駕駛自行車所準備的。雖然個頭還沒有巴掌大,但這個驅動器可以實現兩路共 100A 的無刷電機 FOC 控制,同時還驅動了前面的 60KG 舵機以及一個散熱風扇。

把以上結構零件和電路全部整合起來,一輛自動駕駛自行車就誕生了。不過,這個自行車目前還沒有「靈魂」,需要通過運動學、動力學建模等步驟來注入靈魂。稚暉君表示,這個車子的控制程式碼中有 50 多個重要參數,比如控制週期、反饋矩陣、PID 增益等。這些數字全部都要得到合理設定,才能使系統進入穩定且快速收斂的狀態。電機功率、飛輪質量等物理參數的設定則需要有準確的數學模型來指導。

在得到模型之後,為了進一步驗證模型的準確性,稚暉君使用了遊戲引擎 Unity 進行模擬,然後把模擬的結果遷移到現實環境。

經過漫長的參數調整之後,控制演算法終於收斂到了完美的效果。

至此,「能動」的目標就完成了,接下來就要引入自動駕駛了。

前面提到,這個自行車搭載了深度相機,再結合一些 AI 演算法,車子就可以實現自動避障、自動跟隨等功能。此外,車子搭載的鐳射雷達還可以用來完成路徑規劃,讓車子自主探索環境。

就這樣,稚暉君一個人完成了一個團隊的項目。不過,由於開發時間有限,這次項目的改造只是實現了非常基礎的自動駕駛功能。

稚暉君表示,這個項目其實是受到了清華類腦晶片項目的啟發。2019 年 8 月,清華的「天機」晶片登上了《Nature》雜誌的封面,搭載該晶片的自動駕駛自行車作為一個展示的 demo 出現在論文中。

如果你想了解更多的細節,可以參見稚暉君的完整視訊:

嗶哩嗶哩【自制】我把自行車做成了 自 動 駕 駛 !!【硬核】小程式

「野生鋼鐵俠」稚暉君

最後來重點介紹一下稚暉君本人。

稚暉君,2018 年研究生畢業於電子科技大學,曾就職於 OPPO 研究院 AI 實驗室,後通過「天才少年計劃」加入華為,職位是 AI 演算法工程師,目前正致力於自研深度學習推理框架與移動計算平臺的異構加速相關技術。他的個人稱號為「野生鋼鐵俠」,喜歡乾脆面和可樂,且保持著濃密的髮量。

在自行車項目之前,稚暉君還設計、製作過「B 站最強小電視」、「電子墨水屏 NFC 智慧門禁卡」等大家耳熟能詳的創意作品,有興趣的同學可以進入稚暉君主頁檢視。


IT145.com E-mail:sddin#qq.com