貴州測繪儀器

新聞分類

產品分類

聯係九五至尊2

貴州九五至尊2科技有限公司

聯係人:許經理  13511946067

            陳經理  18785144071

座機:0851-86522769

網址:www.hyipoke.com    

地址:貴州省貴陽市觀山湖區北京西路379號

無人機航攝拍照瞬間精確空間位置的確定

您的當前位置: 首 頁 >> 新聞資訊 >> 行業新聞

無人機航攝拍照瞬間精確空間位置的確定

發布日期:2019-02-15 作者: 點擊:

無人機航攝拍照瞬間精確空間位置的確定,無人機攝影測量來為您介紹!


近年來,隨著無人機與數碼相機技術的發展,無人機航測以其高效、精確、作業成本低、適用範圍廣等特點,在地表複雜地區高分辨率影像的獲取方麵優勢明顯。無人機像片後續處理需要布設大量像控點,工作量大,耗時耗力,特別是在地表複雜地區。如果通過衛星定位的手段計算出拍照瞬間照片中心的精確位置和姿態,則可以節省大量施工投入,有效提高生產效率。本文即利用PPK作業方式進行航攝拍照瞬間空間位置的確定以進行研究。

一、硬件配置

利用ARM板配GNSS OEM板組成簡單的GNSS接收機,通過綜合測試並考慮體積方麵的要求,建議GNSS OEM板采用Trimble公司的BD930板卡;為了適應控製過程中的多線程操作,ARM 板配WinCE操作係統,要用兩個串口與GNSS差分板連接,其中一個記錄原始數據,另一個輸出NMEA數據。

二、無人機攝影測量整體設計

係統整體設計思路為:在地麵控製點架設基站持續接收GNSS定位數據;空中(機載)ARM板持續記錄GNSS定位數據,接收飛控拍照指令,收到飛控指令後控製相機拍照並記錄拍照的精確時刻;施工完成後,地麵基站和空中GNSS數據聯合處理,計算出每個曆元(根據設置參數記錄,如果設置成5 Hz,則每200 ms一個曆元)的精確坐標,根據記錄的拍照精確時間內插出每個拍照點的坐標。本文隻討論空中數據記錄和控製部分的幾個關鍵問題的解決思路。

三、空中數據記錄和控製部分的幾個關鍵問題解決思路

1. 精確時刻的確定

GNSS差分板在鎖定衛星後會通過一個針腳發送PPS信號,將該針腳引到ARM板的“中斷”接口,通過監控該脈衝的到來確定每秒開始的精確時刻。

為了應用方便,在WinCE底層驅動中,將“PPS到達”寫成事件驅動,具體過程如下:

1)將與GNSS的PPS連接的針腳配置成“中斷模式”;

2)建立通知用戶事件,命名為“GPS1PPS”:

g_hUserEvent =CreateEvent(NULL, FALSE, FALSE, _T("GPS1PPS"));

其中“g_hUserEvent”為用戶事件句柄。

3)建立中斷事件:

g_hEINT3Event = CreateEvent(NULL, FALSE, FALSE, NULL);

4)初始化中斷事件:

KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &g_IRQ,sizeof(UINT32), &g_SYSINTR, sizeof(UINT32), NULL);

其中“g_IRQ”是采用的中斷號,在筆者的實際設計中,該針腳接到了“中斷3”,即“g_IRQ = IRQ_EINT3”;

5)建立中斷服務線程:

hPPS =CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadForEINT3,0,0,NULL);

6)服務線程函數實現:

DWORD WINAPIThreadForEINT3(void){

  DWORD dwResult;

  while(TRUE)

  {

      dwResult = WaitForSingleObject(g_hEINT3Event, INFINITE);

      SetEvent(g_hUserEvent);

      InterruptDone(g_SYSINTR);

  }

  return 0;

}

該線程函數一直接收PPS信號,當PPS信號到達“中斷3”,該函數從驅動層向應用層產生事件報告。

7)應用層捕獲PPS到達事件:

建立線程,接收驅動層發上來的“GPS1PPS”事件,該事件發生後,記錄該時刻:

