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();