背景:SLAM小白,因为项目需要花了两天时间编译代码+连接雷达实现了交互。

踩了很多坑,简单记录一下,让后面感兴趣的朋友少走点弯路~ 肯定有很多不专业的、错误的地方,还请大家不吝赐教(噗通)

也可以见知乎:https://zhuanlan.zhihu.com/p/357020888/ (我发现从知乎复制内容到CSDN特别方便啊)未完待续惹

主要分为5个部分:

  1. 编译算法前的准备(对应目录第1-4章)
  2. 编译SLAM算法 LeGO-LOAM-BOR (对应目录第5章)
  3. 编译SLAM算法 LeGO-LOAM和跑包 (对应目录第6-7章)
  4. 连接Velodyne激光雷达 VLP-16 (对应目录第8章)
  5. 基于小车的实时建图(对应目录第9-10章)

目录

1. 安装 ROS

2. 安装 OpenCV

3. 安装 GTSAM (Georgia Tech Smoothing and Mapping library, 4.0.0-alpha2)

4. 安装 PCL

5. 重头戏来了!编译 LeGO-LOAM-BOR

6. 跑包,在数据集上进行测试

7 删除LeGO-LOAM-BOR,重新下载编译LeGO-LOAM

8 与Velodyne VLP-16 三维激光雷达连接

9 实时建图:算法和雷达交互

10 小车及大范围场景的实时建图

参考文献


源代码github:https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/

优化版本的代码:https://github.com/facontidavide/LeGO-LOAM-BOR/tree/speed_optimization

硬件设备:Intel NUC 10代i7(NUC10i7FNH)

软件系统:Ubuntu 16.04

如果要正确编译、运行算法,相关依赖库必须准确、完整安装好,要不然会各种报错,绕路踩坑。下面对相关依赖库安装流程简要叙述。观察CMakeLists.txt,主要需要以下几个库:

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

当然,还有必须要的ROS。


1. 安装 ROS

机器预先已装 ROS-kinetic,具体安装过程这里不再赘述。


2. 安装 OpenCV

机器预先已装 OpenCV 4.3.0,具体安装过程这里不再赘述。

测试是否安装正确:

转到~/opencv-4.3.0/samples/cpp/example_cmake 目录下,打开终端,输入:

cmake .
make
./opencv_example

如果右上角,弹框出现 Hello OpenCV 则证明安装成功,如下图:


3. 安装 GTSAM (Georgia Tech Smoothing and Mapping library, 4.0.0-alpha2)

参考https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/中Dependency

wget -O ~/Downloads/gtsam.zip https://github.com/borglab/gtsam/archive/4.0.0-alpha2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.0-alpha2/
mkdir build && cd build
cmake ..
sudo make install

正在编译

安装完成示意


4. 安装 PCL

一开始没有注意要安装PCL,直接尝试编译LeGO-LOAM,发现无法通过编译,报错

Invoking "cmake" failed

或者

Invoking "make cmake_check_build_system" failed

后来才发现,需要安装PCL (捂脸)

PCL Address: https://github.com/PointCloudLibrary/pcl

4.1 首先提前安装PCL需要的各种依赖包

 sudo apt-get updatesudo apt-get install git build-essential linux-libc-devsudo apt-get install cmake cmake-gui sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-devsudo apt-get install mpi-default-dev openmpi-bin openmpi-common sudo apt-get install libflann1.8 libflann-devsudo apt-get install libeigen3-devsudo apt-get install libboost-all-devsudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-devsudo apt-get install libqhull* libgtest-devsudo apt-get install freeglut3-dev pkg-configsudo apt-get install libxmu-dev libxi-dev sudo apt-get install mono-completesudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre

PCL可视化相关函数库安装

sudo apt-get install libopenni-dev
sudo apt-get install libopenni2-dev

(有的教程表示 Boost >= 1.43,CMake >= 2.6,at least gcc 4.7.3 on Linux,so, 装过的朋友尽量装新版的API。)

4.2 从Github上clone PCL源码

 git clone https://github.com/PointCloudLibrary/pcl.git

4.3 编译PCL

  cd pclmkdir releasecd releasecmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \-DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON \-DCMAKE_INSTALL_PREFIX=/usr ..make

