謝作如 王海濤
問題提出
智慧交通是人工智能應(yīng)用的一個重要場景,無人駕駛則是一種利用各種傳感器、控制系統(tǒng)和人工智能算法實現(xiàn)對汽車自主控制的技術(shù),是智慧交通的核心技術(shù)。在中小學(xué)開設(shè)無人駕駛課程,讓機械結(jié)構(gòu)、智能控制和深度學(xué)習(xí)等技術(shù)融合起來,是一門很有價值的跨學(xué)科課程。但無人駕駛課程開設(shè)難度較大,除了對授課教師要求較高外,還需要一系列硬件支持,比如內(nèi)置支持模型推理能力芯片的小車價格往往達(dá)數(shù)千元。
考慮到大部分中小學(xué)校的創(chuàng)客空間或機器人實驗室有現(xiàn)成的可編程機器人小車,而這些小車一般都能支持2.4G、藍(lán)牙和Wi-Fi 等遙控。那么,能否給小車配上無線攝像頭增加視覺能力,用較低的成本開展無人駕駛課程呢?
技術(shù)分析:無人駕駛的實現(xiàn)
常見無人駕駛小車功能分析
據(jù)不完全調(diào)查,為中小學(xué)開發(fā)無人駕駛課程核心器材(小車)的企業(yè)不多。筆者從轉(zhuǎn)向、感知、控制等角度對中小學(xué)無人駕駛小車的技術(shù)進行了分析。最常見的轉(zhuǎn)向方式是兩輪差速和麥克納姆輪,部分高端的小車會采用阿克曼轉(zhuǎn)向,即類似真實汽車,用方向盤(舵機控制)形式轉(zhuǎn)向。攝像頭是必備的感知設(shè)備,外加一些紅外避障傳感器,高端的小車還會配置激光雷達(dá),使用SLAM 技術(shù)。高端小車會使用ROS 控制系統(tǒng),而對于低齡段學(xué)生,用Python 結(jié)合GPIO 或pinpong 庫,也是常見的選擇。一般都會使用具備一定算力的主板,以樹莓派和Jetson Nano 為主,有的會用高端國產(chǎn)芯片;相對低端的產(chǎn)品會使用Arduino、ESP32 類主板,使用智能攝像頭推理,但大家一般也不會把這些小車看作無人駕駛小車。
無人駕駛的低門檻實現(xiàn)
從任務(wù)執(zhí)行角度看,無人駕駛小車的控制主要包括車速、方向和車燈(有些會加鳴笛)。而環(huán)境感知部分除去高端SLAM 建圖(需要激光雷達(dá)),僅需對車道、交通標(biāo)志和行人進行識別。正是這些識別功能對小車主板提出了較高的要求,如果對小車實時反饋要求不高,則可用遠(yuǎn)程推理結(jié)合遙控方式實現(xiàn),可顯著降低“無人駕駛”的門檻。其中,遠(yuǎn)程推理是指用電腦(服務(wù)器)對攝像頭畫面進行推理。如圖1 所示,可以選擇無線攝像頭將畫面?zhèn)鬏數(shù)狡胀娔X,根據(jù)推理結(jié)果以無線方式發(fā)送控制信號,無線攝像頭既可以裝在小車上,也可以裝在小車運動的場地上方。如裝在小車上,可以做第一視角的無人車,跟現(xiàn)有的無人車功能非常類似;如裝在小車運動場地上方,則可返回小車的位置信息。當(dāng)然,兩種方式也可同時存在。
項目測試:做一輛無人駕駛小車
筆者在學(xué)校創(chuàng)客空間選擇了一款現(xiàn)有的小車進行測試。其中,小車用“麥昆”,無線攝像頭選擇了ESP32-CAM。
可編程遙控小車的選擇
麥昆小車套件僅僅提供了底盤, 控制板可采用micro:bit 和掌控板,性價比高。其中,micro:bit 支持2.4G的控制,可以與其他micro:bit 板子通訊。掌控板則支持Wi-Fi,可采用MQTT、HTTP 或Socket 通訊,使用更加靈活。
ESP32-CAM 是基于ESP32芯片設(shè)計的一款開源硬件,價格不到30 元,融合了Wi-Fi 和藍(lán)牙通訊功能,適用于需要拍照、錄像、圖像處理等應(yīng)用場景。筆者還特意刷寫了1 個固件,能通過串口配置ESP32-CAM 的Wi-Fi 信息,然后以HTTP 方式就能獲取攝像頭的畫面信息。
無人駕駛技術(shù)實現(xiàn)
為了用最簡潔的方式控制小車,筆者放棄了常見的MQTT 協(xié)議,選擇了Socket,因為MQTT 還需單獨部署MQTT 服務(wù)器。具體的工作流程如圖2 所示,電腦端借助OpenCV 獲取ESP32-CAM 的畫面,經(jīng)過XEduhub 模型推理后,借助XEduGPIO 庫發(fā)送指令給掌控板,掌控板再驅(qū)動小車,麥昆小車就成了一輛擁有強悍算力的智能小車。
流程圖中的XEduGPIO 庫是為活動專門編寫的,內(nèi)置了Socket 連接的各種協(xié)議。核心類CarComm 提供了speed、servo、led 和stop 這 4 種最基本的方法,分別用于驅(qū)動小車前進、舵機轉(zhuǎn)動、改變Led 狀態(tài)和停止運動。在XEduGPIO 庫的支持下,4 行代碼即可實現(xiàn)小車的驅(qū)動。當(dāng)然,掌控板也需進行相應(yīng)的Socket 編程,寫好相應(yīng)的固件,刷入即可運行。
在電腦端讀取ESP32-CAM 畫面需要用OpenCV,參考代碼如下。畫面推理則需先訓(xùn)練模型,再借助XEduHub推理。因MMEdu 從數(shù)據(jù)標(biāo)注到模型訓(xùn)練已經(jīng)提供了完整的操作流程,這里不再展開,請參考XEdu 文檔。
活動設(shè)計:從人車合一到無人駕駛
2024 年1 月,全國青少年人工智能創(chuàng)新實踐活動在上海南洋中學(xué)舉辦,以上述無人駕駛小車為基礎(chǔ),設(shè)計了1個線下活動——八段錦巡線推物挑戰(zhàn)賽。參加活動的學(xué)生需獨立完成小車的機械拼裝、配置Wi-Fi 信息,然后測試“人車合一”任務(wù),再挑戰(zhàn)“無人駕駛”任務(wù)。小車活動地圖如圖3 所示。
“人車合一”任務(wù)指學(xué)生在電腦攝像頭前,通過自己的人體姿態(tài)控制小車移動和鏟子起落,按跑道軌跡將物體分別移至3 個目的地?!盁o人駕駛”任務(wù)則要求使用電腦讀取小車上的攝像頭畫面,根據(jù)推理結(jié)果控制小車自主完成八段錦姿態(tài)分類任務(wù),小車能合理規(guī)劃路徑,完成尋找地圖中與目標(biāo)八段錦姿態(tài)相同的立牌(豎立呈現(xiàn)的圖片)并轉(zhuǎn)動鏟子?;顒蝇F(xiàn)場如圖4 所示。
總結(jié)與反思
50 多名來自全國各地的學(xué)生參加了上述活動,他們中大部分是第一次接觸無人駕駛,表現(xiàn)出了巨大的熱情,邊學(xué)習(xí)邊探究,收獲頗豐。一些現(xiàn)場觀摩的教師也頗為驚喜,他們沒有想到無人駕駛還可以用這種低成本的方式實現(xiàn),并表示要盡快實施并設(shè)計一套完整的人工智能課程。實際上,這套低成本方案不僅可用于無人駕駛,還可用于無人機的智能巡檢、智慧農(nóng)場的蟲害監(jiān)測、保護區(qū)的生態(tài)監(jiān)測等有趣的課程內(nèi)容。