Autoware 技术代码解读(三)

0. 引言

Autoware的整体框架和模块主要包括感知和规划两大部分。其中autoware.ai是ros1,安装可以参照古月老师的博客《Autoware.ai的安装、配置与测试(Docker & 源码编译)》,autoware.auto是ros2版本,安装可以参照古月老师的博客《Autoware.auto的安装、配置与测试(Docker版)》。现在的autoware已经改动很大了,放在了autoware.universe中。Autoware分为Autoware.core 和Autoware.universe 两个版本,其中Autoware.core 是稳定版,Autoware.universe 是开发者版本。

感知包括定位模块,检测模块,预测模块定位模块使用3D map和SLAM算法来实现,辅助以GNSS和IMU传感器。检测模块使用摄像头和激光雷达,结合传感器融合算法和深度学习网络进行目标检测。预测模块使用定位和检测的结果来预测跟踪目标。

规划模块主要是基于感知的输出结果,进行全局路径规划和局部路径规划。全局路径规划在车辆启动或重启的时候被确定,局部路径根据车辆的状态进行实时更新。例如,如果车辆在障碍物前或停止线前,车辆状态变为“stop”,那么车辆的速度就被规划为0。如果车辆遇到一个障碍物且状态为“avoid”,那么局部跟踪路径就会被重新规划绕过障碍物。主要模块如下所示,通过这个图我们可以一点点剖析整个代码的逻辑结构:

1. Localization(定位)

  • ekf_localizer 扩展卡尔曼滤波定位器通过将二维车辆动力学模型与输入的自我姿态和自我扭矩信息进行整合,估计出鲁棒且噪音较小的机器人姿态和扭矩。该算法专门为快速移动的机器人设计,例如自动驾驶系统。
  • gyro_odometer 是一个通过结合惯性测量单元和车辆速度来估计扭矩的软件包。
  • initial_pose_button_panel 是一个用来向定位模块发送请求,计算当前自车位姿的软件包。
  • localization_error_monitor 是一个用于诊断定位错误的软件包,通过监测定位结果的不确定性来实现。
  • ndt_scan_matcher 是一个使用NDT扫描匹配方法进行位置估计的软件包。
  • pose_initializer 是一个用来向ekf_localizer发送初始姿态的包。它接收来自GNSS/用户的粗略估计的初始姿态。将姿态传递给ndt_scan_matcher,并通过服务从ndt_scan_matcher获取计算出的自我姿态。最后,它将初始姿态发布到ekf_localizer。该节点依赖于地图高度拟合库。
  • pose_instability_detector 包括一个节点,旨在监测 /localization/kinematic_state 的稳定性,该主题是扩展卡尔曼滤波器(EKF)的输出。
  • pose2twist 节点从输入的姿态历史中计算出速度。除了计算出的twist之外,该节点还输出线性-x和角度-z分量作为浮点消息,以简化调试工作。
  • stop_filter 当这个功能不存在时,每个节点都使用不同的标准来确定车辆是否停止,导致一些节点在停车模式下运行,而另一些节点继续以驾驶模式运行。
  • tree_structured_parzen_estimator 是一个用于黑盒优化的软件包
  • twist2accel 该软件包负责利用ekf_localizer的输出来估计加速度。它使用低通滤波器来减轻噪音
  • YabLoc 是基于视觉的定位系统,配备矢量地图。它通过将从图像中提取的道路标线与矢量地图进行匹配来估计位置。不需要使用点云地图和激光雷达技术。YabLoc 能够使未配备激光雷达的车辆在无点云地图的环境中进行定位。

点击Autoware 技术代码解读(三)——古月居可查看全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值