4.4 安装

sudo make install

4.5 在自己的代码里,测试PCL点云显示(这步非常关键!)

测试代码pcl_test.cpp:

#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>int main(int argc, char **argv) {std::cout << "Test PCL !!!" << std::endl;pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);uint8_t r(255), g(15), b(15);for (float z(-1.0); z <= 1.0; z += 0.05){for (float angle(0.0); angle <= 360.0; angle += 5.0){pcl::PointXYZRGB point;point.x = 0.5 * cosf (pcl::deg2rad(angle));point.y = sinf (pcl::deg2rad(angle));point.z = z;uint32_t rgb = (static_cast<uint32_t>(r) << 16 |static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));point.rgb = *reinterpret_cast<float*>(&rgb);point_cloud_ptr->points.push_back (point);}if (z < 0.0){r -= 12;g += 12;}else{g -= 12;b += 12;}}point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();point_cloud_ptr->height = 1;pcl::visualization::CloudViewer viewer ("test");viewer.showCloud(point_cloud_ptr);while (!viewer.wasStopped()){ };return 0;
}

CMakeLists.txt文件

cmake_minimum_required(VERSION 2.6)
project(pcl_test)find_package(PCL 1.2 REQUIRED)include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})add_executable(pcl_test pcl_test.cpp)target_link_libraries (pcl_test ${PCL_LIBRARIES})install(TARGETS pcl_test RUNTIME DESTINATION bin)

将pcl_test.cpp和CMakeLists.txt放在同一个文件夹下,如下图(具体文件夹没有要求)

执行:

cmake .
make
./pcl_test

4.6 然后报错:o(╥﹏╥)o 这个错误还是很常见的

bug: fatal error: pcl/visualization/pcl_visualizer.h: No such file or directory

这就体现了,运行测试代码的重要性,之前编译PCL都没有任何问题。

错误的原因是:没有正确安装好PCL库,PCL库的可视化需要依赖VTK库,所以如果没有提前装VTK,就会遇到这个问题。

解决方法:先装VTK和其他依赖包,再装PCL。(仔细一想,我是没有装VTK,惹)

4.7 安装VTK

4.7.1 在按照VTK之前,要安装依赖库X11,OpenGL和CMake-gui

首先安装X11

 sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev

安装OpenGL

sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev

安装 CMake-gui

sudo apt-get install cmake cmake-gui

4.7.2 下载VTK源代码

下载链接:https://www.vtk.org/download/

PCL和VTK可能存在版本需求,截止安装日2020年3月9日,PCL官网版本为1.11,(可以在/usr/include中寻找自己的PCL版本。)这里我下载的VTK版本是7.1.1,选择下图中的,VTK-7.1.1.tar.gz,下载完成后解压缩到文件夹中,自定义安装目录。(亲测可以使用。具体对应关系还不清楚惹。)

4.7.3 安装VTK

(1) 终端输入下指令,启动cmake-gui;

cmake-gui

(2) 设置where is the source code:的路径为文件夹VTK-7.1.1所在路径,如这里是/home/js/VTK-7.1.1;

(3) 设置where to build the binaries:的路径为/home/js/VTK-7.1.1/build,即在/home/VTK-7.1.1的路径下新建文件夹build;如下图

(4) 点击“Configure”,在弹出对话框中选择“Current Generator”为“Unix MakeFiles”,完成之后会提示“Configuring done”;

(5) 然后在里面勾选“VTK_GROUP_Qt”选项,再次点击“Configure”按钮,若提示警告信息,需要设置Qt安装路径,则设置路径后,再次点击“Configure”按钮;

(6) 提示“Configure done”,点击“Generate”按钮,在vtk_build会生成工程文件,完成之后会提示“Generating done”,如下图

(7) cd到vtk目录下的build文件夹,若没有则在使用$mkdir build来创建

(8) 终端输入,编译和安装

sudo make
sudo make install

至此,VTK安装完成!

4.8 卸载PCL

因为之前装了错误的PCL,所以需要卸载掉PCL,再重新安装。

终端内输入

sudo rm -r /usr/include/pcl-1.11 /usr/share/pcl-1.11 /usr/bin/pcl* /usr/lib/libpcl*
sudo apt-get remove libpcl-dev pcl-tools

