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;

 

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

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

(那个博主的图)

 

(我的)

 执行:

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> class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
         std::auto_ptr<CloudViewer_impl> 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<typename> 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

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

 

准备跑包

(最开头我放的那个连接的那个博主有教数据集怎么弄,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这个文件,所以进行了更改

 再在终端执行

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

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

 

 

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

rosbag play --clock rrt13.bag

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

 

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

 

 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: LEGO-LOAM是一种基于激光雷达的室内外定位和地图构建方法。可以用来运行KITTI数据集,KITTI数据集是车辆自动驾驶领域的一个常用数据集。需要配置好相应的环境并进行编译运行,详细的安装和运行方法可以参考LEGO-LOAM的github页面。 ### 回答2: Lego-LOAM是一种基于激光雷达的SLAM算法,它可以通过对激光雷达扫描数据进行处理,实现对机器人运动及环境地图的估计和建立。Lego-LOAM能够较好地适应小规模场景的建图任务,尤其是在室内环境中具有一定的优势。在Lego-LOAM中,通过将扫描数据进行4D点云数据的拆分,将运动估计问题转化为优化问题,使用了多种传感器数据来进行建图和定位。 Kitti数据集是一个广泛使用的用于自动驾驶和机器人人工智能领域的开源数据集,其包含了激光雷达、相机、GPS和IMU等多种传感器数据,可以为机器人和自动驾驶系统的开发提供相应的数据。因此,Lego-LOAM也可以在Kitti数据集上进行测试和验证。 为了在Kitti数据集上运行Lego-LOAM,首先需要下载Kitti数据集,并将数据进行预处理,将数据转换为Lego-LOAM能够识别的格式,可以使用KITTI2Bag工具来进行转换。接着,需要设置运行Lego-LOAM时的相关参数,包括激光雷达的参数、地图的分辨率、点云降采样的程度等。 运行Lego-LOAM时,需要使用ROS来进行相关功能包的调用和运行。可以通过运行命令行来启动Lego-LOAM节点,将现有的参数传递给程序。运行后,Lego-LOAM将会读取Kitti数据集,进行运动估计和建图,并输出相应的结果。可以通过RViz或其他可视化工具来查看建立的地图和机器人的轨迹。 总之,Lego-LOAM可以在Kitti数据集上进行测试和验证,并可以通过设置相关的参数来适应不同的应用场景。同时也可以通过其他工具,如RViz等来进行效果的可视化和分析。 ### 回答3: LEGO-LOAM是一种高效,高精度的激光雷达SLAM算法,适用于车辆或机器人进行自主导航。LEGO-LOAM使用Velodyne VLP-16激光雷达,可以在移动车辆上实时构建地图和定位车辆的确切位置。Kitti数据集是一个常用的用于测试SLAM算法的公共数据集,它包括了各种场景下的激光雷达数据、图像和真实轨迹数据。 要在LEGO-LOAM中运行Kitti数据集,首先需要下载数据集数据集可以从互联网上下载,包含了许多不同场景的激光雷达数据、图像和地面真实轨迹数据。然后需要在LEGO-LOAM中设置参数。LEGO-LOAM提供了不同的参数配置文件,可以根据需要修改文件中的参数。其中一个重要的参数是Velodyne激光雷达的参数,需要根据使用的激光雷达型号进行设置。另外,还需要设置地面提取的参数和激光雷达的物理参数等。 在参数设置完成后,可以使用LEGO-LOAM中提供的kitti2bag脚本将Kitti数据集转换为ROS bag格式。这个脚本会读取数据集中的激光雷达数据、图像和真实轨迹数据,并将其转换为ROS bag文件,便于在ROS环境中进行处理。然后,在ROS环境下运行LEGO-LOAM节点,在处理ROS bag文件时,LEGO-LOAM会读取激光雷达数据、图像和真实轨迹数据,并在运行过程中实时地构建地图和定位车辆的位置。 最后,可以通过ROS的rviz工具观察LEGO-LOAM的输出结果。其中,激光雷达的点云会被转换为3D地图,并显示出来。同时,LEGO-LOAM会输出车辆在地图中的位置信息。通过观察rviz的输出结果,可以对LEGO-LOAM的运行效果进行评估和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值