obd协议 混动车_CANoe混搭Unity3D的技术实践

CANoe, 汽车领域进行数据采集的重要工具;Unity3D游戏领域进行游戏开发的重要工具;两者混搭在一起是为了解决什么问题?又会产生什么样的“化学反应”呢?下面由小编就带着大家一起慢慢解开这些疑问。 e2e61d15df0a4f92b9e190a6f101b793.png 9f8a8499f17d574f440a3035baf7f711.png 概述

每辆汽车HMI界面的设计风格,呈现数据的多少,高科技的体验感,都是用户在选车时考量的重要因素,汽车HMI界面从技术实现角度需要解决以下三个问题:

(1)可以获取汽车基本信息数据,例如:车速、电量、传感器状态等等;

(2)界面设计的实现;

(3)可以把获取的信息数据显示在界面上,进行人机交互。

众所周知,CANoe是一款广泛应用在汽车领域的工具,可以获得汽车里面所有通信类型的数据(包括以太网、CAN、LIN等),可以解决HMI界面的第一个获取数据的问题;而Unity3D是游戏领域广泛使用的工具,可以进行界面设计,并且Unity3D工程可以用在windows、linux,、IOS、安卓等多种系统中,可以解决HMI界面的第二个界面设计的问题;为了把获取的数据信息和界面结合起来,用C#语言为基础建立工程,引用Unity3DWebPlayer插件及CANoe插件,把获取到的CANoe数据发送到Unity3D界面上进行显示。

所以,有了以上技术理论做基础,小编就做了一次大胆的技术实践,把CANoe与Unity3D混搭在一起,进行汽车自动驾驶界面开发,把CANoe收集到的车速、电量、传感器状态、障碍物信息、camera信息等等都显示在界面上。

e2e61d15df0a4f92b9e190a6f101b793.png 9f8a8499f17d574f440a3035baf7f711.png 软件开发

1.系统架构

d3e6ffc38437238135138efb8215f840.png

▲ 图一:系统架构图

如上图所示,为整个系统架构图,需要以下硬件清单:

d804f0c0d22e014533a9e464fa920376.png

整个系统以实车为中心,实车通过连接激光雷达等传感器获得一些道路信息,做完数据分析和数据融合之后,转换为CAN信号或者以太网信号输出;然后CAN信号或者以太网信号连接到CANoe上,通过USB线把CANoe连接到工控机上,进行数据采集;整个界面设计程序通过C#语言进行编写,通过引用CANoe插件得到CANoe数据信息;然后再引用Unity 3D的UnityWebPlayer插件,发送CANoe数据到Unity3D;最终实现界面动态显示。

2.界面显示功能开发

界面设计效果图

24b347d59ee6d8ed2b761b73fd06fb2e.png

▲ 图二:界面设计效果图

整个界面设计总共分为4个区域:

  • 左上角车辆状态信息:电量/油量、安全带状态安全气囊状态、车门状态各车灯状态、档位状态、当前车速、驾驶模式:人工驾驶/自动驾驶;

  • 右上角行驶环境信息:地图信息、车道限速、本车行进路径高亮显示障碍物信息,区分机动车和行人,红绿灯状态;

  • 左下角:camera前方视角信息;

  • 右下角自动驾驶控车信息:方向盘转角、控车车速、控车跟车时距、智驾状态(unavailable、off、standby、active、exit)、动力系统响应智驾请求状态(红灯有故障,绿灯正常)、转向系统响应智驾请求状态(红灯有故障,绿灯正常)、制动系统响应智驾请求状态(红灯有故障,绿灯正常)、传感器状态、定位模式。

信号清单

  • CAN/CANFD信号

障碍物信息、红绿灯状态、电量、安全气囊状态、主驾驶车门状态/副驾驶车门状态、远光灯/近光灯/左转向灯/右转向灯状态、挡位状态、当前车速、驾驶模式、方向盘转角、加速度、智驾状态、动力系统响应状态、转向系统响应状态、制动系统响应状态、激光雷达系统状态、毫米波雷达系统状态。

  • ETH信息

高精地图、轨迹预测

软件方案说明

整个软件开发的拓扑图如下:

5e19b20332fe8cbe35080ba4a5c9ec41.png▲ 图三:软件开发拓扑图

软件开发方案说明:

3619ba3247aeeb3d5267ca05c1008b63.png

▲ 图四:软件开发方案

用Winform设计整个页面布局

  1. Camera位于页面左下角,Unity界面设计占据剩下的所有界面
  2. 在Winform中嵌入CANoe插件、Camera插件、Unity插件
  1. CANoe插件:编写C#代码,获得CANoe采集到的CAN信号值
  2. Camera插件:在Winform界面中显示Camera数据
  3. Unity3D插件:在Winform界面中显示Unity3D游戏引擎界面

软件开发说明

通过C#获得CANoe的信号值,例如,下面一段代码可以获得红绿灯的信号值:

db7d8bdc0e954939f8e404c49168f61c.png

说明:CanoeHelper.ChannelNo1为CAN通道号;"CC_TrafficLight01_Info"为CAN报文名称;"CC_TrafficLight01_Color"CAN信号名称。 通过C#的Winform植入unity3D的UnityWebPlayer插件,发送CANoe信息到Unity3D界面,例如: 通过下面的代码可以发送红绿灯信息到Unity3D:

0362ea93eeff536196b696c406dd0477.png

说明:GetTrafficLightValue 为Unity3D中需要实现的函数接口; mCANoeSigTrafficlLights.Value为该函数接口参数,也就是需要传入到Unity3D的值。 Unity3D收到信息后,做界面显示信息处理。例如下面一段代码为Unity3D收 到红绿灯信息后,显示相应的红绿灯信息。

1ca545bee064e71213283ba905c67999.png

其他所有的信号都依此类推,通过CANoe采集数据,发送到Unity3D界面显示。

e2e61d15df0a4f92b9e190a6f101b793.png 9f8a8499f17d574f440a3035baf7f711.png 总结

小编觉得CANoe混搭Unity3D的技术实践意义不仅仅是为界面设计提供一种实现方法;更重要的是Unity3D技术可以用在多种操作系统,可以把界面工程制作成为app,当用户需要使用时,可以自行进行下载安装,更加方便用户操作,提升车联网的体验感。

下面就点击一下视频看看最终CANoe混搭Unity3D的实现效果吧。

a0cdd1645aea033b0a9b67471b26b542.gif e2e61d15df0a4f92b9e190a6f101b793.png 9f8a8499f17d574f440a3035baf7f711.png 附录

Unity3D界面显示中建立的障碍物模型如下:

0292e740f7d4ad7be4b09704c443e2c6.png

272948189c1335a6481da0a1b465b175.png

更多精彩链接:

浅析SOME/ IP协议,打开车载以太网的大门

CAN XL :CAN协议家族新成员

CAPL仿真能力培养之基于CANoe搭建CAN网关环境

OMG!自动化测试脚本开发竟然如此简单!

车载以太网开发之100BASE-T1 PHY

Upper Tester?知道这些就够了!

ed4a6d42abf952f6d44da7990821f1d0.gif

0f2eff919a558985fdebd6515c9d0ae8.png 听说好看的人都“在看”~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值