DWORDWINAPIGPS1PPSThread(LPVOIDlpParameter){

  HANDLEhGPS1PPSEvent= NULL;

  hGPS1PPSEvent= OpenEvent(EVENT_ALL_ACCESS,FALSE, TEXT("GPS1PPS"));

  while(1)

  {

      WaitForSingleObject(hGPS1PPSEvent, INFINITE);

      m_dPPSTick=GetTickCount64();

  }

  return 1;

}


由於PPS隻提供每秒開始的精確時刻,要得到任意一時刻的精確時間,無人機攝影測量需要以PPS時刻為基礎加上到需要確定時刻的偏移值,該偏移值的確定需要用其他方式定時。為了應用方便,筆者利用CPU距開機以來的時間進行相對定時,即需要確定時刻的時間=PPS時刻+(需要確定時刻的CPU定時-PPS時刻的CPU定時)。

為了得到精確的CPU開機以來的時間,重寫“GetTickCount64()”函數:

doubleGetTickCount64(){

     staticLARGE_INTEGERTicksPerSecond = {0};

     LARGE_INTEGERTick;

     if(!TicksPerSecond.QuadPart)

     {

         QueryPerformanceFrequency(&TicksPerSecond);

     }

     QueryPerformanceCounter(&Tick);

     doubleRet = (double)Tick.QuadPart*1000.0/TicksPerSecond.QuadPart;

     returnRet;

}

該方法的實現思路為:首先獲得CPU時鍾到該時刻的震動次數,然後獲取CPU時鍾每秒鍾的震動次數(震動頻率),其比值即為開機以來的秒數,該方法定時精度很高。

2. 捕獲飛控拍照指令信號

飛控發送的拍照指令是一個閉合信號(短路信號),如果要捕捉到該信號並產生中斷事件,需要通過邏輯電路將閉合信號轉換成電平信號。

閉合信號轉換為電平信號後,實現中斷的驅動和應用層事件的捕獲思路與處理PPS事件的道理相同,在筆者的實際設計中,該針腳接到了“中斷2”,中斷觸發方式為下降沿觸發。應用層接收到拍照信號後,由ARM板產生觸發相機拍照指令,並記錄拍照瞬間的精確時刻。

3. GNSS原始數據記錄

本文采用“雙緩衝”的方式接收和記錄GNSS原始數據,具體實現思路如下:

1) 定義兩個byte類數組,根據實現情況定義大小,可以是64 KB或更大。

2) 用一個變量記錄當前工作於哪個數組,另外用兩個變量記錄兩個byte數組存儲數據長度。

3) 當接收到GNSS原始數據,將其存儲到當前工作byte數組,如果當前數組已保存部分數據,則將新數據連接到原有數據後麵,為了提高數據轉存效率,用“memcpy”內存拷貝的方法。

4) 當當前工作byte數組存儲數據達到指定的長度,則將當前工作byte數組指定為另一個byte數組,同時啟動一個新的線程將達到指定長度的數據

寫到Flash。

5) 兩個數組交替進行存儲數據ꎬ配合多線程寫Flash方式,接收GNSS原始數據和記錄兩不耽誤,達到“雙緩衝”的效果。

4. 各線程的優先級

根據實際工作要求ꎬ對各線程優先級作以下設計:

1) PPS線程優先線設為“高”。

2) 捕獲飛控拍照指令信號線程優先級設為“一般”。

3) GNSS原始數據記錄線程優先級設置為“一般”。

四、結束語

在無人機低空航拍技術迅速發展的今天,如何提高作業效率、精度和質量是行業內一直追求的目標,本文從實用的角度闡述了利用PPK技術解決確定相機在空中拍照瞬間空間位置的思路。

無人機攝影測量隻對該方法實現思路的幾個關鍵問題進行了描述,且隻涉及了原始數據采集部分,如果要實現產品化的應用,還需要諸多的輔助技術、空中姿態數據的獲取及後處理應用相關的開發。


無人機攝影測量

本文網址:http://www.hyipoke.com/news/428.html

關鍵詞:無人機攝影測量,貴陽無人機攝影測量,貴州無人機攝影測量

最近瀏覽:

  • 在線客服
  • 聯係電話
    18785144071
  • 在線留言
  • 手機網站
  • 在線谘詢