System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于数据仿真,具体为一种基于sumo的行人仿真方法。
技术介绍
1、随着城市化进程的不断推进,城市交通面临着越来越复杂的挑战。行人作为城市交通的重要参与者,其行为对交通流量、交通安全和城市规划有着重要影响。因此,行人仿真成为城市规划、交通管理和智能交通系统研究中的一个重要环节。
2、现有技术中,例如公开号为cn113742925公开的技术方案:一种信号控制路口行人流仿真方法,通过元胞自动机技术,结合行人在过街时的从众心理,对信号控制路口的行人通过人行横道时进行行人流仿真。在行人密度不同的情况下,该专利分别采用密集状态和非密集状态的行人流仿真方法。
3、现有技术:尽管行人仿真在上述领域中具有广泛的应用前景,但现有的行人仿真技术在实际应用中仍存在诸多不足之处。例如,许多现有的行人仿真工具主要基于二维场景,缺乏对三维复杂场景的支持,难以在三维环境中进行精确的行人仿真。此外,现有工具在处理复杂交通场景和动态环境变化时表现欠佳,仿真精度、实时性、可靠性有待提高。
技术实现思路
1、本专利技术的目的在于提供一种基于sumo的行人仿真方法,以解决
技术介绍
中提出的现有技术中,现有行人仿真工具在模拟行人行为时精确度和可靠性不足、无法处理复杂的城市交通场景以及缺乏对三维环境的支持的问题。
2、为解决上述技术问题,本专利技术所采用的技术方案是:
3、一种基于sumo的行人仿真方法,包括以下步骤:
4、步骤s1,unity行人数据格式转
5、步骤s101,在unity场景中输入行人路径的起点与多个终点,表明行人的行径方向;
6、步骤s102,使用a*算法在三维场景中根据起点与终点寻找行人所经过每条人行道的名称;
7、步骤s103,判断行人是否能够到达终点,如果无法到达终点,则结束;如果路径中的节点个数大于0,则可以到达终点,则进行步骤s104;
8、步骤s104,遍历当前行人起点所对应的各个终点;
9、步骤s105,为行人数据赋值;
10、步骤s106,生成行人路径文件;
11、步骤s2,sumo与unity集成;
12、步骤s3,三维行人位置更新。
13、根据上述技术方案,步骤s102中,a*算法步骤具体为:
14、步骤s1021,首先以起点和终点人行道名称构建startnode=node(startroadid)、endnode=node(endenode);
15、步骤s1022,定义openlist集和closelist集,将起点startnode其加入openlist,并设置其总代价nodetotalcost为0;
16、步骤s1023,while循环判断openlist集是否为空,如果为空,则进入回溯步骤,如果不为空,则进入步骤s1024;
17、步骤s1024,从未遍历的openlist中选择nodetotalcost+estimatedcost最小的节点currentnode;
18、步骤s1025,将currentnode移到closelist中;
19、步骤s1026,判断currentnode是否是终点,如果是,则将其加入closelist集并进入回溯步骤a2;否则,获取currentnode的所有邻居节点neighbours;
20、步骤s1027,对于所有邻居节点neighbours中的每个节点neighbornode,如果neighbornode在closelist中,则说明已经遍历过,跳过;如果没有,则进入步骤s1028;
21、步骤s1028,计算从起点到neighbornode的总代价totalcost;
22、步骤s1029,计算neighbornode到目标节点的估计代价neighbornodeestcost;并且设置neighbornode的nodetotalcost为totalcost,estimatedcost为totalcost+neighbornodeestcost,并将currentnode设为其父节点;
23、步骤s10210,判断neighbornode是否在openlist中,如果neighbornode在openlist中,则代表已经遍历过该节点,则跳过不做任何处理;如果neighbornode不在openlist中,将其加入openlist;并返回步骤s1027,当openlist长度为0时,结束循环。
24、根据上述技术方案,回溯步骤包括以下步骤:
25、步骤a1,判断currentnode是否是终点,如果是,则直接结束;如果不是,则进入步骤a2;
26、步骤a2,返回搜索前序节点;
27、步骤a3,生成最优路径。
28、根据上述技术方案,sumo与unity集成具体包括以下步骤:
29、步骤s201,数据初始化;
30、步骤s202,调用命令控制台,输入sumo-gui.exe文件路径、仿真步长以及xml文件,通过untiy启动sumo程序;
31、步骤s203,判断sumo连接状态是否断开,如果是,则重新连接,如果没有,则进入步骤s204;
32、步骤s204,接收sumo返回的行人位置、速度数据存储至unity中;
33、步骤s205,unity根据sumo数据,对行人位置、速度、朝向、行为动作数据进行更新。
34、根据上述技术方案,步骤s201中,数据初始化包括对仿真步长、数据更新步长、sumo文件位置、启动端口、行人路径、行人类型、行人速度、行人流量xml进行初始化。
35、根据上述技术方案,步骤s203中,判断sumo连接状态是否断开具体为:每2秒钟根据sumoclient的连接状态循环判断是否与sumo断开连接,若connectstate等于success则表示处于连接状态;否则表示断开状态;若断开连接状态则尝试重新连接sumo,若未断开执行步骤s204。
36、根据上述技术方案,步骤s3中,三维行人位置更新包括以下步骤:
37、步骤s301,根据sumo数据接口,获取返回的行人二维位置数据;
38、步骤s302,获取二维点对应的三维空间点;
39、步骤s303,判断行人当前位置pos与行人上一次的位置是否相同,如果相同,则表示行人位置不变,否则执行步骤s304;
40、步骤s304,判断当前点是否在高架之下,如果是,则将三维空间点y值更新为上一次的y值,如果不是,则进入步骤s305;
41、步骤s305,根据行人上一次位置与当前位置的差值大小,更新人物动作状态;
42、步骤s306,记录更新行人的上一次位置为当前位置pos,并等待新的位置信息。本文档来自技高网...
【技术保护点】
1.一种基于SUMO的行人仿真方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的一种基于SUMO的行人仿真方法,其特征在于:步骤S102中,A*算法步骤具体为:
3.根据权利要求2所述的一种基于SUMO的行人仿真方法,其特征在于:回溯步骤包括以下步骤:
4.根据权利要求1所述的一种基于SUMO的行人仿真方法,其特征在于:SUMO与Unity集成具体包括以下步骤:
5.根据权利要求4所述的一种基于SUMO的行人仿真方法,其特征在于:步骤S201中,数据初始化包括对仿真步长、数据更新步长、SUMO文件位置、启动端口、行人路径、行人类型、行人速度、行人流量XML进行初始化。
6.根据权利要求5所述的一种基于SUMO的行人仿真方法,其特征在于:步骤S203中,判断SUMO连接状态是否断开具体为:每2秒钟根据SUMOClient的连接状态循环判断是否与SUMO断开连接,若ConnectState等于Success则表示处于连接状态;否则表示断开状态;若断开连接状态则尝试重新连接SUMO,若未断开执行步骤S204。
< ...【技术特征摘要】
1.一种基于sumo的行人仿真方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的一种基于sumo的行人仿真方法,其特征在于:步骤s102中,a*算法步骤具体为:
3.根据权利要求2所述的一种基于sumo的行人仿真方法,其特征在于:回溯步骤包括以下步骤:
4.根据权利要求1所述的一种基于sumo的行人仿真方法,其特征在于:sumo与unity集成具体包括以下步骤:
5.根据权利要求4所述的一种基于sumo的行人仿真方法,其特征在于:步骤s201中,数据初始化包括对仿真步长、数据更新步长、sumo文件位置、启动端口、行人路径、行人类型、行人速度、行人流量xml进行初始化。
6.根据权利要求5所述的一种基于sumo的行人仿真方法,其特征在于:步骤s203中,判断sumo连接状态是否断开具体为:每2秒钟根据sumoclient的连接状态循环判断是否与sumo断开连接,若connectstate等于success则表示处于连接状态;否则表示断开状态;若断开连接状态则尝试重新连接sumo,若未断开执行步骤s204。
7.根...
【专利技术属性】
技术研发人员:曾宇,李茄濡,刘双侨,孙吉刚,
申请(专利权)人:四川易方智慧科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。