代码目录

common

amathutils_lib

  • 卡尔曼滤波
  • 巴特沃斯滤波
  • 时延卡尔曼滤波

autoware_build_flags

cmake配置,设置编译器和c++版本以及一些标志位

autoware_health_checker

  • 健康信息聚合
  • 健康信息分析
  • 健康信息检查
  • 系统状态订阅

emergency_handler

紧急错误处理,包括:

  • 节点错误
  • 硬件错误
  • 紧急处理错误

gnss

  • 定位卫星设置
  • 经纬度坐标转换为xyz坐标(GPS平面坐标)

lanelet2_extension

  • IO

    • Autoware OSM解析
  • 投影

    • MGRS投影
  • 交规元素

    • Autoware交通信号灯
  • 工具

    • 消息转换:lanelet数据转成ros消息
    • 查询:从地图查询各种信息,比如人行横道,交通信号灯,停止线
    • 工具:lanelet有用的函数,比如和lanelet匹配路径点
  • 可视化

    把lanelet对象转换成可视化marker消息

libvectormap

定义了一些基础的矢量地图数据类型

libwaypoint_follower

途经点跟随,pure_pursuit纯追踪算法

map_file

  • curl下载地图API封装
  • lanelet地图读取和可视化
  • 点云地图加载:根据不同的margin下载保存不同的点云地图并加载发布
  • 点云地图滤波
  • 矢量地图加载:和lanelet不一样,包含很多csv表格数据

object_map

激光雷达和高精地图(ADAS)提取的特征信息,发布grid_map和occupancy grid

  • grid_map_filter:结合传感器、地图和感知数据以及其他占据网格。
  • laserscan2costmap:雷达数据转costmap
  • wayarea2grid:把ADAS里面的道路区域(可通行区域)投影到占据图中
  • wayarea2grid_lanelet2:把lanelet2里面的可通行区域投影到占据图中
  • potential_field:

op_planner

open planner,局部路径规划

op_ros_helpers

open planner和ROS的一些数据转换

op_simu

open planner仿真

op_utility

数据读写,常用的角度转换,时间比较,滤波和PID控制等

ros_observer

使用共享内存来进行进程监控

tvm_utility

TVM工具,用来构建TVM机器学习管道

vector_map

矢量地图的读写和存取

vector_map_server

矢量地图服务器和客户端,用service的形式发布不同的矢量地图图层

vehicle_sim_model

车辆仿真

core_perception

autoware_connector

can总线连接

ekf_localizer

扩展卡尔曼滤波定位

gnss_localizer

全球卫星定位

image_processor

图片处理,包括图片裁剪和图片去畸变和翻转

imm_ukf_pda_track

马尔科夫链进行模型 无迹卡尔曼滤波,经典数据关联方法(NNDA、PDA、JPDA)

lidar_apollo_cnn_seg_detect

百度Apollo目标细分CNN网络

lidar_euclidean_cluster_detect

点云欧几里得簇分割,参考《点云库PCL从入门到精通》

lidar_fake_perception

生成虚假目标

lidar_imm_ukf_pda_track

lidar_kf_contour_track

基于卡尔曼滤波的目标跟踪

lidar_localizer

激光雷达点云建图和定位,包括IPC和NDT方法配准

lidar_naive_l_shape_detect

雷达车辆目标检测(3D-LIDAR Multi Object Tracking for Autonomous Driving: Multi-target Detection and Tracking under Urban Road Uncertainties)

https://repository.tudelft.nl/islandora/object/uuid:f536b829-42ae-41d5-968d-13bbaa4ec736

lidar_point_pillars

3D目标检测,深度神经网络,点柱

https://openaccess.thecvf.com/content_CVPR_2019/papers/Lang_PointPillars_Fast_Encoders_for_Object_Detection_From_Point_Clouds_CVPR_2019_paper.pdf

lidar_shape_estimation

L-Shape车辆目标检测

Efficient L-shape fitting for vehicle detection using laser scanners

https://www.researchgate.net/publication/318810802_Efficient_L-shape_fitting_for_vehicle_detection_using_laser_scanners

naive_motion_predict

其他车辆运动预测

https://www.youtube.com/watch?v=T6ediU0CHP0

ndt_cpu

CPU版本的ndt配准

ndt_gpu

GPU版本的ndt配准

ndt_tku

ndt的tku方式优化

Trilinear interpolation

http://boochlin.com/?p=271

obj_db

netdb网络数据库封装

pcl_omp_registration

openMP配准

pixel_cloud_fusion

把点云转换到图像空间,增加RGB信息然后转换回去发布彩色点云

points_downsampler

点云下采样

points_preprocessor