即可。

4.9 重新安装PCL

因为已经安装好了依赖包,所以无需重新安装。重复4.2~4.4即可。

4.10 测试PCL

重复4.5步骤,此时不再显示错误,显示如下图形!

如果一开始不显示圆环(可能是一个矩形块)也不要紧,缩小即可见到。

PCL-1.11, VTK-7.1.1,Yes!


5. 重头戏来了!编译 LeGO-LOAM-BOR

因为一开始编译LeGO-LOAM出错,所以这次装一下优化版本LeGO-LOAM-BOR,希望不出错(事实证明只是我一厢情愿罢了)。

执行:

cd ~/catkin_ws/src
git clone https://github.com/facontidavide/LeGO-LOAM-BOR.git
cd ..
catkin_make

呃,非常抱歉,还是没有编译成功。

5.1 出错1

报错:

Invoking "cmake" failed
pip install -U rosdep rosinstall_generator wstool rosinstall six vcstools
Invoking "make cmake_check_build_system" failed
-- Could NOT find cv_bridge (missing: cv_bridge_DIR)

cv_bridge 是opencv和ros连接起来的桥,这个意思就是ROS缺少了cv_bridge,下面提供解决方案。

5.1.1 下载cv_bridge

git clone https://github.com/ros-perception/vision_opencv.git

5.1.2 找到下载文件地址,将vision_opencv中的cv_bridge/拿出来,放到工作空间(catkin_wa/src)中,编译:

cd ~/catkin_ws/src/cv_bridge
mkdir build
cd build
cmake ..
make
sudo make install

(1) 很不幸,编译不通过,报错:

Boost include path: /usr/include
Could not find the following Boost libraries:
boost_python37
No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the
directory containing Boost libraries or BOOST_ROOT to the location of Boost.

这个意思是,电脑里找不到boost_python37库,这个原因可能是装了其他的python版本。导致命名出现问题。

解决方案:进入/usr/lib/x86_64-linux-gnu文件夹中查看相关boost_python库,如图所示,发现没有boost_python37的相关库,只有python-py35的库。

我们要建立python-py35到python-py37的软连接。如果没找到python-py35而是找到了python-py3x(x为数字,可能为6,对应python3.6版本;可能为7,对应python3.7版本或者其他数字),解决方案相同,建立软连接即可。

即 py35.s0 -> py37.so py35.a -> py37.a,打开终端,输入

cd /usr/lib/x86_64-linux-gnu/
sudo ln -s libboost_python-py35.so libboost_python37.so
sudo ln -s libboost_python-py35.a libboost_python37.a

5.1.3 重新编译cv_bridge,重复(2)中操作

编译成功啦!

5.2 出错2

然后我们重新编译LeGO-LOAM-BOR,继续报错:

Could not find a package configuration file provided by "pcl_ros" with any of the following names:
pcl_rosConfig.cmake
pcl_ros-config.cmake

这个好解决,缺少pcl-ros

打开终端输入

sudo apt-get install ros-kinetic-pcl-ros

安装pcl-ros。

5.3 出错3

然后我们重新编译LeGO-LOAM-BOR,继续报错:

CMake Error at /home/js/catkin_ws/devel/share/ddynamic_reconfigure/cmake/ddynamic_reconfigureConfig.cmake:113 (message):Project 'ddynamic_reconfigure' specifies'/home/js/catkin_ws/src/ddynamic_reconfigure-kinetic-devel/include' as aninclude dir, which is not found. It does neither exist as an absolute
directory nor in

这个问题是缺少ddynamic_reconfigure

我们打开终端输入

sudo apt-get install ros-kinetic-ddynamic-reconfigure

安装ddynamic-reconfigure,然后将文件夹复制到catkin_ws/src中,如下图

5.4 出错4

然后我们重新编译LeGO-LOAM-BOR,继续报错:

make 66%时错误

