一、环境搭建与工作场景需求介绍
程序基于ubuntu18.04系统,需要下载ros,简易步骤鱼香ros,一键安装ros、vscode
从vscode安装python 、中文包
ubuntu双系统的安装参考:BV1554y1n7zv(b站视频番号)
一键安装ros参考fishros.com中的一键安装
场景介绍在参考文档中,请自行下载
二、安装相应的包
安装pip、pip3,利用pip安装代码中所需要的包,serial、open3d(安装难度大)等等。
此过程会相对消耗时间,需解决多种报错,建议先将错误翻译为中文,尝试解决错误。
可以从csdn中寻找给pip下载器更换默认下载源方法,以免下载速度过慢,下载某包时,全程不报错即为安装成功。
命令行如:pip install serial
pip3 install open3d
实际上需要安装的包不止这两个 还有很多别的 但都较小 需要根据系统报错一个个补装上,终端会提示你 哪里缺少哪个包,安装上就可以了。
三、下载雷达驱动的包
四、建立工作空间
可通过 mkdir work_space/src 的方法,也可以通过直接新建文件夹和src文件夹的方法,将子目录放到src目录下,确保目录中的python文件为可执行文件,在工作空间编译,注意雷达的驱动包要单独编译。
catkin_make -DCATKIN_WHITELIST_PACKAGES="package1;package2" #单独编译某个包
五、在src中创建scrpts文件夹
在src中创建scrpts文件夹用于放置python文件,确保python文件有可执行权限,所有环境搭配完毕以后,进入工作空间打开终端依次输入:
source dev/setup.bash
roslaunch 指定的launch文件
六、各种实用命令:
在工作空间中可创立rosbag文件夹用于存放录制的激光点云数据,录制步骤:
1.打开roslaunch运行激光雷达
2.进入rosbag目录,输入:
rosbag record -a
3.录制结束后可在相同目录下 用指定命令解包:
rosrun pcl_ros bag_to_pcd 2023-04-28-15-24-07.bag /livox/lidar_192_168_1_100 hap
这条命令可以使录制的bag包内数据全部转换为pcd格式存储于命令中创建的文件夹中,可用于激光雷达扫描不到点云的时候测试算法用。注意将命令中的包名和话题名替换为实际名称。
pcd = o3d.io.read_point_cloud(file_path)
此条代码用于python中,加入包内的pcd文件,用于后续计算。所有算法基于点云的处理和输出。
七、实现过程
整体的激光雷达扫描货车车厢实现过程的程序节点有三大部分:
1.激光雷达扫描货车工作场景,把场景传入到下一节点;
2.点云处理,将扫描获得的点云进行处理发送到下一节点;
3.计算节点,将处理过的点云通过已经设计好的算法进行计算 输出计算结果通过串口传输至上位机进行取样。
八、程序设计
第七步中提到计算节点 为程序的主要组成部分 前两部为固定步骤 可以将launch设置好后便不需再管理,程序设计的主要理论步骤为:
扫描得到的货车工作场景点云,先进行xyz轴的三个方向的切割,将货车部分分割出来,获得初步预处理的点云,对预处理的点云进行滤波,滤波的目的是去除场景中的杂点,以免影响计算精度。
根据两个雷达的位置,灵活的对三维数据进行分割,因为工作场景固定,所以很容易获得去除地面点云的参数,这里需要根据具体场景进行划分。接下来是对各项数据的检测:
1.车厢的长、宽、车厢底距离地面的高度:
对次点云数据可以看出,分割出的车厢部分较为清晰,则依据坐标轴方向的差 可计算车厢的长度、宽度、以及车厢右后方顶点的坐标(x,y,z),其中x坐标代表车厢右壁距离雷达的距离,y坐标代表车厢后壁距离雷达的距离,z坐标即代表雷达在高度上与雷达高度的差,用差加上雷达本身高度即为车厢底部距离地面的高度。
2.拉筋位置:
由示意图可知,拉筋位置由顶部雷达获得的点云计算获得,具体计算流程为去除车厢底部的点云,只留下车厢顶部的点云 然后将裸露出的一段段的点云进行聚类分析,去除车厢左右两壁,只留下拉筋本身的坐标,获得拉筋坐标。
九、代码中的参数调整
1.场景分割部分:
2.坐标旋转
3.聚类拉筋部分
要调整程序参数,可参考上述部分代码的参数部分 比如场景分割中的各个参数 决定了划分出的场景有效点云包括范围。