日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

手写VIO学习总结(二)

發(fā)布時(shí)間:2024/3/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手写VIO学习总结(二) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1. 作業(yè)1
    • 1.1 方法1
  • 2. 作業(yè)2

系列筆記:
手寫(xiě)VIO學(xué)習(xí)總結(jié)(一)

1. 作業(yè)1

1.1 方法1

  • 1 利用vio_data_simulation-ros_version生成imu的靜止時(shí)候的仿真數(shù)據(jù):
    具體步驟:
1.建立work space 2.利用caktin_make編譯vio_data_simulation-ros_version 3.rosrun vio_data_simulation vio_data_simulation_node注意:1.需要修改vio_data_simulation-ros_version/src/gener_alldata.cpp中的bag路徑 2.打開(kāi)vio_data_simulation-ros_version/src/param.h可以設(shè)置參數(shù)
  • 2 利用高溫良的開(kāi)源代碼完成,參考我以前的博文:無(wú)人駕駛算法學(xué)習(xí)(十一):IMU標(biāo)定及Allan方差分析
  • 3 待續(xù),具體分析

2. 作業(yè)2


readme中提示: 1. 編譯vio_data_simulation-master 2. 執(zhí)行bin/data_gen, 生成數(shù)據(jù) 3. 執(zhí)行python_tools/draw_trajectory.py 畫(huà)出軌跡 4. 換成中值積分, 再重做一遍上述1,2,3過(guò)程

  • 1 歐拉法
    編譯vio_data_simulation-master, vio_data_simulation-master是一個(gè)Cmake工程,對(duì)其進(jìn)行編譯。
cd vio_data_simulation-master mkdir build cd build camke .. make cd ../bin ./data_gen

此時(shí),在vio_data_simulation-master/bin目錄下會(huì)生成一些txt文件,我們需要的是imu_pose.txt和imu_int_pose.txt,然后用Python的matplotlib繪圖。

說(shuō)明:
imu_pose.txt是由給定的軌跡方程和歐拉角,生成IMU的pose,imu_int_pose.txt是由給定的軌跡得到速度v和加速度a,再根據(jù)歐拉法得到IMU的pose。

cd ../python_tool python draw_trajctory.py

  • 2 中值法
    • 2.1 vio_data_simulation-master/src/imu.cpp中歐拉法
/// imu 動(dòng)力學(xué)模型 歐拉積分Eigen::Vector3d acc_w = Qwb * (imupose.imu_acc) + gw; // aw = Rwb * ( acc_body - acc_bias ) + gwQwb = Qwb * dq;Vw = Vw + acc_w * dt;Pwb = Pwb + Vw * dt + 0.5 * dt * dt * acc_w;

  • 2.2 中值法


替換的代碼:

MotionData imupose = imudata[i];MotionData imupose_ = imudata[i-1];//delta_q = [1 , 1/2 * thetax , 1/2 * theta_y, 1/2 * theta_z]Eigen::Quaterniond dq;Eigen::Vector3d dtheta_half = 1.0/2.0* (imupose.imu_gyro + imupose_.imu_gyro) * dt /2.0;// Eigen::Vector3d dtheta_half = (imupose.imu_gyro + imudata[i-1].imu_gyro)/2 * dt /2.0;dq.w() = 1;dq.x() = dtheta_half.x();dq.y() = dtheta_half.y();dq.z() = dtheta_half.z();/// 中值積分Eigen::Vector3d acc_w = (Qwb * (imupose_.imu_acc) + gw + Qwb*dq * (imupose.imu_acc) + gw )/2; // aw = Rwb * ( acc_body - acc_bias ) + gwQwb = Qwb * dq;Vw = Vw + acc_w * dt;Pwb = Pwb + Vw * dt + 0.5 * dt * dt * acc_w;

  • 3 注意:
    對(duì)比發(fā)現(xiàn)中值法更精準(zhǔn)!!!

總結(jié)

以上是生活随笔為你收集整理的手写VIO学习总结(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。