申请专栏作者
投稿发布
您的当前位置:主页 > 智能驾驶 > 正文

自动驾驶之——CAN总线简介

来源:未知 时间:2018-12-17
请点击下面的广告后浏览!
CAN总线目前已广泛应用在汽车电子领域,在整个自动驾驶驾驶系统中也有着十分重要的作用,自动驾驶汽车上的某些传感器(如雷达、Mobileye)的信号传递也是通过CAN实现的。本文就带大家了解一下CAN总线。

CAN 是Controller AreaNetwork 的缩写,中文名为控制器局域网络,是ISO国际标准化的串行通信协议,是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。 可思yabo88滚球sykv.com,sykv.cn

因其具有高性能、高可靠性的通信机制,目前已广泛应用在汽车电子领域,CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的配电线束。因此CAN总线在整个自动驾驶系统中也有着十分重要的作用,自动驾驶汽车上的某些传感器(如雷达、Mobileye)的信号传递也是通过CAN实现的。

可思yabo88滚球sykv.com

?

可思yabo88滚球sykv.com

CAN 总线技术发展历程 本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

CAN 总线最早是由德国 Bosch 公司在 1986 年为汽车监测和控制而设计,主要用于汽车内部测量与执行部件之间的通信。自宝马公司 1989 年推出第一款使用 CAN-BUS的汽车后,CAN 总线就开始了其辉煌的历程。CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。CAN总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的yabo88滚球通信提供了强有力的技术支持。

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

?

内容来自可思yabo88滚球sykv.com

CAN通信实时性与可靠性

可思yabo88滚球-www.sykv.cn,sykv.com

CAN 总线从诞生之初就凭借着其优良的实时性与可靠性迅速发展成为现场总线的领航者,但它仍存在一些缺陷。CAN 总线通信采用载波监听无损的仲裁技术,在网络负载较小时,CAN 总线实时性可以满足各方面的需求,但随着网络负载不断增大,信息在总线上碰撞的概率也随之增大,如果继续使用基本的 CAN 协议,优先级较低的信息发送的实时性就会受到影响,网络负载到达一定程度后甚至会退出总线竞争。CAN总线协议采用静态固定优先级分配方式,这样不同优先级的信息就很难公平的共享总线使用权,这些缺陷成为制约其进一步发展的问题。

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

?

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

CAN总线的基本工作原理 可思yabo88滚球sykv.com,sykv.cn

CAN协议的特性包括完整性的串行yabo88滚球通讯、提供实时支持、传输速率高达1Mb/s、同时具有11位的寻址以及检错能力。 可思yabo88滚球sykv.com,sykv.cn

可思yabo88滚球sykv.com,sykv.cn

? 可思yabo88滚球sykv.com,sykv.cn

?

可思yabo88滚球sykv.com,sykv.cn

CAN总线用户接口简单,编程方便。网络拓扑结构采用总线式结构。这种网络结构简单、成本低,并且采用无源抽头连接,系统可靠性高。通过CAN总线连接各个网络节点,形成多主机控制器局域网(CAN)。 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

? 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

信息的传输采用CAN通信协议,通过CAN控制器来完成。各网络节点一般为带有微控制器的智能节点完成现场的yabo88滚球采集和基于CAN协议的yabo88滚球传输,节点可以使用带有在片CAN控制器的微控制器,或选用一般的微控制器加上独立的CAN控制器来完成节点功能。传输介质可采用双绞线、同轴电缆或光纤。 可思yabo88滚球-www.sykv.cn,sykv.com

?

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

如果需要进一步提高系统的抗干扰能力,还可以在控制器和传输介质之间加接光电隔离,电源采用DC-DC变换器等措施。这样可方便构成实时分布式测控系统。微控制器,或选用一般的微控制器加上独立的CAN控制器来完成节点功能。传输介质可采用双绞线、同轴电缆或光纤。如果需要进一步提高系统的抗干扰能力,还可以在控制器和传输介质之间加接光电隔离,电源采用DC-DC变换器等措施。这样可方便构成实时分布式测控系统。 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

?

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

自动驾驶系统如何解析CAN总线的yabo88滚球 可思yabo88滚球sykv.com,sykv.cn

本段主要讨论无人驾驶系统获取到CAN消息后,如何根据CAN协议,解析出想要的yabo88滚球? 可思yabo88滚球sykv.com

从CAN总线中解析出传感器的信息,是每个自动驾驶工程师,甚至每一个汽车电子工程师必备的技能。

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

? 本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

认识CAN消息

以百度推出的Apollo开源的代码为例做CAN消息的讲解,我们先看到每一帧的CAN消息是如何被定义的。 本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

