手機刷卡機pos機為什么要定位位
網上關于手機刷卡機pos機為什么要定位位的刷卡知識比較多,也有關于手機刷卡機pos機為什么要定位位的問題,今天第一pos網(www.cnksdq.com.cn)為大家整理刷卡常見知識,未來的我們終成一代卡神。
本文目錄一覽:
手機刷卡機pos機為什么要定位位
近很多小伙伴都提出了類似的問題,小編在這里解答一下大家的困惑,大家看不懂的地方,以及大家希望了解的技術細節,可以點開鏈接(http://amovauto.mikecrm.com/lThqMKF),通過填表來告訴我們您想了解什么技術。同時,我們也會開源一些P200科研無人機中的源碼給大家使用。
準備工作
飛控固件及版本:PX4(建議用最新的版本)
其他要求:機載電腦(默認已經掌握:如何使用Mavros連接機載電腦和飛控)
Mavros源碼鏈接:https://github.com/mavlink/mavros
舊的PX4手冊是沒有這部分相關內容的詳細說明的,最新版本的手冊已經更新了這部分內容,與本文檔內容略有重疊,但側重不同,供大家參考。官方教程鏈接:https://dev.px4.io/en/ros/external_position_estimation.html
飛控中的濾波模塊(濾波器)
狀態估計包括位置估計與姿態估計。在舊版本的飛控中默認使用的是attitude_estimator_q(姿態估計)、position_estimator_inav(位置估計,最新的固件已經刪除這個模塊了)或local_position_estimator(位置估計)。新版本固件中的默認濾波器是ekf2模塊(包含位置及姿態估計)。
本文就將利用ekf2模塊中提供的vehicle_visual_odometry.msg(uORB消息)接口實現這個功能。
室內定位需要的信息
一般針對室內情況,需要通過外部設備獲得無人機的位置及偏航角(這是由于飛控自身的磁力計在室內的太無力了)。
常見的定位方式
定位方式按照是否機載可以大致分為兩大類:外部定位及機載定位。
外部定位:利用動作捕捉系統(motion capturesystem,簡稱mocap)等設備測量無人機當前的位置及姿態。mocap目前主流的是兩家國外牌子:Vicon和Optitrack。mocap設備價格較為昂貴(十幾萬到幾百萬不等,但是精度很高,可以達到厘米甚至毫米級別的定位,且刷新率很高。機載定位:這大概就是目前比較火的視覺SLAM和激光SLAM。筆者用過的有:HKUST開源的VINS,谷歌開源的cartographer。如何在記載電腦中接受定位信息
如果是mocap的話,推薦使用vrpn_clinet_ros功能包來得到地面軟件發出的定位信息(只需要將地面軟件所在的電腦和機載電腦接入同一個局域網,IP設置正確即可。這一步不懂的可以留言,我后期可以補充具體步驟)。
主流的傳感器和SLAM算法一般都有相應的ros功能包,直接按照官方教程安裝,運行起來就可以看到其發布的包含定位數據的話題了。
注意:距離單位!!盡管默認的單位都是米,也不排除有例外的。以及大部分姿態都是用四元數表示,這里可能涉及到四元數與歐拉角的轉換關系。
小結:無論哪種定位方式,這一步你需要能夠在機載電腦中接收到所需要的定位信息(位置xyz+偏航角yaw)。
飛控中如何設置
為了配合機載電腦中傳來的定位信息,有兩個和ekf2有關的參數需要修改。
EKF2_AID_MASK 設置為24(即勾選vision position fusion and vision yaw fusion)EKF2_HGT_MODE 設置為VISION (默認為氣壓計)因為ekf2中默認是不會融合這個外部的定位信息的,這里相當于在ekf2中啟用這個功能。至于ekf2參數中還有很多和這個外部定位相關的濾波參數設置,就請參看官網教程吧。我沒有改任何參數,但是ekf2代碼的話,阿木團隊優化過,具體修改筆者也不清楚。
其他說明:
做了以上修改之后,水平校準會遇到問題,所以要修改之前校準水平。修改之后,自穩模式會變得有些奇怪,基本上只能使用位置閉環的控制模式了,也就是offboard模式。如何將定位信息發送到飛控中
話不多說,直接共享代碼 px4_pos_estimator.cpp
px4_pos_estimator.cpp是阿木社區最新推出的P200科研無人機中px4_command功能包中的一個小程序,主要負責的功能就是將外部信息發送到飛控中,代碼文件中有詳盡的注釋(因為是基于ros寫的,所以需要一點點ros編程的基礎)。該程序也只是提供一個示例及代碼框架而已,照搬肯定是不行的,部分地方還是要按照你選擇定位方式的具體情況來修改的。
我在這里大致提幾點注意事項:
坐標系轉換(對應的callback函數中修改):需要將外部定位信息轉換至ENU坐標系。mavros中默認使用的是ENU系。這里的ENU系是指:無人機前方為正,左方為正,上方為正,由上向下看飛機逆時針旋轉為正。/mavros/vision_pose/pose 這個話題發布的時候必須要加時間戳,不然mavros不會訂閱。訂閱飛控返回的位置及姿態信息并打印出來,同時打印外部定位信數據,用于檢查是否發送成功并確認方向。具體消息流向
ros話題是機載電腦中傳遞的消息載體,Mavlink是機載電腦與飛控傳遞的消息載體,uORB話題是飛控內部傳遞的消息載體。
這里針對外部定位位置(即一個包含xyz的數據類型)進行梳理:
首先是傳感器測量得到,由機載電腦中的ros話題發布出來。px4_pos_estimator.cpp訂閱該話題,進行一定處理后,轉存至另一個話題/mavros/vision_pose/pose 并發布。Mavros功能包中vision_pose_estimate.cpp訂閱/mavros/vision_pose/pose話題,并將其封裝成Mavlink消息,發送給飛控。飛控接收到該Mavlink消息,通過mavlink_receiver.cpp接收并處理,轉存為相應的uORB消息。飛控中ekf2模塊訂閱該uORB消息,并進行相應計算處理,融合得到無人機的位置速度等狀態。實現步驟總結
在機載電腦中,利用相應驅動程序或者功能包獲得外部定位數據,并以ros話題的形式發布出來。利用px4_pos_estimator.cpp程序訂閱該話題,做好相應坐標轉換,然后轉發該數據至飛控中。打印相應信息,檢查飛控是否收到定位信息。前后左右移動飛機,確認方向正確。調試建議
第四步很重要,基本上問題都出在這,如果實在搞不清方向轉換的,就多試幾次,因為位置的坐標轉換只是正負號的問題,多試幾次總能得到正確的結果。基本上飛行的控制精度是取決于這里的定位精度的。理解以下幾個概念:靜態定位精度,動態定位精度,控制精度。以激光slam為例,靜態精度1cm左右,動態精度可能只有5cm了,如果不其他(延時,控制參數等等)影響不顯著時,控制精度較好時在正負10cm以內,較差的話正負20cm以內,再差可能飛機就定不住發散了。以上就是關于手機刷卡機pos機為什么要定位位的知識,后面我們會繼續為大家整理關于手機刷卡機pos機為什么要定位位的知識,希望能夠幫助到大家!

轉載請帶上網址:http://www.cnksdq.com.cn/shuakatwo/229993.html
- 上一篇:刷卡機跳碼影響信用嗎
- 下一篇:卡拉卡刷卡機會風控安全嗎