LVI-SAM、VINS-Mono、LIO-SAM算法的阅读参考和m2dgr数据集上的复现(留作学习使用)

ROS一键安装参考:

ROS的最简单安装——鱼香一键安装_鱼香ros一键安装-CSDN博客

opencv官网下载4.2.0参考:https://opencv.org/releases/page/3/

nvidia驱动安装:ubuntu18.04 安装显卡驱动 - 开始战斗 - 博客园

cuda搭配使用1+2

cuda安装1:Ubuntu18.04 下安装CUDA_ubuntu18.04安装cuda-CSDN博客

cuda下载2:

https://zhuanlan.zhihu.com/p/664729624

lvi-sam的evo评价参考:

SLAM_轨迹算法精度评价指标(ATE、RPE)_绝对轨迹误差-CSDN博客

LVI-SAM在KITTI数据集上的整合与评估,

LVI-SAM评估_3d_追_光-开放原子开发者工作坊

Evo评测工具对VIORBSLAM2进行评估(详细步骤!!!)_viorbslam王京-CSDN博客

evo多路径画图:

轨迹评估工具使用:evo安装以及学习_evo轨迹评估-CSDN博客

(注意将保存的txt文件时间戳对应)

LVI-SAM代码阅读参考:(文章末)

老板:2周搞定激光雷达-视觉-IMU多传感器融合方案!我该如何动手?

https://www.zhihu.com/people/gao-li-dong-62

https://www.zhihu.com/people/yu-you-wei-42/posts

古月居 - ROS机器人知识分享社区

注释代码详解:GitHub - electech6/LVI-SAM_detailed_comments: LVI-SAM: Tightly-coupled Lidar-Visual-Inertial Odometry via Smoothing and Mapping

LIO-SAM阅读: 

源码解析参考:https://zhuanlan.zhihu.com/p/352039509

GitHub - smilefacehh/LIO-SAM-DetailedNote: LIO-SAM源码详细注释,3D SLAM融合激光、IMU、GPS

跑自己的数据集:LIO-SAM从0到1运行自己的数据集-CSDN博客

将KITTI数据集转为LIO-SAM算法可运行的.bag文件_kitti05-CSDN博客

VINS-Mono参考:

SLAM算法总结——经典SLAM算法框架总结_视觉slam算法-CSDN博客

数据集下载:

参考:KITTI数据集无法下载的解决方法_kitti数据集下载-CSDN博客

网站(代下载):下载

kitti数据集: The KITTI Vision Benchmark Suite

m2dgr数据集:GitHub - SJTU-ViSYS/M2DGR: M2DGR: a Multi-modal and Multi-scenario Dataset for Ground Robots(RA-L2021 & ICRA2022)

evo报错:

python版本切换: sudo update-alternatives --config python

python 版本:python --version

pip版本: pip -V

python版本与pip 版本不对应:大概率是因为python2和python3共存,pip下载的版本都进到python3。更改:python -m pip install --user --upgrade pip==9.0.3

报错qt:pip install PySide2

python3.6.9+pip9.0.3+Pyside2+pip3 intstall PyQt5==5.14.0

LVI-SAM算法跑m2dgr:GitHub - hongyeah314/LVI-SAM-large-scale: LVI-SAM for easier using (更简单的使用LVI-SAM的方法)

VINS-Mono算法跑m2dgr:(最简单的办法是将上面lvi-sam算法中的M2DGR_camera.yaml放进去,修改一下路径问题如euroc_config.yaml中保存路径)

VINS-Mono运行 - 似剑非攻 - 博客园

m2dgr数据集在vins mono运行_vins-mono跑m2dr的数据集-CSDN博客

M2DGR数据集在一些SLAM框架上的配置与运行:ORB-SLAM系列、VINS-Mono、LOAM系列、FAST-LIO系列、hdl_graph_slam-CSDN博客

保存路径输出为tum格式,修改visualization.cpp文件中的ofstream为

ofstream foutC("XX/XXX/XX输出路径.txt", ios::app);

foutC.setf(ios::fixed, ios::floatfield);

foutC << header.stamp.toSec() << " ";

foutC.precision(5);

foutC << estimator.Ps[WINDOW_SIZE].x() << " "

<< estimator.Ps[WINDOW_SIZE].y() << " "

<< estimator.Ps[WINDOW_SIZE].z() << " "

<< tmp_Q.w() << " "

<< tmp_Q.x() << " "

<< tmp_Q.y() << " "

<< tmp_Q.z() << endl;

// << estimator.Vs[WINDOW_SIZE].x() << ","

// << estimator.Vs[WINDOW_SIZE].y() << ","

// << estimator.Vs[WINDOW_SIZE].z() << ","

foutC.close();

lio-sam算法跑M2DGR数据集:

修改三个文件:

1.加入M2DGR.yaml文件(复制param.yaml文件中的内容,将部分内容修改为参考中的lio-sam中的yaml。参考:M2DGR数据集在一些SLAM框架上的配置与运行:ORB-SLAM系列、VINS-Mono、LOAM系列、FAST-LIO系列、hdl_graph_slam-CSDN博客)

2.根据上面1中的参考修改run.launch

3.修改mapOptimization.cpp,输出路径文件。(注意输出的时间戳是当前时间与初始时间的差值,可以更改输出为绝对时间,问deepseek)

//保存轨迹,path_save是文件目录,txt文件提前建好,/home/xxx/xxx.txt,

 std::ofstream pose1("XXX/XXXXX/XX.txt", std::ios::app);

pose1.setf(std::ios::scientific, std::ios::floatfield);

pose1.precision(9);

// if(flag_tum=1){

static double timeStart = laserOdometryROS.header.stamp.toSec();

// flag_tum=0;

// }

auto T1 =ros::Time().fromSec(timeStart) ;

// tf::Quaternion quat;

// tf::createQuaternionMsgFromRollPitchYaw(double r, double p, double y);//返回四元数

pose1<< laserOdometryROS.header.stamp -T1<< " "

<< -laserOdometryROS.pose.pose.position.x << " "

<<- laserOdometryROS.pose.pose.position.z << " "

<< -laserOdometryROS.pose.pose.position.y<< " "

<< laserOdometryROS.pose.pose.orientation.x << " "

<< laserOdometryROS.pose.pose.orientation.y << " "

<< laserOdometryROS.pose.pose.orientation.z << " "

<< laserOdometryROS.pose.pose.orientation.w << std::endl;

pose1.close();

你可能感兴趣的:(学习)