红包群群规扫雷红包接龙尾数最小发 - 包包乐App

返回首页 微信
微信
手机版
手机版

如何使用软件编程来控制汽车?

2019-11-22 新闻来源:红包群群规扫雷 围观:9523
电脑广告
手机广告

如何用软件编程控制汽车?

对于CAN总线,牛家网络曾经发表过一篇热门文章:本文介绍了CAN总线体系结构的简史和安全性。这篇文章将告诉你如何通过CAN总线编程来控制汽车。

此外,你还可以关注牛家雪城本月24日的训练。在为期三天的培训中,您将学习通信技术,如CAN、CAN-FD总线、以太网等。以及它们的攻击面和保护方法。并有机会获得“汽车信息安全高级工程师”认证。

CAN总线介绍

CAN总线完全称为“控制器局域网总线”。它是国际标准化组织的串行通信协议。它最早由德国博世公司于1983年开发,并最终成为国际标准。它是世界上使用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制网络的标准协议。

当今智能联网汽车拥有大量基于网络技术开发的控制系统,在各种微服务处理中发挥作用,如气囊、刹车、巡航控制、电动助力转向、音响系统、电动车窗、车门、后视镜调节按钮、电池和充电系统。这些系统需要相互通信并读取状态,因此技术人员已经开发了CAN总线协议并将其应用于汽车制造业。带CAN总线的汽车就像带神经系统的汽车。

CAN总线可以看作是汽车用来传输传感器数据的简单网络。它完美地集成了各种复杂的部件,使智能联网汽车实现各种新功能,满足了我们对更智能汽车的期望。以下是1988年宝马8系列,这是世界上第一辆使用CAN总线的汽车:

展开全文

自动驾驶仪和CAN总线

随着自动驾驶技术的飞速发展,CAN总线的应用理念越来越流行。为什么?因为许多自动驾驶公司不会从硬件方面开始大规模制造无人驾驶汽车,而是会直接专注于软件控制汽车的研发。然而,通过对CAN-Bus协议的逆向工程分析(参加24日在牛家学城举办的“汽车信息安全培训”,掌握逆向工程技术),无人驾驶汽车工程师可以使用软件控制汽车的指令传输,如转向、加速和制动。

通过使用激光雷达和毫米波雷达等传感器,无人驾驶车辆拥有非凡的“感知”世界的能力,车内微型计算机可以做出引导、加速、刹车和其他动作的决策。由于对自动驾驶技术的高要求,我们选择了福特福星电子线控驾驶!)来传输汽车控制信号。

开启福特福星的CAN总线/s2/]

当福特聚变温度控制系统首次被破解时,“暴露的汽车黑客”成为了作者的首选书目。这本书也可以在牛卡上免费获得电子版。回复[汽车黑客揭秘]牛卡学习城后台。

在深入之前,让我们来看三个重要的概念:总线协议、局域网总线协议和局域网框架。

1。CAN总线

自1994年以来,加拿大协议一直是美国汽车和轻型卡车的行业标准,但在2001年和2008年分别成为欧盟和美国汽车行业的强制性标准。一般来说,可编程控制器总线分为可编程控制器高(CANH)线和可编程控制器低(加拿大)线。通过差分信号传输,当信号传输进入时,CANH线路中的CAN升压信号保持高电平,而CANL中的降压等效信号形成低电平状态。这种差分信号传输方法通常用于要求噪声容错的环境中,例如汽车制动系统和制造业。以下是示波器上观察到的原始CAN信号:

示波器看到的原始CAN信号

换句话说,通过CAN总线传输的数据包不是标准的,每个CAN总线数据包包括四个主要部分:

,仲裁标识:用于标识发起通信请求的设备标识广播消息,任何一个设备组件都可以发起多个仲裁标识。如果两个can数据包同时在总线上传输,则仲裁标识较小的数据包首先获得总线使用权并首先传输。

,标识符扩展(标识符扩展,集成开发环境):对于标准CAN协议,该数据位始终为0;

,数据长度代码(DLC): 代表数据大小,范围从0到8字节;

,数据:(数据): 自行传输数据。标准的CAN总线最多可以承载8字节的数据包,但有些系统也强制使用8字节来填充数据包。

2。标准CAN数据包

3。CAN帧

一辆汽车里有很多种类的CAN总线。为了打开和关闭空调系统,我们需要找到正确的CAN总线。福特福星至少标记了四条总线,其中三条是以500公里/秒速度运行的高速局域网总线HS1、HS2、HS3,一条是以125公里/秒速度运行的中速局域网总线MS。

