日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[随笔]2019省电赛无人机题(B题)总结

發(fā)布時(shí)間:2023/12/31 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [随笔]2019省电赛无人机题(B题)总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 2019/8/7~2019/8/10在江蘇賽區(qū)參加了省電子設(shè)計(jì)競賽,這次也是省電賽和全國電賽重合的一年
  • 選擇的題目是無人機(jī)題
  • 先說結(jié)果吧,直接白給了,挺遺憾的
  • 電賽結(jié)束挺久了,作為一個(gè)從飛行器設(shè)計(jì)轉(zhuǎn)到計(jì)算機(jī)科學(xué)的大三學(xué)生,嵌入式和自動(dòng)控制相關(guān)的東西一直作為業(yè)余愛好研究,實(shí)在占精力,轉(zhuǎn)專業(yè)要好好學(xué)習(xí),以后估計(jì)不再搞了。最后一場比賽也沒取得啥成績還是挺遺憾的, 正好替代社會(huì)實(shí)踐要交總結(jié),這里隨便寫點(diǎn)回顧總結(jié)好了

  • 想做無人機(jī)題這個(gè)想法蠻久以前就有了,當(dāng)時(shí)還在做RM。一直以來做了太多控制題了,從電賽的智能窗簾、智能臺(tái)燈、寫字機(jī)器人,到RM的步兵車控制,再到去年電賽搞得手勢識(shí)別裝置,再做一個(gè)類似的東西,一來控制題通常難度不高面臨的競爭壓力太大,二來也沒法學(xué)到什么東西,沒多大意思。可能是最后一次參加電子設(shè)計(jì)類的比賽了,要做就做個(gè)難的!正好還有一個(gè)和多旋翼控制解藕相關(guān)的項(xiàng)目在做,于是就有了做四旋翼的念頭。
  • 今年七月初開始準(zhǔn)備電賽時(shí)統(tǒng)計(jì)了一下前幾年的題目,根據(jù)趨勢來看,傳統(tǒng)控制題似乎在逐漸退出,取而代之的是一種人工智能題。比如去年的手勢識(shí)別裝置,今年的紙張檢測裝置似乎也是的。這些題偽裝成傳感器應(yīng)用題,表面上看十分簡單,只要把傳感器調(diào)通就好了,但只這樣做毫無競爭力,組委會(huì)真正想要的是讓你設(shè)計(jì)一個(gè)特征,利用指定傳感器檢測它,并通過不斷測試獲取大量樣本,然后用人工智能的方法去學(xué)習(xí)這個(gè)特征,這樣做的隊(duì)如果搞好了效果拔群,比傳統(tǒng)方法強(qiáng)很多。我們?nèi)ツ昃统粤诉@個(gè)虧了,印象深刻。。。。考慮到時(shí)間緊張,現(xiàn)在去嘗試這個(gè)新題型不確定因素太多,所以更加堅(jiān)定了做四旋翼題的想法。
  • 今年是ti贊助的,考慮到以前瑞薩時(shí)期限制過飛控芯片,我們需要搞一個(gè)ti傳感器的飛控。最初是打算學(xué)習(xí)相關(guān)原理完全從底層寫的,但是因?yàn)楦鞣N原因拖到7月放假才準(zhǔn)備,寫肯定來不及了,轉(zhuǎn)而考慮用成品飛控代碼改,還要自己制版仿造一個(gè)飛控,這樣如果限定飛控自制也不怕啦。
  • 放假第二天,商討后購買了匿名的tm4c版本飛控,立即開始準(zhǔn)備。我負(fù)責(zé)飛控改編,買了和匿名同型號的tm4c123g lunchpad,開始學(xué)習(xí)ti的庫函數(shù)。另一個(gè)隊(duì)友G負(fù)責(zé)視覺部分,他是飛設(shè)的需要實(shí)習(xí),于是帶著openmv去西安了。還有一個(gè)隊(duì)友Z,他之前也是做RM電控的,于是也在一起看飛控,隊(duì)伍里只有他會(huì)制版,所以制版搞電路相關(guān)的工作也是他來搞。
  • 時(shí)間過得很快,憑借32的基礎(chǔ),很快就學(xué)了不少ti板子的使用方法(相關(guān)內(nèi)容放在博客上了),但還是不夠快,想要完全學(xué)到可以從底層寫肯定來不及了,于是轉(zhuǎn)而直接研究匿名的程序。
  • 不得不說匿名的代碼習(xí)慣真的8行,注釋太少,還有好多不知道是開發(fā)一半去掉了,還是版本變更沒刪的奇怪內(nèi)容,看得相當(dāng)費(fèi)勁。不過還是基本看了大概。我是從外圍的數(shù)據(jù)存儲(chǔ)、上位機(jī)通信、任務(wù)調(diào)度開始看的,最后看到飛行控制任務(wù)、飛行數(shù)據(jù)這些,關(guān)于傳感器配置什么的因?yàn)榈讓硬惶珪?huì)直接沒看。
  • 大概7月中旬飛控看差不多了,這時(shí)候隊(duì)友G也回了,一起把飛控框架梳理了一遍。隊(duì)友Z這會(huì)去蘇州呆了幾天,于是我和G開始搞視覺聯(lián)調(diào)。
  • 先做了一個(gè)水平的色塊追蹤,雖然openmv幀率低點(diǎn),但是因?yàn)轱w機(jī)速度慢,所以表現(xiàn)還不錯(cuò)。(注意這里要調(diào)整一下openmv數(shù)據(jù)串口中斷優(yōu)先級到1)。做通訊的時(shí)候遇到了一些問題,因?yàn)椴惶珪?huì)Python,所以在數(shù)據(jù)類型處理這塊繞了不少彎路,好在最后也搞定了
  • 之后做了個(gè)機(jī)腹俯拍的色塊追蹤,對標(biāo)前年跟隨小車那個(gè)題。發(fā)現(xiàn)效果差了很多,肯定不是幀率的問題,可是pid調(diào)來調(diào)去都很晃。經(jīng)過一番討論,認(rèn)定問題出在openmv的安裝上,因?yàn)槭侵苯诱吃跈C(jī)腹的,當(dāng)飛機(jī)移動(dòng)時(shí)相機(jī)也會(huì)傾斜,這樣色塊在相機(jī)視野的位置也變了,形成了一個(gè)正反饋。找到問題后做了一個(gè)坐標(biāo)變換補(bǔ)償,效果就很好啦。關(guān)于這個(gè)補(bǔ)償,詳見 ANO匿名飛控分析(3)— 姿態(tài)解算原理及代碼分析 開頭簡介部分的舉例
  • 這期間匿名的飛控?zé)撕脦状味O管,也不知道是為什么,雖然修好了,但是影響進(jìn)度影響蠻多的,最后湊錢又買了一個(gè)新飛控以求穩(wěn)妥。眼看快比賽了,前幾年的題來不及搞了,最后匆匆做了一個(gè)視覺巡線,沒怎么調(diào)效果也就一般吧,做好的時(shí)候已經(jīng)是比賽前一天晚上了。
  • 隊(duì)友Z從蘇州回來后就不看好飛機(jī)題了,總覺得我們準(zhǔn)備不行,系統(tǒng)穩(wěn)定性太差,拿不了獎(jiǎng),經(jīng)常勸我們改做控制。我和G都是早就想搞飛機(jī)了,但是看這個(gè)情況也難免有點(diǎn)動(dòng)搖。Z回來之后就不看飛控了,主要在搞仿制的飛控轉(zhuǎn)接版(直接插lunchpad),于是讓他也搞點(diǎn)控制題的東西備用,到時(shí)侯看題行事。
  • 在比賽前還做了一個(gè)小東西,因?yàn)槁犝fopenmv不可以現(xiàn)場調(diào)閾值,擔(dān)心現(xiàn)場燈光影響識(shí)別,我拿stm32做了一個(gè)openmv閾值調(diào)試器。大概原理就是32和omv通信,獲取原始閾值和圖像lab信息。因?yàn)?20*240的圖像lab信息有300k左右,stm32f407的RAM空間不足,直接開數(shù)組就爆棧了,所以不得已只好做成ROM暫存。ROM讀寫速度慢,存數(shù)據(jù)的時(shí)候搞了一個(gè)雙緩沖避免丟包。利用外接編碼器調(diào)整閾值,顯示的時(shí)候分段讀出圖像lab數(shù)據(jù),按閾值判斷黑白顯示在lcd屏上,每次只刷新現(xiàn)實(shí)顏色變化的點(diǎn)。最后效果還是蠻好的,可惜32的spi通訊沒調(diào)通,不得已用了串口dma接受,讀圖速度太慢,波特率50000估計(jì)要讀個(gè)3到5秒。
  • 終于到了出題的日子,看了眼題,果然又沒有控制題,四旋翼出了一個(gè)電力巡線。我心里其實(shí)還是蠻高興的,這下沒有借口了,好好做好四旋翼就好了!但是隊(duì)友Z悶悶不樂,后來一直勸我們搞電磁炮那個(gè)題。。。我們搞電基本沒搞過,真的不怎么想弄,搞得團(tuán)隊(duì)士氣一直不高,天天都有不少負(fù)能量。
  • 總之先做題吧,因?yàn)閆沒怎么看飛控和omv,基本沒法參加編程工作,感覺他一直不知道要干啥,無所事事的感覺,三個(gè)人不能齊心協(xié)力感覺真的很差,我和G的壓力也更大了,賊難受。
  • 比賽第一天想了想方案,可是沒啥好想法。電線太細(xì),從側(cè)面實(shí)在不好識(shí)別,難以做成閉環(huán)控制,B桿處的180度掉頭也是難點(diǎn)。嘗試了一下開環(huán)飛,發(fā)現(xiàn)飛遠(yuǎn)了就很飄,可能會(huì)撞桿或者撞線,只能作罷。這一天下午飛機(jī)還炸了一次,損壞了自制的飛控板。炸雞原因是Z焊的xt60一轉(zhuǎn)二接頭虛焊。。。所幸沒傷到光流什么的飛控組件,到晚上才修好
  • 晚上終于商量出一個(gè)差不多的方案,一個(gè)攝像頭側(cè)拍識(shí)別桿,一個(gè)攝像頭伸出去到槳護(hù)位置并且架高,這樣就可以利用較大的視野,在不把omv伸到線正上方的情況下拍到電線的俯視角度。飛行流程是:自動(dòng)起飛到1m1高度,前飛直到識(shí)別到桿A,穩(wěn)定一下,開環(huán)前飛50cm,慢慢左平移直到識(shí)別到線,利用線位置做閉環(huán)飛到B,利用期望速度積分推測飛行距離,快到b的時(shí)候轉(zhuǎn)為開環(huán)前飛以免識(shí)別到b桿底座,找到b之后穩(wěn)定一下,掉頭按同樣的流程飛回來。拍照選用了穿越機(jī)相機(jī)小方狗,無限連拍策略,只求拍到就可以。
  • 第二天上午搭好了初始結(jié)構(gòu),用一根5mm碳管做成L形支架把openmv架了出去,試飛的時(shí)候抖動(dòng)很嚴(yán)重,完全沒法識(shí)別。只能改方案,把架高的部分去掉,但是還是抖,再次修改成兩個(gè)碳桿伸出來,中間用一個(gè)木片鏈接,終于不抖了。
  • 搞好結(jié)構(gòu)已經(jīng)晚上了,趕緊開始測試掛線,效果卻不理想。分析原因是因?yàn)闆]有架高,視野很窄,飛機(jī)稍微調(diào)節(jié)一下就會(huì)超出視野邊界。沒辦法重新想方案實(shí)在來不及,干脆把openmv伸遠(yuǎn)一點(diǎn),直接伸到線正上方。這樣再測試就可以穩(wěn)定掛線了,手動(dòng)控制前后飛行也不會(huì)脫出。架出去的一個(gè)問題是openmv會(huì)撞桿,這樣只能靠積分測算距離,在b桿前解鎖脫出,還好飛行距離較近,誤差不會(huì)大到撞桿
  • 接下來的難點(diǎn)就在于轉(zhuǎn)180度了,本來想著鎖死yaw軸全程平移的,但因?yàn)轱w機(jī)左右不對稱,這樣返航時(shí)就不能閉環(huán)了,只好選擇轉(zhuǎn)yaw軸掉頭。轉(zhuǎn)yaw軸有一個(gè)問題,就是沒法閉環(huán),因?yàn)槭覂?nèi)磁力計(jì)誤差太大,yaw指向反饋不準(zhǔn)。雖然可以在線上靠線斜率調(diào)整,但是比較危險(xiǎn),所以還是希望盡量不要轉(zhuǎn)yaw軸。
  • 總之先寫了一個(gè)原地轉(zhuǎn)動(dòng)的程序試驗(yàn)一下,結(jié)果飛機(jī)剛轉(zhuǎn)了一點(diǎn)就開始亂飄,差點(diǎn)撞墻。分析了一番,應(yīng)該是光流消旋的問題。匿名的光流是閉源的,所以也沒法調(diào)整。最后找到了一個(gè)折衷方案,就是減小旋轉(zhuǎn)角度,加大旋轉(zhuǎn)速度,這樣飛機(jī)轉(zhuǎn)動(dòng)時(shí)間短,光流失效時(shí)間也短,不會(huì)漂太多。最終的掉頭方案改為:找到b桿后,前飛50cm,左轉(zhuǎn)90度,前飛直到識(shí)別到b桿,再前飛70cm,左轉(zhuǎn)90度,這樣就接入到重復(fù)A至B的流程中了。這里還做了一個(gè)保險(xiǎn),轉(zhuǎn)過第一個(gè)90后的平飛段會(huì)進(jìn)行積分,如果飛了很遠(yuǎn)都沒檢測到b桿,或者飛了很近就檢測到,通通認(rèn)為桿識(shí)別錯(cuò)誤,這時(shí)就完全靠積分來確定轉(zhuǎn)向時(shí)機(jī)了。
  • 這時(shí)比賽時(shí)間也差不多快要結(jié)束,隊(duì)友Z寫完報(bào)告后表示不玩了,于是只有我和G繼續(xù)奮戰(zhàn)。
    項(xiàng)目二的自動(dòng)懸停測試過沒啥問題,因?yàn)闆]仔細(xì)看規(guī)則,還以為項(xiàng)目二可以換程序,所以單獨(dú)做了一個(gè)自動(dòng)起飛懸停的程序,這也為最后的白給埋下禍根。
  • 很快比賽結(jié)束,到了測評的日子。比賽場地鋪了了灰白條紋,測試飛行時(shí)直接開始亂飛了。當(dāng)時(shí)直接傻了,還以為程序不對,心中做好了白給的準(zhǔn)備。最后向評委提議,要求換到白布的場地,這才恢復(fù)正常。想來應(yīng)該是光流在灰白地面上失效了。
  • 換到白布地面的第一輪飛行很成功,一路飛回了A,可惜最后自動(dòng)降落不成功。第二輪試飛誤識(shí)別到場地邊上的窗戶了,沒有成功完成。這一結(jié)果可以說超出了預(yù)期,應(yīng)該也是我們學(xué)校表現(xiàn)數(shù)一數(shù)二的隊(duì)伍了,評委老師也表示我們的方案很好。
  • 接下來項(xiàng)目二因?yàn)槌绦虿粚χ苯臃艞壛恕_@個(gè)非常可惜,項(xiàng)目三完成得還可以,就是用時(shí)比較長。
  • 出了賽場感覺還不錯(cuò),雖然項(xiàng)目二很可惜,但是繞桿真的完成得超出預(yù)期。聽說第一天20個(gè)隊(duì)只完成了2個(gè)隊(duì),心里感覺還是有個(gè)交代了
  • 過了兩天出成績了,很可惜啥都沒得著。因?yàn)轫?xiàng)目一沒降落所以一分都沒有,項(xiàng)目二也沒分,相當(dāng)于只有一個(gè)自主編程分,這樣肯定是涼涼沒跑。看了看其他隊(duì),應(yīng)該是飛個(gè)懸停就可以省二的,花了那么多精力做繞桿卻沒拿到分,又被規(guī)則坑了一波,真的是挺傷的。
  • 雖然結(jié)果不好,但是這次電賽也是一次難忘的經(jīng)歷了,學(xué)到了很多東西,也做到了自己滿意的程度,就寫到這里吧

