Vins_mono重力对齐理解
生活随笔
收集整理的這篇文章主要介紹了
Vins_mono重力对齐理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
// 6 通過將重力旋轉到z軸上,得到世界坐標系與攝像機坐標系c0之間的旋轉矩陣rot_diff// 此處解算得到的g是樞紐幀下的重力// 關于vins是4自由度的理解 四自由度應該指的是 x y z yaw // yaw的不可觀察性質 采集的g 與真實的g(真實的g 與z軸平行 yaw角無論如何變化 g都不會發生變化)相比較 可以直接解算出 pitch roll// 此處解出的R0 應該是樞紐幀坐標系到世界坐標系的旋轉矩陣Matrix3d R0 = Utility::g2R(g);// Rs0 是第0幀IMU坐標系到 樞紐幀camera坐標系的旋轉矩陣 R0*Rs[0] 表示第0幀body坐標系到世界坐標系的旋轉矩陣//獲得body坐標系相對于世界坐標系(第0幀body坐標系)的航向角 // 注意轉變思維 作者認為c0(第0幀)的坐標系就是世界坐標系// Rs[0] Tl_camera_b0 R0:T_world_cameradouble yaw = Utility::R2ypr(R0 * Rs[0]).x(); //// 前面可以看到R0 = Utility::ypr2R(Eigen::Vector3d{-yaw, 0, 0}) * R0; //此處的R0是樞紐幀相機坐標系到世界坐標系的轉換關系g = R0 * g; //Matrix3d rot_diff = R0 * Rs[0].transpose();Matrix3d rot_diff = R0;for (int i = 0; i <= frame_count; i++){// 那么此處的rot_diff應該是第1幀圖片imu坐標系到世界坐標系下的旋轉// ps[i] 表示的是第i幀與第0幀位置在樞紐幀相機坐標系下的 位置差// 仍然是相對于樞紐幀相機坐標系的變化Ps[i] = rot_diff * Ps[i]; //將相機坐標系下觀察到第k幀 與第零幀的位置差 轉換到世界坐標系下// Rs 最開始是第i幀imu坐標系到樞紐幀camera坐標系的相對旋轉// 那么此處rot_diff應該是 樞紐幀camera坐標系到世界坐標系的旋轉Rs[i] = rot_diff * Rs[i];// 由于vs所在的坐標系是樞紐幀的camera坐標系 所以此處我認為rot_diff表示的是camera坐標系到世界坐標系下的旋轉Vs[i] = rot_diff * Vs[i];// 但是若都是這么表示 Ps[i]到底能反應什么呢?}
重點理解R0 = Utility::ypr2R(Eigen::Vector3d{-yaw, 0, 0}) * R0; 為何需要給R0矩陣補償一個-yaw角度
上面的注釋有些錯誤的,是之前對于代碼的理解,沒有改過來,不過對于理解為何R0需要補償-yaw 下面的視頻應該能夠完全解釋了
我錄制了一段視頻:講了對于為何需要補償的理解 可以參考下Vins_mono重力對齊(為何需要補償-yaw)
總結
以上是生活随笔為你收集整理的Vins_mono重力对齐理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 图片加边框
- 下一篇: 图片文字识别工具调研