自动驾驶仿真 (四)—— 基于PreScan与Simulink的UDP数据通信
时间:2023-10-13 06:07:00
自动驾驶仿真四—— 基于PreScan与Simulink的UDP数据通信
- 1. 需要数据通信
- 2. Simulink的UDP通信模块
- 3. AEB系统模型的UDP通信建模
- 4. 模拟结果分析
- 5. 参考书目教材
1. 需要数据通信
博主前面的博文也谈过了Carsim、Prescan 与 Simulink 其实在开发过程中也遵循V无论是开发过程还是思想;Carsim还是Prescan 基于模型的控制器可以设计(MIL)在环中使用软件(SIL)和硬件在环(HIL),甚至车辆在环(VIL)实时测试。
以车辆在环试(Vehicle-In-the-Loop,VIL)来说,将虚拟交通环境产生的测试场景实时注入给真实物理世界中待测自动驾驶汽车控制器,使其控制真实车辆产生运动行为,并借助高速数据通讯将真实车辆运动状态实时地映射到虚拟交通环境中,通过动态更新虚拟测试场景,实现数字双胞胎车辆与待测自动驾驶汽车的平行执行,虚实结合,完成真实自动驾驶汽车的性能测试。
如图所示,虚拟测试场景由数字双胞胎车辆组成,包括光照、天气、道路和交通参与者,以及组装高保真度传感器模型的数字双胞胎车辆,以复制真实的自动驾驶汽车运动行为。传感器模型感知虚拟测试环境,获取结果级虚拟目标状态信息V2X、5G 等待无线数据通信或 UDP(User Datagram Protocol,用户数据报告协议),CAN 等待测量的自动驾驶汽车实时发送有线数据传输链路。[CAN对总线通信的相关知识感兴趣的合作伙伴可以参考博主分享的博客汽车电子技术——CAN总线系统]。
根据传感器信号,自动驾驶汽车控制器采取相应的行为决策,并将其发送给底盘执行器,使真实待测车辆能够实时响应场景仿真软件构建的虚拟测试场景触发的动作。同时,在真实的物理世界中,自动驾驶汽车的运动状态信息通过数据通信链路实时返回到模拟测试场景中的数字双胞胎车辆,实现被测车辆的运动映射和与虚拟交通环境的交互,从而完成自动驾驶功能的测试和验证。模拟场景生成技术丰富了真实物理世界的测试环境,实现了真实物理世界与虚拟测试场景之间的实时信息交换和状态交互,弥补了虚拟模拟测试与真实车辆道路测试之间的差距。
因此,无论是虚拟仿真测试平台之间,还是虚拟仿真测试平台与实物之间,都需要建立数据传输链路。本博客是上述文章AEB以系统仿真模型为基础,写作Simulink中车载以太网UDP通信模块的使用。
2. Simulink的UDP通信模块
网络通信协议 (Transmission Control Protocol/Internet Protocol)(简称 TCP/IP),是车载以太网最基本的协议之一。TCP/IP 它由许多协议组成,包括 TCP(传输控制协议),UDP(用户数据报告协议)IP(互联网协议),ARP(地址分析协议),Icmp(Internet 控制报文协议)等。
以最常见的TCP协议和UDP就协议而言,两者的相似之处在于,数据包将通过网络层发送到网络层IP传输协议。区别在于TCP该协议是一种可靠的端到端通信方式,提供连接可靠的数据流服务,确保数据在传输过程中不会丢失,并确保数据的有序性,以提供应用程序之间的通信。使用应用程序TCP与另一个程序建立通信连接时,将首先发送一个连接请求,并将请求发送到指定的程序IP在地址和端口上,可靠的全双工通信通道可以在三次握手后建立。UDP该协议更注重数据传输的效率,不能保证数据传输的可靠性,是一种无连接、不可靠的数据传输服务协议。不提供端到端通信,只需将数据报告发送到网络,并从网络接收发送的数据报告。若在数据传输过程中,UDP如果数据报告的端口号与目标端口号不匹配,则直接丢弃数据。
看不同的场景需求,UDP具有TCP无法匹配的速度优势大大降低了数据传输过程中的时间延迟。考虑到系统对实时性的特殊要求,选择 UDP/IP 协议通常是数据交换的好选择。下面简单介绍一下Simulink中UDP通信模块。
该UDP通信模块提供了Simulink通过以太网实现软件环境和外部通信功能,包括 UDP Send和UDP Receive其功能描述如下:
1) UDP Send通过UDP协议向指定的远程机器发送数据,可配置远程机器地址、端口号等;
2) UDP Receive模块通过UDP协议从指定的远程机接收数据,可配置远程机地址、端口号、数据大小、源数据类型等。请注意,接收信息通常需要设置为固定长度。
其中,UDP send需要配合Byte Packing使用,UDP receive需要配合Byte Unpacking使用。请注意相应参数的正确数量。
3. AEB系统模型的UDP通信建模
以下是上一个博客AEB基于系统模型的实现UDP通信功能。主要的思想就是将上一篇博客的AEB单独模拟测试模型AEB拆除算法模块,在另一个模拟测试平台上建立算法模块,在这种情况下建立新的模拟测试平台matlab的simulink所以模型其实可以看作是电脑里的两个simulink模拟平台间通信的特例,两台设备的不同模拟平台,或模拟平台与实物之间的通信思路也是如此。以下是AEB构建算法平台的通信模块如下:
上位机是指可以直接发送操作指令的计算机或单片机,通常提供用户操作交互界面,并向用户显示反馈数据。下位机通常用于接收和反馈上位机的指令,并根据指令控制机器的执行动作,并从机器传感器中读取数据。因此,本例中的两个模拟模型/平台可视为以下类似概念:
上位机:基于Prescan&Simulink驾驶员模型、车辆模型等
下位机:基于Simulink 的AEB算法执行模型
事实上,上述划分并不是很准确。毕竟,车辆模型中的制动和节气门模型属于执行动作部分。然而,这种分类是为了方便表达和引入相似的含义。以下是上述和下位机器。
以下是一些具体相关的操作实践。
再打开一个matlab并建立新的simulink模型,将AEB按照上述通信思想,粘贴算法模块并建模如下:
记得在这里加一个simulation pace模块,同步设置模拟操作和真实时间。
将上位机的仿真模型同样建立UDP两者之间的对应关系如下:
以下是一些参数设置:
远程机器地址就是这台机器的无线网络IP,通过cmd>ipconfig查询。
4. 模拟结果分析
上述建模设置完成后,可同时运行两个simulink程序可以实现UDP通信,AEB联合模拟成功。模拟结果与上一个博客一致,这里不再重复。
对于上下位机数据发包的查看和监控,可以使用网络封包分析软件wireshark,可以轻松检查数据的发送和通信情况,便于监控正常通信和问题模型调试。以下是下端口25001发送的3参数抓包示例:
wireshark抓包软件使用介绍
一般wireshark可能存在以下问题:
1) Q:wireshark使用时没有本地接口 A:npcap软件重装,配置全选
2) Q:选择接口后,软件会卡死 A:是因为在博主电脑里wireshark和npcap不匹配所致
3) Q:查找UDP端口没有数据 A:检查接口选择和端口正确
以下是适应正确的wireshark 3.2 和npcap 1.0安装文件,有需要的朋友按需下载,我上传给大家免费获取。
wireshark3.2&npcap1.0免费下载.rar
5. 参考书目教材
- PreScan Manual Documentation
- 《Matlab/Simulink系统模拟超级学习手册 石良臣 编着
- 《基于AEB汽车自动制动系统硬件设计与控制算法研究 田祖林 2021硕士论文
- 申静峰《自动驾驶汽车环测方法研究》 2021硕士论文
- 半实物仿真系统Matlab/simulink高宁模型组件技术研究 2019硕士论文
=文档信息=
本学习笔记由博主原创编辑,仅用于非商业学习交流
由于水平有限,错误和错误是不可避免的。欢迎交流和纠正
本文涉及侵权的,请随时留言博主,必须妥善处理
版权声明:非商业自由转载-保持签名-注明来源
署名(BY) :zhudj
文章出处:https://zhudj.blog.csdn.net/