華為天才少年稚暉君自制硬萌機(jī)器人,開源 5 天,GitHub 收獲 2900 星...

這是「進(jìn)擊的Coder」的第 590?篇分享來源:新智元
“
閱讀本文大概需要 7 分鐘。
你們還記得上次那個「全棧自研」的給葡萄縫針的鋼鐵俠機(jī)械臂 Dummy 嗎??
?近 3 個月沒更的華為「天才少年」稚暉君帶著他的最新視頻來了!?
?雖然跳票了一段時間,但他還是來了。網(wǎng)友紛紛表示:「失蹤人口回歸」。?這次的項(xiàng)目叫 ElectronBot,是個支線項(xiàng)目。稚暉君表示,整體難度不高。?不如先看看整體效果如何??
「電子」機(jī)器人如何造?
?在開始項(xiàng)目之前,稚暉君簡單介紹了一下選擇這個項(xiàng)目的動機(jī)。他戲稱:「這是一個撿到一個鼠標(biāo)墊,想配一臺電腦的故事?!?/span>?眾所周知,稚暉君熱衷于收集各式各樣的「屏幕」。這次,他不知道從哪搞來了一塊圓形的 LCD 屏幕。?
?靈光乍現(xiàn),稚暉君的 DNA 動了。?簡單的手表、掛件已經(jīng)滿足不了他了。他打算做一個新穎的、「又萌又硬」的機(jī)器人。?他的靈感一部分來自于早些年很火的「Anki Vector」、豐田推出的對話機(jī)器人「Kirobo Mini」、索尼曾經(jīng)推出的音樂蛋「Rolly」,還有外形酷似阿童木的迷你機(jī)器人「Robi」等等。?
?但是稚暉君卻表示,這些機(jī)器人功能太單一,擴(kuò)展性和開放性還不強(qiáng)。?他打算自己設(shè)計(jì)一臺桌面型的迷你機(jī)器人。?上述的迷你機(jī)器人,受限于體積等因素,本身計(jì)算能力并不強(qiáng)。并且想要實(shí)現(xiàn)稍微智能點(diǎn)的交互,還得依賴手機(jī)的芯片。稚暉君銳評:「不夠優(yōu)雅,也不夠?qū)嵱??!?/span>?
?他想設(shè)計(jì)一款無需充電、隨時待機(jī)、有強(qiáng)大計(jì)算能力的機(jī)器人。?他想到了一個辦法,就是把這臺機(jī)器人設(shè)計(jì)成一臺電腦的配件。那么就可以獲得電腦上的應(yīng)用程序、擁有其強(qiáng)大的算力、還能時刻連著 USB 充著電。?有這等好事,機(jī)器人聽了都直點(diǎn)頭。?因?yàn)?LCD 屏幕是圓形的,一臺圓潤可愛科幻風(fēng)的機(jī)器人原型就新鮮出爐了。?
?稚暉君表示,這是他第一次嘗試用 T-Spline 曲面建模。成品機(jī)器人雙臂可動,有兩個自由度,身體和頭部各有一個自由度。?而且稚暉君這人能處,有 6 個舵機(jī)他真塞。這可不簡單,機(jī)身這么小,稚暉君想了很多有創(chuàng)意的傳動方案。?他希望機(jī)器人的手臂可以同時前后和左右旋轉(zhuǎn),而手臂的位置不足以塞下一個舵機(jī),因此只能把舵機(jī)都裝到肚子里去。?同時,稚暉君還希望手臂的兩個角度可以進(jìn)行反驅(qū),所以彈簧扭簧這種東西就只能 pass 了。?為了解決在狹小的機(jī)身中把動力從舵機(jī)傳遞到手臂,還要能實(shí)現(xiàn)動力雙向傳遞的問題,他設(shè)計(jì)了一種獨(dú)特的結(jié)構(gòu)。?手臂前后的運(yùn)動由一個舵機(jī)通過齒輪嚙合進(jìn)行傳動,而另一個正交方向的運(yùn)動,則由另一個舵機(jī),通過 T 型推桿進(jìn)行傳動。?
?這機(jī)器人別看小,肚子里一點(diǎn)空間都沒浪費(fèi),被稚暉君塞得滿滿的。真是強(qiáng)迫癥的福音啊。?而機(jī)器人的底座則使用鋁 CNC 進(jìn)行加工。?下一步,就該到電路設(shè)計(jì)環(huán)節(jié)了。?稚暉君使用了 Cortex-M4 內(nèi)核 MCU,STM32F4。用于驅(qū)動屏幕和控制舵機(jī)以及 USB 通信。?由于芯片本身的 USB 功能只支持全速或是低速的 USB,稚暉君在電路上添加了高速的 USB-PHY 芯片,成功將理論通信速率提高到了 400Mbps。而最后實(shí)際的最高通信速率也有 300Mbps。?
?這個速度遠(yuǎn)高于 UART、I^{2}C、SPI 等短總線。這也給后續(xù)的軟件開發(fā)提供了更多可能性。?主控板的設(shè)計(jì)相對就比較簡單了,兩層 PCB 就搞定了。這樣體積就做到了最小,和屏幕的面積保持了一致。?機(jī)器人的身體內(nèi)部也有一個傳感器的板子,包括一個攝像頭,還有一個紅外手勢傳感器。?還有一塊驅(qū)動板。因?yàn)槭忻嫔系亩鏅C(jī)只能接收 pwm 信號,進(jìn)行角度控制。?這就有問題了。?在這種情況下我們只能發(fā)送指令,讓舵機(jī)運(yùn)動,卻不能接收指令,從而知道它的運(yùn)動狀態(tài)。同時,想要讓舵機(jī)進(jìn)行反驅(qū),就必須能讓舵機(jī)隨時進(jìn)行輸出力矩的切換。?傳統(tǒng)舵機(jī)雖然做不到這一點(diǎn),卻難不倒心靈手巧智商高的稚暉君。他對市面上的傳統(tǒng) 3g 舵機(jī)魔改了一通,設(shè)計(jì)了一個迷你的舵機(jī)驅(qū)動器。?
?這個小驅(qū)動器支持?I^{2}C?總線通信,PID 閉環(huán)控制,位置回傳,還能設(shè)置最大的輸出力矩,斷電儲存參數(shù)等等。?這樣一來,原本 6 個普普通通的舵機(jī),被稚暉君巧手一點(diǎn),就成了 6 個熱乎乎的智能舵機(jī)。?到這里,所有的硬件該有的都有了,也就該組裝了。?
?看完稚暉君的組裝過程,小編不得不感嘆一句,誰說理工男是直男,只是他沒對你細(xì)膩而已。整個組裝過程一般人真搞不定。?稚暉君給自己設(shè)計(jì)的小機(jī)器人起名叫 Electron(電子)。Electron 通過 USB 線和計(jì)算機(jī)相連,作為計(jì)算機(jī)的配件。?換句話說,機(jī)器人叫「電子」,那通過 USB 連接的計(jì)算機(jī)就是「電子」的「腦子」,簡稱...?「電腦」?。?/span>?
?如果只是將其當(dāng)成一個播放器的話,這個機(jī)器人和之前提到的那些沒有太大區(qū)別。?畢竟,稚暉君設(shè)計(jì)它的初心就是想把它作為一個工具機(jī)器人兼電腦配件,讓其能發(fā)揮一些更加實(shí)用的功能。?他給電子開發(fā)了一套完整的、多層次的開放 SDK。?
?最上層是 Electron Studio,屬于純圖形化的交互。?如果想用自己寫的程序控制電子的話,稚暉君還提供了 Electron Player 庫。只通過極其簡單的代碼,便可鏈接和控制機(jī)器人,還可以設(shè)置播放內(nèi)容。?如果還想以更硬核的方式進(jìn)行二次開發(fā),稚暉君還提供了更底層的 Electron LowLevel 庫。?對此,稚暉君還做了一個范例,通過調(diào)節(jié)機(jī)器人右手實(shí)現(xiàn)控制電腦音量和亮度。?利用機(jī)器人機(jī)身搭載的攝像頭和紅外手持傳感器,開發(fā)了通過 AI 算法識別手勢的程序。?
?當(dāng)擺出不同手勢類型,就可以打開預(yù)先設(shè)定好的程序,或者切換桌面。?最有意思的一個應(yīng)用是,稚暉君基于 OpenPose 開發(fā)了一個程序,用于單目的人體關(guān)鍵點(diǎn)檢測。?如果有 2 臺機(jī)器人的話,就可以視頻了,而且你還可以通過手勢控制機(jī)器人運(yùn)動。?
?稚暉君還給這個應(yīng)用起了一個特別的名字「量子糾纏」。?最后,稚暉君還順便給電子做了一個收納盒,太精巧了。?
代碼開源
視頻末,稚暉君附上了軟硬件開源地址:https://github.com/peng-zhihui/ElectronBot?此前他做的可以自動駕駛的自行車、機(jī)器臂等等,每個項(xiàng)目都會耗費(fèi)很大精力,再加上稚暉君也有自己的本職工作。?

網(wǎng)友:重新定義「軟核」
?重新定義「軟核」?
?有網(wǎng)友希望下次稚暉君可以出一期「如何高效學(xué)習(xí)」的視頻。?
?參考資料:
?https://b23.tv/SYUguUw
End
崔慶才的新書《Python3網(wǎng)絡(luò)爬蟲開發(fā)實(shí)戰(zhàn)(第二版)》已經(jīng)正式上市了!書中詳細(xì)介紹了零基礎(chǔ)用 Python 開發(fā)爬蟲的各方面知識,同時相比第一版新增了 JavaScript 逆向、Android 逆向、異步爬蟲、深度學(xué)習(xí)、Kubernetes 相關(guān)內(nèi)容,?同時本書已經(jīng)獲得 Python 之父 Guido 的推薦,目前本書正在七折促銷中!
內(nèi)容介紹:《Python3網(wǎng)絡(luò)爬蟲開發(fā)實(shí)戰(zhàn)(第二版)》內(nèi)容介紹

掃碼購買
評論
圖片
表情
