ubuntu18.04搭建LeGO-LOAM并实现建图+VLP雷达+安装GTSAM+安装VTK+安装pcl+创建工作空间+湖泊数据集(小白笔记)

http://t.csdn.cn/QIQDr

这是当时操作的主参考教程

一、安装ros

本机上已经有ros-melodic,ros安装可以参考其他博主的教程,或者我写的新手安装笔记

为之前安装的时候睬了很多坑,后来又因为目标检测yolov5、pytorch什么的重装了好几次系统,被迫生出来的经验

建议安装anaconda使用conda环境,这会很方便,并且减少之前可能出现的错误

(我以下都在我之前创建的conda环境中景象,每次操作前都操作

conda activate yt(yt是我创建的环境envs的名字)

这个指令,在这个环境(其实就是相当于一个容器,我感觉更像u型管,因为与外部大环境其实相关联的)

二、安装opencv

本机已有opencv,我之前在conda创建新环境的时候看到当时创建的时候已经有opencv了,如果没有的花可以按照其他的博主的教程进行安装,当然安装前要记得检测自己的机子上是否已经安装有opencv,不然重复下载可能会出错(由于文件名重复什么的),然后可以使参考上面那个博主的教程测试是否安装正确

三、安装GTSAM

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

四、安装VTK

4.1安装VTK

4.1.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.1.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.zip,下载完成后解压缩到文件夹,自定义安装目录(我在home/yt/下载里创建了一个文件夹VTK,从官网下载之后的zip解压到这个新建的文件夹中)。(亲测可以使用。具体对应关系还不清楚惹。)

4.1.3 安装VTK

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

cmake-gui

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

ubuntu18.04搭建LeGO-LOAM并实现建图+VLP雷达+安装GTSAM+安装VTK+安装pcl+创建工作空间+湖泊数据集(小白笔记)_第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)编译

在这个路径下

(yt) yt@yt-Legion-Y7000P-IAH7:~/下载/VTK/VTK-7.1.1/build$

依次执行下面三个指令

cmake ..
sudo make
sudo make install

 第一个指令结果

-- Check size of short
-- Check size of short - done
-- Check size of int
-- Check size of int - done
-- Check size of long
-- Check size of long - done
-- Check size of long long
-- Check size of long long - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/yt/下载/VTK/VTK-7.1.1/build

第二个指令结果

[100%] Building CXX object Views/Infovis/CMakeFiles/vtkViewsInfovis.dir/vtkSCurveSpline.cxx.o
[100%] Building CXX object Views/Infovis/CMakeFiles/vtkViewsInfovis.dir/vtkTanglegramItem.cxx.o
[100%] Building CXX object Views/Infovis/CMakeFiles/vtkViewsInfovis.dir/vtkTreeAreaView.cxx.o
[100%] Building CXX object Views/Infovis/CMakeFiles/vtkViewsInfovis.dir/vtkTreeHeatmapItem.cxx.o
[100%] Building CXX object Views/Infovis/CMakeFiles/vtkViewsInfovis.dir/vtkTreeMapView.cxx.o
[100%] Building CXX object Views/Infovis/CMakeFiles/vtkViewsInfovis.dir/vtkTreeRingView.cxx.o
[100%] Building CXX object Views/Infovis/CMakeFiles/vtkViewsInfovis.dir/vtkViewUpdater.cxx.o
[100%] Linking CXX shared library ../../lib/libvtkViewsInfovis-7.1.so
[100%] Built target vtkViewsInfovis

第三个指令结果

