使用 can fd 和 tcp/ip 的前向碰撞警告应用程序 -凯发k8网页登录
以下示例说明如何执行前向碰撞警告 (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 通道。安装 上提供的 vector driver setup 包后,可以使用这些虚拟设备通道。
此示例有两个主要组件:
发射机:通过 can fd 和 tcp/ip 发送传感器和视觉数据。该部分代表示例车辆环境。它可以回放预先录制的数据,就像现场车辆一样。
接收机:收集所有数据并执行 fcw 算法和可视化。该部分代表应用程序组件。
为了执行该示例,发射机和接收机部分分别在不同的 matlab® 会话中运行。这样就复制了数据源存在于作为开发工具的 matlab 会话外部的情况。此外,此示例允许您以多种执行模式(解释模式和 mex 模式)运行 fcw 应用程序,每种模式有各自的性能特征。
生成数据
传输应用程序通过 helperstarttransmitter
函数执行。它在当前 matlab 会话之外启动一个新的 matlab 进程来运行。发射机初始化自身并自动开始发送传感器和视觉数据。要运行发射机,请使用 system
命令。
system('matlab -nodesktop -nosplash -r helperstarttransmitter &')
执行前向碰撞警告系统(解释模式)
要打开接收 fcw 应用程序,请执行 helperstartreceiver
函数。您可以点击 start 开始数据接收、处理和可视化。您可以探查 helperstartreceiver
函数,了解 vehicle network toolbox can fd、instrument control toolbox tcp/ip 和 automated driving toolbox 的各功能之间如何配合使用。
helperstartreceiver('interpreted')
查看结果
完成后,使用命令行窗口中的关闭窗口按钮停止发射机应用程序。点击接收 fcw 应用程序上的 stop,然后也关闭其窗口。
当停止接收 fcw 应用程序时,会出现详细说明应用程序性能特征的图。它显示接收数据、处理 fcw 算法和执行可视化所花费的时间。基准设定对于显示系统中需要提高性能的部分非常有用。很明显,执行 fcw 算法花费的时间占据了很大一部分。在下一节中,将探查代码生成作为提高性能的一项策略。
执行前向碰撞警告系统(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 算法的性能改进。
使用物理硬件和多台计算机
该示例使用单台计算机通过虚拟连接仿真整个系统。因此,其性能只是真实性能的近似表示。您也可以使用两台计算机(一台作为发射机,一台作为接收机)执行此示例。这样可以更为真实地表示实时数据场景。为此,您可以对示例代码进行简单修改。
将 can fd 通信从虚拟设备更改为物理设备需要编辑传输和接收代码,以使用硬件设备(而不是虚拟通道)来调用 。您可能还需要根据硬件的功能修改对 的调用。这些调用位于示例的 helperstartreceiver
和 datatransmitter
函数中。
更改多台计算机的 tcp/ip 通信需要将发射机的 tcp/ip 地址从本地主机 (127.0.0.1) 调整为静态值(推荐使用 192.168.1.2)。首先在传输主机上设置该地址。然后,修改 helperstartreceiver
函数中的 tcpipaddr
变量以进行匹配。
在进行配置和物理连接后,您可以在一台计算机上运行发射机应用程序,在另一台计算机上运行 fcw 应用程序。