利用GPS与IMU怎样在摄影瞬间直接获得方位元素?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用GPS与IMU怎样在摄影瞬间直接获得方位元素?相关的知识,希望对你有一定的参考价值。

参考技术A 这个你可以直接在拍摄的时候,然后选择我的方位定位,这样的话就可以直接获得了 参考技术B 回答

亲,你好,很高兴回答你的问题,一般采用卡尔曼滤波,gps与 iMu其 原理是:先建立起以 Imu系统误差方程为基础首 iMU的组合导航系统的状态方程,以 G pS测量结果并gps 为基础建立组合系统的观测方程。采用线性卡尔曼滤波器为 I MU系统误差提供最小方差估计,然后利用这些误差的估计值去修正 Imu系统,减 iMU以少导航误差。另一方面,过校正后的 I系统经i MUG Ps定位结果来控制 I mU的系统漂移,i Mu使最终输出 参数同时具有高精度和高采样率,性能和可靠性都得到大幅度提高¨。为了使组合系统具有全局高 精度,业 Gp S 系统一般采用 G pS精密定位商 P/MU P技术与 I MU进行组合,普遍采用的是基于载波相位的动态差分 G pS定位 ( G S技术和精密单点定位 P D P) ( rc ep i oioig P P技术。 pei o t si n,P ) s n p tn的位置数据和 I U提供的姿态数据的联合后处理, M 可以直接获得遥感测绘所需的每张像片的 6个外方 位元素,从而能够大大减少甚至无需地面控制直接进行遥感影像的对地定位,著地缩短航测成图的显作业周期。

亲,你好,希望我的回答对你有帮助哦!祝你生活愉快,学业有成~如果觉得本次服务质量很好,麻烦给个赞 哦~

ROS实验笔记之——基于Kalibr标定event 与imu

之前博客《ROS实验笔记之——基于kalibr来标定DAVIS346》实现了基于color frame用kalibr矫正camera与imu。但是由于dvxplorer没有image,所以后面又在博客《ROS实验笔记之——基于dv-gui的camera与IMU校正(DAVIS346与DVXplorer)》直接利用dv-gui的模块进行矫正。但是感觉矫正后的bias挺大的,如下图所示

为此,本博文决定试试通过dvs_render来试试。通过dvs_render可以直接获得image,录取ros包后,直接处理,看看过程及效果如下

首先是标定板,采用跟上面一样的标定板吧(为了保证实验的一致性)

其参数为(注意这是实际的参数):

格子数目6*6

大格子边长:2cm
小格子边长:0.6cm
小格子与大格子边长比例:0.3

新建april_6x6_A4_dvs.yaml文件,格式参考上图的yaml,内容展示如下:

target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.02           #size of apriltag, edge to edge [m]
tagSpacing: 0.3          #ratio of space between tags to tagSize

录制bag,录制bag 的同时,相机对准标定板,或是固定相机或是固定标定板,晃动另一个,动作不要太大,不要让相机看不清标定板(就争取把标定板晃动到过相机像素平面的每个地方)

注意:需要修改相机帧数。“Good results have been obtained by using a camera rate of 20 Hz and an IMU rate of 200 Hz.”

此处打算把imu改为200,dvs/rendering改为20

#开启相机
roslaunch evio davis_testing.launch
 
rostopic list

#先看看两个topic的频率分别是多少
rostopic hz 话题名字
rostopic hz /dvs_rendering
rostopic hz /dvs/imu

#更改频率
rosrun topic_tools throttle messages /dvs_rendering 20.0 /event_frame
rosrun topic_tools throttle messages /dvs/imu 200.0 /imu
 
#看看是否更改成功 
rostopic hz /event_frame
rostopic hz /imu
 

#录制数据,把/dvs/imu也加入(建议降采样前后的topic都录制了)
roslaunch evio davis_raw_image_recording.launch 

录制完后,接下来就可以开始标定了

然而,在标定camera的时候,发现。根本没有办法检测到corner。。。。。。。

 试试dvxplorer

同样的也无法检测角点。。。。。故此不能用。。。。

既然如此,大概只能用回博客《ROS实验笔记之——基于dv-gui的camera与IMU校正(DAVIS346与DVXplorer)》中的方法,多次标定,尽可能的准确了。。。。。

#先校正camera
source ~/kalibr_workspace/devel/setup.bash
kalibr_calibrate_cameras --target /home/kwanwaipang/catkin_ws_dvs/src/EVIO/sensor_modeling/kalibr_davis_event/april_6x6_A4_dvs.yaml --bag /home/kwanwaipang/dataset/gwphku/kalibr_davis346_image_imu_2021-12-04-14-43-29.bag --models pinhole-radtan --topics /event_frame --show-extraction

kalibr_calibrate_cameras --target /home/kwanwaipang/catkin_ws_dvs/src/EVIO/sensor_modeling/kalibr_davis_event/april_6x6_A4_dvs.yaml --bag /home/kwanwaipang/dataset/gwphku/kalibr_davis346_image_imu_2021-12-04-15-00-57.bag --models pinhole-radtan --topics /event_frame  --show-extraction

#通过这个命令可以查看参数
#The temporal calibration is turned on by default and can be disabled using the --no-time-calibration argument. 
kalibr_calibrate_imu_camera --h

kalibr_calibrate_imu_camera --bag [filename.bag] --cam [camchain.yaml] --imu [imu.yaml] --target [target.yaml]


kalibr_calibrate_imu_camera --bag ***.bag --cam /home/kwanwaipang/catkin_ws_dvs/src/EVIO/config/kalibr_dvs/camchain.yaml --imu /home/kwanwaipang/catkin_ws_dvs/src/EVIO/config/kalibr_dvs/imu.yaml --target /home/kwanwaipang/catkin_ws_dvs/src/EVIO/config/kalibr_dvs/april_6x6_A4_dvs.yaml --show-extraction

请注意需要的模型为:

  • pinhole camera model (pinhole)
    (intrinsics vector: [fu fv pu pv])
  • radial-tangential (radtan)
    (distortion_coeffs: [k1 k2 r1 r2])

两个yaml文件的格式如下:

参考资料

https://github.com/ethz-asl/Kalibrhttps://github.com/ethz-asl/Kalibr

以上是关于利用GPS与IMU怎样在摄影瞬间直接获得方位元素?的主要内容,如果未能解决你的问题,请参考以下文章

雷达通信基于matlab间接卡尔曼滤波IMU与GPS融合含Matlab源码 1360期

多片前方交会的含义和前提

数据融合基于matlab拓展卡尔曼滤波IMU和GPS数据融合含Matlab源码 1600期

三轴速率陀螺装在俯仰轴上,怎么计算方位速率

360全景摄影师要怎样利用光进行拍摄

GPS定位总是偏在一个方向,距离也差不多是咋回事?