提示:主要介绍使用的是Carsim、Veristand、NI-Veristand 三个软件联合仿真,为了更好的展现内容,这里先讲NI-Veristand和VTD的联合仿真,其实就是传感器模型、驾驶员模型与实时系统之间的交互,这里先脱离动力控制系统做场景及传感器仿真的叙述。

文章目录

  • 前言
  • 一、NI实时系统
    • 1、制作NI Custom Device对VTD RDB包的收发
    • 3、接收并转发VTD发送来的传感器数据包
    • 4、使用CAN卡发送报文给对应的控制器:
    • 5、使用Veristand的Stimulus Profile Edito功能控制逻辑;
  • 二、如何组包并发送给VTD?
    • 1、组包方式一
    • 2、Trigger包的Labview发送方法
    • 2、RDB_DRIVER_CTRL_t的拆包
    • 3、RDB_SENSOR_OBJECT_t的组包
    • 5、RDB_CONTACT_POINT_t的拆包
  • 三、如何设置VTD的通讯参数?
    • 1、VTD的配置参数
  • 四、NI如何拆收到VTD的包?
    • 1、拆包代码
    • 2、拆包规则
  • 五、总结

前言

提示:下图为Casim、Veritand、VTD之间的关系,彼此都在做什么事情:
下图为整个HIL的台架方案:

这里需要特别注意的是动力学软件Carsim不做车辆方向盘控制,因为场景用的VTD的,所以必须由VTD的驾驶员去判断走向,动力学无法判断车辆的方向。


提示:这里讲的是NI和VTD之间的交互。

一、NI实时系统

硬件:NI-PXle8880-2F18CD99
软件:Veristand2020、Labview2020
责任项细分:

1、制作NI Custom Device对VTD RDB包的收发

NI Custom Device主要通过接收和发送下列的包来与VTD进行联合仿真,NI和VTD之间的通讯是通过TCP方式进行的,协议是VTD定义的RDB格式,下面会讲到;

1)RDB_DRIVER_CTRL_t,PKG ID = 26
此包为VTD的驾驶员模型参数,主要有节气门开度,制动踏板,请求加速度,请求速度,请求方向盘角度等参数,
VTD将这些请求参数给到Carsim,Carsim会响应真实的Postion、Yaw、Roll、Pitch(Carsim的动力学比较专业)等参数用来控制VTD中车辆的运动。相当于VTD只做了控制的请求,Carsim执行VTD的请求。

2)RDB_OBJECT_CFG_t,PKG ID = 9
Carsim会响应真实的Postion、Yaw、Roll、Pitch,则需要通过这个包将这些参数转发到VTD从而控制车辆。

3)RDB_TRIGGER_t, PKG ID = 25
当VTD收到一帧trigger,则渲染一帧画面,这个包是必须要发的。

3、接收并转发VTD发送来的传感器数据包

制作Custom device用于VTD中传感器模型的数据接收:
1)接收由VTD发送过来的传感器数据(上图红色箭头),并通过NI的CAN卡或者以太网卡将数据转发到对应的控制器等需要仿真的节点。

4、使用CAN卡发送报文给对应的控制器:

1)假设收到VTD发送过来的超声波参数,我们在NI-Veristand可以做比例变化,再以报文形式将数据通过CAN卡转发到对应的控制器等需要仿真的节点;

5、使用Veristand的Stimulus Profile Edito功能控制逻辑;

假设你想写一个逻辑,你就可以通过方式给自己的信号进行逻辑运算,非常方便。


二、如何组包并发送给VTD?

1、组包方式一

VTD的通讯组包方式有两种:
1、一个包一个整包 ,下图是发送了两个整包。整包就是拥有完整包头、起始帧、子包头、子包体、结束帧的结构。

2、多个包一个整包

2、Trigger包的Labview发送方法

1)当VTD收到trigger后会进行画面的渲染,相当于触发命令,循环发送Trigger时间假设为10ms,那VTD的画面就是10ms渲染一帧;

2)我们可以通过结构体,判断这个trigger有多少个字节,bytes=24+16+16+12+16 = 84,trigger包的数据结构严格按照下列结构排序;

4)在NI-Labview中按照自己的方式去组包(实际的交互是通过Veristand的Custom device去完成的,而Custom device是使用Labview生成的,暂不介绍Veristand生成CD的方法,如果有需要可以找我,或者网上找资料),下述写的组包案例,可以参考一下,反正能正常组包就行了,不一定需要按照下面的方法,(先建立TCP连接,再写入字符串);


以上大家参考一下。

注意:simtime和frameNo值每帧都在变化;
1)frameNo每帧需要+1,我这里的时间是0.043s加1;
2)simtime = deltatime(0.043) * frameNo;

2、RDB_DRIVER_CTRL_t的拆包

如何拆包,是根据RDB协议去实行的。

3、RDB_SENSOR_OBJECT_t的组包


5、RDB_CONTACT_POINT_t的拆包


三、如何设置VTD的通讯参数?

1、VTD的配置参数


1)点击左侧红框中的设置按钮,在弹出的界面中先在下拉框中选择PROJECT进行设置;
2)为确保VTD在该台架下正常运行,RDB–composeSingleMessage设为True、Sunc–source选择RDB(即VTD通过RDB接收外部Trigger进行触发)、Sync–frameTimeMs/idleFrameTimeMs 设置为10ms与NI中CD的设置值保持一致,点击保存或另存为;
3)在红框中的下拉框中选择Setup继续配置,其各参数需与Projects中保持一致。


四、NI如何拆收到VTD的包?

1、拆包代码

1)先建立TCP连接,读取相应MSG包的Datasize,将后面的子包和PKG ID拆成二维数组,随后再通过PKG ID去找到自己的包和内容;
如下图所示,解出PKG ID 和 PKG ID 对应的内容:

