当前位置: 首页 > news >正文

Autoware源码总结

Autoware源码网站
项目简介
教程
Autoware的整体架构如下图,主要包括传感器sensing、高精地图map data、车辆接口vehicle interface、感知perception(动态障碍物检测detection、跟踪tracking、预测prediction;交通信号灯检测detection、分类classfier)、定位localization、规划planning、控制control,
在这里插入图片描述
源码网站中仓库总共42个,主要库分别如下:
项目简介库2个:autoware、autoware-documentation、
感知和定位库:autoware_ai_perception
规划和控制库:autoware_ai_planning
传感器驱动和车辆接口:autoware_ai_drivers
仿真库2个:autocore_sim、autoware_ai_simulation
通用代码库:autoware_common、autoware_ai_common
可视化库:autoware_ai_visualization
消息库 2个:autoware_msgs 、autoware_ai_messages
launch文件库5个:sample_sensor_kit_launch、sample_vehicle_launch、autoware_launch、awf_reference_vehicle_launch、awf_reference_sensor_kit_launch。

感知和定位仓库

该仓库包括感知和定位算法。

lidar_localizer

该模块基于激光雷达定位,包括ICP和NDT两种定位方式。

NDT

1.NDT通过下面4中方式实现,,通过math_type参数设置;
1)pcl_generic=0:直接用PCL点云库中方法实现
2)pcl_anh=1:具体实现方法在autoware_ai_perception/ndt_cpu中,源码中没有实现的代码。
3)pcl_anh_gpu=2:具体实现在autoware_ai_perception/ndt_gpu中,源码中没有实现的代码,其使用GPU加速NDT过程。
4)pcl_openmp=3:具体实现在autoware_ai_perception/pcl_omp_registration中,源码中有实现代码,其使用OPENMP多线程技术加速ndt过程。
2.算法流程
算法中关键函数如下,算法的接口是参考PCL中NDT设计的(见ndt.h),其主要参考Magnusson的博士论文(The Three-Dimensional Normal-Distributions Transform - an Efficient Representation for Registration, Surface Analysis, and Loop Detection.)第6章实现的:
1)initialpose_callback:通过initialpose(geometry_msgs::PoseWithCovarianceStamped)话题得到初始位姿
2)map_callback:通过points_map(sensor_msgs::PointCloud2)话题得到地图,并设置ndt算法参数:ndt.setResolution(ndt_res=1.0)、ndt.setInputTarget(map_ptr){}、ndt.setMaximumIterations(max_iter=30)-计算尺寸为ndt_res单元格的PDF、ndt.setStepSize(step_size=0.1)、ndt.setTransformationEpsilon(trans_eps=0.01)。
3)points_callback:通过filtered_points(sensor_msgs::PointCloud2)激光雷达数据话题,转换成pcl格式的filtered_scan_ptr指针,将其输入ndt(setInputSource(filtered_scan_ptr)),根据imu和odom数据估计当前帧位姿初值init_guess。使用align(*output_cloud, init_guess)估计当前帧位姿。通过ndt.hasConverged()、ndt.getFinalTransformation()、ndt.getFinalNumIteration()、ndt.getFitnessScore()、ndt.getTransformationProbability()可读取ndt估计结果。

ICP

ICP调用PCL库ICP方法中实现:
1)initialpose_callback:通过initialpose(geometry_msgs::PoseWithCovarianceStamped)话题得到初始位姿
2)map_callback:通过points_map(sensor_msgs::PointCloud2)话题得到地图,并设置ICP算法地图:icp.setInputTarget(map_ptr)。
3)points_callback:通过filtered_points(sensor_msgs::PointCloud2)激光雷达数据话题,转换成pcl格式的filtered_scan_ptr指针,将其输入icp(icp.setInputSource(filtered_scan_ptr)),根据imu和odom数据估计当前帧位姿初值init_guess。通过icp.setMaximumIterations(maximum_iterations=100)、icp.setTransformationEpsilon(transformation_epsilon=0.01)、icp.setMaxCorrespondenceDistance(max_correspondence_distance=1.0)icp.setEuclideanFitnessEpsilon(euclidean_fitness_epsilon=0.1)、icp.setRANSACOutlierRejectionThreshold(ransac_outlier_rejection_threshold=1.0)设置算法参数,使用align(*output_cloud, init_guess)估计当前帧位姿。通过icp.getFinalTransformation()、icp.getFitnessScore()、可读取估计结果。

相关文章:

  • 路由策略/策略路由之Filter-Policy
  • 基础层数据从kafka读取写入hbase的优化方案
  • 摄像头解析
  • 第一期:[特殊字符] 深入理解MyBatis[特殊字符]从JDBC到MyBatis——持久层开发的转折点[特殊字符]
  • Vue 3 和 Vue 2 的区别及优点
  • Flask+Plotly结合动态加载图形页面实践
  • cluster、update、delete在死元组清理上的作用
  • boss zp_stoken补环境
  • TQ15EG开发板教程:AD9361观测adc采集波形
  • Elasticsearch 系列专题 - 第七篇:实战项目
  • Ubuntu 22.04 完美安装 ABAQUS 教程:从零到上手,解决兼容问题
  • 数据结构(1)
  • Outbound Email的未来:从冷启动邮件到智能化营销
  • 使用 TFIDF+分类器 范式进行企业级文本分类(二)
  • 什么是柜台债
  • Boost Graph Library (BGL) 介绍与使用示例
  • Large Language Model(LLM)的训练和微调
  • 专题十四:动态路由——OSPF
  • MySQL InnoDB 索引与B+树面试题20道
  • 大模型论文:Language Models are Few-Shot Learners(GPT3)
  • 设计师联盟/google优化师
  • 做网站一般多少钱/线上营销活动方案
  • 企业设计个网站/中国科技新闻网
  • wordpress主题知言/seo下拉优化
  • 彩票网站建设平台/推广文章的推广渠道
  • 自己的博客和自己的网站做友链/深圳小程序开发公司