当前位置:   article > 正文

点云开发全纪录(Ubuntu20.04&Livox HAP&C++)更新中_嵌入式点云开发

嵌入式点云开发

点云的学习

Livox SDK2

  • Livox是一个生产激光雷达的产商(览沃激光雷达),大疆的无人机应该是用了该产商的激光雷达
  • 览沃提供了GitHub项目中的工具包来解析某系型号激光雷达的数据,使他可以成为点云数据。

部署github项目

查看Github项目中的指导操作

构建build文件夹
> cd Livox-SDK2
> md build && cd build
  • 1
  • 2

安装cmake

参照安装教程并为它添加环境变量

跳过安装VS2019

因为原程序包支持2019,所以得另外下载VS2019,网上有提供正版社区版的安装教程

但是,为了节省时间,这边选择使用VS2015进行项目的构建。

命令为

cmake .. -G "Visual Studio 14 2015" -A x64
  • 1

编译
  • 打开build文件夹中的sln文件(项目文件),进入vs2015的界面,点击“运行”,对项目进行编译(compile)。

​ 得注意的是,一定是“release“环境下进行编译,而不是”debug“

  • 运行命令

    .\livox_lidar_quick_start.exe config.json
    
    • 1

​ 注意要加".",这样做是 PowerShell 中的安全策略导致的,默认情况下 PowerShell 会阻止执行在当前位置找到的未知命令,以避免恶意代码的潜在风险。

杨必胜GSIS上的综述

叙述了点云数据处理的几个方面以及发展历程和未来方向:

  • 去噪:基于优化的方法和基于深度学习的方法

  • 补全:对细节(如电线杆等薄结构)补全不够;实时补全的能力不够(自动驾驶领域);泛化能力

  • 配准:泛化能力、精度问题、效率问题

  • 分割:机器学习和深度学习的方法

  • 表面重建:从离散点云中获得一个连续表面;现有方法可以分为基于三角剖分的方法、隐式方法和基于深度学习的方法。

  • 展望:

    ①发展点云大数据的储存与更新机制,为点云的高效、深度利用提供基础支撑;

    ②建立面向新型基础测绘的点云三维信息提取与建模的行业和国家标准,服务实景三维中国建设和自然资源监测;

    ③发展面向地球大数据的点云精准理解综合人工智能深度学习等,建立点云大数据对象化深度学习网络,在全球、区域、单体对象上对场景精准理解;

    ④研制采集处理与服务一体化智能装备,服务重大基础设施(如:电网、高铁、交通等)健康管理。

乌班图操作记录

  • 开机密码:xst528528

  • 终端

    Ctrl+Alt+T //打开终端
    Ctrl+d    //关闭终端
    Ctrl+L    //清空
    
    • 1
    • 2
    • 3
  • 关机:

sudo shutdown -h 18:00    18点关机
sudo shutdown -r now      立即重启
sudo shutdown -h now      立即关机
  • 1
  • 2
  • 3
  • 查看版本

    输入uname - a 操作系统的发行版号和操作系统版本。
    输入uname -v  查看版本号。
    lsb_release -a 查看发行版本信息,并且方法可以适用于所有的Linux发行版本。
    cat /etc/issue 查看到当前是Linux什么版本系统。
    cat /proc/version 查看内核的版本号。
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 黏贴复制

    ctrl+shift+c
    ctrl+shift+v
    
    • 1
    • 2
  • 文件切换

cd ~/Desktop  //切换到home目录下的桌面文件夹 “~”就是指主目录home
cd C++Build	  //切换到某文件下的 相对文件夹
cd      //返回主目录(/home/)
cd ~    //返回主目录
cd ..   //返回上一级目录
cd xx   //进入xx目录中(xx必须在当前目录中)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 查看文件夹中的文件
ls 		 //查看所有没被隐藏文件
ls -a 	 //查看文件夹下所有文件(包括隐藏文件)
ls -l    //查询 文件夹下文件的详细信息
ls -al   //查看文件夹下所有文件信息(隐藏文件)
  • 1
  • 2
  • 3
  • 4

C++ 编辑

  • vim快捷键
vim xxx  //打开文件 或者新建这个文件
:   	//进行vim命令输入
:q  	 /退出
:wq     //保存并退出
  • 1
  • 2
  • 3
  • 4
  • “三部曲”

    g++ -Wall test.cpp -o  test
    g++ test.cpp  //似乎不用
    ./test
    
    • 1
    • 2
    • 3

成功编译

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MaTX1uFX-1689487423360)(E:\TyporaImage\image-20230618170750824.png)]

下载VSCode

可以使用VSCode对C++项目使用图形化界面进行编译

直接下载会有很多报错(比如缺少关联信息,版本不匹配等)

有人直接打包好各种安装软件,输入一条命令即可傻瓜式安装可以少走很多弯路。

如何使项目编译生效

因为Livox SDK2是打包好的cmake项目

​ 我的理解是,首先C++文件都是先编译后运行!那为什么 我们平常在Windows+VS2015的环境中写C++项目,只要点击“运行”按钮就可以直接跳出运行结果呢?王师兄的观点上,因为VS2015是在你写代码的同时在后台已经同步编译了!

​ 在乌班图系统+VScode下的C++项目,一般都会有很多源文件(A.cpp、B.cpp、C.cpp等等)和头文件(A.h,B.h,C.h等等),那我们是不是得一个个去编译呢?CMake的出现应该(我的理解,再强调一遍,仅供参考)就是为了可以统一编译所有头文件。这样一行命令(cmake)就批量解决了。

  • 更改Livox SDK后如何使它生效?