以下是準(zhǔn)備比賽期間的一些學(xué)習(xí)總結(jié),飛控分析還有幾篇沒寫,包括pid和濾波什么的,以后有空再說吧

  • TM4C123G學(xué)習(xí)記錄(1)–時(shí)鐘
  • TM4C123G學(xué)習(xí)記錄(2)–GPIO
  • TM4C123G學(xué)習(xí)記錄(3)–外部中斷
  • TM4C123G學(xué)習(xí)記錄(4)–關(guān)于ROM前綴函數(shù)和HWREG函數(shù)
  • TM4C123G學(xué)習(xí)記錄(5)–PWM輸出
  • TM4C123G學(xué)習(xí)記錄(6)–UART
  • TM4C123G學(xué)習(xí)記錄(7)–輸入捕獲
  • ANO匿名飛控分析(1)— 遙控器解碼
  • ANO匿名飛控分析(2)— 任務(wù)調(diào)度
  • ANO匿名飛控分析(3)— 姿態(tài)解算原理及代碼分析

2021.9.20 update:

  • 這是我們當(dāng)初賽前準(zhǔn)備時(shí)做的飛控-視覺聯(lián)調(diào)(P1)和 OpenMV 閾值調(diào)試器(P2)的測試視頻:無人機(jī)視覺追蹤
  • 補(bǔ)上兩張飛機(jī)的照片,這樣機(jī)械結(jié)構(gòu)看得比較清晰。伸出來木片上的 OpenMV 就是專門用來向下識(shí)別電線位置的,因?yàn)榈孛姘搭}目要求是灰白色,識(shí)別起來沒有太多干擾。另一個(gè) OpenMV 裝在機(jī)腹下側(cè)拍標(biāo)識(shí)桿

總結(jié)

以上是生活随笔為你收集整理的[随笔]2019省电赛无人机题(B题)总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。