1、准备工作

需要提前安装Ceres solver和PCL,如果你安装的是完整版ROS那么PCL已经自动安装好了,ceres安装参见我另一篇博客https://blog.csdn.net/weixin_53073284/article/details/125908045?spm=1001.2014.3001.5501;

2、编译和报错

##报错1:error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope

##报错2:fatal error: opencv/cv.h: No such file or directory

##报错3:报错信息刷屏,这是c++编译器版本不对应引起的

##报错4:运行aloam时只有一条轨迹没有点云信息

mkdir -p aloam_ws/src
cd aloam_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
cd ..
catkin_make

你不想一个个尝试错误的话可以照着下面红色##########改动汇总###########的步骤一步到位

##报错1:改A-LOAM/src/kittiHelper.cpp里的CV_LOAD_IMAGE_GRAYCALE为cv::IMAGE_GRAYCALE

##报错2:改 A-LOAM/src/scanRegistration.cpp里的#include <opencv/cv.h>为#include <opencv2/imgproc.hpp>

##报错3:改A-LOAM下的CMakeLists.txt里的c++11为c++14

##报错4:运行A-LOAM时只有一条绿色的里程计轨迹没有点云信息, 改 A-LOAM/src/下所有/camera_init为camera_init,要改三个cpp文件,laserMapping.cpp和scanRegistration.cpp和laserOdometry.cpp,使用ctrl+h快捷键快速替换

##########改动汇总########### 改完记得重新catkin_make

//改A-LOAM下的CMakeLists.txt
c++11 改为 c++14//改A-LOAM/src/kittiHelper.cpp
CV_LOAD_IMAGE_GRAYCALE 改为 cv::IMAGE_GRAYCALE       //91行和93行//改A-LOAM/src/scanRegistration.cpp里的
#include <opencv/cv.h> 改为 #include <opencv2/imgproc.hpp>//改A-LOAM/src/三个cpp文件laserMapping.cpp和scanRegistration.cpp和laserOdometry.cpp
//使用ctrl+h快捷键快速替换
/camera_init 改为 camera_init

3、下载数据集

百度网盘链接链接:https://pan.baidu.com/s/1BBKDanm_q0jULC0XpxWlRA 提取码:7u9n

4、运行aloam

cd ~/aloam_ws
source devel/setup.bash
roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch//在数据集的下载位置右键新开终端
rosbag play YOUR_DATASET_FOLDER/nsh_indoor_outdoor.bag

 5、保存tum格式轨迹方便evo工具评估轨迹误差

在Lassermapping.cpp 228行后添加如下内容,改完记得catkin_make重新编译

//记得改为你的路径
std::ofstream pose1("/home/lds/txt/aloam.txt", std::ios::app);
pose1.setf(std::ios::scientific, std::ios::floatfield);
pose1.precision(15);Eigen::Matrix3d rotation_matrix;
rotation_matrix = q_w_curr.toRotationMatrix();
Eigen::Matrix<double, 4, 4> myaloam_pose;
myaloam_pose.topLeftCorner(3,3) = rotation_matrix;myaloam_pose(0,3) = t_w_curr.x();
myaloam_pose(1,3) = t_w_curr.y();
myaloam_pose(2,3) = t_w_curr.z();Eigen::Matrix3d temp;
temp = myaloam_pose.topLeftCorner(3,3);
Eigen::Quaterniond quaternion(temp);pose1 << odomAftMapped.header.stamp << " "<< myaloam_pose_f(0,3) << " "<< myaloam_pose_f(1,3) << " "<< myaloam_pose_f(2,3) << " "<< quaternion.x() << " "<< quaternion.y() << " "<< quaternion.z() << " "<< quaternion.w() << std::endl;pose1.close();

6、记得把"/home/lds/txt/aloam.txt"改为你的路径,提前在该路径下新建一个名为aloam.txt的文本,ctrl+c结束建图后你可以在aloam.txt看到aloam保存的tum格式轨迹

