openCV 單目測距demo_閉環控制

量子位

吃完的螃蟹殼是幹垃圾還是濕垃圾?

或者,裹上一層黑科技,讓它變身「火星車」,饞哭隔壁家小孩。

openCV 單目測距demo_閉環控制_02

更硬核的是,這樣一台螃蟹火星車,並非只是一個模型。

它支持 WiFi 無線圖傳、控制,手指在手機上移向哪裏,車就跟着往哪裏走。

openCV 單目測距demo_公眾號_03

能實現激光測距,限定目標距離:

openCV 單目測距demo_閉環控制_04

還有慣性傳感單元:

openCV 單目測距demo_閉環控制_05

甚至還有 AI 功能加持,能實現目標跟蹤。這,是用「臉」在開車??

openCV 單目測距demo_openCV 單目測距demo_06

這味兒,熟悉的讀者盆友可能已經猜到了。

沒錯,策劃、採購、烹飪、食用、電路、模型、加工、軟件、算法一條龍,全是 B 站 up 主稚暉君一個人搞定的,且只花了一個週末就完成了。

就是那個開腦洞一直可以的網紅技術宅「稚暉君」,本名彭志輝,目前是一名 CV 算法工程師。

自稱「野生鋼鐵俠」,這次又做火星車,稚暉君説了,馬斯克是他的偶像。

他希望自己能成為馬斯克那樣既腳踏實地又仰望星空的人。當然,做這個火星車只是一個象徵性 DIY,跟真實的火星車當然不能相提並論。

目前,該「螃蟹」已開源。B 站饞哭的小夥伴已經忍不住復現了起來。

openCV 單目測距demo_閉環控制_07

在跟着做了,目前到了食用這一步。

不會焊板子的廚師不是好算法工程師

從畫 PCB 板到寫前端後端代碼,對「真・全棧」稚暉君而言已經是駕輕就熟。

這一次,他甚至涉足了美食區。

openCV 單目測距demo_目標跟蹤_08

openCV 單目測距demo_openCV 單目測距demo_09

openCV 單目測距demo_目標跟蹤_10

這樣,就得到了一個金黃的螃蟹殼。

接下來,還是把目光放回知識區。

選芯片,繪製 PCB 板,就像我吃螃蟹一樣一氣呵成。

openCV 單目測距demo_目標跟蹤_11

然後,給 PCB 板刷上焊錫膏,貼好芯片、電阻、電容等元器件,放到恆温加熱台上煎至兩面金黃,完成迴流焊。

openCV 單目測距demo_#單目測距代碼_12

接着祭出 3D 打印機,製作火星車輪子的部分。

openCV 單目測距demo_#單目測距代碼_13

裝上攝像頭,把電路板嵌進螃蟹殼,再給螃蟹腿們按上輪子,裝好太陽能電池板。

一個小遺憾是,這裏的「太陽能電池板」並不是真的單晶硅。

稚暉君表示:本來計劃用真的單晶硅來做,但是因為整機尺寸很小,這個面積下發電功率實際上是不太夠的,所以最後沒有采用。

總之,一套令人眼花繚亂的操作之下,螃蟹君完成「虛弱肉身,機械飛昇」,成功進化成了一台迷你火星車!

openCV 單目測距demo_openCV 單目測距demo_14

而這樣一台「螃蟹火星車」,絕不是中看不中用。

稚暉君自己也説,其實項目硬件部分不復雜,最有意思的是軟件和算法。

△稚暉君開發的 CV 算法部署框架

目前,通過將圖像、IMU、ToF 等數據傳輸到手機,將手機作為算力中心運行各種算法,螃蟹火星車能夠實現以下幾大功能。

WiFi 無線圖傳和控制

使用系統級封裝(SIP)的 ESP32 作為主控。ESP32 是一種低成本,低功耗的單片機微控制器,集成了 Wi-Fi 和雙模藍牙。

因此,火星車能支持 2.4GHz WiFi 和低功耗藍牙。並能通過 Socket 方式與手機進行通信,實現外網遠程圖傳和控制。

openCV 單目測距demo_#單目測距代碼_15

目標跟蹤

以手機作為算力中心,利用 MTCNN 人臉檢測模型和 KCF 目標跟蹤算法來實現人臉跟蹤,並用 PID 閉環控制小車跟隨。

openCV 單目測距demo_公眾號_16

激光測距

激光測距的實現原理跟手機上的「測距儀」相似,採用的是 ToF 傳感器測距。

稚暉君還通過 PID 閉環控制,實現了限定目標距離。在限定距離下,手動,小車也會跟着移動。

openCV 單目測距demo_openCV 單目測距demo_17

IMU(慣性傳感單元)

採用 MPU6050 傳感器,I2C 接口。

接下來,稚暉君計劃通過 IMU 和 ToF 實現簡化的 SLAM 算法,給螃蟹火星車加入自主導航系統。

ToF 可以用於避障,而通過小車搭載的 RGB 相機和 IMU,可以用來實現簡單的單目 VSLAM。

稚暉君表示,他以前做過一點 ORB-SLAM 相關的工作,所以打算把這部分往螃蟹身上移植。

那麼為什麼想到做這個項目的呢?

稚暉君表示:

最主要的原因還是看到我國首個火星探測器發射成功很激動,有感而做,自己小時候的理想是當天文學家。

本來是想做一個微型電推涵道火箭的,時間的關係來不及,也算挖個坑以後來填吧。

很久沒有更新視頻了,水一期。

真・賽博螃克

看完之後,是不是也覺得自己能做到「食用」這步。還有對螃蟹過敏的網友表示,我只能做到「拍攝」了。

當然,網友們還給這個「螃蟹號火星車」取了一些有趣的綽號。

什麼「機械螃蟹」、「火星登蟹車」…… 以及有網友表示,這是真・「賽博螃克」呀!

openCV 單目測距demo_#單目測距代碼_18

不過,也有網友給出「差評」:這螃蟹不是橫着走的,差評!

openCV 單目測距demo_目標跟蹤_08

openCV 單目測距demo_openCV 單目測距demo_20

還有今年的高考畢業生熱切詢問道:想幹這個需要學什麼專業?

openCV 單目測距demo_openCV 單目測距demo_21

網友還給他支招,前面那位,可以瞭解一下機械電子工程。還有自動化、通信工程專業的同學紛紛路過……

openCV 單目測距demo_閉環控制_22

不過還是有網友表示,這已經是跨專業了,沒有哪個專業學這麼多東西的,或者説邊學自己專業,再自學其他專業。

既然是火星車,是不是也要像天問一號那樣七個月之後到達火星附近呢?

於是,就有網友預測:暗示七個月之後再更新。

openCV 單目測距demo_閉環控制_23

既然如此,那我們就一起拭目以待~

最後温馨提示:螃蟹殼是幹垃圾。

傳送門:

視頻演示:
https://www.bilibili.com/video/BV1ZA411e7Ff

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