1. 程式人生 > 資訊 >18 歲高中生 B 站 UP 主 200 天肝出偷懶機器人:可拎包,全場景跟隨,已獲百萬播放

18 歲高中生 B 站 UP 主 200 天肝出偷懶機器人:可拎包,全場景跟隨,已獲百萬播放

難以想象,這竟然是一個 18 歲高中生獨立做出來的機器人!

無論室內外,都能實現跟蹤:

就連在黑夜裡跟著走,也 No problem:

當坐騎也完全沒問題:

原理確定、外形設計、電路連線、程式碼編寫,所有工作耗時 200 天。

而且,全部由這位叫做凌十七的B站Up 主一人完成!

視訊上傳不到 3 天,就斬獲近百萬播放量。

本來,自主導演的機器人故事和硬核 DIY 機器人全流程已經足夠惹眼。

在視訊即將結束時,Up 主還掏出樂器,為這一專案獻曲一首,直接引爆了彈幕:

請問還有什麼是您不會的呢?

六邊形戰士!

寶藏男孩?!

從程式設計師,到導演,到音樂愛好者,多種身份無縫切換!

這到底是怎樣的一位 Up 主?

這又是怎樣的一個機器人?

從建模到製作,全自主設計

要做一個什麼樣的機器人呢?

凌十七給出了他心目中的標準:

鋼結構,塑料外殼。

能跟隨,能跑,能裝東西,能拉著走,關鍵…… 還能坐。

畫好了設計圖,18 歲的少年沉吟道:可行。

那就開始,第一步:建模!

大家來感受一下這個建模工作量:

拉近了看,整個機身的設計並非粗糙直白的幾何形狀,而是參考人體工學,從穩定性和實用性等方面進行了設計:

建模完成後,就迎來了下一個頭禿程度不輸建模的環節 ——

外殼製作。

讓模型從電腦來到現實裡,凌十七選用以水洗樹脂為材料進行 3D 建模。

這聽起來似乎不需要過多的操作,只要坐在機器前等著收成品就好:

但實際嘗試起來,問題可就太多了:

  • 使用水洗樹脂作為列印耗材可能會出現開裂問題

  • 在成品外殼過薄時會出現更嚴重的變形,進而導致無法安裝

  • 超大尺寸的零部件對於組裝精度的要求非常高

這中間沒有捷徑,只有一次次進行地嘗試、調整、再嘗試、再調整。

樣子成型了,接下來就是給零部件們上補土。

這道工序能在統一底色的同時,填補了打印表面出現的不平整。

然後就是外表製作的最後一步,刷漆:

現在,“很沒有技術含量,非常無聊且浪費時間”的外殼製作環節完成了。

再來看機器人的眼睛,凌十七所選用的二維鐳射雷達:

他一共使用了兩個雷達,並都根據通訊規則重寫了解包演算法。

好,接下來就是去製作機器人的心臟了!

凌十七選擇了微控制器作為主控裝置,來控制無刷電機和舵機,並進行遙控、驅動和跟隨速度方向的最終判斷:

然後將樹莓派作為跟蹤演算法輸出裝置,串列埠傳輸資料給微控制器:

這裡的微控制器和樹莓派都由一個統一的 10A 降壓模組供電。

但由於樹莓派 USB 可提供的電流非常小,而雷達又是直接從 USB 埠拉供電的,所以一開始常常會陷入無限重啟的狀態中。

因此,凌十七把雷達中的電路供電壓(VCC)單獨引到了 5V,解決了這個問題。

至於完整的跟蹤功能,凌十七一共用了 250 行程式碼來實現。

和外殼製作相比,程式碼書寫稱得上是“很有技術含量,非常不無聊且花費時間”了。

畢竟,在最後列出來的已解決的問題中,程式方面的例子是最多的:

要能在硬體支援範圍之外跟蹤目標,因此限制了跟蹤角度,超出後重新尋找目標;

要防止在丟失目標時亂跑,因此就通過程式使在探測到目標距離過長時停止跟蹤;

還要能夠及時與微控制器通訊,防止通訊過多丟失資料,以及非線性的轉向演算法……

而最終,設計圖裡所提到的功能,已經基本實現了。

除了開頭提到的功能外,儲存東西也完全沒問題:

站在自己這十分有說服力的雜亂地面上,凌十七這樣表示:

這是我這輩子目前開發過最難的專案。

機器人背後的故事

沒錯,從 0 到 1 打造一個機器人,對於機器人專業的學生來說也許不難,但對於高中生而言,需要自學從程式設計、電路到自動控制的所有技術知識。

軟體上,所有程式和軟硬體程式碼都需要自行除錯、優化,演算法上修過的 bug 可以說是“不計其數”:

硬體上,在對機身進行建模時,凌十七雖然專門學習了相關的設計方法:

但自己動手做的時候,僅僅是外殼設計這個“看起來沒啥技術含量”的工作,就耗費了相當長一段時間,壞過好幾個外殼:

可想而知,除了外殼,在建模和設計上還有多少需要更換的零部件。

凌十七自己也表示,最後產出的零件垃圾甚至“能再造一臺機器人”出來:

後來好不容易做好後,機器人又損壞了一次。

