吴忠躺衫网络科技有限公司

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>自主無(wú)人機(jī)著陸開(kāi)源分享

自主無(wú)人機(jī)著陸開(kāi)源分享

2022-10-27 | zip | 0.03 MB | 次下載 | 免費(fèi)

資料介紹

描述

在過(guò)去的幾年里,我一直在StreamLogic開(kāi)發(fā)工具,旨在讓在邊緣構(gòu)建和部署計(jì)算機(jī)視覺(jué)變得更加容易。我最喜歡的目標(biāo)平臺(tái)之一是來(lái)自 tinyVision.aiVision FPGA SoM :

很小的吧?中心,您可以看到來(lái)自 HiMax Imaging 的小型、低功耗且價(jià)格低廉的相機(jī)模塊。我一直在尋找我可能針對(duì)此平臺(tái)的新應(yīng)用程序。

幾個(gè)月前,在一位商業(yè)伙伴提到他們使用無(wú)人機(jī)的一個(gè)農(nóng)業(yè)用例后,我退出了無(wú)人機(jī)。無(wú)人機(jī)是 tinyML 的一個(gè)很好的用例;它們需要大量傳感器數(shù)據(jù),并且對(duì)尺寸、重量和功率敏感。我對(duì)無(wú)人機(jī)幾乎一無(wú)所知,但我整個(gè)周末都在嘗試定位和研究開(kāi)源無(wú)人機(jī)。在周末結(jié)束之前,我購(gòu)買了一架無(wú)人機(jī):Holybro 的QAV250 套件

這架無(wú)人機(jī)沒(méi)有預(yù)先組裝,并且是新手,幾個(gè)月前,我擁有所有正確的零件并將其從地面上取下來(lái)。但是,讓我們跳到故事的結(jié)尾。一旦我開(kāi)始真正駕駛無(wú)人機(jī),我就意識(shí)到 GPS 定位是多么的不準(zhǔn)確。使用自動(dòng)駕駛儀執(zhí)行自主任務(wù)時(shí),您可能會(huì)發(fā)現(xiàn)您的無(wú)人機(jī)遠(yuǎn)離計(jì)劃的飛行路徑。這在飛行和著陸中都非常危險(xiǎn)。就在那時(shí),我想出了這個(gè)項(xiàng)目的想法。

目標(biāo)很簡(jiǎn)單:使用自動(dòng)駕駛儀安全著陸無(wú)人機(jī)。這有兩個(gè)部分:1)在預(yù)期的表面上著陸(在我的例子中是人行道)和 2)避免表面上的任何意外障礙物。為了實(shí)現(xiàn)這一點(diǎn),我提出了一種計(jì)算機(jī)視覺(jué)算法來(lái)檢測(cè)無(wú)人機(jī)降落時(shí)應(yīng)該何時(shí)以及向哪個(gè)方向移動(dòng)。

算法設(shè)計(jì)

我的解決方案在高層次上非常簡(jiǎn)單。向下的攝像頭安裝在無(wú)人機(jī)的底部。當(dāng)無(wú)人機(jī)緩慢下降著陸時(shí),它會(huì)捕捉圖像進(jìn)行分析。首先,將無(wú)人機(jī)正下方的平方米確定為著陸點(diǎn)。其次,還對(duì)八個(gè)方向(北、東北、東、東南、南、西南、西、西北)的附近站點(diǎn)進(jìn)行評(píng)級(jí)。最后,如果附近任何一個(gè)站點(diǎn)的評(píng)分明顯優(yōu)于當(dāng)前站點(diǎn),則無(wú)人機(jī)的位置將沿相應(yīng)方向調(diào)整。

這是從我的無(wú)人機(jī)拍攝的示例圖像:

pYYBAGNYsDiAU3J7AABPOgdbiWc028.png
?

如果我們繼續(xù)前進(jìn),中間的黑色方塊就是當(dāng)前的著陸點(diǎn)。它周圍的標(biāo)記方塊是評(píng)估可能的方向變化的候選站點(diǎn)。顯然,如果我們要降落在人行道上,我們想在這種情況下向東南移動(dòng)。