​ 因为我之前编译过SDK的项目,编译后生成了build文件,再此又把整个文件夹移动了位置。

​ 然后我在代码中做了修改,这时再编译,需要把build文件夹里的内容全部删除,重新编译(原因是我换了文件夹位置)

​ 使用两个命令

cmake ..
make -j  //make也行 加了-j是为了高效率的批量构建文件



//运行的代码
cd samples/livox_lidar_quick_start && ./livox_lidar_quick_start ../../../samples/livox_lidar_quick_start/hap_config.json
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

补充

  • 这个时候是不是有人说 VSCode太拉了,既然不能一键编译运行,那和记事本有啥区别?

​ 还别说,VSCode就是个高级的文本编译器,高级在于它可以提供代码提示,可以装各种编程插件,但是本质应该还是个文本编译器。

  • 第一次编译项目会很慢 但是构建好一次后。之后再执行那两行代码 就会快很多

运行过程

  1. 打印的日志
    (img-hLEk04fQ-1689487423361)(E:\TyporaImage\运行结果A.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F4yObcqz-1689487423362)(E:\TyporaImage\运行结果c.png)]

输出data 这说明我们获取的事LivoxLidarCartesianHighRawPoint(单位是毫米)

如果前方无物体(或者物体超出范围) 则返回(0,0,0)

清洗数据并输出Las

把x,y,z给清洗出来(去除零值),然后实时读取到txt中,最后再将txt转为las格式

可视化

有一个在线可视化的网站:http://lasviewer.bimant.com/

总结

点云的坐标(x,y,z)是以雷达镜头为原点坐标的坐标系下的。x,y,z代表被测点与镜头的相对距离,比如(10,0,0)应该就代表距离镜头x方向10mm的一点。

读写las文件

为了跳过生成“txt”这个步骤,可以直接产生las文件,需要动态的将点云数据写入到las文件中去。

利用C++ 写入las文件需要三个库,先后顺序分别是boostlibgeotiffliblas库。

安装boost

不用去官网下砸压缩包再解压什么的,可以通过ubuntu20.04自己的镜像源进行下载。参考这篇文章

1.打开终端,更新软件安装列表
sudo apt update

2.安装boost库
sudo apt install libboost-all-dev

3.等待安装完成,检查boost的版本:
dpkg -s libboost-all-dev | grep Version

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

截图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J1cPEzOL-1689487423362)(E:\TyporaImage\image-20230712144018683.png)]

验证boost是否安装成功

在vscode里输入代码,点击运行,如果终端正确输出,则代表安装成功

安装libgeotiff

参考这篇文章

需要注意的是,安装libgeotiff前得先安装libtiff,不然在安装“libgeotiff”时会报错~~需要对libxtiff进行大量的改写或修改。

具体内容为:“configure: error: You will need to substantially rewrite libxtiff to build libgeotiff without libtiff

sudo apt-get install libtiff-dev  //安装libtiff

sudo apt-get install libproj-dev  //安装libproj
  • 1
  • 2
  • 3

然后再安装libgeotiff,因为我是ubuntu20.04版本,所以1.3.0的libgeotiff我没装成功

#下载
wget https://download.osgeo.org/geotiff/libgeotiff/libgeotiff-1.6.0.tar.gz 

# 解压
tar -zxvf  libgeotiff-1.6.0.tar.gz

# 解压后进入文件夹
 cd libgeotiff-1.6.0

#运行配置文件
./configure

make
sudo make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

安装libLAS

#解压文件
tar -jxvf libLAS-1.8.1.tar.bz2

#进入目录
cd libLAS-1.8.1

#创建文件夹并进入
mkdir build    &&     cd build

#构建项目
cmake ..

#生成可执行文件
make

#编译
sudo make install 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
验证libLAS的安装是否成功

找来一个las文件,把它放到ubuntu的某一目录下(比如桌面上)

运行命令

lasinfo /home/ubuntu/Desktop/C++Build/data/room.las
  • 1

报错了:

error while loading shared libraries: liblas.so.3: cannot open shared object
  • 1

共享库路径设置问题,需要再执行一个命令

sudo /sbin/ldconfig 
  • 1

然后再输入命令

lasinfo /home/ubuntu/Desktop/C++Build/data/room.las
  • 1

就会看到相应的信息被打印出来

修改CMakeList.txt

cmake_minimum_required(VERSION 3.0)

project(livox_sdk2)

set(CMAKE_CXX_STANDARD 11)
find_package(libLAS REQUIRED)

message(STATUS "main project dir: " ${PROJECT_SOURCE_DIR})

if (CMAKE_CROSSCOMPILING)
	set(THREADS_PTHREAD_ARG
		"PLEASE_FILL_OUT-FAILED_TO_RUN"
		CACHE STRING "Result from TRY_RUN" FORCE)
endif()

if (UNIX)
	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
endif(UNIX)

include_directories("/usr/local/include/liblas/")
link_directories("/usr/local/lib")
add_executable (main "/home/ubuntu/Desktop/C++Build/Livox-SDK2/samples/livox_lidar_quick_start/main.cpp")

add_subdirectory(sdk_core)
add_subdirectory(samples)


target_link_libraries (main  "/usr/local/lib/liblivox_lidar_sdk_shared.so" "/usr/local/lib/liblas.so.2.4.0")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号