点云预处理

  1. 点云变换
  2. 和地图比较滤波
  3. concatenate滤波
  4. Ray Ground滤波提取地面点云
  5. Ring Ground滤波
  6. Space滤波

pos_db

位置信息下载上传,通过netdb

range_vision_fusion

距离传感器和视觉融合,把距离传感器检测到的物体和视觉检测到的物体融合,当在2d目标检测中重合度超过50%会执行匹配,图像检测的2d目标会和3d目标关联

road_occupancy_processor

生成道路的占据图,使用过滤后的点云和ADAS地图,占据图为2d的8bit位图

roi_object_filter

从感兴趣区域移除掉检测的目标,比如只关心当前车道,就把其他位置的目标去掉

trafficlight_recognizer

信号灯识别

twist_generator

根据车辆状态信息和估计的twist,用递推最小二乘法估计线速度角速度修正系数

vel_pose_diff_checker

检查定位Pose帧和速度Twist帧的时效性,超过阈值打印警告

vision_beyond_track

基于视觉的目标跟踪

vision_darknet_detect

基于Darknet的Yolov3、Yolov2图像检测

vision_lane_detect

基于视觉的车道检测,使用OpenCV分割图像

vision_segment_enet_detect

基于视觉的ENet检测

vision_ssd_detect

基于视觉的SSD(Caffe)检测

core_planning

基于costmap的A*搜索

costmap_generator

读取点云和DetectedObjectArray创建占据网格(OccupancyGrid)和网格图(GridMap)

decision_maker

管理车辆状态,给定路径点状态、行为和移动状态。每种状态都由状态机管理

车辆,任务,行为,运动

dp_planner

航迹动态规划,相关的内容包括:DP-Path、QP-Path、DP-Speed、QP-Speed

ff_waypoint_follower

跟线算法

freespace_planner

在有静态和动态目标的空间中规划路径点

Astar Navi:基于混合A*算法

lane_planner

  • lane_rule_lanelet2:检测和路径点交互的交通信号灯,通过改变速度使得信号灯变红后在停车线前面停下来
  • lane_select:车道选择
  • lane_navi:车道导航
  • lane_rule:车在停车线的加速,在十字路口的加速等规则
  • lane_stop:停车

lattice_planner

LatticePlanner算法属于一种局部轨迹规划器,输出轨迹将直接输入到控制器,由控制器完成对局部轨迹的跟踪控制。因此,Lattice Planner输出的轨迹是一条光滑无碰撞满足车辆运动学约束和速度约束的平稳安全的局部轨迹。Lattice Planner的输入端主要由三部分组成,感知及障碍物信息、参考线信息及定位信息。

  • lattice_trajectory_gen:航迹生成
  • lattice_twist_convert:速度转换
  • lattice_velocity_set
  • path_select

ll2_global_planner

在Lanelet2中规划寻找路径

mpc_follower

一个基于模型预测控制(MPC)的路径点跟踪器,用于精确的路径跟踪。这可以作为路径点跟踪器,也可以作为其他路径点跟踪节点,如pure_pursuit。

op_global_planner

这个节点在地图上生成从起点到目标点的全局路径。该算法可以扩展到处理其他花费(costs),如动态地图中的右转和左转的繁忙车道。它支持自动矢量地图和特殊设计的.kml地图。

op_local_planner

以前被称为dp_planner,现在它是一个节点的集合,每个任务的局部规划被分开。论文:Open Source Integrated Planner for Autonomous Navigation in Highly Dynamic Environments

op_simulation_package

为帮助测试规划算法而开发的节点集合,它可以与任何规划器一起使用。 它由三个主要模块组成(感知模拟器、交通灯模拟器、车辆模拟器)。

op_utilities

  • op_bag_player:基于OpenGL的rosbag文件播放器,它可以逐帧播放,但只支持3种类型的主题(激光雷达数据点云、当前姿势、图像)。
  • op_pose2tf:这个节点接收ndt_pose,并将当前的pose TF发布到autoware系统,所以我们不需要再次运行ndt_matching。
  • op_data_logger:数据记录

pure_pursuit

纯跟踪算法

state_machine_lib

状态机库

twist_filter

速度滤波,低通、车速平滑

twist_gate

way_planner

waypoint_maker

  • waypoint_clicker
  • waypoint_creator
  • waypoint_extractor
  • waypoint_loader
  • waypoint_marker_publisher
  • waypoint_replanner
  • waypoint_saver
  • waypoint_velocity_visualizer

waypoint_planner

航点规划器包提供了动态规划避让行为、航点速度等的本地规划器节点。

  • astar_avoid
  • velocity_set
  • velocity_set_lanelet2