六軸加速度計(jì)和三軸陀螺儀所組成的九軸姿態(tài)傳感器是無人機(jī)中必備重要器件。本微信號之前已經(jīng)對加速度計(jì)和陀螺儀的物理工作原理探討過無數(shù)次了,在這里也不再絮叨了。目前很多開發(fā)板上也會安裝這種傳感器,從而獲得開發(fā)板實(shí)時(shí)姿態(tài),可用于無人機(jī)和體感游戲等應(yīng)用的開發(fā),本文以Genuino101中RawImuDataSerial的例子進(jìn)行分析,從代碼角度來和大家探討一下姿態(tài)參數(shù)的獲得。

1.Genuino101中使用的是USB虛擬串口,所以先進(jìn)行串口初始化,設(shè)置波特率。
什么是USB虛擬串口呢,字面上好像很難的樣子,可能很多新手都不知道,但是不用擔(dān)心,USB虛擬串口就是把USB當(dāng)作串口的串口來使用,在Nano,Mega板上都有USB轉(zhuǎn)TTL的芯片,連接到電腦后,電腦就識別出了端口號。但是101上并未使用USB轉(zhuǎn)TTL的芯片,101有USB接口,而USB可以作為幾種使用類型,像HID鼠標(biāo)鍵盤,大容量存儲,攝像頭等,其中有一種類型叫虛擬串口,使用的方法跟普通的串口是一樣的。虛擬串口屬于USB CDC,
也叫VCP。
2.while (!Serial); 這里是判斷串口是否完成,為什么這樣使用呢?看看參考資料。

意思就是判斷USB CDC串口是否已經(jīng)打開了,如果已經(jīng)打開,剛返回true,否則是false
3.開始進(jìn)行IMU的初始化,這里的IMU包含在Intel Curie模塊里面。輸出
Initializing IMU device...
初始化的函數(shù)是: CurieImu.initialize();
看看里面做了什么

可以看到,首先是SPI的初始化,SPI連接的是型號為BMI160的六軸加速度計(jì)和陀螺儀傳感器。具體是如何通過寄存器的讀取加速度值的我們先不去研究,CurieImuClass里面已經(jīng)做好了這些操作,我們只要知道使用,CurieImuClass就能得到六軸的原始數(shù)據(jù)就行了。那為什么要打開看看里面做了什么呢,其實(shí)我也就是好奇,想看看。
4.這里字面上的意思是測試CurieImu是否連接成功,我們打開CurieImu.testConnection()看看里面是啥。


其實(shí)就是通過SPI讀取BMI160寄存器到的DeviceID,如果讀到了,說明連接成功。


這里是讀取寄存器里偏移量的值。這幾個(gè)是已經(jīng)默認(rèn)在寄存器里了。
5.這里是進(jìn)行陀螺儀校準(zhǔn),校準(zhǔn)函數(shù)是 CurieImu.autoCalibrateGyroOffset();有點(diǎn)奇怪,為什么陀螺儀有三個(gè)軸,但是只用了一個(gè)校準(zhǔn)呢?我們打開這個(gè)函數(shù)看一下。

看了一下注釋,這個(gè)函數(shù)就是對3個(gè)軸進(jìn)行校準(zhǔn)。那就不管它了,具體那幾個(gè)寄存器是什么也不用去理會。

6.這里對加速度計(jì)進(jìn)行校準(zhǔn)。用了三個(gè)校準(zhǔn)函數(shù),XY是0,Z的參數(shù)是1,為什么呢。是不是因?yàn)閆軸自身就收到重力呢?保留疑問。

7.校準(zhǔn)好了之后,再讀取一次偏移量。

8.這里字面上的意思是使能偏移量校準(zhǔn),也就是說,上面只是求出偏移量的值,而這里要進(jìn)行使能。

9.接下來的便是loop()循環(huán)了。getMotion6()函數(shù)直接讀取六個(gè)軸的值到變量。

10.接下來便是打印數(shù)據(jù)到串口了。

11.把程序燒寫的板子上,打開串口,便能看到數(shù)據(jù)啦。

12.這里做一點(diǎn)小改動。把打印到串口的數(shù)據(jù)改成如下:

選擇tools->Serial Plotter

Oh my god,好強(qiáng)大的功能,實(shí)時(shí)畫六軸波形圖啊。

最后小編向大家提一個(gè)問題,你們對于無人機(jī)的應(yīng)用而言,多大的姿態(tài)數(shù)據(jù)刷新率最為合適?
-
usb
+關(guān)注
關(guān)注
60文章
8438瀏覽量
284446 -
SPI
+關(guān)注
關(guān)注
17文章
1885瀏覽量
101214 -
代碼
+關(guān)注
關(guān)注
30文章
4967瀏覽量
73954
原文標(biāo)題:代碼分析:如何獲得九軸姿態(tài)數(shù)據(jù)?
文章出處:【微信號:weixin21ic,微信公眾號:21ic電子網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
無人機(jī)超聲波傳感器在無人機(jī)避障中的應(yīng)用
無人機(jī)傳感器市場火爆 未來5年規(guī)模達(dá)7億美元
InvenSense電容式氣壓安徽傳感器或?qū)⒊纱髸r(shí)代無人機(jī)標(biāo)配怎么樣
Ameya360 無人機(jī)視覺、高級傳感與處理解決方案
無人機(jī)設(shè)計(jì)中姿態(tài)檢測算法、姿態(tài)控制算法有什么區(qū)別 ?
無人機(jī)系列之飛控系統(tǒng)
無人機(jī)中的MCU是如何工作的?
無人機(jī)——“會飛的傳感器”
請問四元數(shù)在無人機(jī)姿態(tài)控制中應(yīng)用在哪一個(gè)環(huán)節(jié)?
【設(shè)計(jì)技巧】無人機(jī)系列之飛控算法
基于STM32的四軸無人機(jī)的姿態(tài)解算與控制系統(tǒng)設(shè)計(jì)
加速度傳感器和陀螺儀如何讓無人機(jī)飛的更穩(wěn)
【羅姆傳感器評估板試用體驗(yàn)連載】無人機(jī)感知系統(tǒng)
飛行的“傳感器” 氣壓傳感器在無人機(jī)產(chǎn)品應(yīng)用中的重要作用
新品上市:九軸姿態(tài)傳感器!
代碼分析:九軸姿態(tài)傳感器是無人機(jī)中必備重要器件。
評論