第六章 PX4-Sensors解析
版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。
第六章?PX4-Sensors解析
????????這一章節(jié)并不難,也很容易理解,但是這一章節(jié)有幾個(gè)函數(shù)需要我們?nèi)ダ斫庖幌?#xff0c;所以這里我們這里寫(xiě)一章來(lái)說(shuō)明一下。Sensors是所有傳感器進(jìn)行數(shù)據(jù)組合,就是拿到傳感器的原始數(shù)據(jù)進(jìn)行組合在一個(gè)結(jié)構(gòu)體中方便訂閱使用。
????????Sensors的啟動(dòng)時(shí)在rc.sensors的腳本文件中,在啟動(dòng)所有傳感器之后最后一步啟動(dòng)了sensors,這里的啟動(dòng)同樣是沒(méi)有參數(shù),所以我們直接找到sensors.cpp查看入口函數(shù)就行了。
????????這里直接又是newsensors,這里沒(méi)什么好講的,跟前面說(shuō)的一樣就是進(jìn)行初始化。接著就是start函數(shù),
然后創(chuàng)建任務(wù)函數(shù)
進(jìn)入task_main函數(shù)。首先對(duì)傳感器初始化在這個(gè)函數(shù)沒(méi)有找到那些定義所以我們找到的是else的sensors_init這里面就有對(duì)加速度計(jì)、陀螺儀、電子羅盤(pán)、氣壓計(jì)進(jìn)行初始化,這里我們只分析其中的一個(gè),其他的照貓畫(huà)虎一樣的分析方法。這里我們只分析加速度計(jì)吧。進(jìn)入到accel_init函數(shù)。首先是獲取句柄至于這個(gè)獲取設(shè)備的路徑,這個(gè)在傳感器的初始化就看看有過(guò)注冊(cè)的,這個(gè)自己去找。然后就是ioctl函數(shù),這個(gè)函數(shù)也是重載函數(shù),主要使用來(lái)配置用的。這里是對(duì)采樣速率的設(shè)置。第一個(gè)參數(shù)是命令,第二個(gè)參數(shù)是值。這個(gè)值我們追蹤一下,在drv_accel.h文件中,這些驅(qū)動(dòng)文件都是給他們分配一個(gè)基地址,這個(gè)路徑下都有相應(yīng)的h文件,adc,baro,大家可以去看看都會(huì)給他們分配一個(gè)不一樣的基地址。這里我們就要回到相應(yīng)的傳感器了比如我們傳感器是mpu6000,在這里面我們能找到函數(shù)在這里面就有switch case語(yǔ)句都是進(jìn)行相應(yīng)的操作,看到?jīng)],設(shè)置采樣速率。這里你們可能會(huì)問(wèn)這里有3個(gè)參數(shù),而另外一個(gè)只有2個(gè)參數(shù)那么這里就要找到設(shè)備的nuttx驅(qū)動(dòng)了,找到這個(gè)目錄下cmake文件查看編譯的是哪個(gè)cpp文件,我們用的是nuttx系統(tǒng)編譯的就是文件了這個(gè)不難理解也沒(méi)必要去深入了解,其實(shí)只要知道怎么使用就行了。找到?jīng)],看到這里大家應(yīng)該知道這個(gè)工作機(jī)制是怎么處理了的吧!
????????初始化完成后就定義了原始數(shù)據(jù)的結(jié)構(gòu)體,這里的sensor_conmbined_s結(jié)構(gòu)體大家還記得吧,是從msg文件生成的h文件中有這樣的結(jié)構(gòu)體的,自己去查。開(kāi)始訂閱了,nuttx的這些個(gè)函數(shù)在前面介紹過(guò),不懂的話就去研讀一下。這里開(kāi)始訂閱數(shù)據(jù)了,用的是poll機(jī)制,這個(gè)機(jī)制不懂的話就去度一下,不難。看一下accel_poll函數(shù),這里復(fù)制訂閱的數(shù)據(jù),這些數(shù)據(jù)都是傳感器發(fā)布的,如果有疑問(wèn)就去看看那些傳感器是如何獲取數(shù)據(jù)和發(fā)布的。這里面就有對(duì)這些數(shù)據(jù)進(jìn)行矩陣運(yùn)算、積分、數(shù)據(jù)是否可靠然后進(jìn)行賦值給raw,這里面沒(méi)什么好說(shuō)的。接下來(lái)就是進(jìn)入到while中不斷去訂閱數(shù)據(jù)進(jìn)行賦值后發(fā)布。
????????Sensors這一章節(jié)相對(duì)來(lái)說(shuō)比較容易,這里面主要是將傳感器數(shù)據(jù)和遙控信息進(jìn)行一個(gè)匯總,方便位置和姿態(tài)去使用,到這里那些傳感器數(shù)據(jù)就比較可靠了,一次大家如果有跟好的算法就可以在這個(gè)函數(shù)中進(jìn)行處理或者在傳感器獲取數(shù)據(jù)就處理,PX4的數(shù)據(jù)處理主要還是在傳感器那端。如果大家有更好的算法也可以分享一下,大家可以共同研究然后共享出來(lái)。
http://blog.csdn.net/qq_18112493/article/details/70193856
總結(jié)
以上是生活随笔為你收集整理的第六章 PX4-Sensors解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 第五章 PX4-GPS解析
- 下一篇: 第七章 PX4-Mavlink解析