嗯,這是高水平,但您可能仍然想知道 1)您如何知道一米的大小以及 2)您如何評(píng)價(jià)它?第一個(gè)很簡(jiǎn)單,無(wú)人機(jī)已經(jīng)有一個(gè)高度傳感器,所以你可以估計(jì)無(wú)人機(jī)的高度。鑒于高度、一些相機(jī)規(guī)格和一些代數(shù),計(jì)算當(dāng)前圖像的每米像素?cái)?shù) (PPM) 非常簡(jiǎn)單。在這種情況下,它的計(jì)算結(jié)果為 PPM = 168 / H。

對(duì)于第二個(gè)問(wèn)題,這就是計(jì)算機(jī)視覺(jué)的用武之地。我們需要能夠?qū)D像進(jìn)行任意裁剪,并獲得關(guān)于該圖像是無(wú)障礙路面的可能性的定量分?jǐn)?shù)。實(shí)際值在這里并不重要,只要我們可以比較兩個(gè)分?jǐn)?shù)來(lái)確定哪個(gè)更好。可以手工制作算法,但我選擇訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò) (CNN) 來(lái)生成分?jǐn)?shù)。

下一節(jié)將討論我是如何訓(xùn)練 CNN 的,但讓我們看一下上圖的輸出:

poYBAGNYsDqALTP4AAAmonmQKIM201.png
?

此圖顯示當(dāng)前著陸點(diǎn)(標(biāo)記為 C)和所有 8 個(gè)方向的候選點(diǎn)的得分。毫無(wú)疑問(wèn),東南部是希望的贏家。

機(jī)器學(xué)習(xí)

如上所述,我選擇使用 CNN 為候選著陸點(diǎn)生成定量分?jǐn)?shù)。具體來(lái)說(shuō),全卷積網(wǎng)絡(luò)(FCN)。這些與其他 CNN 的不同之處在于它們不以密集或全局池化層結(jié)束。最后一個(gè)卷積層的激活圖網(wǎng)絡(luò)輸出。正如您將看到的,這非常適合此應(yīng)用程序。

訓(xùn)練 FCN 有不同的方法,但我選擇先構(gòu)建分類器 CNN,然后將其轉(zhuǎn)換為 FCN。讓我們先看看我是如何構(gòu)建分類器的。

我想創(chuàng)建一個(gè)分類器,將小圖像塊分類為好或壞。但首先,我需要數(shù)據(jù)。自然地,我花了很多時(shí)間在互聯(lián)網(wǎng)上搜索一些公共數(shù)據(jù)集。不幸的是,沒(méi)有什么真正適合我的任務(wù)。我需要?jiǎng)?chuàng)建自己的數(shù)據(jù)集,但是如何創(chuàng)建?最后,我創(chuàng)建了自己的電池供電圖像記錄器。

pYYBAGNYsEGAY0aKAAcrYEbxA2Q118.jpg
?

圖像記錄器每秒捕獲圖像并將它們寫入 SD 卡。這使我能夠在著陸期間從我的無(wú)人機(jī)收集圖像,如下所示:

poYBAGNYsEOAelHeAAA7FiOofMI253.png
?

手頭有許多圖像,我創(chuàng)建了三個(gè)不同類別的補(bǔ)丁數(shù)據(jù)集:

  • 地面(非人行道)
  • 路面
  • 未知(人行道邊緣/非人行道)

我最初收集了大約 2,000 個(gè)補(bǔ)丁。然后我花了很多時(shí)間嘗試訓(xùn)練一個(gè)淺層網(wǎng)絡(luò)(2 個(gè)卷積層),但沒(méi)有取得多大成功。我嘗試了許多數(shù)據(jù)增強(qiáng)和網(wǎng)絡(luò)結(jié)構(gòu)都無(wú)濟(jì)于事。網(wǎng)絡(luò)總是會(huì)在驗(yàn)證集上生成隨機(jī)結(jié)果或做出恒定的選擇 (:sigh:)。

除了獲取更多數(shù)據(jù)外,別無(wú)他法。所以,我從我的圖像中收集了大約 1, 800 個(gè)補(bǔ)丁。Bingo,大約有 4, 800 個(gè)補(bǔ)丁,訓(xùn)練表現(xiàn)良好,經(jīng)過(guò)一些實(shí)驗(yàn),我的網(wǎng)絡(luò)達(dá)到了 88% 的準(zhǔn)確率。這是最終的網(wǎng)絡(luò):