可思yabo88滚球-人工智能资讯平台sykv.com

?

可思yabo88滚球sykv.com

? 可思yabo88滚球sykv.com,sykv.cn

可以看到这个名为CanFrame的消息结构中包含4个关键信息,分别是: 可思yabo88滚球-人工智能资讯平台sykv.com

1.uint32_t id (CAN消息的ID号)

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

?

可思yabo88滚球sykv.com,sykv.cn

由于CAN总线上传播着大量CAN消息,因此两个节点进行通信时,会先看id号,以确保这是节点想要的CAN消息。最初的CAN消息id号的范围是000-7FF(16进制数),但随着汽车电控信号的增多,需要传递的消息变多,信息不太够用了。工程师在CAN消息基础上,扩展了id号的范围,大大增加了id号的上限,并将改进后的CAN消息称为“扩展帧”,旧版CAN消息称为“普通帧”。

可思yabo88滚球sykv.com,sykv.cn

如果拿写信做比较,这个id就有点类似写在信件封面上的名字。 可思yabo88滚球sykv.com

?

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

2.uint8_t len(CAN消息的有效长度) 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

每一帧CAN消息能够传递最多8个无符号整形yabo88滚球,或者说能够传递8*8的bool类型的yabo88滚球。这里的len最大值为8,如果该帧CAN消息中有些位没有yabo88滚球,这里的len就会小于8。 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

? 可思yabo88滚球sykv.com

3.uint8_t data[8](CAN消息的实际yabo88滚球) 可思yabo88滚球sykv.com,sykv.cn

正如刚才提到的,每一帧CAN消息都包含至多8*8个bool类型的yabo88滚球,因此可以通过8*8个方格,可视化CAN消息中的data。如下图所示: 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

?

可思yabo88滚球-www.sykv.cn,sykv.com

? 可思yabo88滚球sykv.com

在没有CAN协议帮助我们解析的情况下,这里的yabo88滚球无异于乱码,根本无法得到有用的消息,这也是CAN消息难以破解的原因之一。 可思yabo88滚球-人工智能资讯平台sykv.com

? 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

4.timestamp(CAN消息的时间戳) 可思yabo88滚球-人工智能资讯平台sykv.com

时间戳表示的是收到该CAN消息的时刻。通过连续多帧的时间戳,可以计算出CAN消息的发送周期,也可以用于判断CAN消息是否被持续收到。

可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

综上,每帧CAN消息中最重要的部分其实是data,即8*8的bool值。所谓解析CAN消息,其实就是解析这8*8个bool类型的值。 可思yabo88滚球-www.sykv.cn,sykv.com

?

可思yabo88滚球sykv.com,sykv.cn

认识CAN协议

?

可思yabo88滚球sykv.com,sykv.cn

目前业界的CAN协议,都是以后缀名为dbc的文件进行存储的。德国Vector公司提供CANdb++ Editor是一款专门用于阅读dbc文件的软件。 可思yabo88滚球sykv.com,sykv.cn

?

可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

如下图所示,为Mobileye提供的车道线的dbc文件。(文末提供CANdb++ Editor安装包和Mobileye车道线的dbc文件的获取方法) 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

可思yabo88滚球-人工智能资讯平台sykv.com

? 可思yabo88滚球-www.sykv.cn,sykv.com

? 可思yabo88滚球sykv.com,sykv.cn

以id号为0x766的LKA_Left_Lane_A为例,这是Mobileye检测无人车左侧车道线的部分信息,包括了左侧车道线的偏移量,曲率等。该帧CAN消息(Message)中的五个信号(Signal),分别是Lane_Type、Quality、Curvature、Curvature_Derivative、Width_left_marking、Position。 可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

? 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

每个信号的具体描述显示在软件右侧,其中与解析直接相关的三个要素已用绿色框选中。

可思yabo88滚球sykv.com

? 内容来自可思yabo88滚球sykv.com

1.Value Type(Unsigned或Signed)

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

某些物理量在描述时是有符号的,比如温度。而描述另外一些量时,是没有符号的,即均为正数,比如说曲率。

内容来自可思yabo88滚球sykv.com

?

本文来自可思yabo88滚球(sykv.com),转载请联系本站及注明出处

2.Factor 和 Offset

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

这两个参数需要参与实际的物理量运算,Factor是倍率,Offset是偏移量。例如Lane_Type和Quality信号的Factor为1,Offset为0,而其他信号的Factor均为小数。具体的计算方法请往下看。 可思yabo88滚球-人工智能资讯平台sykv.com

? 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

双击LKA_Left_Lane_A,打开Layout页,会发现很熟悉的方块阵列,如下图所示。

可思yabo88滚球-www.sykv.cn,sykv.com

