光流模塊在無 GPS 環(huán)境下,課實(shí)時(shí)檢測(cè)飛機(jī)水平移動(dòng)距離,實(shí)現(xiàn)對(duì)四軸無人機(jī)長(zhǎng)時(shí)間的穩(wěn)定懸停。圖1顯示的是湖南優(yōu)象LC-302光流模塊的功能框圖,光流攝像頭拍攝無人機(jī)垂直向下的畫面,輸入光流主板,主板通過光流懸停智能算法進(jìn)行光流計(jì)算,從而獲取無人機(jī)位移信息,并轉(zhuǎn)化為懸??刂浦噶睿瑧彝?刂浦噶钔ㄟ^ UART 輸出給飛控,以便控制飛機(jī)水平移動(dòng)距離,達(dá)到懸停的目的。
圖 1 UPIXELS LC-302光流模塊功能框圖
LC-302外形尺寸結(jié)構(gòu)圖
LC-302的硬件部分主要為主板。如圖2所示,主板尺寸結(jié)構(gòu)示意圖,尺寸分別為:長(zhǎng)22mm、寬14mm。主板上主要的芯片為湖南優(yōu)象公司研發(fā)的光流芯片U30。除了LC-302這款型號(hào)外,還有LC-306、LC-307和LC-309,其中LC-309尺寸最小,含U30、CMOS感光芯片和鏡頭一起,總共也只有10mm*10mm大小。
LC-302使用的是30萬像素的CMOS作為感光器件,所有的配置使用U30芯片的默認(rèn)配置,所以,模塊一上電就可輸出光流數(shù)據(jù),不需要額外其他配置。
圖 2 UP-FLOW-LC-302-3C產(chǎn)品結(jié)構(gòu)圖
LC-302接入飛控的方法/光流坐標(biāo)系定義
光流模塊可以用UART接口連接飛控,UART數(shù)據(jù)格式為1個(gè)起始位,8個(gè)數(shù)據(jù)位,1個(gè)停止位,無校驗(yàn)位,波特率為19200。光流模塊和飛控的接口線序如圖3,其中UART_TXD,UART_RXD是以模塊為參考, VCC為3.0V—5.0V供電電源輸入。3.0V供電時(shí)最大功耗為90mW,5.0V供電時(shí)最大功耗150mW。
光流模塊接線說明:光流和飛控的 RX TX交叉連接,GND和VCC對(duì)應(yīng)連接即可。
光流的坐標(biāo)系如圖4所示,最終飛控獲取數(shù)據(jù),需根據(jù)飛控坐標(biāo)系及光流的坐標(biāo)系,做坐標(biāo)轉(zhuǎn)換。
圖 3 光流模塊坐標(biāo)系/接線方式
光流模塊初始化
光流模塊上電后需由上位機(jī)通過UART接口初始化才能正常工作,光流模塊上電到上位機(jī)初始化之間需至少延時(shí)100ms。
LC-302光流模塊對(duì)外輸出數(shù)據(jù)結(jié)構(gòu)定義
光流模塊對(duì)外輸出的數(shù)據(jù)結(jié)構(gòu)定義如下:
typedef struct optical_flow_data
{
int16_t flow_x_integral; // X像素點(diǎn)累計(jì)時(shí)間內(nèi)的累加位移(radians*10000)
// [除以10000乘以高度(mm)后為實(shí)際位移(mm)]
int16_t flow_y_integral; // Y像素點(diǎn)累計(jì)時(shí)間內(nèi)的累加位移(radians*10000)
// [除以10000乘以高度(mm)后為實(shí)際位移(mm)]
uint16_t integration_timespan; // 上一次發(fā)送光流數(shù)據(jù)到本次發(fā)送的累計(jì)時(shí)間(us)
uint16_t ground_distance; // 預(yù)留。默認(rèn)為999(0x03E7)
uint8_t valid; // 狀態(tài)值:0(0x00)為光流數(shù)據(jù)不可用
//245(0xF5)為光流數(shù)據(jù)可用
uint8_t version; //版本號(hào)
} Upixels_OpticalFlow;
通過串口向飛控發(fā)送數(shù)據(jù)前,光流模塊會(huì)對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行封包,實(shí)際發(fā)送的數(shù)據(jù)包格式如圖6:
序號(hào) |
|
包數(shù)據(jù) |
內(nèi)容說明 |
1 |
包 頭 | 0xFE | 數(shù)據(jù)包的開始標(biāo)識(shí)(固定值0xFE) |
2 |
0x0A | 光流數(shù)據(jù)結(jié)構(gòu)體字節(jié)數(shù)(固定值0x0A) | |
3 |
光 |
flow_x_integral的低字節(jié) |
X像素點(diǎn)累計(jì)時(shí)間內(nèi)的累加位移,
(radians*10000) |
4 |
flow_x_integral的高字節(jié) | ||
5 |
flow_y_integral的低字節(jié) |
Y像素點(diǎn)累計(jì)時(shí)間內(nèi)的累加位移,(radians*10000) [除以10000乘以高度(mm)后為實(shí)際位移(mm)] |
|
6 |
flow_y_integral的高字節(jié) | ||
7 |
integration_timespan的低字節(jié) | 上一次發(fā)送光流數(shù)據(jù)到本次發(fā)送光流數(shù)據(jù)的累計(jì)時(shí)間(us) | |
8 |
integration_timespan的高字節(jié) | ||
9 |
ground_distance的低字節(jié) | 預(yù)留。默認(rèn)為999(0x03E7) | |
10 |
ground_distance的高字節(jié) | ||
11 |
valid | 狀態(tài)值:0(0x00)為光流數(shù)據(jù)不可用,245(0xF5)為光流數(shù)據(jù)可用 | |
12 |
version | 光流模塊的版本號(hào) | |
13 |
校驗(yàn)值 |
Xor | 光流數(shù)據(jù)結(jié)構(gòu)體(Byte 3~Byte 12)10個(gè)字節(jié)的異或值 |
14 |
包 尾 |
0x55 | 數(shù)據(jù)包的結(jié)束標(biāo)識(shí)(固定值0x55) |
圖 6 數(shù)據(jù)包協(xié)議圖
光流調(diào)試注意事項(xiàng)
1.安裝前注意鏡頭清理,確保鏡頭無污垢和保護(hù)膜遮擋。
2.安裝時(shí)注意,光流板與地面水平,并與機(jī)體(飛控板)垂直,不能有偏角,固定后確保鏡頭無遮擋,比如連接線與起落架等。
3.若要考慮與加速度計(jì)融合,則需確保光流與加速度計(jì)物理方向的一致性。
3.當(dāng)姿態(tài)變化較劇烈時(shí)應(yīng)減少光流的比重,并用陀螺儀做好對(duì)光流的補(bǔ)償,并注意光流與陀螺儀同步問題。
4.光流輸出有少許毛刺,需要對(duì)數(shù)據(jù)進(jìn)行低通慮波
5.PID控制上采用位置+速度的雙環(huán)控制,并要加大i的作用。
6.在自主懸停時(shí)才啟動(dòng)光流,飛機(jī)起飛與打搖桿時(shí),光流無效。
LC-302懸停問題速查小技巧
自主懸停是光流模塊支持飛控實(shí)現(xiàn)的一種典型功能。也是調(diào)試光流需要首先調(diào)試的功能,懸停的質(zhì)量往往直接決定光流與飛控配合質(zhì)量。調(diào)試懸停問題時(shí)有如下小技巧。
7.1 完全沒有懸停效果,現(xiàn)象與沒接光流是一樣的。首先應(yīng)檢查板子上電是否正常,硬件線是否連接好,鏡頭是否被遮擋,如果都沒發(fā)現(xiàn)問題,再用上位機(jī)檢查是否有數(shù)據(jù)輸出。
7.2 飛機(jī)往某個(gè)方向亂飛,漂移更快,像失控的感覺,而沒有加光流時(shí)反而漂移慢一些??赡苁牵?/p>
7.2.1 鏡頭安裝方向與程序里寫的方向不一致;
7.2.2 環(huán)境光線明暗變化比較大,比如有閃光燈;
7.2.3 光流鏡頭下地面上有大片的運(yùn)動(dòng)物體,比如在有風(fēng)時(shí)的水面上;
7.2.4 程序中光流控制部分有些數(shù)據(jù)沒清零,比如起飛時(shí)與打搖桿后積分量沒清零;
7.3 飛機(jī)緩慢飄,方向隨機(jī),但又比沒光流時(shí)要好,表現(xiàn)為無操作時(shí),往一個(gè)方向飄后,還會(huì)往回飄??赡苁堑孛姝h(huán)境紋理太差,比如純凈的木地板、水泥地面、反光大理石地面等,或者是環(huán)境光線太暗。
7.4 飛機(jī)開始時(shí)能夠正常懸停,懸停一段時(shí)間后開始震蕩,可能是:
7.4.1 氣壓計(jì)數(shù)據(jù)漂移很大,高度嚴(yán)重失真,導(dǎo)致光流數(shù)據(jù)與該高度相乘后輸出值變大,控制超調(diào);
7.4.2 光流與加速度計(jì)有融合,可能是溫度變化比較大或飛機(jī)震動(dòng)大,導(dǎo)致加速度計(jì)漂移嚴(yán)重;
7.5 飛機(jī)開始時(shí)能夠正常懸停,懸停一段時(shí)間后開始一直往一個(gè)方向漂移,可能是:
7.5.1 程序算法處理上光流的權(quán)重是動(dòng)態(tài)的,某些原因?qū)е聭彝r(shí)間長(zhǎng)后,光流權(quán)重減弱,無法抑制漂移;
7.5.2 姿態(tài)解算的歐拉角由于震動(dòng)或溫度等出現(xiàn)較大誤差,時(shí)間久后飛機(jī)本身姿態(tài)傾斜,光流最大輸出后也補(bǔ)償不了該誤差;
7.6 飛機(jī)一開始就開始震蕩,可能是:
7.6.1 PID控制參數(shù)太大了;
7.6.2 濾波比較厲害,使得輸出數(shù)據(jù)有延時(shí),造成低頻震蕩;
7.6.3 輸入數(shù)據(jù)不平滑,PID控制中又有D項(xiàng),使得飛機(jī)高頻震蕩;
7.6.4飛機(jī)的性能變差,比如電機(jī)、槳葉磨損,震動(dòng)大,使得輸入數(shù)據(jù)噪聲變大;
7.6.5光流旋轉(zhuǎn)補(bǔ)償沒有做好,尤其是數(shù)據(jù)同步與限幅。
優(yōu)象科技淘寶店鋪鏈接:
https://shop215642435.taobao.com/?spm=pc_detail.27183998.202202.2.688c7dd6HXahpX#/
-
gps
+關(guān)注
關(guān)注
22文章
2865瀏覽量
165816 -
uart
+關(guān)注
關(guān)注
22文章
1214瀏覽量
100993 -
無人機(jī)
+關(guān)注
關(guān)注
226文章
10258瀏覽量
178637
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論