error: return-statement with no value, in function returning ‘int’ [-fpermissive]
efine import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NUMPY_IMPORT_ARRAY_RETVAL; } }
note: in definition of macro ‘import_array’
efine import_array() {if (_import_array() < 0) {PyErr_Print(); PyErr_SetString(PyExc_ImportError, "numpy.core.multiarray failed to import"); return NUMPY_IMPORT_ARRAY_RETVAL; } }
src/CMakeFiles/cv_bridge_boost.dir/build.make:62: recipe for target 'src/CMakeFiles/cv_bridge_boost.dir/module.cpp.o' failed
make[2]: *** [src/CMakeFiles/cv_bridge_boost.dir/module.cpp.o] Error 1
CMakeFiles/Makefile2:930: recipe for target 'src/CMakeFiles/cv_bridge_boost.dir/all' failed
make[1]: *** [src/CMakeFiles/cv_bridge_boost.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

解决方法是,修改/home/js/catkin_ws/src/cv_bridge/src/module.hpp(根据自己的路径),将最后一段(36~40)行改为

static void do_numpy_import( )
{import_array( );
}

5.5 然后我们重新编译LeGO-LOAM-BOR,终于成功了!!

catkin_make


6. 跑包,在数据集上进行测试

6.1 针对LeGO-LOAM-BOR方法,在数据集上进行测试。

数据集地址:

https://github.com/TixiaoShan/Stevens-VLP16-Dataset​github.com

https://github.com/RobustFieldAutonomyLab/jackal_dataset_20170608​github.com

下载数据集,然后在catkin_ws中新建dataset文件夹,保存数据包,打开终端输入

cd ~/catkin_ws
mkdir dataset

然后拷贝数据包,如下图。

其中,nsh_indoor_outdoor.bag有国内百度网盘链接,提取码:l5rl

https://pan.baidu.com/s/1UswMElc81AKY8hnpmkjnrA​pan.baidu.com

打开终端,输入

roslaunch lego_loam_bor run.launch rosbag:=~catkin_ws/dataset/nsh_indoor_outdoor.bag lidar_topic:=/velodyne_points imu_topic:=/imu/data

其中,~catkin_ws/dataset/nsh_indoor_outdoor.bag 为数据集绝对路径,也可以cd进数据集文件夹,输入相对路径。其中,/imu/data是可选的

但是,很遗憾,失败了,提示无法打开数据包。

6.2 针对LeGO-LOAM-BOR方法,实时建图。

也不知道这个方法啥原因,我决定再试试给个机会,基于VLP雷达实时建图试试。

(1)首先要修改run.launch,可以另存为run1.launch:

<launch><!--- Sim Time --><param name="/use_sim_time" value="false" /><!--- Run Rviz--><node pkg="rviz" type="rviz" name="rviz" args="-d $(find lego_loam_bor)/launch/test.rviz" /><!--- TF --><node pkg="tf" type="static_transform_publisher" name="camera_init_to_map"  args="0 0 0 1.570795   0        1.570795 /map    /camera_init 10" /><node pkg="tf" type="static_transform_publisher" name="camera_to_base_link" args="0 0 0 -1.570795 -1.570795 0        /camera /base_link   10" /><!--- 根据雷达和小车相对位置确定 --><node pkg="tf" type="static_transform_publisher" name="base_link_to_velodyne" args="0 0 0 0 0 0      /base_link  /velodyne 10" />  <!--- LeGO-LOAM    <arg name="rosbag"  default=""/><arg name="imu_topic" default="/imu/data"/><arg name="lidar_topic" default="/velodyne_points"/>--> <rosparam file="$(find lego_loam_bor)/config/loam_config.yaml" command="load"/><node pkg="lego_loam_bor" type="lego_loam_bor"    name="lego_loam_bor"    output="screen" >
<!--<remap from="/lidar_points" to="$(arg lidar_topic)"/><remap from="/imu/data" to="$(arg imu_topic)"/><param name="rosbag"      value="$(arg rosbag)" type="string" /><param name="imu_topic"   value="$(arg imu_topic)" type="string" /><param name="lidar_topic" value="$(arg lidar_topic)" type="string" /><remap from="/imu/data" to="/imu"/>
--> <remap from="/lidar_points" to="/velodyne_points"/></node></launch>

(2)启动Velodyne16激光雷达

roslaunch velodyne_pointcloud VLP16_points.launch

(3)启动LeGO-LOAM-BOR

roslaunch lego_loam_bor run1.launch

可以正常启动,但是建图效果十分怪异,无法进行旋转,只是一个二维的,不给机会了,换回原来的方法!


7 删除LeGO-LOAM-BOR,重新下载编译LeGO-LOAM

7.1 编译LeGO-LOAM

我怀疑可能是LeGO-LOAM-BOR算法的问题,也有可能是我的问题。不管了,我准备卸载掉LeGO-LOAM-BOR,重新编译LeGO-LOAM。

搜索LeGO-LOAM-BOR,将所有与LeGO-LOAM-BOR相关的文件、文件夹都删去

因为LeGO-LOAM-BOR和LeGO-LOAM需要的依赖库相同,所以无需重复安装依赖库,直接下载编译即可。

cd ~/catkin_ws/src
git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git
cd ..
catkin_make -j1

编译完成示意图:

7.2 跑包,在数据集上进行测试LeGO-LOAM

打开终端输入

roslaunch lego_loam run.launch

cd到数据集文件夹下面,重新开启一个终端,输入

rosbag play --clock nsh_indoor_outdoor.bag

或者是

rosbag play nsh_indoor_outdoor.bag --clock --topic /velodyne_points /imu/data

(也可以输入数据集绝对路径)

即可看到数据集运行效果

也可以更换数据集,

rosbag play --clock 1.bag

其他数据集加载方式完全相同。


8 与Velodyne VLP-16 三维激光雷达连接

VLP-16与计算机采用网线连接,而不是2D雷达多采用USB连接。

此时,出现了一个问题,终端输入ifconfig,找不到有限网卡,只有lo,无线网卡,并没有表示eth0等的有限网卡。

8.1 尝试重新装有限网卡驱动

尝试了重新装有限网卡驱动,首先

lspci | grep -i net. 

找网络控制器,lspci. 找所有硬件设备,很抱歉,一串字母,我也不知道这个设备是什么网卡。如果有了解这个啥意思的欢迎留言告诉~

查阅了网上的资料,应该是I219-V网卡,对应的驱动型号是e1000e。从

Download Intel® Network Adapter Driver for PCIe* Intel® Gigabit Ethernet Network Connections under Linux*​downloadcenter.intel.com

下载了网卡驱动,直接下载点击安装即可。

下载了两个版本:3.8.4和3.5.1,进行安装。

但是,并没有work,无法安装上有限网卡驱动,我怀疑是有限网卡驱动已经安装了。

8.2 尝试重新启动网络管理服务

该操作针对有线连接图标不见,ifconfig查看也无网卡的情况。

但是,并没有work,可能是由于这个解决方案是针对有线连接的图标不见的情形,并不是现在遇到的现在的找不到有限网卡的情形。

8.3 尝试更新系统内核

查阅了网上资料,有人也遇到同样的问题,他通过更新内核解决了,我于是也是尝试更新一下。

键入:uname -r

可以查看当前内核版本:目前是5.2.20

准备更新的内核:5.6.16

8.3.1 开始升级内核。先安装升级所需的libssl1.1

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb

8.3.2 下载内核

地址:https://kernel.ubuntu.com/~kernel-ppa/mainline/

选择 5.6.16

选择下面amd64中,标框的4个deb包。

直接下载即可

8.3.3 安装内核

然后双击安装即可,安装的顺序是 headers_all, headers_generic, modules_generic, image_generic。(不依照也没事,它会提示有依赖关系)。也可以sudo dpkg -i linux-*(包名)安装,但是直接安装更简单。

安装完执行sudo update-grub后重启计算机

打开终端即可看到内核已经更新( uname -r 也可以),5.6.16-050616-generic

8.4 查看有限网卡

打开终端输入 ifconfig,终于!出现了有限网卡eno1。原来就是内核版本的问题。

8.5 新建有线连接

新增有限连接网络 VLP-16 (名称任意设置)

然后选择IPV4 Settings,方法选为 Manual,更改网络配置。

address: 192.168.1.77
netmask: 255.255.255.0
gateway: 192.168.1.1

然后点击保存。(注意IP地址的77,可以为1到254除开201以外的所有值,因为201是激光雷达的默认IP。)

8.6 安装ROS依赖包(激光雷达驱动)

sudo apt-get install ros-kinetic-velodyne

PS: kinetic:与机器安装的ROS版本一致。

8.7 创建ROS工程

mkdir -p catkin_velodyne/src
cd catkin_velodyne/src
git clone https://github.com/ros-drivers/velodyne.git
cd ..
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
catkin_make
source devel/setup.bash

编译一切正常,准备与雷达连接。

8.8 开始连接雷达

Velodyne雷达与电脑网线连接,并给雷达供电(12V),可以发现右上角图标更换。

打开网络连接界面,可以发现网络已经连接。

在更新内核之前,是怎么都连接不上的!

当然,这也就意味着NUC无法通过WIFI上网了。需要联网的工作,尽量选择在之前完成。

此时,打开网页,网址处输入192.168.1.201,会弹出激光雷达的参数界面:

这表明,雷达连接一切正常。

8.9 测试雷达

打开终端,输入

 roslaunch velodyne_pointcloud VLP16_points.launch

打开新的终端,输入下式,可以打开rviz,进行结果可视化

rosrun rviz rviz -f velodyne

不过刚打开是啥都没有的,需要自己订阅。

首先点击Add,添加pointsCloud2,

然后会发现左边的目录中多了个PointsCloud2,在该目录下点击topic,选择/velodyne_points,

即可以看到三维点云信息,如下图。

在终端中输入,可以记录数据:

rosbag record -o xxx.bag topic -name

比如velodyne_points,只保存/velodyne_points这个topic的数据(可以用rostopic list -v开看当前可用的topic),保存在当前目录的out.bag当中。

想简单点就

rosbag record -a

不过这个应该是保存了所有内容,所以体量非常大。

下图是连接激光雷达与NUC。


9 实时建图:算法和雷达交互

这里只针对LeGO-LOAM方法

首先,将LeGO-LOAM包里的run.launch文件进行修改,只需要将文件第4行中的true改成false即可,即

<param name="/use_sim_time" value="false" />

因为第4行 true表示虚拟运行,false表示真机器人运行。(之前的适用于LeGO-LOAM-BOR方法的launch文件不用管了)

打开终端输入

roslaunch velodyne_pointcloud VLP16_points.launch

再打开一个终端输入

roslaunch lego_loam run.launch

即可显示建图信息。(这是俺的教研室)

打开终端输入 rosbag record -a可以记录当前的数据。

运行结束后,打开两个终端,输入

roslaunch lego_loam run.launch
rosbag play --clock xxxxx.bag

xxxxx为自己保存的包名字。

即可以跑自己做出来的数据集。效果如下图,因为保存了所有的topic,所以内容会比较多。


10 小车及大范围场景的实时建图

装车

远距离通讯采用的是INSIGHT实时图传设备

办公室走廊实时建图

环土木交通楼实时建图

参考文献

https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/

https://github.com/facontidavide/LeGO-LOAM-BOR/tree/speed_optimization

https://blog.csdn.net/acyddlm/article/details/82974012

https://blog.csdn.net/fsencen/article/details/79386570

https://blog.csdn.net/weixin_41827934/article/details/90175635

https://blog.csdn.net/qq_29761791/article/details/94135193

https://www.cnblogs.com/winslam/p/12074432.html

http://www.bubuko.com/infodetail-3341579.html

http://blog.sina.com.cn/s/blog_c0468c8f0101ld2x.html

https://blog.csdn.net/qq_39346534/article/details/108617770

https://blog.csdn.net/yehe111/article/details/106800025/

https://blog.csdn.net/MIRANA0/article/details/106696334

https://www.jb51.net/article/192497.htm

https://blog.csdn.net/sinat_36502563/article/details/102996736

https://blog.csdn.net/m0_37931718/article/details/106612478

https://blog.csdn.net/mrh1714348719/article/details/103896168

https://blog.csdn.net/learning_tortosie/article/details/86527542

https://blog.csdn.net/qq_43535779/article/details/102579230

从0.3开始搭建LeGO-LOAM+VLP雷达+小车实时建图(保姆级教程,小白踩坑日记)相关推荐

  1. 服务搭建篇(一) 搭建基于prometheus + node_exporter + grafana + Alertmanager 的监控报警系统 , 保姆级教程

    感兴趣的话大家可以关注一下公众号 : 猿人刘先生 , 欢迎大家一起学习 , 一起进步 , 一起来交流吧! 一. 介绍 1.Prometheus: 一个监控系统,集成在项目中可以对项目运行的一些情况进行 ...

  2. 手把手教你搭建属于自己的PyQt5-YOLOv5目标检测平台(保姆级教程)

  3. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)...

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  4. 从购买服务器到网站搭建成功保姆级教程~超详细

    ??从购买服务器到网站搭建成功保姆级教程~真的超详细,各位看官细品 ??前言 ??预备知识 ??什么是云服务器? ??什么是域名? ??什么是SSL证书? ??服务器选配 ??阿里云[官网链接](ht ...

  5. 保姆级教程:手把手教你搭建个人网站

    保姆级教程:手把手教你搭建个人网站 前言 准备与搭建 1.Git管理工具的下载与安装 2.nodejs环境安装 3.hexo博客框架下载 npm换国内源 使用npm下载hexo博客框架 初始化mybl ...

  6. 搭建个人网站 保姆级教程(一)云服务器购买以及环境部署

    搭建个人网站 保姆级教程之云服务器购买以及环境部署 1. 云服务器 1.1 云服务器购买 1.2 云服务器远程连接 1.2.1 Mac系统 Royal TSX 下载安装 1.2.2 详细配置 1.2. ...

  7. 本地k8s集群搭建保姆级教程(4)-安装k8s集群Dashboard

    安装k8s集群管理UI 1 Dashboard安装 1.1 参考文档 Dashboard 是基于网页的 Kubernetes 用户界面. 你可以使用 Dashboard 将容器应用部署到 Kubern ...

  8. CSGO饥荒服务器搭建保姆级教程

    CSGO&饥荒服务器搭建保姆级教程 准备 第一步:软硬件 软件:Xshell.Xftp用于连接云服务器和进行文件传输. 进去填写邮箱,他会给你发个邮件,通过邮件获得下载链接,通过下载链接下载X ...

  9. 个人网站搭建保姆级教程(2)- 前端工程umi脚手架搭建

    前言 最近搞了个服务器,想着自己做个网站的脚手架,因为自己是纯前端新手,而且半路出家,中途踩了好多坑,准备写5篇给各位大佬们分享一下,如何从0搭建个人网站 服务器购买与环境搭建 前端工程umi脚手架搭 ...

最新文章

  1. 从苦逼撸代码到年入上百亿,成为商界领袖,IT从业者想要通过自己的努力改变现状,只靠单纯写代码远远不够...
  2. Matlab常用的11个快捷键【注释、自动对齐、跳转指定行、设置标签and断点、自动补全、历史命令、强制中断运行、退出、单行注释转多行】
  3. figma下载_素描vs Figma困境
  4. 【MVC】使用FormCollection获取Form表单数据
  5. 拓扑量子计算机 超导 光,科学家发现新型拓扑超导材料 有望推动实现拓扑量子计算...
  6. 边工作边刷题:70天一遍leetcode: day 2
  7. mybatis实现模糊查询时%%的处理
  8. Servlet的执行原理和生命周期
  9. 图示 Smart-Art
  10. VisionPro工具说明
  11. 团队作业9——项目验收与总结
  12. 系统功能测试思维导图
  13. 常用会计科目名词解释
  14. /etc/mtab 文件
  15. 好好说话之off-by-one
  16. typora-数学符号
  17. Python 05 包Packet
  18. ZXing 生成二维码和条形码
  19. this与supper
  20. Python-量化投资(二)

热门文章

  1. X3100M3 RAID及操作系统支持
  2. 全麦吐司和普通吐司的区别_全麦面包和普通面包的区别有哪些?
  3. Lenovo Thinkpad T14电脑 Hackintosh 黑苹果efi引导文件
  4. 安卓java录屏_安卓实现截屏以及录屏功能Demo
  5. Android-App性能测试工具GT的使用方法
  6. 蓝牙耳机到底哪款好?纠结症一定要知道的蓝牙耳机冷知识
  7. Laravel安装及环境的配置(XAMPP集成开发环境下)
  8. 保护气体在焊接中的作用和特征
  9. 重庆邮电大学计算机考研资料汇总
  10. areas表-省市区