-- Installing: /usr/local/include/vtk-7.1/vtkRenderedHierarchyRepresentation.h
-- Installing: /usr/local/include/vtk-7.1/vtkRenderedRepresentation.h
-- Installing: /usr/local/include/vtk-7.1/vtkRenderedSurfaceRepresentation.h
-- Installing: /usr/local/include/vtk-7.1/vtkRenderedTreeAreaRepresentation.h
-- Installing: /usr/local/include/vtk-7.1/vtkRenderView.h
-- Installing: /usr/local/include/vtk-7.1/vtkSCurveSpline.h
-- Installing: /usr/local/include/vtk-7.1/vtkTanglegramItem.h
-- Installing: /usr/local/include/vtk-7.1/vtkTreeAreaView.h
-- Installing: /usr/local/include/vtk-7.1/vtkTreeHeatmapItem.h
-- Installing: /usr/local/include/vtk-7.1/vtkTreeMapView.h
-- Installing: /usr/local/include/vtk-7.1/vtkTreeRingView.h
-- Installing: /usr/local/include/vtk-7.1/vtkViewUpdater.h
-- Installing: /usr/local/include/vtk-7.1/vtkViewsInfovisModule.h

至此,VTK安装完成

更新一下

sudo apt-get update

五 安装pcl

sudo apt-get install libpcl-dev pcl-tools

安装OpenGL相关的包

sudo apt-get install freeglut3-dev

此时安装完成

这里安装参考了点这个博主的内容http://t.csdn.cn/3ChEw

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

测试代码pcl_test.cpp:

#include 
#include 
#include 
#include 
#include 
#include 
 
 
int main(int argc, char **argv) {
    std::cout << "Test PCL !!!" << std::endl;
    
    pcl::PointCloud::Ptr point_cloud_ptr (new pcl::PointCloud);
    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(r) << 16 |
		static_cast(g) << 8 | static_cast(b));
	point.rgb = *reinterpret_cast(&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;
}

 可以用txt文本写,然后改后缀就就行了,改成.cpp,就会变成c语言的文件了

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放在同一个文件夹下,如下图(具体文件夹没有要求):

ubuntu18.04搭建LeGO-LOAM并实现建图+VLP雷达+安装GTSAM+安装VTK+安装pcl+创建工作空间+湖泊数据集(小白笔记)_第2张图片(那个博主的图)

 

(我的)

 执行:

cmake .
make
./pcl_test

第一个指令结果

TypeFontConfig;vtkRenderingImage;vtkRenderingLIC;vtkRenderingLOD;vtkRenderingMatplotlib;vtkRenderingParallel;vtkRenderingParallelLIC;vtkRenderingQt;vtkRenderingVolumeAMR;vtkRenderingVolumeOpenGL;vtkTestingGenericBridge;vtkTestingIOSQL;vtkTestingRendering;vtkViewsContext2D;vtkViewsGeovis;vtkWrappingJava (Required is at least version "1.2") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/yt/下载/folder

第二个指令结果

(yt) yt@yt-Legion-Y7000P-IAH7:~/下载/folder$ make
Scanning dependencies of target pcl_test
[ 50%] Building CXX object CMakeFiles/pcl_test.dir/pcl_test.cpp.o
In file included from /home/yt/下载/folder/pcl_test.cpp:5:0:
/usr/include/pcl-1.8/pcl/visualization/cloud_viewer.h:202:14: warning: ‘template class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
         std::auto_ptr impl_;
              ^~~~~~~~
In file included from /usr/include/c++/7/memory:80:0,
                 from /usr/include/boost/config/no_tr1/memory.hpp:21,
                 from /usr/include/boost/smart_ptr/shared_ptr.hpp:23,
                 from /usr/include/boost/shared_ptr.hpp:17,
                 from /usr/include/pcl-1.8/pcl/pcl_base.h:48,
                 from /usr/include/pcl-1.8/pcl/common/common.h:41,
                 from /usr/include/pcl-1.8/pcl/common/common_headers.h:39,
                 from /home/yt/下载/folder/pcl_test.cpp:2:
/usr/include/c++/7/bits/unique_ptr.h:51:28: note: declared here
   template class auto_ptr;
                            ^~~~~~~~
[100%] Linking CXX executable pcl_test
[100%] Built target pcl_test