可思yabo88滚球sykv.com

?

可思yabo88滚球-www.sykv.cn,sykv.com

工程师真正关心的恰好是这块彩色图,因为该图上的每个小方块和data中的每一个bool量一一对应。这就是CAN协议的真面目。 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

? 可思yabo88滚球-人工智能资讯平台sykv.com

解析CAN信号

?由于彩色方块图与data是一一对应的,我们将两个图叠加,将得到如下图所示的data图。 可思yabo88滚球-www.sykv.cn,sykv.com

可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

? 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

每个信号物理量的计算公式为:

可思yabo88滚球sykv.com,sykv.cn

可思yabo88滚球sykv.com

?

可思yabo88滚球sykv.com,sykv.cn

?

可思yabo88滚球-AI,sykv.com人工智能,深度学习,机器学习,神经网络

1.Factor为1的物理量

可思yabo88滚球-人工智能资讯平台sykv.com

由于Lane_Type和Quality的Factor为1,Offset为0,因此十进制值为多少,实际物理量即为多少。 内容来自可思yabo88滚球sykv.com

可思yabo88滚球-www.sykv.cn,sykv.com

?

内容来自可思yabo88滚球sykv.com

? 可思yabo88滚球sykv.com

从图中就能直接看出Quality这个信号占据两个位,二进制数11,换算为十进制是3(1*2 + 1*1);Lane_Type占据四个位,二进制数为0010,换算为十进制是2(0*8 + 0*4 + 1*2 + 0*1)。 可思yabo88滚球-人工智能资讯平台sykv.com

? 可思yabo88滚球sykv.com,sykv.cn

所以这一帧信号表示此时的左车道线Lane_Type值为2,Quality值为3。对于整数值,通信双方可以约定规则,比如Mobileye就规定了,Quality为0或者1时表示车道线的置信度较低,不推荐使用此时的值;2表示置信度中等,3表示置信度较高,请放心使用。 可思yabo88滚球sykv.com,sykv.cn

? 可思yabo88滚球-www.sykv.cn,sykv.com

2.Factor为小数的物理量

可思yabo88滚球-www.sykv.cn,sykv.com

对于Factor不为1的物理量,比如Position,需要使用移位的方法进行解析,但解析公式保持不变。以百度 Apollo提供的源码为例进行讲解。

可思yabo88滚球sykv.com

这里的bytes即为CAN消息中的data,首先将Position信号所在的行取出来,将第1行的8个bool值存储在变量t1中,将第二行的8个bool值存储在变量t0中。由于在这条CAN消息中,Position同时占据了高8位和低8位,因此需要将第一行和第二行的所有bool位拿来计算,高8位存储在32位的变量x中,低8位存储在32位的变量t中。 可思yabo88滚球sykv.com,sykv.cn

?

可思yabo88滚球sykv.com,sykv.cn

现在需要将高8位和低8位拼接,将高8位左移8位,然后与低8位求或运算,即可得到Position的二进制值。随后进行的左移16位,再右移16位的操作是为了将32位的变量x的高16位全部初始化为0。之后将x乘以Factor再加上Offset即可得到真实的Position值,给真实值加上单位meter,即可获取实际的物理量。 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

?

内容来自可思yabo88滚球sykv.com

与CAN类似的通信协议

VCU、雷达等通过CAN总线传递信号,随着CAN的负载越来越高,很多传感器选择了其他通信方式。比如激光雷达的点云yabo88滚球量太过庞大,使用的是局域网的方式进行传递;再比如GPS和惯导使用的是串口进行通信。 可思yabo88滚球-yabo88滚球挖掘,智慧医疗,机器视觉,机器人sykv.com

? 可思yabo88滚球sykv.com,sykv.cn

虽然通信方式和通信协议千差万别,但解析的方法都是一样的。 可思yabo88滚球sykv.com,sykv.cn

? 可思yabo88滚球-AI,sykv.com智能驾驶,人脸识别,区块链,大yabo88滚球

最后,提醒一下,由于不同ID的CAN消息的结构不一样,因此工程师在写解析代码时,需要十分仔细,否则会给后续处理带来想不到的bug。

可思yabo88滚球sykv.com,sykv.cn

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片 匿名?

关于我们?? 免责声明?? 广告合作?? 版权声明?? 联系方式?? 原创投稿?? 网站地图??

Copyright?2005-2019 Sykv.com 可思yabo88滚球 版权所有 ?? ICP备案:京ICP备14056871号

人工智能资讯?? 人工智能资讯?? 人工智能资讯?? 人工智能资讯

?扫码入群
咨询反馈
扫码关注

微信公众号

返回顶部
关闭