2020 年 8 月開始設計、10 月製作,但在 12 月份進行戶外拍攝的時候,這個機器人的“頭部”意外掉了。

由於脖子連線處的舵機很不牢靠,最初只是搭在機器人身上,很容易取下來,導致雖然在家中實驗時沒出現任何問題,但在不平坦的路面上卻無法 hold 住,最終壞了。

瞭解這一情況後,凌十七改進了機器人結構,全部採用螺絲固定,就沒有再出現類似的問題。

但也正是因為這件事,專案被迫中止了一段時間,後來拆除接近 1/3 的機器人外殼,重新制作後,才於 2021 年 4 月左右完成。

當然,也並非只調整了外殼,這次改裝也對軟體進行了重新升級。

雷達上,加入了三四個演算法,主要是為了優化通訊和雷達的無效資料,還有幾個是為了排除跟蹤時可能出現的誤導、或是某些嚴重影響執行效果的情況;

驅動演算法上,也經過了引數調整優化,但這一操作並不規範,基本是在試錯,如果進行更正式的專案的話,可能會算好一個正規的模型,再進行程式設計。

所有演算法都是凌十七自行編寫的,沒有參考其他演算法:

畢竟沒見過類似產品,而且在確定原理的時候,腦子裡就已經想好邏輯了,所以也沒想過要找別人的程式碼。

經過 9 個月打磨的機器人,從各方面來說都較為優秀,不過對於凌十七來說,還是有可以繼續改進的地方。

一方面,機器人並不能做出表情,所有視訊中的表情都是後期處理上去的,也就是特效製作。

凌十七表示,原本是想外包特效,結果發現外包能力不足,做出來的特效太拉垮…… 所以就自己學著去做了,效果確實要更好。

當然,直接顯示錶情也是可以做到的,只是“目前市面上已經有很成熟的演算法了”,因此他沒有考慮作為機器人的“亮點”來完成。

另一方面,從機器人本身來說,物理穩定性不好;而避障演算法所採用的兩代鐳射雷達,也都受光照影響,效果與預期有差距,戶外的表現不夠好。

如果有時間再優化的話,凌十七打算將兩個鐳射雷達和攝像頭進行結合,會讓戶外跟蹤更加穩定。

至於為什麼要做這個機器人?

凌十七表示,最初是想找個人幫忙拎裝置(如錄視訊所用的三腳架、攝像機),後來意識到,這件事可以“不必由人來完成”。

要是能做個自動拉貨車,還能當代駕,豈不美哉。

雖然後期確實投入了巨大的精力,但從完成度來看,效果還是非常不錯的。

而機器人小 D(Devil)的名字,則來源於一首名為《Devil Swing (Remix)》的歌。

也正是因為這個專案,讓凌十七決心從電子工程轉專業(此前已被佐治亞理工學院錄取),去學習 AI 和機器人。

△原本想要學習的專業

在接受量子位採訪中,凌十七表示,自己通過這個專案意識到,以後可能是演算法的天下,所以想把重心更多地放到程式設計上。

“想轉專業去搞 AI & 機器人”

凌十七來自上海師範大學附屬中學(上師大附中),前 16 年也與其他中學生一樣,“基本在應對考試中度過”。

高一,凌十七通過競賽接觸到機器人,從此打開了新世界的大門。

視訊中可見,除了在“機器人綜合技能”和“電子控制專案”比賽中獲得一等獎以外,凌十七還發明瞭一種“鐳射定位特殊用途使用的遙控裝置”,並斬獲多個獎項。

凌十七表示,雖然這些比賽“含金量不高”,但成功激起了他對機器人的興趣:

當我第一次發現,我能讓自己以外的事物按照我的意志執行的時候,何其感動,何其震撼,就感覺一切從未如此充滿意義。

機器人就是照亮我人生道路的第一道光。

他於 2019 年開始上傳視訊,並於 2020 年初製作了一把小刀,帶電路、能發光的那種,播放量一下子從幾萬衝上了一百多萬:

接下來的一個視訊中,這把小刀直接進化成了能噴火、變色的光劍,播放量達到了 200W+,也坐實了“手工 UP 主”的名聲:

在那之後,機器人小 D 一打造就是 9 個月,轉眼來到 2021 年。

期間,凌十七一度有過想要放棄的念頭,“感覺再搞下去自己就要不正常了”,但最終還是堅持了下來。

也正是在這個專案中,他找到了自己未來前進的方向。

對於這個機器人,不少大 V 激情轉發:

B站官方也熱烈鼓勵:

值得一提的是,凌十七的技能點並不僅限於機器人、導演和彈琴,據他的高中同學表示,畫畫、編曲等等技能點也已經點亮。

對於未來,凌十七表示,更有可能去創業,做產品或是搞創作。如果投身科研的話,大概率會想要研究通用人工智慧(AGI)方向。

雖然這個機器人還沒有涉及 AI 方向的演算法,不過凌十七表示,已經打算開始從 CV 學起,做一些相關的 AI 小專案,例如物體、形狀識別等演算法。

他會在 AI 領域擦出什麼樣的火花?

讓我們拭目以待。

下面是視訊: