# perception_learn **Repository Path**: giteewpu/perception_learn ## Basic Information - **Project Name**: perception_learn - **Description**: 感知融合注释代码,Apollo部分已注释 TODO:Autoware - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/leox24 - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 29 - **Created**: 2025-05-27 - **Last Updated**: 2025-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AUTOPILOT LEARN 更新中 > 记录一些自动驾驶开源代码的学习,内容原创不易,禁止直接搬运。 > > 我的博客[GoodluckTian](https://blog.csdn.net/weixin_43152152) > > 我的知乎[GoodluckTian](https://www.zhihu.com/people/tian-chang-xin-25/posts) # 1 Apollo perception > 想必Apollo就不用多做介绍了 - Apollo perception注释代码,主要是fusion、radar和lidar三部分,lidar深度学习部分不做阐述 - CyberRT和ROS:Apollo最初用的是ROS,但因为时延问题开发了CyberRT - 通常 4 个步骤进行组件开发:设置组件文件结构--实现组件类--设置配置文件--启动组件 - 建议阅读参考文章后对Apollo有一定了解后阅读注释代码 ## 1.1 参考文章 - [Apollo 感知模块 _study [ADS]](https://blog.csdn.net/chepwavege/article/details/95063679#t5) - [自动驾驶 Apollo 源码分析系列,感知篇(二):Perception 如何启动?](https://frank909.blog.csdn.net/article/details/111598755) - [Apollo的感知融合模块解析](https://blog.csdn.net/u012423865/article/details/80386444?spm=1001.2014.3001.5501) 这是一篇2.5版本的解析,算法结构是差不多的,流程图比较详尽,没有过多的代码细节,文章比较短,容易理解整个过程。 - [Apollo 5.0源码学习笔记(二)| 感知模块 | 融合模块](https://blog.csdn.net/zhanghm1995/article/details/103539976) 讲的很清晰,没有代码细节,不想看源码可以看这篇很详细 - [Apollo 2.0 框架及源码分析(零) | 引言](https://zhuanlan.zhihu.com/p/33240932) - [Apollo 2.0 框架及源码分析(一) | 软硬件框架](https://zhuanlan.zhihu.com/p/33059132) - [Apollo 2.0 框架及源码分析(二) | 感知模块 | Lidar](https://zhuanlan.zhihu.com/p/33416142) - [Apollo 2.0 框架及源码分析(三) | 感知模块 | Radar & Fusion](https://zhuanlan.zhihu.com/p/33852112) ## 1.2 源码剖析文章 > 顺序阅读更佳 - fusion - 融合框架:[Apollo perception源码阅读 | fusion](https://blog.csdn.net/weixin_43152152/article/details/114836882) - 关联匹配:[Apollo perception源码阅读 | fusion之关联匹配](https://blog.csdn.net/weixin_43152152/article/details/115175675) - 匈牙利匹配算法:[Apollo perception源码阅读 | fusion之匈牙利算法](https://blog.csdn.net/weixin_43152152/article/details/114235820) - 卡尔曼滤波:[Apollo perception源码阅读 | fusion之kalman](https://blog.csdn.net/weixin_43152152/article/details/115308664) - 证据推理:[Apollo perception源码阅读 | fusion之证据推理](https://blog.csdn.net/weixin_43152152/article/details/115648285) - lidar : [Apollo perception源码阅读 | lidar](https://blog.csdn.net/weixin_43152152/article/details/118221671) - radar : [Apollo perception源码阅读 | radar](https://blog.csdn.net/weixin_43152152/article/details/118892974) # 2 Autoware core_perception ## 2.1 参考文档 - [Autoware.Auto](https://autowarefoundation.gitlab.io/autoware.auto/AutowareAuto/) 官方说明文档以及各个模块设计方式 - [Autoware’s documentation](https://autoware.readthedocs.io/en/feature-documentation_rtd/index.html) 说明文档,有视频 - [autoware入门教程](https://www.ncnynl.com/archives/201910/3402.html) 国内v_1.12版本入门教程 ## 2.2 Autoware简介 按[官网](https://www.autoware.org/autoware)的话来说:Autoware是世界领先的自动驾驶开源软件项目。 Autoware建立在机器人操作系统(ROS)之上,能够在广泛的车辆和应用中实现自动驾驶的商业部署。 架构如下图,主要包含感知、规划、决策、地图、定位、自车和传感器等。 Autoware同样也有自己的开发套件(软硬件解决方案)。单要说Apollo和Autoware孰高孰低,水平太低不能多做评价,感兴趣可以参考这篇文章的对比:[浅析Apollo和Autoware的异同](https://zhuanlan.zhihu.com/p/142775802) ![Autoware-GFX_edited.png](https://static.wixstatic.com/media/984e93_552e338be28543c7949717053cc3f11f~mv2.png/v1/crop/x_0,y_1,w_1500,h_879/fill/w_863,h_506,al_c,usm_0.66_1.00_0.01,enc_auto/Autoware-GFX_edited.png) ### 1.1 core_perception Github里的Autoware[主页](https://github.com/Autoware-AI/core_perception)中,主要包括`core_perception`、`core_planning`、`common`、`simulation`、`visualization`等。 本文主要阅读`core_perception`。对比tag1.14和master,master最近有更新。故本文阅读的是的master分支。不过大部分代码都是两年前的版本,并无太大变化。 - 基础知识 cmake、ros、pcl、opencv等(如果ros和pcl都没有使用过,建议先从基础学习) - 代码准备 如下: ```shell ├── Autoware │   └── src │   ├── core_perception │   └── messages ``` - 说明 因为`messages`里有自定义的各种消息结构体,建议安装环境后`catkin_make`编译,这样阅读时IDE(eg. vscode)才能找到对应的头文件。 比如在各个障碍物模块内都会`#include "autoware_msgs/DetectedObject.h"`,这个消息的定义就在`./Autoware/src/messages/autoware_msgs/msg/DetectedObject.msg`里。 不编译也行,只要能知道结构体的定义并能读懂代码即可。 建议别编译了,浪费时间,直接看代码吧... ## 2 模块目录 先列一下TODO List,有更新的话会更新跳转的链接。 收藏这一篇就够了~ - [ ] ekf_localizer - [ ] gnss_localizer - [ ] image_processor - [x] [imm_ukf_pda_track]() - [ ] lidar_apollo_cnn_seg_detect - [ ] lidar_euclidean_cluster_detect - [ ] lidar_fake_perception - [ ] lidar_imm_ukf_pda_track - [ ] lidar_kf_contour_track - [ ] lidar_localizer - [ ] lidar_naive_l_shape_detect - [ ] lidar_point_pillars - [ ] lidar_shape_estimation - [ ] naive_motion_predict - [ ] ndt_cpu - [ ] ndt_gpu - [ ] ndt_tku - [ ] obj_db - [ ] pcl_omp_registration - [ ] pixel_cloud_fusion - [ ] points_downsampler - [ ] points_preprocessor - [ ] pos_db - [ ] range_vision_fusion - [ ] road_occupancy_processor - [ ] roi_object_filter - [ ] trafficlight_recognizer - [ ] twist_generator - [ ] vel_pose_diff_checker - [ ] vision_beyond_track - [ ] vision_darknet_detect - [ ] vision_lane_detect - [ ] vision_segment_enet_detect - [ ] vision_ssd_detect # 3 标定开源工具箱 > 深蓝学院开源标定代码 - 看了一下lidar2lidar的标定,是比较简单的demo代码,总之先mark一下吧,有空写一写