Main Content

使用 CAN FD 和 TCP/IP 的前向碰撞警告应用程序

以下示例说明如何执行前向碰撞警告 (FCW) 应用程序,其中通过 CAN FD 和 TCP/IP 协议实时回放传感器和视觉数据。测试车辆上安装的传感器套件所录制的数据会被实时回放,就如同它们来自车辆的网络接口一样。Vehicle Network Toolbox™ 和 Instrument Control Toolbox™ 提供这些接口。这套系统用于测试使用 Automated Driving Toolbox™ 的功能开发的 FCW 系统。有关真实 FCW 算法的设计和开发的帮助,请参阅示例Forward Collision Warning Using Sensor Fusion (Automated Driving Toolbox)

系统配置

此示例使用 Vector 提供的虚拟 CAN FD 通道。安装 www.vector.com 上提供的 Vector Driver Setup 包后,可以使用这些虚拟设备通道。

此示例有两个主要组件:

  1. 发射机:通过 CAN FD 和 TCP/IP 发送传感器和视觉数据。该部分代表示例车辆环境。它可以回放预先录制的数据,就像现场车辆一样。

  2. 接收机:收集所有数据并执行 FCW 算法和可视化。该部分代表应用程序组件。

为了执行该示例,发射机和接收机部分分别在不同的 MATLAB® 会话中运行。这样就复制了数据源存在于作为开发工具的 MATLAB 会话外部的情况。此外,此示例允许您以多种执行模式(解释模式和 MEX 模式)运行 FCW 应用程序,每种模式有各自的性能特征。

生成数据

传输应用程序通过 helperStartTransmitter 函数执行。它在当前 MATLAB 会话之外启动一个新的 MATLAB 进程来运行。发射机初始化自身并自动开始发送传感器和视觉数据。要运行发射机,请使用 system 命令。

system('matlab -nodesktop -nosplash -r helperStartTransmitter &')

FCW Example MATLAB Command Window.PNG

执行前向碰撞警告系统(解释模式)

要打开接收 FCW 应用程序,请执行 helperStartReceiver 函数。您可以点击开始以开始数据接收、处理和可视化。您可以探查 helperStartReceiver 函数,了解 Vehicle Network Toolbox CAN FD、Instrument Control Toolbox TCP/IP 和 Automated Driving Toolbox 的各功能之间如何配合使用。

helperStartReceiver('interpreted')

FCW_Example_BEP_Window_1_80.png

查看结果

完成后,使用命令行窗口中的关闭窗口按钮停止发射机应用程序。点击接收 FCW 应用程序上的停止,然后也关闭其窗口。

当停止接收 FCW 应用程序时,会出现详细说明应用程序性能特征的图。它显示接收数据、处理 FCW 算法和执行可视化所花费的时间。基准设定对于显示系统中需要提高性能的部分非常有用。很明显,执行 FCW 算法花费的时间占据了很大一部分。在下一节中,将探查代码生成作为提高性能的一项策略。

FCW Example Interpreted Plot.png

执行前向碰撞警告系统(MEX 模式)

如果工作流中需要更快的性能,则可以使用 MATLAB Coder™ 生成 MATLAB 代码并将其编译为 MEX 代码。要将此示例编译为 MEX 代码,请使用 helperGenerateCode 函数。该编译会将 FCW 应用程序编译为可在 MATLAB 中直接调用的 MEX 函数。

helperGenerateCode('mex')

重新启动发射机应用程序。

system('matlab -nodesktop -nosplash -r helperStartTransmitter &')

也可以重新启动接收 FCW 应用程序。这次带有输入参量,以使用在前一步骤中编译的 MEX 编译代码。

helperStartReceiver('mex')

完成后,停止并关闭发射机和接收 FCW 应用程序。将 MEX 执行的时间图与解释模式图进行比较,可以看到 FCW 算法的性能改进。

FCW Example MEX Plot.png

使用物理硬件和多台计算机

该示例使用单台计算机通过虚拟连接仿真整个系统。因此,其性能只是真实性能的近似表示。您也可以使用两台计算机(一台作为发射机,一台作为接收机)执行此示例。这样可以更为真实地表示实时数据场景。为此,您可以对示例代码进行简单修改。

将 CAN FD 通信从虚拟设备更改为物理设备需要编辑传输和接收代码,以使用硬件设备(而不是虚拟通道)来调用 canChannel。您可能还需要根据硬件的功能修改对 configBusSpeed 的调用。这些调用位于示例的 helperStartReceiverdataTransmitter 函数中。

更改多台计算机的 TCP/IP 通信需要将发射机的 TCP/IP 地址从本地主机 (127.0.0.1) 调整为静态值(推荐使用 192.168.1.2)。首先在传输主机上设置该地址。然后,修改 helperStartReceiver 函数中的 tcpipAddr 变量以进行匹配。

在进行配置和物理连接后,您可以在一台计算机上运行发射机应用程序,在另一台计算机上运行 FCW 应用程序。