OBD-II接口有两种类型的CAN总线:HS1和HS2,但为了防止一些恶意命令,它们都被阻止。然而,由于作者和他的团队的努力,OBD-II限制的问题已经完全解决,并且找到了直接访问HS1、HS2、HS3和微软的方法。密钥在OBD-II接口的后面,在网关模块上,所有总线聚集在一起。以下是无人驾驶出租车荷马后座控制界面概述:

由于空调系统可以通过汽车的媒体接口(SYNC)进行更改,所以直接进入微软中速总线即可。但是计算机如何读写罐头盒呢?答案是SocketCAN,这是一个开源的控制器局域网驱动程序和网络协议栈集,由大众汽车公司为Linux内核基础开发。

将车辆的GND、摩根士丹利和摩根士丹利3线连接到Kvaser Leaf Light HSv2和CANable设备,然后将另一端连接到安装有新版Linux内核的计算机上,并加载作为网络设备标识的CAN总线:

modprobe can

modprobe kvaser_usb

ip链接集can0 typecan比特率1250000

ifconfig can0 up

(kvasselef lighthsv2亚马逊售价300美元,CANable在Tindie售价25美元。这些工具的应用方法将在纽卡大学城的学校介绍。)

加载后,尝试使用candump can0命令分析交通状况:

然而,很难从中找到动作和行为模式,就像观察声音信号的波形一样。这里,有必要使用CANsniffer工具对频率进行等效分析。cansniffer显示的一系列数据包标识号可以帮助团队研究和准确定位can帧的数据区域何时发生变化。有了这个函数,你就可以知道哪些包应该被丢弃,哪些是紧密相关的。

以下是 CAN嗅探器 在移动台中速总线上抓取数据包的示例。通过串行端口的所有数据包都将被过滤,并且只需要具有CAN id 355、356和358的数据包。同时,通过观察按下汽车空调按钮后数据包的变化,发现001C00000000代表按钮的切换功能。

汽车空调系统控制(空调系统)

下一步是将空调系统的功能连接到我们运行的微型计算机上,这是一个机器人操作系统(ROS)。幸运的是,连接和操作可以很容易地通过使用前面提到的SocketCAN和ROS模块来实现。此外,socketcan_bridge模式可用于将can数据帧转换为ROS可接收的消息格式。

太好了。

ifframe.id == 0x356:

raw_data =解压缩(“BBBBBBBB”,帧.数据)

风扇速度=原始数据[1/4

驱动程序温度=解析温度(原始数据[ 2: 4)

乘客温度=解析温度(原始数据[ 4: 6)

这样生成的数据存储在一个名为CelsiusReport.msg的文件中:

boolauto

bool系统_on

bool单元_on

布尔对偶

bool max_cool

bool max _除霜

布尔再循环

bool head_fan

bool feet _ fan

bool前部_除霜

bool后部_除霜

stringdriver_temp

stringpassenger_temp

按下汽车空调系统相关功能的按钮后,将获得以下相应的代码列表:

控制代码= {

AC _ toggle”:0x5C,

ac_unit_toggle': 0x14,

max_ac_toggle': 0x38,

“再循环_切换”:0x3C,

dual_temperature_toggle': 0x18,

乘客温度上升':0x24,

乘客_温度_下降”:0x28,

driver_temp_up': 0x1C,

driver_temp_down': 0x20,

“自动”:0x34,

wheel_heat_toggle': 0x78,

除霜_max_toggle': 0x64,

“除霜_切换”:0x4C,

“rear _除霜_ toggle”:0x 58,

body_fan_toggle': 0x04,

ft _ fan _ toggle ':0x0C,

扇出”:0x2C,

“风扇关闭”:0x30,

}

现在,与上述字符串对应的数据代码可以直接发送到ROS节点,ROS节点将数据信息转换成汽车可以识别的特殊代码:

rostopicpub/摄氏度_control摄氏度/CelsiusControl ac_toggle

结果

相应的CAN代码可以发送到CAN总线。这种代码控制方法与调整汽车空调空调系统的外部按钮具有相同的效果。这也意味着在无人驾驶汽车的后座上,你可以使用手机应用程序远程控制和改变车内温度。

返回搜狐,查看更多

负责任的编辑:

文章底部电脑广告
手机广告位-内容正文底部

相关文章