model = Sequential([
    layers.Input(shape=(tgt_width,tgt_height,3)),
    layers.Conv2D(10, 5, strides=2, padding='valid', activation='relu'),
    layers.Conv2D(3, 3, padding='valid'),
    layers.GlobalAveragePooling2D(),
])

這個(gè)模型只有 1, 033 個(gè)參數(shù)!

有關(guān)完整的訓(xùn)練過(guò)程,請(qǐng)參閱training.ipynb代碼存儲(chǔ)庫(kù)中的 Jupyter 筆記本。

全卷積網(wǎng)絡(luò)

有了地面補(bǔ)丁分類器,是時(shí)候?qū)⑵滢D(zhuǎn)換為我們可以應(yīng)用于整個(gè)圖像的 FCN。查看上面的網(wǎng)絡(luò),您可以看到通過(guò)移除 GlobalAveragePooling2D 層,我們最終得到了一個(gè)僅包含卷積層的網(wǎng)絡(luò)。它接受任何圖像大小并生成比例大小的激活圖。FCN 的結(jié)果實(shí)際上與以滑動(dòng)窗口方式將補(bǔ)丁分類器應(yīng)用于圖像中的所有補(bǔ)丁相同。輸出圖中每個(gè)位置的激活值是輸入圖像中相應(yīng)位置的補(bǔ)丁的分類器結(jié)果。

這真的有效嗎?我們來(lái)看一下。這是示例圖像的渲染和 FCN 的相應(yīng)輸出:

pYYBAGNYsEaALPseAAChIJZPiKo996.png
?

右圖顯示了路面類的 FCN 輸出。將正確圖像中的值與候選站點(diǎn)相加,可以得出該站點(diǎn)的分?jǐn)?shù)。

這是呈現(xiàn)相同數(shù)據(jù)的另一種方法:

poYBAGNYsEmADdZoAAAwNmcSamM792.png
?

在這張圖片中,我用一個(gè)紅色正方形覆蓋了原始圖像,其透明度是路面類輸出的倒數(shù)(即越有可能是路面,越透明)。查看目標(biāo)著陸點(diǎn),紅色越多,得分越低。

創(chuàng)建 FCN 并將權(quán)重從訓(xùn)練的分類器轉(zhuǎn)移到 FCN 的所有詳細(xì)信息都在evaluation.ipynb代碼存儲(chǔ)庫(kù)的 Python 筆記本中。

量化

我對(duì)網(wǎng)絡(luò)進(jìn)行了量化,以使用 8 位權(quán)重和 8 位激活來(lái)獲得更好的運(yùn)行時(shí)性能。您可以遵循 Tensorflow 文檔中描述的標(biāo)準(zhǔn)程序,但我使用了我自己的方法,該方法具有更簡(jiǎn)單的量化模型。該過(guò)程在README代碼存儲(chǔ)庫(kù)中進(jìn)行了詳細(xì)說(shuō)明。

這是量化網(wǎng)絡(luò)的輸出示例:

poYBAGNYsE2AbbLWAABkO6docVE367.png
?

這與原始網(wǎng)絡(luò)的輸出幾乎沒(méi)有區(qū)別:

poYBAGNYsE-ATmH1AABj-ALKFpE329.png
?

硬件構(gòu)建

我已經(jīng)有了一個(gè)帶有 Vision FPGA SoM 的硬件堆棧和一個(gè)來(lái)自Battery-powered Image Logger項(xiàng)目的微控制器不幸的是,結(jié)果證明微控制器太小了。計(jì)算 FCN 中每一層的輸入/輸出激活圖的大小,我們發(fā)現(xiàn)我們需要 48KB 的緩沖區(qū)空間。幸運(yùn)的是,還有另一個(gè)符合要求的 Feather 板。

Feather M4 Express 不僅速度更快,而且擁有高達(dá) 192KB 的 RAM!該項(xiàng)目不需要 SD 卡,因此我們的構(gòu)建只是堆疊在 Feather M4 Express 上的 Vision FPGA SoM 板。

pYYBAGNYsFOAZshdAAbjEjVi0N0570.jpg
?

體積小、重量輕、電池供電!

執(zhí)行

從框圖中您可以看到 FPGA 被用作相機(jī)模塊和微控制器之間的橋梁。

poYBAGNYsFWAVJwGAABhr02-OG8327.png
?

