从零入门激光SLAM(五)——手把手带你编译运行Lego_loam

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看完会有一定的收获。如有不对的地方欢迎指出,欢迎各位大佬交流讨论,一起进步。

经过前几次课的讲述,你已经知道了SLAM是干嘛的,以及一些Ubuntu和ROS的简单使用,最重要的是学会了如何编译C++工程。那就先来编译一个Lego_loam代码并运行它吧,你跑通的第一个SLAM算法。

1. 下载源码

mkdir -p ~/lego_loam/src
cd ~/lego_loam/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..

现在你catkin_make编译会报错,因为你并没有装任何的第三方依赖库。

2. 安装依赖

2.1 ROS包

打开其CMakelists.txt文件,可以看到需要这些依赖,一般catkin REQUIRED COMPONENTS后面跟的都可以直接使 用sudo apt-get install ros-noetic-***进行安装。(noetic为自己的ros版本名称)

find_package(catkin REQUIRED COMPONENTS
  tf
  roscpp
  rospy
  cv_bridge
  image_transport

  pcl_ros
  pcl_conversions

  std_msgs
  sensor_msgs
  geometry_msgs
  nav_msgs
  cloud_msgs
)

find_package(GTSAM REQUIRED QUIET)
find_package(PCL REQUIRED QUIET)
find_package(OpenCV REQUIRED QUIET)

2.2 第三方库

剩下的Gtsam,pcl,opencv为第三方库,一般需要手动源码安装。opencv和pcl ubuntu提供了安装命令,但这样安装有时会出现版本不对应的情况,所以也推荐源码安装,网上教程很多,这里不再赘述。

sudo apt-get update
sudo apt-get install libopencv-dev
sudo apt-get install libpcl-dev

安装gtsam优化器 

mkdir gtsam
cd gtsam
git clone https://bitbucket.org/gtborg/gtsam.git
cd ~/gtsam
mkdir build
cd build
cmake ..
sudo make install

3. 编译运行

3.1 编译

在所有需要的依赖都安装完成后,现在可以编译了

cd ~/lego_loam
catkin_make -j1

 当第一次编译代码时,需要在“catkin_make”后面添加“-j1”以生成一些消息类型。将来的编译不需要“-j1”。编译时出现错误,找不到Cmake文件,则需要在路径中添加相应的环境变量

3.2 运行

编译没有错误后,就可以运行代码了

source devel/setup.bash
roslaunch lego_loam run.launch

运行数据包,一定要加--clock时间,这样才能生成完整的全局地图。

没有数据包下载下面的

链接: https://pan.baidu.com/s/1IYCjdN_BokYkvlckQikgWw?pwd=jqix 提取码: jqix 

rosbag play 3-1.bag --clock

保存地图为pcl文件 

#转存为PCD文件 在代码建图过程中保存数据
rosbag record -o out /laser_cloud_surround

#转化为pcd文件
rosrun pcl_ros bag_to_pcd input.bag /laser_cloud_surround pcd

查看pcd文件
pcl_viewer xxxxxx.pcd

如果你看到这里,恭喜你在基本什么都不会的情况下运行了一个SLAM代码,开启了科研第一步。

你可能感兴趣的:(从零入门激光SLAM,人工智能,SLAM)