Ubuntu20.04+ROSnoetic运行A-LOAM并保存TUM格式轨迹相关推荐

  1. ROS入门(一)——ROS安装(vmware16+ubuntu20.04+ROS-Noetic)

    嵌套:ROS可以在Ubuntu上运行,Ubuntu在虚拟机Vmware中安装. 从 虚拟机vmware安装→ubuntu安装→ros安装,逐步介绍安装ROS环境的过程.整个过程是我一步步跟着各种博客安 ...

  2. Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、LIO-SAM 和 LVI-SAM

    文章目录 一.安装A-LOAM 1.1 安装Ceres 1.2 修改功能包 1.2.1 修改CMakeLists.txt 1.2.2 修改源码 1.3 编译A-LOAM 1.4 运行A_LOAM示例并 ...

  3. ubuntu20.04成功运行PL-VINS

    一.首先声明一下我的环境是ubuntu20.04+opencv3.30+eigen3 二.我们去官网进行源码的下载,地址:https://github.com/cnqiangfu/PL-VINS 三. ...

  4. Ubuntu20.04下面运行applet与freemind部署到web上(调研+找到替换方案)

    环境 Ubuntu 20.04 JDK 1.8 freemind 1.0.1 -------------------------------------------------- Reference里 ...

  5. Ubuntu20.04 编译运行apue.3e 避坑指南

    前提说明: 这里的命令默认在apue.3e解压文件夹目录下运行. 报告权限不够: make[1]: 进入目录"/home/cxs/code/apue.3e/lib" make[1] ...

  6. Ubuntu20.04 tcp调试工具mNetAssist安装

    1. 下载 tcp调试工具 mNetAssist.deb下载地址:https://cloud.189.cn/t/ra2M7juimAFb (访问码:k9kv) 2. 安装 用命令行安装软件如下: # ...

  7. ROS知识 【6】Ubuntu20.04下安装ROS-noetic

    背景知识 SLAM技术严重依赖于ROS操作系统,因此,必须高度熟悉ROS才能进行SLAM编程. Ubuntu20.04是最新的Ubuntu操作系统,而ROS-Noetic是ROS1.0的最后一个版本. ...

  8. Ubuntu20.04编译并运行imu_utils,并且标定IMU

    Ubuntu20.04编译并运行imu_utils,并且标定IMU 一.编译并运行imu_utils 1 安装依赖项 2 下载imu_utils和code_utils 2.1 code_utils编译 ...

  9. LeGO-LOAM:Ubuntu20.04下的编译与运行

    LeGO-LOAM在Ubuntu20.04下的编译与运行 一.源码及数据集下载 二.安装gtsam 三.建立ROS工作空间 四.LeGO-LOAM的编译 五.LeGO-LOAM的运行 六.可能会遇到的 ...

最新文章

  1. 智慧健康,协同发展:清华大学携手天津市共同探索健康医疗大数据
  2. 手把手教渗透测试人员打造.NET可执行文件
  3. 【arduino】用VSCode替代Arduino编辑器,arduino VSCode编辑器
  4. 减小Delphi xe系列生成的exe文件大小
  5. android智能农业,Android应用源码之智能农业
  6. 移动 Azure 资源后如何快速修复 Dashboard
  7. 云网管—云上构建网络自动化体系
  8. mysql删除盘点表,用友U8数据库表名参照表修改号参考.doc
  9. 电脑ping_Windows系统——ping打开教程
  10. mysql socket tcp udp_TCP、UDP、HTTP、SOCKET之间的区别
  11. 力扣491. 递增子序列(JavaScript)
  12. 深入继承之抽象类和接口综合分析及完整案列解说(一)
  13. redis主从和持久化
  14. 为什么有了scanf还要getchar()
  15. Java程序员从笨鸟到菜鸟(三)算法笔试题
  16. python正版软件多少钱_多款正版软件 + 付费教程迎来史低价,少数派「双十一」活动全面开始...
  17. uni-app实现上传照片和个人信息
  18. 没有学历学了JAVA怎么找份工作_自学java没学历可以找到工作嘛?
  19. html js 禁用浏览器上下滑动,纯JS阻止浏览器默认滚动事件,实现自定义滚动方法...
  20. 将阿拉伯数字转换成罗马数字 Integer to Roman

热门文章

  1. Nvidia 股票 5 年预测:这是 GTC‘22 所说的
  2. [EVO 3D GPS导航] 完美解决凯立德搜不到星问题
  3. linux的进程和计划任务
  4. iOS 14获取不到WiFi名字的解决方法
  5. 【CVPR2022】【小样本分类和分割】Integrative Few-Shot Learning for Classification and Segmentation
  6. 捷联式惯性导航基础知识(一)
  7. uni-app入门教程(9)字体库、自定义组件、打包和新闻实战
  8. 胡振波:我的芯片之路
  9. 涛思数据与中天钢铁签署战略合作协议,加速钢铁行业的数字化发展
  10. android eclipse debug coredump,Android P 开启抓取Coredump功能