激光雷达实现货车的尺寸检测

一、环境搭建与工作场景需求介绍

        程序基于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.车厢的长、宽、车厢底距离地面的高度:

        5e202c44a51a4d5a8e2355b8bf55b3d0.png

        对次点云数据可以看出,分割出的车厢部分较为清晰,则依据坐标轴方向的差 可计算车厢的长度、宽度、以及车厢右后方顶点的坐标(x,y,z),其中x坐标代表车厢右壁距离雷达的距离,y坐标代表车厢后壁距离雷达的距离,z坐标即代表雷达在高度上与雷达高度的差,用差加上雷达本身高度即为车厢底部距离地面的高度。

        2.拉筋位置:

        97b3e5e74b8b4860996802332a695570.png

        由示意图可知,拉筋位置由顶部雷达获得的点云计算获得,具体计算流程为去除车厢底部的点云,只留下车厢顶部的点云 然后将裸露出的一段段的点云进行聚类分析,去除车厢左右两壁,只留下拉筋本身的坐标,获得拉筋坐标。

九、代码中的参数调整

        1.场景分割部分:

8dd7c33e7a774140b227c15298efc6b2.png

        2.坐标旋转

f3d2759515b14b9f85c9ab37f30c27c2.png

        3.聚类拉筋部分

c320c9d045fe4b1cac8ecfcffe8b80a9.png

        要调整程序参数,可参考上述部分代码的参数部分 比如场景分割中的各个参数 决定了划分出的场景有效点云包括范围。    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值