《从0开始搭建实现apollo9.0》系列二 从CAN协议到代码

本文介绍了Apollo9.0的包管理方法,涉及CAN协议的解读、DBC文件制作、CANBus模块构建,以及如何使用Apollo工具生成代码。重点讲述了从CAN协议到DBC文件再到代码生成的过程,包括J1939协议的应用和DBC文件的编辑注意事项。
摘要由CSDN通过智能技术生成

apollo9.0结构
apollo9.0推荐的是包管理的方式,如果modules内的文件夹找不到,可以使用下载命令进行下载

aem enter
buildtool install xxx
buildtool build -p xxx

在这里插入图片描述
文章的实现计划
从CAN协议的解读 -> DBC制作 -> CanBus模块构建 -> Control模块构建 -> Planning模块构建 -> Prediction构建 ->
Map构建 -> 感知构建

一、CAN协议 -> DBC文件 -> 代码

1、CAN协议学习

	CAN (Controller Area Network),即控制器局域网,广泛应用于汽车和工业自动化等领域。CAN总线可以将多个电子控制单元(ECU)连接在同一局域网内,实现各个ECU间的信息共享。
	车辆无人驾驶使用J1939协议是一种典型的应用协议,使用了CAN网络国际标准(ISO 11998-1 和 ISO 11998-2)的物理层,主要用于解决商用车的通信问题,除了J1939协议,常见的还有CANOpen和DeviceNet等。

以上为CAN协议的相关知识,下面将从实际使用来进行讲解。
CAN network中引入了Node节点
在这里插入图片描述
最基础的为单节点,即自动驾驶控制器和车辆底盘两个节点,AD下发自动驾驶控制指令报文,Car收到指令后作出相应动作。同时Car给AD反馈VCU、BCM等信息,用来计算控制指令。
在此基础上可以拓展手柄控车节点、远程驾驶节点、HMI节点等
在这里插入图片描述
此外还可以根据不同的需要增加相应的节点,来拓展网络,越清晰的网络拓扑,对于制作DBC文件和后期代码整理,越有帮助。
对于CAN协议,以demo协议为例,不同的协议的形式不同,需要根据自己的协议来制作DBC,不能盲目照搬。
在这里插入图片描述
在这里插入图片描述

2、DBC制作

对于DBC的制作,其他相关的博客介绍的已经足够详细,按照流程进行操作即可。
参考博客连接:https://blog.csdn.net/weixin_44536482/article/details/88914753
(DBC文件制作好后,在ubuntu上可以使用文本编辑器进行操作修改)

3、DBC生成代码

DBC文件制作好后,就可以开展接入至Apollo的相关工作了,Apollo中提供了较多的工具(/modules/tools),其中就包括了工具/modules/tools/gen_vehicle_protocol,该工具的作用是,根据DBC文件,在output文件夹下生成适配Apolo框架的CanBus代码。
在这里插入图片描述
根据DBC和车辆名称,节点名称,编写.yml文件
参考案例
在这里插入图片描述
对于DBC生成代码有两种方式,
一种是在/modules/tools/gen_vehicle_protocol/下 使用python执行脚本
python gen.py lincoln_conf.yml
会在/modules/tools/gen_vehicle_protocol/output内生成目标文件
另外一种是在apollo/output文件夹内生成
将DBC文件放在外层output文件夹内,
yml的protocol_conf:output/demo.yml
cartype:demo
sender:AD
output_dir : output/canbus_vehicle
output_canbus_conf_dir:output/
然后执行脚本:
gen output/demo_conf.yml
即可在指定目录生成代码
(对于以及修改编辑过的canbus逻辑代码,不建议使用第二种方式,或者将生成的文件目录修改,直接使用会覆盖原有的代码模块)
至此从CAN协议 -> DBC文件 -> 代码的链路以及打通,下面就开始apollo9.0的代码学习。

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Apollo 9.0是一个自动驾驶开发平台,它提供了一套完整的软硬件解决方案,用于开发和部署自动驾驶系统。交叉编译是在一种平台上生成在另一种平台上运行的可执行文件的过程。在Apollo 9.0中,交叉编译通常用于将代码从开发主机编译为目标平台上的可执行文件。 要进行Apollo 9.0的交叉编译,您需要按照以下步骤进行操作: 1. 配置交叉编译环境:首先,您需要安装目标平台的交叉编译工具链。这些工具链包括交叉编译器、链接器和库文件。您可以从目标平台的官方网站或开发者社区获取这些工具链。 2. 设置环境变量:将交叉编译工具链的路径添加到系统的环境变量中,以便在编译过程中能够正确地找到这些工具。 3. 配置构建系统:Apollo 9.0使用Bazel作为构建系统。您需要根据目标平台的要求,配置Bazel的构建规则和选项。这包括指定目标平台的架构、操作系统和其他相关参数。 4. 编译代码:使用Bazel命令行工具执行编译命令,将代码编译为目标平台上的可执行文件。根据您的需求,您可以选择编译整个Apollo 9.0系统,或者只编译特定的模块或组件。 5. 部署和测试:将编译生成的可执行文件部署到目标平台上,并进行测试和验证。确保代码在目标平台上能够正常运行,并满足性能和功能要求。 请注意,具体的交叉编译步骤可能因为您使用的目标平台和开发环境而有所不同。建议您参考Apollo 9.0的官方文档和开发者社区,以获取更详细和准确的交叉编译指南。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值