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)開始采集后要先靜置相機幾秒再開始運動,