基于虚拟现实技术和自动代码生成技术的闸机建模方法

文档序号:6489103阅读:370来源:国知局
基于虚拟现实技术和自动代码生成技术的闸机建模方法
【专利摘要】本发明公开了一种闸机机械结构和控制逻辑的模型及其建模方法,该方法包括:利用3DSMAX和Virtools对物理元素(即除通行检测策略之外,所有和仿真相关的物理元素,主要包括设备实体以及相关的动作,人物模型以及人物行走动作;此外还包括各个元素之间的物理约束规则)进行实现,导入Virtools后进行播放以及逻辑处理相关的互动和运算,利用Stateflow模型实现通行检测逻辑的设计,并设置实际可能出现的情况来检验其逻辑的可靠性,最后生成代码并移植到单片机和虚拟现实平台进行对比调试,完成通行控制软件的设计。本发明的有益技术效果是:简化了复杂逻辑处理代码的编写;为功能的设计和改进提供了清晰地模型化文档;提供了一种脱离硬件设备的纯软件仿真方式,极大提高了开发调试的效率,能一定程度降低硬件成本。
【专利说明】基于虚拟现实技术和自动代码生成技术的闸机建模方法
【技术领域】
[0001]本发明涉及一种闸机传感器通道的建模方法,尤其是一种针对传感器通道及其通行控制策略仿真和验证的方法。
【背景技术】
[0002]本发明中使用的工具简单介绍如下:
Virtools:法国达索3DVIA系统下完整的一套创新的3D
3D Studio Max:常简称为3ds Max或MAX,是Autodesk公司开发的基于PC系统的三维动画渲染和制作软件
Stateflow:集成于Simulink中的图形化设计与开发工具,主要用于针对控制系统中复杂的控制逻辑进行建模与仿真。
目前闸机通道判断最常采用的方法是根据闸机通道内的传感器的遮挡信号和主控单元的信号进行逻辑运算,判别各种情况下乘客的行动,进而确定驱动扇门的开启和关闭。
传统的闸机及其类似设备的开发,大都在设备模型搭建好后才能进行调试工作。因此在开发早期传感器布局的对比和选择难以进行,后续的通行控制软件调试极其不便,软件的编写和功能的实现也极为繁琐。如在申请号为20101024566.9的专利中,该控制策略的调试必须依托已经搭建好的闸机通道。

【发明内容】

[0003]本发明提出一种基于Virtools虚拟现实技术和Stateflow的自动代码生成技术的闸机建模方式,能够在硬件平台搭建之前对设备的机械结构和内部处理逻辑进行仿真,模拟整个乘客通行和检测功能。
在本发明中,利用3DS MAX和Virtools对物理元素(即除通行检测策略之外,所有和仿真相关的物理元素,主要包括设备实体以及相关的动作,人物模型以及人物行走动作;此外还包括各个元素之间的物理约束规则)进行实现,导入Virtools后进行播放以及逻辑处理相关的互动和运算,利用Stateflow模型实现通行检测逻辑的设计,并设置实际可能出现的情况来检验其逻辑的可靠性,最后生成代码并移植到单片机和虚拟现实平台进行对比调试,完成通行控制软件的设计。
本发明的有益技术效果是:提供了一种直观的逻辑建模方法,简化了复杂逻辑处理的代码编写,增强了代码的可靠性;能够脱离实际硬件进行硬件方案(传感器布局等)对比和评估,结合自动生成的代码进行功能调试,极大方便了软硬件开发,缩短设计周期并降低了硬件成本。
【专利附图】

