当前位置:   article > 正文

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

apollo-v9.0.0

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

aem enter
buildtool install xxx
buildtool build -p xxx
  • 1
  • 2
  • 3

在这里插入图片描述
文章的实现计划
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等。
  • 1
  • 2

以上为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的代码学习。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/367853
推荐阅读
相关标签
  

闽ICP备14008679号