1. 首先是安装相应的mynt SDK.
- http://www.myntai.com/mynteye/depth小觅官网,在sdk下拉菜单中点击MYNT EYE Depth SDK,然后选择Linux Installation
- 安装安装步骤说明一步步的安装,安装sample后,测试一下安装是否成功.
我的电脑上安装了ROS,所以可以点击上面第一幅图中的ROS Installation,主要是操作下面这些步骤,尤其是RViz Display和Publish,
launch文件在/home/yunlei/mynt-sdk/MYNT-EYE-D-SDK/wrappers/ros/src/mynteye_wrapper_d/launch/mynteye.launch
执行Publish之后,通过 Rviz界面可以查看目前关于mynt相机发布的话题后哪些,也可以设置发布或者屏蔽一些topics.发布出来的topics都是按照mynteye.launch文件中的参数设置呈现出来的,比如默认打开IR并且IR density是4,如果想关掉IR那么就把
<!-- IR intensity -->
<arg name="ir_intensity" default="4" />中的"4"改成0
如果获取进行畸变矫正之后的图像数据,那么就把
<arg name="color_mode" default="$(arg color_raw)" />中的color_raw改成color_rectified
二. 使用rosbag record录制mynt相机发布的图像和IMU数据.
1. 首先查看目前可以订阅哪些topics,一个简单的方法就是试一下指令: rosbag record -a
使用下面这条指令录制双目灰度图另外加IMU数据
rosbag record newbag /mynteye/left/image_mono /mynteye/right/image_mono /mynteye/imu/data_raw
然后使用kalibr中的kalibr_bagextractor工具将上一步生成的bag提取出来,检查图像和IMU数据
三.获取两个小时的IMU数据标定IMU的bias和noise参数
四.使用kalibr中的kalibr_calibration_imu_camera工具标定相机和IMU之间的外参.
1.首先是IMU的参数文件imu_mynt.yaml
rostopic: /mynteye/imu/data_raw
update_rate: 200.0 #Hzaccelerometer_noise_density: 0.0268014618074 #continous
accelerometer_random_walk: 0.00262960861593
gyroscope_noise_density: 0.00888232829671 #continous
gyroscope_random_walk: 0.000379565782927
2. 相机的参数文件camchain.yaml
单目
cam0:camera_model: pinholedistortion_coeffs: [0, 0, 0, 0]distortion_model: radtanintrinsics: [698.4000, 698.4000, 625.39611, 362.95666]resolution: [1280, 720]rostopic: /mynteye/left/image_mono
双目(要注意写左右目相机的平移量时应该是以米为单位,我刚开始就写成了以毫米为单位,119.907,导致最后的标定结果很差)
cam0:camera_model: pinholedistortion_coeffs: [0, 0, 0, 0]distortion_model: radtanintrinsics: [698.4000, 698.4000, 625.39611, 362.95666]resolution: [1280, 720]rostopic: /mynteye/left/image_mono
cam1:T_cn_cnm1:- [1.0, 0.0, 0.0, -0.11990736389160156250]- [0.0, 1.0, 0.0, 0.00000000000000000]- [0.0, 0.0, 1.0, 0.00000000000000000]- [0.0, 0.0, 0.0, 1.0]camera_model: pinholedistortion_coeffs: [0, 0, 0, 0]distortion_model: radtanintrinsics: [698.4000, 698.4000, 625.39611, 362.95666]resolution: [1280, 720]rostopic: /mynteye/right/image_mono
标定板的参数文件(我使用的是april_6x6_80x80的标定板)
target_type: 'aprilgrid' #gridtype
tagCols: 6 #number of apriltags
tagRows: 6 #number of apriltags
tagSize: 0.088 #size of apriltag, edge to edge [m]
tagSpacing: 0.3 #ratio of space between tags to tagSize
五/总结
下面前两幅图是我标定的结果,后两幅图是下载的dynamic数据集使用kalibr标定的结果,这样比较下来,误差还是有些大的,不知需要注意哪些细节可以让标定效果更好.
dynamic数据集使用kalibr的标定结果.
d
分析标定结果精度不高的原因
1. 拍摄的图像不够清晰
2. 给定的imu的参数精度不高(现在使用的数据是参考一位网友的数据,,自己还没有标定,这个需要标定一下,或者查看一下资料,找到我这款相机的IMU的具体参数,)
3. 图像的帧率会影响标定结果吗?我目前的是30fps
4. 我使用的图像是去过畸变并进行了畸变矫正后的图像,这样的操作会影响标定结果吗?
6.我对比了dynamic数据集的图像,虽然他们的分辨率只有752*480但是图像清晰度很高,图像中的标定板区域亮度高于其余部分.
虽然我们获取的是720p的图像,虽然我们采集数据集时运动比较缓慢,但是查看图像,仍然有不少图像出现了模糊.
帧率大致在20fps
7.还有通过查看数据集的图像可以看出,录制的bag文件初始几秒时间,相机保持不动,然后再采取不同的动作尽可能的让IMU激励起来,与我们的数据相比,数据集中,运动更猛烈一些.
8. 明天做测试(1) 使用原始的图像数据,(2)在采集过程中运动更加剧烈有些,(2)开始采集后要先静置相机几秒再开始运动,