【附图说明】:
图1、开发流程示意图 图2、机箱布局意图 图3、设备模型示意图 图4、行李的构建
图5、人物行走示意图
图6、人物模型库
图7、添加足迹示意图
图8、行走效果调整
图9、行李跟随示意图
图10、行李跟随脚本实现
图11、扇门轴心设置
图12、扇门官方安装设置
图13、安全区域示意图
图14、没有碰撞设置的角色
图15、角色之间碰撞的辅助物体
图16、存在碰撞效果的角色
图17、传感器工作方式示意图
图18、所有传感器仿真模块
图19、传感器工作效果
图20、通过某区域的检测状态转换
图21、通过某区域的Stateflow模型
图21.1、图21第I部分放大图
图21.2、图21第2部分放大图
图21.3、图21第3部分放大图
图22、持票进站通过安全区域的Stateflow模型
图23、持票通过安全区域的检测处理流程。
[0004] 【具体实施方式】
1、模型的创建
本发明需要创建的设备实体模型主要有机箱、扇门、传感器光束和行李。其中机箱固定不动;扇门具有开闭的动作;传感器光束涉及碰撞检测;行李运动受之后创建的人物模型的位置影响。
在3DS MAX中绘制圆柱体、长方体等标准几何体,组合搭建成设备3D模型。忽略仿真无关的细节,将机箱视为长方体;用尺寸相当的圆柱体模拟传感器光束;将具有实际厚度的扇形摆放到扇门位置,并调整其轴心到实际的转轴上,添加平面将通道划分为多个区域,添加3个辅助物体为之后的扇门开闭功能作准备;按照普通行李的大致尺寸,创建两个长方体、一个圆柱体,依据行李箱的结构摆放到一起。
乘客模型则直接调用3DS MAX平台人物模型素材库中具备皮肤及骨骼绑定的模型。
2、人物动作设计
直接调用3DS MAX平台人物模型素材库中具备皮肤及骨骼绑定的模型,删除摄像机等除骨骼和皮肤外的无关元素,调整模型尺寸。选中任意一个骨骼,添加若干足迹,如图7所示。假定人走路的姿势不变,则可以看作是一个位置发生变化的周期循环动作,而每一个周期都存在有左脚和右脚的跨步和牵引动作。针对设置的足迹间的间隔帧数(此处为15帧),得到每一个周期为30帧。在时间配置窗口调整此周期的起始帧数,使得起始和结束的动作两只脚的间距较近。从而获得了一个完整且首尾衔接连贯的行走动作,如图8所示。将人物模型和行走动作导出并在Virtools中使用模型,效果与3DS MAX中一致。
3、行李跟随的实现
现实中携带行李的乘客通常是将行李拖在身后或者推在身前通过闸机,这里保证行李在乘客通行过程中实时保持正确的相对位置。即Y轴上位移保持不变,且只由地面的Y轴坐标决定;可以看出行李的坐标可以根据地面的Y轴坐标和乘客的坐标得出一个固定的值,如图9所示。
可以将这个实现过程看作是:实时计算出行李应该处于的坐标位置,然后实时地将行李放置在那个位置。运行3D效果如图10所示。
4、扇门开闭的实现
要实现扇门开闭,首先需要其3D模型具备以下条件:a.扇门模型必须放置在准确的位置;b.扇门模型的轴心必须在其旋转轴上。如图11所示。扇门开启时,刚好收拢于机箱内部,闸机安装严格按照门机厂家的官方尺寸,关闭到位时扇门最小间距为50mm,如图12所
/Jn ο
结合图3中的3个辅助物体,将靠中间的辅助物体宽度设置为大致50_,则可以借助它和碰撞检测模块实现扇门关闭到位的检测功能:任意一边的扇门与其发生碰撞时即判断关闭到位;同理,靠两边的两个辅助物体分别用于实现扇门开启到位的检测功能:当扇门未和各自的辅助物体发生碰撞时即判断开启到位。为了不影响观察,在Virtools中调整好位置后,将3个辅助物体均设置为不可见。
对任意一扇门,开门动作前先判断扇门和辅助物体的表面是否发生碰撞;如果发生碰撞则进行每秒转指定角度的功能;如未发生碰撞则不再转动。
依据门机的机械特性和闸机的功能需求,扇门的关闭在仿真实现上稍微复杂一些:
a.将扇门两端20cm左右的范围划分为安全区域,当安全区域内的传感器有遮挡时,正在进行的关门操作需要停止,并立即开启扇门;b.门机自身的机械特性让门机撞击到障碍物时会受阻。此处的安全区域如图13中虚线区域所示。
完整的关门操作首先需要进行传感器数据判断,如果安全区域没有传感器被遮挡,则进行关门操作,直到关闭到位;否则在开始到关闭完成前,安全区域内传感器的任何遮挡将导致扇门打开;并一直循环判断传感器数据,直到适合关门并完成关门操作。
5、实体碰撞的实现
乘客和闸机机箱、扇门的碰撞阻挡设置类似于扇门关闭的设置方法。人物和人物碰撞阻挡也必须实现,否则会在多个乘客出现的时候影响仿真效果,比如相向而行的两个人交错穿过对方继续通行,如图14所示。由于人体尤其是行走状态下的模型相对于长方体等几何图形极不规则,用常规方法缺乏精度和稳定性,需要添加辅助物体用以产生碰撞效果。
创建一个和通道宽度相当,横截面积近似于乘客模型的长方体,将其位置约束到乘客模型身上;同时新建一个碰撞群组,设置它为人物碰撞的阻挡群组。
当乘客运动时,对应的辅助物体能跟随一起运动,如图15所示。
用同样的方式对另一个人物添加碰撞辅助物体,将两个辅助物体均设置为不可见(不影响仿真),并添加到之前的碰撞组中,再控制他们相向而行,此时不会发生穿越的情况,受到阻挡时人物踏步但不会发生位移,他们分别受到对方碰撞辅助物体的阻挡作用,3D效果如图16所示。
6、传感器检测功能的实现
传感器的发射端和接收端都存在散射,如图17所示。但由于光线直线传播的特性,导致一组传感器的作用范围可以近似认为是一个和其LED尺寸等同的圆柱体,直观上可以认为当有遮挡物和此圆柱体发生碰撞时,传感器的数据也即是碰撞时的电平(该选用的传感器为低电平)。但是实际情况并非如此,仍可能有残余部分光线被接收端收到,并判断出未被遮挡,即采用多面体表面碰撞的方式进行检测,仿真应采用的碰撞面应位于光束内部,即碰撞体的直径小于光束直径。从仿真的性能上来说,计算多面体之间的碰撞所消耗的资源也大于计算一条线段和多面体表面的碰撞(首先碰撞对象的复杂程度就大于后者)。另外考虑到光束直径已经是毫米级,相对于人体尺寸已经比较小了,最终选择采用线段和多面体的碰撞检测方式来实现传感器的检测功能。
与其他碰撞检测模块有所不同,这种模块对应的碰撞检测对象之一是在该模块运行时生成:一条定长的线段,参数包含它相对于某参考物体的坐标、方向以及线段长度,为了方便这里设置参考物体为指定的传感器;另外还有一个群组类型的输入参数,该群组用于囊括需要检测的碰撞物体,这个设置对于通行乘客较多的情况非常方便。
为了方便设计和部署,将所有传感器检测的模块封装到一个模块中,同时强制让所有的子模块同步,如图18所示。测试效果如图19所示,能够模拟出传感器的实时数据变化。
7、Stateflow模型的建立
Stateflow模型中首先需要将相关传感器数据整合到一起,再进行判断和转换的操作。为了保证这两个操作都进行且按照固定顺序,将他们封装在两个状态中并在顶层设置为并行工作。而通行过程的状态转换以子状态的形式工作。如图20、21所示。
以持票通过安全区域的Stateflow模型为例,令进站票数为正数,出站票数为负数。以进站方向为例,首先要满足票数大于零才进行后续操作,且此时不会出现“出站持票通过”的情况;满足条件后检测C区进站方向的通过过程,如果检测到通过则票数减一,且判断一个乘客持票进站,等待下一步处理,否则持票进站标志为0,且票数不变,本次执行结束;在检测到持票进站后,如果票数为0,对通行结束标志位置位,本次执行结束,否则该位清零,本次执行结束,如图22、23所示。
根据通行检测策略的功能需求,提出各个功能可以采用的实现方式,并针对一些主要功能的逻辑处理和状态转换搭建了 Simulink/Stateflow模型,将Stateflow模型转化为标准的C语言代码,并将其移植到Virtools和单片机平台上。利用Virtools的虚拟环境对照实际设备进行通行检测策略的测试、调整和验证,则完成通行控制软件的设计。
【权利要求】
1.基于虚拟现实技术和自动代码生成技术的闸机系统建模方法,其特征在于:利用3DS MAX和Virtools对物理元素进行实现,导入Virtools后进行播放以及逻辑处理相关的互动和运算,利用Stateflow模型实现通行检测逻辑的设计并生成代码,完成通行控制软件的设计。
2.如权利要求1所述的物理元素的实现,其特征在于:在3DSMAX中绘制圆柱体、长方体等标准几何体,组合搭建成设备3D模型,直接调用3DS MAX平台人物模型素材库中具备皮肤及骨骼绑定的模型来模拟乘客,并把这些模型导入Virtools。
3.如权利要求1所述的物理元素的实现,其特征在于:在3DSMAX中实现人物动作、扇门关闭、实体碰撞等模型,并把这些模型导入VirtooI s。
4.如权利要求1所述的物理元素的实现,其特征在于:通过增加辅助物体将其位置约束到乘客模型身上,让对应的辅助物体能跟随乘客一起运动,用此方式产生碰撞效果。
5.如权利要求1所述的检测逻辑的设计,其特征在于:在Virtools平台搭建出了闸机系统的工程模型,利用Simulink/Statef low模块搭建出控制相关的逻辑模型,并生成代码,完成通行控制软件的设计。
【文档编号】G06T19/00GK103678748SQ201210357303
【公开日】2014年3月26日 申请日期:2012年9月24日 优先权日:2012年9月24日
【发明者】王靖欣, 万礼华, 王洪云, 李渔 申请人:重庆金美通信有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1