2、拆包规则

每个子包的组包规则RDB_ENTRY_HDR_t+RDB_PKG_t,具体的数据结构可以查表,这里不做详细的解说,跟上述拆包规则一样,按照图3的规则;


五、总结

综上,完成NI与VTD之间的通讯教程,简单的组包和拆包规则,需要有一定的Labview编程基础,另外Custom device的制作也有一点点难度,后续会将Veristand上的操作教程,不懂的大家可以互相交流。

自动驾驶仿真:Carsim、NI和VTD联合仿真课题一相关推荐

  1. carsim与MPC工具箱联合仿真

    carsim与MPC工具箱联合仿真 写在前面的话 步骤 写在前面的话 <无人驾驶车辆模型预测控制>作为国内车辆领域使用MPC作为控制算法的先驱者,对后来的研究人员产生了极大的影响.此本专著 ...

  2. 基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能

    基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能(acc自适应巡航),包含simulink模型(其中有车辆逆纵向动力学 ...

  3. 基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能(acc自适应巡航)

    基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能(acc自适应巡航) :7430669302617414一無所有`

  4. 流水线自动分拣机器人仿真,vrep与matlab联合仿真,基于机器视觉技术进行自动分拣,采用scara型机械臂

    流水线自动分拣机器人仿真,vrep与matlab联合仿真,基于机器视觉技术进行自动分拣,采用scara型机械臂,按照不同的颜色与形状分拣,放入不同的盒子并统计数量. 仅供学习使用 基础太差的勿. ID ...

  5. Simcenter Amesim 2019.1与Matlab/simulink联合仿真-环境配置与例程联合仿真

    以前的LMS AMEsim被西门子收购后已经改叫Siemens Simcenter Amesim了.这里介绍Amesim 2019.1与Matlab的联合仿真配置.如果需要Amesim 2019.2与 ...

  6. 万字长文详解特斯拉自动驾驶体系(感知/规控/标注/仿真)

    作者 | 和君 编辑 | 禾隐记 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[全栈算法]技术交流群 汽车革命的上半场是电动化,下半 ...

  7. Simcenter Amesim 2019.2与Matlab 2019b联合仿真-环境配置与例程联合仿真

    以前的LMS AMEsim被西门子收购后已经改叫Siemens Simcenter Amesim了.在本人博客中,已详细介绍了Simcenter Amesim 2019.1与Matlab 2017b联 ...

  8. Adams 与MATLAB联合仿真 失败,adams与matlab联合仿真例子(正确没商量).doc

    adams与matlab联合仿真例子(正确没商量) Adams与Matlab联合仿真例子 作者寄语:这个文件是基于李增刚<adams入门详解与实例>一书中,Adams与Matlab联合仿真 ...

  9. recurdyn和matlab联合仿真,recurdyn与simulink机电联合仿真,求助

    recurdyn与simulink机电联合仿真,求助 关注:237  答案:2  手机版 解决时间 2021-01-28 21:35 已解决 2021-01-27 20:42 recurdyn与sim ...

  10. amesim与matlab联合仿真原理,amesim与matlab联合仿真步骤(自己总结)

    Amesim与matlab 联合仿真参数设置 实验软件平台 Matlab2009a,amesimR8a ,VC6.0 企业版(英文版) 步骤: 1 将VC++中的"vcvar32.bat&q ...

最新文章

  1. Office2019 Word 新建文档豆沙绿背景色失效零时解决方案
  2. Metasploit远程调用Nessus出错
  3. Crawler:基于Crawler和P2P技术实现机器人智能在线下载
  4. linux脚本 的使用,linux shell脚步使用讲解
  5. java获取数据库MetaData
  6. 计算多项式的值(信息学奥赛一本通-T1012)
  7. vep文件如何转换mp4_如何将m4v视频格式快速转换成mp4视频呢
  8. 15款精美的 WordPress 电子商务网站模板
  9. HDU 1012 u Calculate e(简单阶乘计算)
  10. 1 1 2 3 5 8 java_1 1 2 3 5 8 13 21 34规律:一个数据等于前两个数之和.用java做,输入一个数据n,计算斐波那契数列(Fibonacci)的第n个值....
  11. URLDecoder和URLEncoder的使用总结
  12. Altium Designer中的长度单位如何转换?
  13. php pcntl_alarm,pcntl_alarm定时闹钟信号详解
  14. 学python要多少钱-python编程培训需要多少钱?
  15. 2022年湖南省自考考试学前教育幼儿园课程练习题及答案
  16. Java Web实战详细教程(十一)贯穿项目搭建+CSS修饰前端页面
  17. PathMeasure 轨迹动画神器 路径动画
  18. 高通新款高端芯片抢闸发布,小米将首发,趁机从华为手里抢夺市场
  19. ECMAScript6语法
  20. HAL库的SPI 发送16位

热门文章

  1. UE4打包并加载Pak-Windows/iOS/Android不同平台Editor/Runtime不同运行模式兼容
  2. 计算机软考程序员试题,最全历年程序员软考考试上午真题合集(附答案).doc...
  3. python贝叶斯估计库_tsbngen一个python库,可从任意动态贝叶斯网络生成时间序列数据...
  4. 计算机组成原理与体系结构
  5. 系统制作与优化2007最终版
  6. 春运买不到票?程序员喊你来GitHub看牛哄哄的抢票神器
  7. BlackBerry模拟器支持中文
  8. 线性反馈移位寄存器LFSR verilog实现
  9. [GRE] 填空机经 Section51-55
  10. 视频格式转换工具,用到ws.schild.jave,之前是用的it.sauronsoftware.jave,作者已经不维护了