第五章 PX4-Pixhawk-GPS解析
第五章?PX4-GPS解析
在上一章節我們對傳感器MPU6000做了一個解析,MPU6000所支持的協議是SPI。這一章節我們來解析GPS,GPS使用的是串口通信。這里我們著重講解UBLOX的解析過程,并且會附帶串口的解析說明。這一章節完了之后大家有興趣可以嘗試RTK的數據解析,對于RTK我在前面講到過。
首先我們還是找到GPS的啟動代碼,GPS的啟動在RCS文件中直接就是
。這里我們回到驅動層
找到文件gps.cpp文件找到入口函數
。這里說明一下PX4的gps驅動是可以支持2套gps的
從這里就可以看出來。首先我們還是來看device_name,這個參數是
驅動層的h文件均在
目錄下。很顯然這里其實就是串口的名字。既然說到這里我們就來說說“/dev/ttys3”是如何注冊到串口的吧。
還記的SPI的驅動吧。這里我們主控是V2板的所以是支持的處理器是stm32的,所以我們就到stm32的驅動中去找,這里一般對stm32庫了解的話都知道,串口要么是usart要么是serial,這里我們就可以知道文件是stm32_serial.c,初始化串口程序就是up_serialinit了,至于為什么,你可以去追蹤一下,發現這個函數在
文件中調用,stm32是屬于arm不是avr哦,
然后一級一級的去追蹤你就能發現最終的源頭了。回到stm32_serial.c文件的初始那段代碼去。你可以看到NSH?后臺控制串口注冊的是串口7
CONSOLE_UART=7哦,這里你可以去追蹤哦,對照deconfig文件,那些define定義在deconfig文件能找到的。并且串口7還注冊了DMA控制,接下來的for會對串口一一初始化看到沒一開始是復制然后對x值進行改變然后注冊了哦,剛才我們找到GPS是ttys3,所以我們查看一下uart_devs[2],這里面的邏輯應該不難理解吧!發現注冊的是串口3。我們在來看看硬件的GPS接口
正好是串口3哦,這下對應起來了吧。串口的注冊也就講完了。
這里我們就直接進入start函數,這里的參數是相信也不難理解吧。然后就是產生驅動首先還是以new的方式進行初始,然后成功后進行init函數這里的init函數就是gps的init,這個自己理解一下,所以這個初始化也在本文件中,找到init函數看到的是串口任務同樣去追中函數找到task_main函數,首先是打開串口這里的_port在new的時候賦完值了哦。然后就是訂閱和初始化數據轉存,然后進入while中去執行。首先會判斷_fake_gps參數,這個是虛擬的數據,真正場合肯定不會用的,所以我們看else的,這里是一個case語句是對模塊的選擇,我們今天只講ublox,所以看到這里也是new GPSDriverUBX.然后是檢測配置主要是波特率,這里的configure是一個虛函數,我們使用的ublox所以當然是到ubx.cpp中去找了。這里面的函數都不難,但是要對比手冊來看,這里面的處理機制可以值得學習哦,通過輪詢的方式來查找ublox的波特率,還有就是配置ublox。
接下來就是復位那些數據了,然后就是要接收數據了。找到ublox的receive函數,進入讀取串口數據讀取的數據暫存在buf中。這里的read函數大家不妨去找找,這個是一個重載到gps.cpp中的回掉函數,大家也能看到讀取數據的case語句這里面就有對串口數據中斷讀取的函數,大家自己去理解一下。
然后進入數據解析階段了這里我們貼出ublox的協議格式。
所以從這里就可以看出幀頭以0xb5,0x62開頭。第一個case就是判斷是0xb5和是否為rtcm格式。
完成幀頭后需要進行校驗了,看到沒校驗是從第三個數據開始的哦,ublox采用的是校驗和的然后得到2個數據的長度
這里的_rx_payload_length就是長度了。接著就開始解析相關數據了,這里我們只解析SVINFO信息
看到沒通過之前接收到的_rx_msg來判斷接收到的是什么數據。首先我們還是來看看ublox的SVINFO數據幀,
進入到解析函數就可以看到這些數據的解析了,這里不做過多說明,只要對照手冊就很容易讀懂,這幀數據主要是衛星高度角、信噪比了。
解析出數據后就要繼續進行校驗和了,從剛才ublox的數據幀也可以看出來校驗和是占兩個字符。
當然校驗完成了后還是要解析其他的數據了,這里面就有NAV_PVT、NAV_POSLLH等等,這些數據幀你就看到了經緯度、高度,ecef坐標了,這些解析的就沒必要說了吧。
所有的數據在這里就算是接收完了,完了之后當然是要發布出去給需要的機制去訂制。
大家也行看到的是_report_gps_pos,其實這個不難理解,大家還記得那個new嗎?找到ublox的new初始化你能找到原因的。到這里GPS的驅動就基本上是完成了。總結
以上是生活随笔為你收集整理的第五章 PX4-Pixhawk-GPS解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第四章 PX4-Pixhawk-MPU6
- 下一篇: 第八章 PX4-Pixhawk-SDlo