8-无人驾驶教学平台—16线激光雷达障碍物检测

项目:16线激光雷达障碍物检测模块
一、实验背景
人工智能(Artificial Intelligence,AI),是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能可以对人的意识、思维的信息过程的模拟。AI在无人驾驶技术中有着丰富的应用,许多AI算法在无人驾驶技术中取得了较好的效果。AI在无人驾驶技术中的应用主要可分为在无人驾驶环境感知领域、决策规划领域和控制执行领域的应用。
新工科背景下,工科教育需要进行教学改革,需要将现有的工科专业课程和人工智能新技术结合,培养符合新工科要求的人才,而无人驾驶车正是实现这种结合的最好载体之一。
无人驾驶车通过自身搭载的传感器如GPS(Global Positioning System,全球定位系统)、激光雷达、毫米波雷达、超声波雷达、摄像头(主要有单目摄像头和双目摄像头)等获得自身定位及周围环境的信息,如障碍物状况、道路状况等,然后进行相应的决策规划,并对车辆进行控制,最终实现车辆的安全自主行驶。
在各种传感器中,激光雷达具有一般传感器不能比拟的优点:精度高、能够快速响应动静状态下的环境变化。和毫米波雷达、摄像头相比,激光雷达的精度、可靠性和安全性更高。未来的无人驾驶需要面对
情况复杂的道路环境信息,激光雷达的优越性能可达到其安全性保证的要求。对无人车激光雷达点云数据处理,可为无人驾驶车提供准确的动静障碍物的信息,从而为无人驾驶进行智能决策规划提供可靠的依据。
二、实验目标
16线激光雷达障碍物检测模块,基于高度差的地面点滤除,实现障碍物检测。
三、实验内容
以无人驾驶车为载体,实现激光雷达基于高度差的地面点滤除。
四、实验环境
软件环境:Ubuntu16.04系统,ros-kinect,pyqt5。
硬件设备:小旋风第四代无人驾驶车,标配镭神16线激光雷达、大陆ARS408毫米波雷达、超声波雷达、魔客士单目相机、联适导航R60北斗/GNSS接收机。
【知识链接】
激光雷达扫描得到的点云含有大部分地面点,这对后续障碍物点云的分类、识别和跟踪带来麻烦,所以需要首先滤波滤掉。传统的基于几何特征的滤波是最基本最简单的方法,目前有很多方法:水平面校准、法向量、栅格高度差、栅格最低高度以上0.2m、绝对高度、平均高度。本实验主要用栅格高度差方法实现地面点的滤除。
【实验任务】
任务描述
无人驾驶车可通过自身搭载的激光雷达,获得周围环境的障碍物状况,然后进行相应的决策规划,如停障、避障、还是换道,并对车辆进行相应控制,最终实现车辆的安全自主行驶。本次实验主要完成基于栅格高度差实现地面点滤除。
任务目标
以无人驾驶车为背景,车载传感器激光雷达为载体,实现激光雷达基于栅格高度差实现地面点滤除:
(1)根据栅格尺寸生成栅格;
(2)计算每个栅格最低点与最高点高度差;
(3)比较h与预设高度差阈值threshold大小,对栅格化进行分类;
(4)根据栅格分类,对栅格化内点进行分类。
任务分析
首先对三维空间进行栅格化,计算机每个点属于哪个栅格,出每个栅格中的最高点与最低点;计算差值与H对比,然后进行点分类;最后实现地面点的滤除。
任务实施
步骤一:三维空间栅格化
float x;
float y;
float z;
int m;
int n;
buusensorlidar::sensorobject obs_points;
for(int k=0;k<GridAngle;k++)
{
for(int t=0;t<GridRadius;t++)
{
gridPoint[k][t].GridPointNum=0;//gridPoint2
gridPoint[k][t].gridpoint.width=2000;
gridPoint[k][t].gridpoint.height=1;
gridPoint[k][t].gridpoint.is_dense=true;
gridPoint[k][t].size((gridPoint[k][t].gridpoint.width)* (gridPoint[k][t].gridpoint.height));
}
}
for(int i=0;i<object_cloud_ptr.points.size();i++)
{
x=object_cloud_ptr.points[i].x;
y=object_cloud_ptr.points[i].y;
z=object_cloud_ptr.points[i].z;
步骤二:计算每个点属于哪个栅格
for(int i=0;i<object_cloud_ptr.points.size();i++)
{
x=object_cloud_ptr.points[i].x;
y=object_cloud_ptr.points[i].y;
z=object_cloud_ptr.points[i].z;
if((x>0.2)&&(x<50)&&(abs(y)<10))
{
m=-y*4;
m=m+GridRadius/2;
n=x*4;磁分离
n=200-n;//当前点在哪个格子里
if(((n>=0)&&(n<GridAngle))&&((m>0)&&(m<GridRadius)))//GridPointNum为当前格子中点的个数
{
gridPoint[n][m].gridpoint.points[gridPoint[n][m].GridPointNum].x=x;
gridPoint[n][m].gridpoint.points[gridPoint[n][m].GridPointNum].y=y;
gridPoint[n][m].gridpoint.points[gridPoint[n][m].GridPointNum].z=z;
if(gridPoint[n][m].GridPointNum>2000-1)//一个格子中点的数量太多,不正常
{
continue;
}
else
{
gridPoint[n][m].GridPointNum++;
}拼图板
}
}
}
步骤三:计算栅格中最高点与最低点
float min_z=10000;
float max_z=-10000;
float dis_z;
for(n=200;n>0;n--)
{
for(m=0;m<GridRadius;m++)
{
if(gridPoint[n][m].GridPointNum>0)
vobu
{
for(int k=0;k<gridPoint[n][m].GridPointNum;k++)
zigbee模块通信{
if(gridPoint[n][m].gridpoint.points[k].z<min_z)
{
min_z=gridPoint[n][m].gridpoint.points[k].z;
变速叉}
if(gridPoint[n][m].gridpoint.points[k].z>max_z)
{
max_z=gridPoint[n][m].gridpoint.points[k].z;
}
}
if(gridPoint[n][m].GridPointNum>1)
{
dis_z=max_z-min_z;
}
else
{
dis_z=-10000;
}
gridPoint[n][m].dif=dis_z;
}
}
}
斜管隔油池
步骤三:最高点与最低点的差值与H比较
float DiffZ=0;
DiffZ=car_info.DiffZ;
for(n=200;n>50;n--)
{
for(m=0;m<GridRadius;m++)
{
if(gridPoint[n][m].GridPointNum>0)
{
if(gridPoint[n][m].dif>DiffZ)
{
//cout<<"grid_dif:"<<gridPoint[n][m].dif<<endl;
buusensorlidar::point3d obs_point;
memset(&obs_point,0,sizeof(obs_point));
obs_point.y=(200-n)*2.5;
obs_point.x=(m-40)*2.5;
obs_point.z=10;//
obs_points.points.push_back(obs_point);
//obs_points_all.points.push_back(obs_point);
}
}
}
}
步骤四:地面点滤除
pointsingle2.x=obs_points.points[j].y*0.1;
pointsingle2.y=-obs_points.points[j].x*0.1;
pointsingle2.z=0;
pointsingle2.intensity=10;
temp_cloud2.points.push_back(pointsingle2);

本文发布于:2024-09-23 03:29:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/315323.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:栅格   进行   实现   高度
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议