FPGA 將捕獲的圖像以圖像傳感器的原始格式(即拜耳濾波器圖像)傳遞給微控制器。FPGA 的預(yù)構(gòu)建編程文件在代碼庫(kù)中提供。

這讓微控制器的任務(wù)是:

  • 將圖像從 Bayer 轉(zhuǎn)換為 RGB 格式
  • 將圖像下采樣到 80x80
  • 執(zhí)行 FCN 推理
  • 對(duì)目標(biāo)站點(diǎn)區(qū)域求和

所有這些任務(wù)的源代碼都包含在sketch代碼存儲(chǔ)庫(kù)的文件夾中。我將在這里對(duì)代碼做一些評(píng)論。

完整的原始圖像超過(guò) 100KB,雖然這個(gè) MCU 有 192KB,但我不想不必要地浪費(fèi)空間。下采樣的圖像只需要 20KB。您將在從 FPGA 讀取圖像的循環(huán)中看到,它在讀取時(shí)執(zhí)行拜耳轉(zhuǎn)換和下采樣,一次一個(gè)塊,因此我們只需要為下采樣圖像提供足夠的空間。

這個(gè)網(wǎng)絡(luò)沒(méi)有使用 CNN 框架,而是非常簡(jiǎn)單,以至于我實(shí)現(xiàn)了自己的卷積和激活函數(shù)。這些在gndnet.cpp文件中定義。如果您有興趣了解有關(guān)卷積如何工作的更多信息,它的編寫方式非常簡(jiǎn)單。我并不太擔(dān)心性能,但這些可能會(huì)被 ARM神經(jīng)網(wǎng)絡(luò)庫(kù)中的函數(shù)取代以獲得更好的性能。

結(jié)果

著陸算法與無(wú)人機(jī)飛行控制器的集成超出了此概念驗(yàn)證的范圍。目標(biāo)是設(shè)計(jì)和訓(xùn)練算法,證明其有效性并獲得一些性能數(shù)據(jù)。

從質(zhì)量上看,該算法看起來(lái)不錯(cuò)。它已在用于培訓(xùn)的站點(diǎn)以及未用于培訓(xùn)的站點(diǎn)的測(cè)試圖像上進(jìn)行了評(píng)估。結(jié)果非常令人鼓舞。當(dāng)然,要投入生產(chǎn),人們可能希望對(duì)來(lái)自多個(gè)站點(diǎn)的數(shù)據(jù)進(jìn)行訓(xùn)練。

在性能方面,從圖像捕獲到分?jǐn)?shù)計(jì)算的整個(gè)過(guò)程大約是 525 毫秒。這意味著略低于 2 FPS。這可能會(huì)起作用,因?yàn)闊o(wú)人機(jī)確實(shí)以相當(dāng)慢的速度下降。但是,這很容易得到改善。例如,如果將 Bayer 轉(zhuǎn)換和下采樣功能移至 FPGA,則時(shí)間會(huì)縮短到 200 毫秒多一點(diǎn)。那將超過(guò) 4 FPS,這絕對(duì)足夠了。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
八运24山风水坟地图解| 芜湖县| 24楼层风水好吗| 晋江市| 摩纳哥百家乐的玩法技巧和规则| 百家乐官网游戏辅助| 棋牌游戏平台排行榜| 百家乐ipone| 澳门百家乐官网有限公司| 百家乐娱乐网官网网| 百家乐官网娱乐网会员注册 | 百家乐真人娱乐场| 百家乐官网是如何骗人的| 全讯网3344555| 百家乐官网过滤软件| 连环百家乐| 回力百家乐的玩法技巧和规则| 678百家乐官网博彩赌场娱乐网规则| bet365备用| 海立方百家乐的玩法技巧和规则 | 大发888bjl| 百家乐三号的赢法| 百家乐官网游戏机说明书| 大发888游戏客服电话| 百家乐是哪个国家| 缅甸百家乐官网网络赌博解谜 | 兴安县| 大发888官方网| 网上百家乐分析软件| 百家乐官网微笑不倒| 百家乐双峰县| 风水24向| 百家乐官网开户首选| 百家乐真钱游戏| 爱拼百家乐的玩法技巧和规则| 免费百家乐官网统计软件| 百家乐官网折叠桌| 亿博国际| 百家乐第三张规则| 塑料百家乐筹码| 百家乐官网必胜打|