1.Apollo 8.0 配置参数读取源码解析:以 Planning 模块为例
2.springboot读取配置(springboot读取配置文件)
3.Apollo6.0安装文档教程——环境搭建、源码安装、更新编译、源码测试
4.Apollo EM中path_assesment_task相关细节的更新讨论
5.分享Apollo全局规划(Routing)模块最全教程
6.无人驾驶技术入门(十一)| 无人驾驶中的CAN消息解析
Apollo 8.0 配置参数读取源码解析:以 Planning 模块为例
目录
在本篇讨论中,我们将剖析 Apollo 8.0 配置参数的源码读取过程,以 Planning 模块为例进行深入探讨。更新美颜算法源码
1. 配置参数分类
了解 Apollo 中各模块的源码启动机制,主要通过主文件 mainboard 编译生成的更新可执行文件以及动态链接库的加载实现。Planning 模块的源码 DAG 文件 (apollo/modules/planning/dag/planning.dag) 指定了模块的动态链接库和单个组件 PlanningComponent 的配置。
配置参数分为两类:基于 ProtoBuf 的更新参数和 gflags 命令行参数。Planning 模块的源码 ProtoBuf 配置文件为 (apollo/modules/planning/conf/planning_config.pb.txt),与之对应的更新 ProtoBuf 接口文件为 (apollo/modules/planning/proto/planning_config.proto)。而 gflags 命令行参数配置文件为 (apollo/modules/planning/conf/planning.conf)。源码
1.1 ProtoBuf 参数
ProtoBuf 参数通过 module_config.components.config.config_file_path 指定配置文件路径,更新文件中的源码参数在组件初始化时被读入 ProtoBuf 对象。
1.2 gflags 命令行参数
gflags 参数通过 module_config.components.config.flag_file_path 指定,文件中的命令行参数在初始化时由 gflags 解析。
2. 配置参数读取流程
主入口文件 (apollo/cyber/mainboard/mainboard.cc) 的 main 函数负责加载 DAG 文件并启动模块。解析命令行参数、读取 DAG 文件、执行模块加载逻辑。
2.1 加载 DAG 文件
解析命令行参数形成 ModuleArgument,用于存储参数信息。执行主流程时,ModuleController 负责加载所有模块,并处理模块组件的注册、实例化和初始化。审查元素能看到源码
2.2 读取配置参数
ModuleController 通过 LoadModule 方法读取模块配置,具体步骤涉及读取 ProtoBuf 参数和 gflags 命令行参数。
3. 总结
本文通过分析 Planning 模块的配置读取过程,清晰展示了 Apollo 8.0 中配置参数的完整读取流程。通过理解这一过程,开发者能够更深入地掌握 Apollo 的模块启动和配置机制。
springboot读取配置(springboot读取配置文件)
springboot获取复杂的list配置文件
1、我们在使用@ConfigurationProperties(prefix=system)读取yml配置文件过程中会遇到读取yml文件中列表。如:yml文件设置访问白名单,Config里面使用List集合接收。方法比较简单。
2、配置文件SpringBoot使用一个全局的配置文件application.propertiesapplication.yml配置文件的作用:修改SpringBoot自动配置的默认值,SpringBoot在底层都给我们自动配置好。
3、第@Configuration注解,读取配置到类中,批量注入配置属性第Environment对象,获取配置文件中所有的属性的对象如果你想掌握时下热门微服务技术栈,跟上时代技术步伐,就去黑马程序员官网视频库看免费视频。
4、nacos跟apollo的处理思路有点不一样,找了很多资料,貌似没有找到nacos里直接获取整个获取配置文件的方法,后面如果有同学找到了这个方法记得留言提醒我。超级快线指标源码nacos在springboot启动的时候已经把所有配置文件都注入到了spring里。
Springboot打成JAR包后读取外部配置文件1、自定义jar目前只能读取application.properties和application.yml吧。可以用一个简单点的方法进行监听注入,在工具包内写一个init方法,在springboot启动时初始化就可以了。比如springboot启动完成后读取配置文件,然后注入到工具包内。
2、在此处,我们可以使用java-jardemo-0.-SNAPSHOT来运行项目。正常运行。当我们将其打成jar包时,application.properties同样不会被打包进jar包中。需要另外复制出来和jar包放在才能正常运行。
3、以jar包发布springboot项目时,默认会先使用jar包同级目录下的application.properties来作为项目配置文件。但使用--spring.config.location指定了配置文件,则读取指定的配置文件。
SpringBoot配置文件存放位置以及读取顺序SpringBoot系统启动时默认会读取的配置文件,支持properties\yml格式。也就是说,会先加载application.properties,根据spring.profile.active的设置加载相应的application-XX.properties配置,然后按优先级合并配置文件。成本神器指标源码
使用springboot的方式,此种方式jar需要放到前面格式例如以jar包发布springboot项目时,默认会先使用jar包同级目录下的application.properties来作为项目配置文件。
application.properties中:server.port=,application.yml中:server.port=。问题:springboot是否都加载这两个配置文件?如果两个文件有相同的key,取哪一个文件的value?答:都加载,且按properties→yml的顺序加载。
springboot配置文件支持灵活的路径,以及灵活的文件名,用一个变量表达式总结如下:部分源码如下:当满足上述变量表达式的配置文件有多个时,会有一个配置的优先级。
springboot中获取apollo或者nacos里的配置文件
此时,需要在bootstrap.yml中添加springcloud配置:(至于为什么是bootstrap.yml而不是application.yml,这又是另一个问题了)有了上面的配置,程序启动后,就能正常的从nacos配置中心获取配置了。
在application.yaml配置文件中指定nacos中配置的DataID不会生效,需要通过注解@NacosPropertySource指定才能生效。
nacos-config这个依赖就相当于SpringCloudConfig,nacos-discovery这个依赖就相当于Eureka。
一文讲清楚SpringBoot六种读取配置方式1、使用开发工具创建一个纯净maven工程删除配置spring-biz.xml并且新增如下配置:本文梳理了SpringBoot六种读取配置方式,大家在项目中可以进行灵活组合和应用,希望本文对大家有所帮助。
2、快络牛牛源码组件则只会根据classloader的classpath列表,选取第一个出现的文件。因为springboot加载配置文件时最底层是使用的下面的方法:这两个方法只会获取classloader类的ucp属性里面第一个匹配到的值。
3、idea中,为了我们本地方便开发测试,我们在此处创建一个config目录,然后把application.properties放进去,项目正常运行。jar包会自动生成在target目录下。
4、配置文件SpringBoot使用一个全局的配置文件application.propertiesapplication.yml配置文件的作用:修改SpringBoot自动配置的默认值,SpringBoot在底层都给我们自动配置好。
5、SpringBoot中的配置文件主要有三种格式,properties、yaml、和xml方式。
6、SpringBoot系统启动时默认会读取的配置文件,支持properties\yml格式。也就是说,会先加载application.properties,根据spring.profile.active的设置加载相应的application-XX.properties配置,然后按优先级合并配置文件。
springboot配置文件读取nacos在springboot启动的时候已经把所有配置文件都注入到了spring里。
idea中,为了我们本地方便开发测试,我们在此处创建一个config目录,然后把application.properties放进去,项目正常运行。jar包会自动生成在target目录下。
这个问题的存在是因为在spring跑到@serviceclass的时候,我们还没有取到配置文件里面的value,所以导致了spring认为这个valuevariable没有initialize。
关于如果修改默认的加载路径和文件名,后面会继续讨论。SpringBoot系统启动时默认会读取的配置文件,支持properties\yml格式。
Apollo6.0安装文档教程——环境搭建、安装、编译、测试
一、环境搭建 为了安装Apollo 6.0,您需要以下环境准备:Ubuntu .,安装教程参阅相关资源。
NVIDIA显卡驱动,根据官方指南进行安装。
Docker引擎,Apollo安装步骤中完成。
NVIDIA容器工具,Apollo安装步骤中完成。
安装过程中,请确保禁用nouveau驱动,操作步骤如下: 在终端中添加指定内容至文件末尾并保存,然后重启系统。重启后执行命令,检查禁用状态。 二、下载源码 前往Apollo下载地址,选择对应版本。 三、安装 安装Docker:进入Apollo 6.0的docker目录,执行安装命令。安装完成后,重启电脑。 安装NVIDIA容器工具:与Docker安装同步进行。 创建Apollo容器:下载所需image,此过程可能耗时较长。成功后,会显示“[OK], Enjoy!”。 进入容器:执行相关命令。 四、编译与测试 编译Apollo:根据容器中的GPU状态(有或无)进行编译。可能遇到的warning如“DimsNCHW”被标记为过时,这是正常现象,不会影响后续使用。 启动Dreamview:可能遇到权限问题,使用chmod进行授权。如果问题仍未解决,授权整个Scripts目录并执行。 Dreamview查看:在浏览器中输入)分享Apollo预测(prediction)模块最全教程 - 知乎 (zhihu.com)
分享Apollo控制(control)模块最全教程 - 知乎 (zhihu.com)
无人驾驶技术入门(十一)| 无人驾驶中的CAN消息解析
前言
本文聚焦于无人驾驶技术中至关重要的CAN总线机制。在无人驾驶系统中,CAN总线扮演着不可或缺的角色,不仅用于传输VCU信号,还涉及雷达、Mobileye等传感器的数据交换。
实现一个完整的无人驾驶系统需涉及感知、融合、规划与控制等多个层级。在这篇分享中,重点探讨了“驱动层”相关的CAN总线内容。
正文
作为高效可靠的通信机制,CAN总线在汽车电子领域广泛应用。本文着重于解释在无人驾驶系统接收到CAN消息后,如何利用CAN协议解析出所需数据,解析传感器信息是自动驾驶工程师的核心技能。
认识CAN消息
以Apollo开源代码为例,剖析CAN消息结构,包括ID号、长度、数据和时间戳。ID号用于确认节点间通信,扩展帧和普通帧的区分依据于此。长度表示数据量,最多8个无符号整数或8*8个bool类型数据。数据部分是消息的核心,通过8*8方格可视化,解析变得直观。时间戳记录接收时刻,用于判断通信状态。
认识CAN协议
业界使用后缀为dbc的文件存储CAN协议,Vector公司的CANdb++ Editor软件专门用于解析dbc文件。Mobileye的车道线信息通过dbc文件格式传递,以ID号0x的LKA_Left_Lane_A为例,解析信号包括类型、质量、曲率等物理量。通过软件界面直接关联彩色图与data,解析过程变得清晰。
解析CAN信号
解析过程基于彩色图与data的一一对应关系,通过叠加图表,揭示数据结构。对于Factor为1的物理量,解析直接。Factor为小数的物理量则需运用位移运算。以Apollo源码为例,通过移位和位运算解析出完整物理量。
与CAN类似的通信协议
虽然传感器采用不同通信方式,如雷达、激光雷达、GPS和惯导,但解析方法保持一致。解析的关键在于理解信号的类型、值和单位。
结语
本篇分享全面解析了CAN总线消息的解析过程,涵盖了无人驾驶系统驱动层的基本理论。解析ID不同的CAN消息结构要求高度细致,避免后续处理中的意外错误。如有疑问,欢迎在评论区互动。赞赏与关注是对文章价值的直接体现。
获取相关软件和文件的方法,请关注公众号:自动驾驶干货铺,后台回复“CAN”获取。更多Mobileye资料和技术支持,值乎平台提问。