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

【Apollo】Apollo-ros版本架构学习与源码分析

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍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 软件的主要组成部分和特点:

  1. 感知模块:Apollo 提供了多种传感器数据融合的算法和技术,包括摄像头、激光雷达和毫米波雷达等,以实时感知车辆周围的环境,并对障碍物、行人、交通标志等进行识别和跟踪。

  2. 定位模块:Apollo 借助高精度地图和多种定位技术(如 GPS、惯性测量单元等),能够实现准确的车辆定位和导航功能,为自动驾驶系统提供必要的位置信息。

  3. 规划和决策模块:Apollo 集成了先进的路径规划和决策算法,能够根据感知数据和行车情况生成最佳的驾驶路径,并做出智能的驾驶决策,例如车道保持、避障、超车等。

  4. 控制模块:Apollo 利用先进的车辆控制算法和硬件设备,能够实现精确的车辆控制,包括油门、刹车和转向等,以保持稳定的行驶状态和响应紧急情况。

  5. 数据录制和回放:Apollo 提供了数据录制和回放功能,可以记录车辆传感器数据、位置信息和控制指令等,用于测试和验证自动驾驶系统的性能和安全性。

  6. 开发工具和平台:Apollo 提供了丰富的开发工具和平台,包括模拟器、调试器、仿真环境和数据管理工具,帮助开发人员进行自动驾驶系统的设计、测试和改进。

  7. 安全性和可靠性: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,主要包含线速度、角速度、加速度、挡位状态、车辆坐标x,y,z;EstimateFuturePosition用于根据当前信息估计t时刻后的车辆位置;util/factory提供了工厂模式示例;time/time将chrono库作为时间管理工具,默认精度是ns;status/status定义了状态码用于标识车辆工作状态;monitor/monitor类收集并监控各模块的msg;math中提供了多个数学计算工具;adapter/adapter是提供将来自传感器的底层数据和Apollo各个模块交互的统一接口(c++ 适配器模式的示例),将数据IO抽象,使得各模块不必强依赖ROS框架通信。

localization模块中,输入是GPS&IMU模块,输出以proto格式定义,主要是车辆的位置和位姿信息;localization主要实现模块名称显示、初始化、开启、停止等操作,并将模块注册到工厂实例;此外还实现CameraLocalization类的原型,继承自LocalizationBase,搭建了相机定位的接口。

perception模块处理所有传感器的输入,包含相机、雷达,并发布目标检测、交通灯检测等信息;Perception类也是对Name、Init、Start、Stop进行函数重写,并用到了common模块的adapter。

decision模块根据感知和地图信息,生成决策信息给下游规控模块,具体输入有障碍物、交通灯、地图和路由循迹、车辆状态信息,输出是决策指令,并生成虚拟障碍物。

planning模块根据给定的车辆定位和状态信息、感知预测决策信息,计算出一条安全且舒适的路径(轨迹点)给底层去到达。

control模块是根据规划和车辆状态信息,用不同的控制算法去生成好的驾驶行为,并将控制指令给到canbus车辆通信网络模块;filters提供了多种滤波器;controller提供了不同的横纵向控制算法。

tools模块提供了常用的各类工具,如标定、诊断、配置、画图、包录制等。

在这里插入图片描述

以上。

相关文章:

【Apollo】Apollo-ros版本架构学习与源码分析

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Apollo-ros版本架构学习与源码分析。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&a…...

【Express.js】集成RabbitMQ

集成RabbitMQ 本节我们介绍在 express.js 中集成 rabbitmq. RabbitMQ 是一个消息队列中间件,常用于请求削峰,事务的队列处理,事件订阅机制的实现等。 准备工作 创建一个 express.js 项目(本文基于evp-express-cli)…...

UI美工设计岗位的基本职责概述(合集)

UI美工设计岗位的基本职责概述1 1、有良好的美术功底、设计新颖,整体配色及设计创意理念,能够独立完成整个网站页面设计及制作; 2、熟练运用DIV CSS,HTML 设计制作网页 ; 3、熟练运用Photoshop,Dreamweaver,Coreldraw(或Illustrator),Fla…...

最强自动化测试框架Playwright(23)-API测试

playwright支持进行API测试 示例: 如下代码创建API请求上下文,使用post方法请求API,并返回响应结果。 import playwright from playwright.sync_api import sync_playwrightwith sync_playwright() as p:api_request_contextp.request.new…...

k8s 自身原理 4

前面咱们分享了 mater 和 worker 节点里面都有哪些组件,他们又是各自主要负责的工作是什么,现在我们心里应该都有数了吧 master 节点: etcd 存储资源配置,ApiServer 提供 RESTful Api 用于交互,scheduler 用于调度 p…...

ZLMediaKit(webrtc)在linux上(CentOS7)部署与启动

一.ZLMediaKit(webrtc)在CentOS7部署与启动 # 1. 卸载旧版本 yum remove git # 2. 安装 yum 源的 Git 版本 yum install -y git # 3. 查看版本 git version # 输出 git version 1.8.3.1配置全局环境变量 # 1. 编辑配置文件 vim /etc/profile # 2. 在 /etc/profile 文件中末尾…...

汽车基础软件新「战争」:群雄混战,谁在抢跑?

中国车用基础软件迎来了发展的黄金窗口期。 当前,汽车电子电气架构正在加速向“跨域融合”的时代演进,汽车软件架构也在加速向SOA架构升级,软硬件分层解耦成为了实现“软件定义汽车”新开发模式的前提。 过去,汽车的所有功能开发…...

阿里云预装LAMP应用导致MySQL不显示访问密码如何解决

😀前言 本篇博文是关于阿里云云服务器ECS部署MySQL过程中出现的一下坑,希望能够帮助到您😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家…...

SQL 自动清除7天前数据前收缩数据库

作用: 删除七天前数据库中间表的资料,并收缩数据库 delete-Ecustom-xml-midtable.sql delete Mid_bom where datediff(day,dty,getdate())>7 delete Mid_cus where datediff(day,dty,getdate())>7 delete Mid_exp where datediff(day,dty,getdate(…...

LangChain-ChatGLM在WIndows10下的部署

LangChain-ChatGLM在WIndows10下的部署 参考资料 1、LangChain ChatGLM2-6B 搭建个人专属知识库中的LangChain ChatGLM2-6B 构建知识库这一节:基本的逻辑和步骤是对的,但要根据Windows和现状做很多调整。 2、没有动过model_config.py中的“LORA_MOD…...

Telerik UI for ASP.NET Core Crack

Telerik UI for ASP.NET Core Crack Telerik ASP.NET Core还包括MVC和Kendo UI捆绑包(用于JavaScript)、Figma的设计工具包以及文档处理库、用于ASP.NET Core的Telerik REPL、RTL支持、辅助功能和键盘导航、主题化、虚拟课堂培训、详细文档、演示、KBs和世界级支持。使用一整套…...

【TypeScript】中关于 { 声明合并 } 的使用及注意事项

概念: 在TS中,如果定义了多个相同命名的函数,接口或者class 类,那么它们会自动合并成一个类型 函数的合并: 前面章节讲解的函数重载就是使用了定义多个函数的类型进行合并: function reverse(x: number):…...

Day 43

Day 43 1049.最后一块石头的重量II 本题中,石头的重量是 stones[i],石头的价值也是 stones[i] ,可以 “最多可以装的价值为 dp[j]” “最多可以背的重量为dp[j]” dp[j] max(dp[j], dp[j - stones[i]] stones[i]); 最后dp[target]里是…...

服务器安全需要注意的几个方面?

服务器安全需要注意的几个方面? 服务器的核心技术相对复杂,专业人员稀少,尤其在病毒技术快速更新迭代的前提下,安全问题更为突出。这里提供一些实际工作中总结出的安全防护经验,以供参考。 一,增强网络整…...

Mysql数据库第十三课-----------sql语句的拔高3--------直冲云霄

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 ​🎂 作者介绍: 🎂🎂 🎂 🎉🎉&#x1f389…...

计算机网络-物理层(一)物理层的概念与传输媒体

计算机网络-物理层(一)物理层的概念与传输媒体 物理层相关概念 物理层的作用用来解决在各种传输媒体上传输比特0和1的问题,进而为数据链路层提供透明(看不见)传输比特流的服务物理层为数据链路层屏蔽了各种传输媒体的差异,使数据…...

差分升级在物联网水表上的实现与应用(学习)

摘要 当越来越多的物联网水表加入抄表系统后,实现了水表数据的信息化,并且当水表终端需要技术更新时,通过网络方式来升级产品可以高效修复设备面临的问题,减少用户损失,降低维护成本,但同时也对有限的网络…...

ubuntu磁盘管理

show partition information 挂载设备在这 显示文件系统信息 build file system mkfs -t ext4 /dev/nvme0n1p4命令作用:将/dev/nvme0n1p4 格式化为 ext4 建立交换分区 mkswap -c -v1 /dev/nvme0n1p4 102400-c:check -v1:新版交换分区 -v0&…...

前端处理后端返回的数据中有\n\n字样的换行符标识

后端返回的数据: 上面圈着的部分就是\n,前端需要将数据进行换行,对于这类型的数据,在前端页面是需要进行稍微处理才能正常显示。如果没有经过处理,那么内容是不会在有换行符的位置进行换行显示的 解决办法1&#xff1…...

matlab解常微分方程常用数值解法2:龙格库塔方法

总结和记录一下matlab求解常微分方程常用的数值解法,本文将介绍龙格库塔方法(Runge-Kutta Method)。 龙格库塔迭代的基本思想是: x k 1 x k a k 1 b k 2 x_{k1}x_{k}a k_{1}b k_{2} xk1​xk​ak1​bk2​ k 1 h f ( x k , t …...

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四&#xff…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...