第三个指令结果

(yt) yt@yt-Legion-Y7000P-IAH7:~/下载/folder$ ./pcl_test
Test PCL !!!
^C

 这里我出现了另外一个窗口,右下角那个

ubuntu18.04搭建LeGO-LOAM并实现建图+VLP雷达+安装GTSAM+安装VTK+安装pcl+创建工作空间+湖泊数据集(小白笔记)_第3张图片

 

准备跑包

(最开头我放的那个连接的那个博主有教数据集怎么弄,bag怎么弄,我这里用的是学长给的我们学校湖泊的bag,还有数据集是我们自己之前弄的,需要数据集的可以参考那篇博客)

在跑bag之前需要有工作空间

七、创建工作空间

这里参考了这个博主的博客http://t.csdn.cn/6pHCK

创建当前工作空间路径,并使用catkin_make进行第一次编译。

# mkdir创建文件夹,-p可以创建多级文件夹
# 后面的路径可以自己指定
mkdir -p ~/catkin_ws/src
# 切换到创建的文件路径
cd ~/catkin_ws/
# catkin_make是ros自带的命令,类似于我们学习的Cmake .. 和 make
catkin_make

 我们可以在刚才创建的文件夹中找到一个新生成的devel文件夹,内部包含了很对*sh文件,使用source激活里面的setup.bash激活当前环境。

# 激活当前环境
source devel/setup.bash

 随后使用下述命令,查看是否激活成功。

$ echo $ROS_PACKAGE_PATH

 若返回的结果类似于如下形式,则证明环境激活成功。

/home/youruser/catkin_ws/src:/opt/ros/melodic/share

 如果在运行中出现如下报错

错误描述:[×××.launch]is neither a launch file in package [××] nor is [××] a launch file name. The traceback for the exception was written to the file

解决办法: 这里参考了这个博主的博客http://t.csdn.cn/Xcknr

cd ~/catkin_ws
source devel/setup.bash

 (但是这个的花可能下次同样的指令下次还会出现这杨的报错,然后再用这个指令解决,相当于每次都需要激活环境)

catkin_ws 是你的工作空间的名称,但是这样只是暂时解决了,本次有效。
一劳永逸的解决办法是:
打开.bashrc文件

gedit ~/.bashrc

 把下面这句话添加进去,保存文件

source ~/catkin_ws/devel/setup.bash

 这个指令我进行了更改,因为我这里出现了没有找到这个路径这个文件这样的报错,然后我打开了这个路径下知照例setup.bash这个文件,所以进行了更改

ubuntu18.04搭建LeGO-LOAM并实现建图+VLP雷达+安装GTSAM+安装VTK+安装pcl+创建工作空间+湖泊数据集(小白笔记)_第4张图片

 再在终端执行

source ~/.bashrc

然后我输入了上面所说的那个查看是否激活成功指令,返回结果正确,ok,完成

catkin_ws中新建dataset文件夹,保存数据包

我将学长给的bag直接拷贝到了这个文件夹中

八、下载编译LeGO-LOAM

 
   
  1. cd ~/catkin_ws/src

  2. git clone https://github.com/RobustFieldAutonomyLab/LeGO-LOAM.git

  3. cd ..

  4. catkin_make -j1

 

 编译完成示意图:

 

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

打开终端输入

roslaunch lego_loam run.launch

 我这里就出现了我上面说的工作空间的问题,然后像上面说的那样解决了

ubuntu18.04搭建LeGO-LOAM并实现建图+VLP雷达+安装GTSAM+安装VTK+安装pcl+创建工作空间+湖泊数据集(小白笔记)_第5张图片 

 

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

rosbag play --clock rrt13.bag

 (rrt13.bag是我的bag的名字)

 

 成功完成!!!耶!!!overover!!!

 

 

你可能感兴趣的:(LeGO-LOAM,Velodyne,深度学习,人工智能,c++)