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 領域擦出什麼樣的火花?
讓我們拭目以待。
下面是視訊: