Autoware实车测试记录(二)-- 实车NDT定位

本文详细描述了在使用Autolabor小车底盘进行实车测试时,如何处理硬件集成、话题转换、激光雷达设置以及Autoware软件的配置。包括启动不同硬件的launch文件,如底盘、VLP16和RS-Helios-16P雷达,以及Autoware的点云地图、矢量地图和TF设置。还涉及了体素网格滤波和地面滤波的参数调整,以及NDT匹配的定位过程。

进入小车测试前非常需要吐槽几句,由于我使用的Autolabor小车底盘非常矮,调车过程需要在点云地图中定位完成才可以进行接下来的规划等步骤,所以不得不在室外蹲在地上抱着键鼠特别别扭的测试,所以建议各位提前准备好马扎还有穿的厚实点(冬天)或者多带点花露水(夏天)。

言归正传,由于是实车测试,需要在搞清楚自己的硬件设备的情况下进行,由于我前期进行了许多杂七杂八的测试导致每个硬件驱动都在独立的工作空间下,每次实车测试前都要开多个终端独立启动四五个launch文件。在这里简单介绍下我所需要在测试前启动的部分:

1、小车底盘的launch,启动后可以通过/cmd_vel话题给小车下发控制指令,同时随launch启动的还有一个键盘控制节点,该节点将键盘消息转化为小车控制指令发送给底盘,是小车自带的程序部分。

2、激光雷达的launch文件,在这里我使用过VLP16以及RS-Helios-16P两款雷达。在测试前均需要对其进行修改,至于如何修改后文详谈。

3、启动Autoware主程序。

4、启动话题信息格式转换节点。

上面的操作流程每个人每种硬件平台各不相同,总而言之流程是相似的:

按照上述的流程来记录我的测试流程,首先需要将小车移动到指定位置,Autolabor小车底盘因为是一个比较完整的底盘,工控机中包含了直接启动底盘的launch文件,该文件可以完成小车状态发布、数据接收以及按键盘控制和rviz显示小车状况的四个节点。由于不需要rviz的显示功能,故在launch中注释掉了这段代码。运行小车launch后就可以用键盘遥控小车到处走了。(成品底盘的优点也就是这方面省心)。 

到达测试地点后,首先需要将传感器全部启动,这里主要指的是激光雷达,雷达部分是需要提前设置的,首先是VLP-16雷达,雷达默认的话题名为/velodyne_points,但是Autoware默认接收的激光雷达传感器话题为/points_raw。在这里需要修改velodyne雷达的驱动来将发布话题进行修改。或许有人发现Autoware内置了VLP16的启动launch,但是我测试的时候发现从Autoware中内置的启动方法会报错,无论添不添加yaml文件都会报错。所以,考虑到不确定排错时间成本上不如多开一个终端来的简单方便。

此外当时寻找velodyne的话题发布程序位置花了一段时间,在这里把代码位置放出来,使用同款雷达的可以参考修改话题。位置在velodyne功能包下面的velodyne_pointcloud/src/conversions/transform.cc文件内,程序内有一行:

output_=node.advertise<sensor_msgs::PointCloud2>(“velodyne_points”,10);

可以在这里修改雷达的话题名。

同时还测试了一款RS-Helios-16P雷达,这款雷达设置起来稍微麻烦一些,因为前期建图使用的Lio-sam,算法要求激光雷达要用ring等信息,所以为了程序都可以适配起来,干脆直接将雷达的信息完全改成VLP16的雷达信息格式,同时修改雷达发布的话题名。

rs2velodyne转换功能包从网上下载,具体出处忘记了,这里放一个百度网盘的链接吧。

链接: https://pan.baidu.com/s/1D-TnyMDwOf7AU9D2S9wq-w?pwd=9bjn 提取码: 9bjn。

具体使用方法可以参考功能包中的README,至于输出话题名可以直接在该功能包最后面几行的代码处修改。

pubRobosensePC=node.advertise<sensor_msgs::PointCloud2>(“velodyne_points”,1);

雷达设置完毕后可以简单测试一下定位功能了。将车行驶到测试位置,启动好雷达,然后进入Autoware程序界面,实车测试并不需要像之前一样加载rosbag,可以直接进入setup界面启动tf,按照实际的tf设置即可,设置好后点击左边tf按钮,按钮变蓝表示启动成功。至于下方的vehicle model车辆模型可启动也可以不启动,加载空模型会直接载入默认模型(一辆车)。

 接下来进入map选项卡,这里需要加载point cloud、vector map、tf三个部分。首先选择右侧ref按钮,在弹出菜单选中提前准备好的pcd点云图。注意这里需要注意使用Lio-sam建立的点云地图时,只需要加载GlobalMap.pcd一个文件,不要加载CornerMap.pcd,这两个地图在ndt定位环节表现GlobalMap表现要好一些。如果是其他形式的点云地图请根据情况自行选择加载。矢量地图便是将之前使用Unity插件生成的一系列文件全部载入。然后载入tf,tf位置在autoware.ai/src/autoware/documentation/autoware_quickstart_examples/launch/tf_local.launch

 接下来进入sensing选项卡,由于雷达已经通过launch启动了,所以这个选项卡只启动两个滤波相关功能。

 voxel_grid_filter是体素网格滤波,点击右侧app后打开的窗口有三个参数设置,分别是设置点云话题(points topic)、体素滤波尺寸(voxel Leaf size)以及测量范围(measurement range),在这里三个参数默认即可无需修改。

ring_ground_filter也是一个滤波功能,主要是与上面的滤波结合起来滤去地面的雷达点云数据,同样最上面也是输入的点云话题。Sensor Model表示激光雷达的线数,根据自己的雷达选择对应线数。Sensor Height为雷达相对于地面的安装高度,Max Slope为最大坡度,Vertical Thres为障碍物与地面的差异度阈值。这两个选项共同决定了地面滤波效果。除非路面环境比较特殊,这里的参数默认即可。 

地图载入和传感器滤波操作完成后,这个时候就可以打开Autoware人机交互界面右下角的rviz按钮启动rviz了,这里如果之前没有跑过历程,还没加载过rviz的配置文件的话,需要加载autoware.ai/src/autoware/documentation/autoware_quickstart_examples/launch/rosbag_demo/default.rviz

加载完成后的rviz应该是显示有点云地图和矢量地图,如果不显示的话,回到map选项卡重新载入点云地图和矢量地图,如果发现rviz中没有点云地图而且重新加载后也没有点云地图,可以修改rviz左侧的Global Options-fixed frame的参数,将默认的world修改为velodyne和map查看下是否有画面。因为在前期测试历程时发现Autoware给定的world2map的tf中设置了非常大的值,导致world坐标系和map坐标系相去甚远,可以检查下之前加载的tf文件有没有这样的情况,有的话可以将x、y值改为0让两个坐标重合。

接下来进入Computing选项卡,打开lidar_localizar下ndt_matching的参数设置,由于没有GPS,所以不选择GNSS,选择Initial Pos参数默认000即可。下方Method Type根据自己的设备,没有GPU选择pcl_generic。反之选择pcl_anh_gpu。

参数设置完毕后勾选ndt_matching,顺带勾选autoware_connector下的vel_pose_connect,勾选前打开看一下参数里面只要没有勾选Simulation Mode即可。

正常情况下传感器传来的点云数据(红黄色)会马上出现在rviz中的初始位置。同时左上角会实时显示NDT匹配的毫秒数。此时选中 rviz上面的2D Pose Estimate,然后在地图中给定一个带方向的初始值以用于定位(箭头指向方向代表车辆前进方向)。

 ​​​​​​​

到这里没有问题的话应该是可以定位成功,如果定位失败可以再尝试给新的初值。

Autoware是一款知名的开源自动驾驶软件平台,在上有广泛应用。 ### 应用场景 - **物流运输**:在港口、工厂园区等场景,Autoware可助力无人货、无人叉进行货物的运输与装卸。这些辆利用Autoware定位、感知和规划算法,能在复杂的工业环境中自动导航,提高物流效率,降低人力成本。 - **公共交通**:一些城市正在测试基于Autoware自动驾驶巴士。它们可以按照预设路线行驶,自动停靠站点,为乘客提供便捷的出行服务,同时减少交通事故风险,提升公共交通的安全性和可靠性。 - **环卫作业**:搭载Autoware的环卫辆能够自动规划清洁路线,对街道、广场等区域进行清扫作业。辆可以根据环境感知时调整作业策略,提高环卫工作的质量和效率。 ### 配置要求 - **硬件方面** - **传感器**:通常需要配备激光雷达、摄像头、毫米波雷达等多种传感器。激光雷达用于精确获取周围环境的三维信息,摄像头用于识别交通标志、道线等视觉信息,毫米波雷达则在恶劣天气条件下提供可靠的目标检测。 - **计算平台**:需要高性能的计算平台来处理传感器数据和运行Autoware算法。常见的计算平台有NVIDIA的Jetson系列,它具有强大的计算能力和较低的功耗,能够满足Autoware时计算需求。 - **执行器**:包括电机控制器、转向系统等,用于控制辆的加速、减速和转向。这些执行器需要与Autoware的控制模块进行精确的通信和协同工作。 - **软件方面** - **操作系统**:一般基于Ubuntu系统,因为Autoware是在该系统上开发和优化的,具有良好的兼容性和稳定性。 - **ROS(机器人操作系统)**:Autoware是基于ROS构建的,因此需要安装相应版本的ROS,如ROS Kinetic或ROS Melodic。 ### 使用步骤 - **环境搭建**:在计算平台上安装Ubuntu系统和ROS,然后从Autoware的官方仓库下载源代码并进行编译安装。 - **传感器校准**:对激光雷达、摄像头等传感器进行校准,确保它们的数据准确可靠。校准过程通常需要使用专业的校准设备和工具。 - **地图创建**:使用Autoware的建图功能,让辆在目标环境中行驶,采集传感器数据并生成地图。地图可以是维的栅格地图或三维的点云地图,用于辆的定位和路径规划。 - **参数配置**:根据辆的具体参数和应用场景,对Autoware的各种参数进行配置,如辆的尺寸、最大速度、最小转弯半径等。 - **运行测试**:将配置好的Autoware系统部署到上,进行测试和验证。在测试过程中,不断调整参数,优化系统性能,确保辆能够安全、稳定地运行。 ```python # 以下是一个简单的示例代码,用于启动Autoware的核心节点 import rospy from std_msgs.msg import String rospy.init_node('autoware_start_node', anonymous=True) rate = rospy.Rate(10) # 10hz while not rospy.is_shutdown(): # 发布启动消息 pub = rospy.Publisher('autoware_start_topic', String, queue_size=10) pub.publish("Start Autoware") rate.sleep() ```
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值