商丘网站建设运营公司,机械网站精选,做违法网站会怎么样,wordpress手机验证码#x1f60f;★,:.☆(#xffe3;▽#xffe3;)/$:.★ #x1f60f; 这篇文章主要介绍Apollo-ros版本架构学习与源码分析。 无专精则不能成#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客#xff0c;一起学习#xff0c;共同进步。 喜欢的朋友可以关注一下★,°:.☆(▽)/$:.°★ 这篇文章主要介绍Apollo-ros版本架构学习与源码分析。 无专精则不能成无涉猎则不能通。——梁启超 欢迎来到我的博客一起学习共同进步。 喜欢的朋友可以关注一下下次更新不迷路 文章目录 :smirk:1. 项目介绍:blush:2. 架构学习:satisfied:3. 源码学习 1. 项目介绍
Apollo1.0源码注释项目Github地址https://github.com/slam-code/apollo
Apollo perception项目Github地址https://github.com/Tartisan/apollo_ros
Apollo planning项目Github地址https://github.com/yufan25/apollo-trajectory-planning
Apollo 是百度开发的自动驾驶软件平台旨在提供完整的自动驾驶解决方案。它包括一套完整的软件和硬件系统涵盖了感知、定位、规划、控制等关键领域。以下是 Apollo 软件的主要组成部分和特点 感知模块Apollo 提供了多种传感器数据融合的算法和技术包括摄像头、激光雷达和毫米波雷达等以实时感知车辆周围的环境并对障碍物、行人、交通标志等进行识别和跟踪。 定位模块Apollo 借助高精度地图和多种定位技术如 GPS、惯性测量单元等能够实现准确的车辆定位和导航功能为自动驾驶系统提供必要的位置信息。 规划和决策模块Apollo 集成了先进的路径规划和决策算法能够根据感知数据和行车情况生成最佳的驾驶路径并做出智能的驾驶决策例如车道保持、避障、超车等。 控制模块Apollo 利用先进的车辆控制算法和硬件设备能够实现精确的车辆控制包括油门、刹车和转向等以保持稳定的行驶状态和响应紧急情况。 数据录制和回放Apollo 提供了数据录制和回放功能可以记录车辆传感器数据、位置信息和控制指令等用于测试和验证自动驾驶系统的性能和安全性。 开发工具和平台Apollo 提供了丰富的开发工具和平台包括模拟器、调试器、仿真环境和数据管理工具帮助开发人员进行自动驾驶系统的设计、测试和改进。 安全性和可靠性Apollo 强调安全性和可靠性采用多层次的安全保护机制和备份措施以确保自动驾驶的安全运行。
2. 架构学习
Apollo是国内比较开放、完整、安全的自动驾驶平台1.0是基于ros通信的架构后面自研了cyberrt代码编译是基于bazel的此外还用到了protobuf、abseil、gtest、gflag等库部署一般建议Docker也可源码安装开放版本也提供了Dreamviewer交互界面和仿真器。
核心代码在modules目录分别有common、canbus、drivers、localizetion、perception、prediction、decision、planning、control、monitor、hmi、tools等模块。
3. 源码学习
下面进行使用分析
common模块中使用glog作为日志库VehicleState类是标识车辆状态信息的class主要包含线速度、角速度、加速度、挡位状态、车辆坐标xyzEstimateFuturePosition用于根据当前信息估计t时刻后的车辆位置util/factory提供了工厂模式示例time/time将chrono库作为时间管理工具默认精度是nsstatus/status定义了状态码用于标识车辆工作状态monitor/monitor类收集并监控各模块的msgmath中提供了多个数学计算工具adapter/adapter是提供将来自传感器的底层数据和Apollo各个模块交互的统一接口(c 适配器模式的示例)将数据IO抽象使得各模块不必强依赖ROS框架通信。
localization模块中输入是GPSIMU模块输出以proto格式定义主要是车辆的位置和位姿信息localization主要实现模块名称显示、初始化、开启、停止等操作并将模块注册到工厂实例此外还实现CameraLocalization类的原型继承自LocalizationBase搭建了相机定位的接口。
perception模块处理所有传感器的输入包含相机、雷达并发布目标检测、交通灯检测等信息Perception类也是对Name、Init、Start、Stop进行函数重写并用到了common模块的adapter。
decision模块根据感知和地图信息生成决策信息给下游规控模块具体输入有障碍物、交通灯、地图和路由循迹、车辆状态信息输出是决策指令并生成虚拟障碍物。
planning模块根据给定的车辆定位和状态信息、感知预测决策信息计算出一条安全且舒适的路径轨迹点给底层去到达。
control模块是根据规划和车辆状态信息用不同的控制算法去生成好的驾驶行为并将控制指令给到canbus车辆通信网络模块filters提供了多种滤波器controller提供了不同的横纵向控制算法。
tools模块提供了常用的各类工具如标定、诊断、配置、画图、包录制等。 以上。