一种基于多智能体的智能控制系统及方法与流程

文档序号:13759872阅读:464来源:国知局
一种基于多智能体的智能控制系统及方法与流程

本发明涉及了一种在游乐场里的游乐设施——碰碰车,尤其涉及了一种让游乐场里的碰碰车“转”起来的智能控制系统及方法。



背景技术:

碰碰车是游乐场里经常可以见到的游乐设施,但是现有的碰碰车玩法不能使每个玩家都得到良好的体验,这是因为在游乐场里常常发生几辆车拥堵在一起而不能及时疏导开的情况;再者,现有玩法也有一定的局限性,因为现有的碰碰车基本都是手动的,会受玩家的技术限制。



技术实现要素:

本发明针对背景技术中的问题提出一种游乐场碰碰车的智能控制系统及方法,可实现碰碰车的自动驾驶。

本发明的目的是通过以下技术方案来实现的:一种基于多智能体的智能控制系统,该系统协调车辆完成沿指定路线自动驾驶,该系统包括定位系统、通讯系统、识别系统和服务端;

所述通讯系统由配置在每辆车上的无线收发模块组成,所述无线收发模块包括置于车头的发送模块和置于车尾的接收模块,所有车辆之间,以及车辆与服务器之间,通过无线收发模块进行通信。

所述定位系统包括置于运动场地上方的摄像头,通过摄像头得到每辆车的位置信息,并将位置信息发送给服务端。

所述识别系统包括置于每辆车车头的双目摄像头,通过摄像头获得该车与前方车辆的距离以及邻近车辆,并通过无线收发模块将摄像头拍摄到的图像实时反馈给服务端。

所述服务端接收定位系统和无线收发模块发送的实时信号。当接收到车辆发出的自动驾驶请求时,服务端根据识别系统发送的图像、定位系统发送的位置信息以及无线收发模块发送的信号,得到被控车辆的具体位置,即发送模块和接收模块的位置,根据车尾指向车头的向量,得到车辆位置信息向量图,在图上每辆车均被抽象成一个长度为车身长、方向由车尾指向车头的向量,以每辆车对应的向量中点作为受力分析点,根据自动驾驶驱动力算法,得到所受合力方向,将被控车辆当前向量方向与合力方向投影到位置信息向量图上,将两方向之间小于180°的夹角作为被困车辆需转过的角度α,从而实现车辆的自动驾驶。当接收到车辆发出的求救信号时,服务端及时确定被困车辆的具体位置及编号,锁定被困区域,并通过智能逃逸算法确定逃逸路径,从而得到逃逸路径上的车辆位置及编号,并向逃逸路径上的车辆发出自动驾驶指令,实现被困车辆的逃逸。

进一步地,所述自动驾驶是在玩家没有选择手动模式以及发生拥堵的情况下进行的,可实现让被控车辆撞上任意指定目标车辆的侧面,得到侧撞的体验;目标车辆可以通过玩家指定也可以服务端指定;其中合力F和转角α的确定都以车头朝向路径方向为目标,F的大小可任意设定。

进一步地,所述逃逸路径为射线逃逸路径,通过获得最短路径实现逃逸,具体包括以下两种:

1)forward逃逸算法:设当前车辆为A,由识别系统得到A的邻近车辆,当A被围困时发出求救信号,信号由里层车辆传给外层邻近车辆,直到最外层车辆无可传播对象,即在它的外侧已经没有车辆。在传播信号的同时记录每一条射线传播路径L1、L2、……、LN上经过的车辆数N1、N2、……、NN及对应车辆编号,其中N1、N2、……、NN为信号由A传至最外层车辆所经过的车辆数并包括A和最外层车辆,取Nmin=min{N1、N2、……、NN},Nmin对应的射线传播路径作为最短逃逸路径。这种逃逸方法需要设置逃逸半径,设车辆自身的最大长度为d,则逃逸半径R需满足R≥0.5×Nmax×d。其中Nmax=max{N1、N2、……、NN}。

2)backward逃逸算法:当被困车辆A发出求救信号时,信号向外层射线传播,在传播时只需记住当前传播路径和前一个传播路径上经过的车辆数及所在的路径,比较之后取最大值,直至最后一条传播路径参与比较之后,所得到的最大值即为forward逃逸算法里的Nmax,由此计算逃逸半径,然后以逃逸半径为起点沿传播路径反向传播,直到传回求救车辆A,同理,在传播时只需记住当前传播路径和前一个传播路径上经过的车辆数及所在的路径,比较之后取最小值,并由系统确定最小值所在路径上的车辆编号,直至最后一条传播路径参与比较之后,得到的最小值所在的传播路径即为最短逃逸路径。

逃逸时由服务端向在逃逸路径上的车辆发出指令,最外层车辆先逃逸,由系统确定的一个超出逃逸半径的目标车辆以及其周围障碍车辆构成的合力做为该车自动驾驶的驱动力F并确定需转过的角度α,最外层车辆逃开后,沿着逃逸路径反方向上的车依次逃逸,直至A逃出逃逸半径以外,认为逃逸成功。

进一步地,所述逃逸路径为旋转逃逸路径,具体如下:该方法用于当有车辆被困在角落里的情况,假设车辆C1被其他车辆困在角落里,C1发出求救信号,服务端确认车辆C1位置后,将这几辆车的中心点所围成的近似圆作为旋转路径,指定顺时针或逆时针方向为旋转方向,先将每辆车的车头转到朝向指定的旋转方向的位置,再根据近似圆旋转路径的方向确定自动驾驶的F和α,F方向沿路径的切线方向,然后将C1转出角落,而另一辆车进入角落。执行一次后如果设定时间内不再有该区域内的求救信号发出,那么认为逃逸成功;否则,切换逃逸方式。

进一步地,所述的位置信息是车辆在区域内的坐标。

进一步地,所述自动驾驶驱动力算法为:车辆甲处于自动驾驶状态时,通过识别系统将当前所选择的目标车辆a对车辆甲的作用模拟为物体之间存在引力的作用,将车辆周围其余车辆对车辆甲的作用模拟为物体之间存在斥力的作用,依据当前车辆甲所受到的合力确定车辆甲当前的行驶方向、速度,其中合力的方向为车辆的行车方向,车辆的行驶速度随着合力大小的变化而变化,从而实现车辆的自动驾驶;具体如下:假设目标车辆a对车辆甲的引力F1为一个随车辆甲和车辆a间距离的减小而减小的数值;周围其他车辆对车辆甲的斥力分别为F2、F3、……、Fn,这些斥力的大小随两车间的距离的增大而减少,从而可得到车辆甲所受合力F的方向和大小,大小为一个随车辆甲和车辆a间距离的减小而减小的数值,再由牛顿第二定律F=ma可知,随着合力大小的变化,车辆甲越靠近目标车辆a,加速度越小,最后速度达到最大值,两车相撞。

进一步地,所述的目标车辆为在自动驾驶模式下系统或玩家指定的被控车辆要撞击的车辆。

进一步地,所述指定路线包括由逃逸算法得到的逃逸路径、车辆在逃逸半径内能够避开障碍车辆的路线以及系统在自动驾驶模式下被控车辆趋向目标车辆的行驶路线。在逃逸半径内要避开障碍车辆是为了防止拥堵情况发生时间相距过短。

一种基于多智能体的智能控制方法,该方法包括以下步骤:

步骤1:当玩家选择手动模式时,由系统实时监控小车的位置信息以及其所对应的编号;当玩家选择自动模式时,则除了实时监控外,系统还通过小车反馈回的邻近车辆信息确定目标车辆,并让被控车辆自动驾驶碰撞目标车辆,该目标车辆可由玩家自行制定;

步骤2:当小车发生碰撞时,被碰撞的车辆会自转系统设定圈数M后,再继续驾驶,驾驶情况包括以下两种:手动模式,自行控制驾驶方向;自动模式,在自转快结束时寻找下一目标车辆,并在自转结束时继续前进;其中自转时速度由慢变快再变慢。

步骤3:当只有一个车发出求救信号时,该信号被发送至服务端,服务端收到该信号判别该车是否真的被困,并确定对应的编号和位置信息,如果不是位于区域的某个角落,那么信号将被发送至外层邻近车辆,并按射线逃逸路径进行逃逸,同时计算逃逸半径,并实时监控。逃逸车辆在逃逸半径之内要躲避障碍车辆,当发出求救信号的车辆逃出逃逸半径以外时,逃逸过程结束,系统进入步骤1和步骤2所述的正常状态;如果发出求救信号的车辆位于区域的某个角落,那么按照旋转逃逸路径进行逃逸,并且如果设定时间内不再有求救信号从该区域发出,则逃逸过程结束,系统进入正常状态;否则,以射线逃逸路径进行逃逸,直至逃逸结束。

步骤4:若多辆车同时发出求救信号时,首先信号被发送到服务端,判断这些信号是否由同一被困区域发出,并根据不同情况执行不同指令:

情况一:如果求救信号来自同一被困区域,并且该区域不位于角落,那么由多智能体控制系统按照射线逃逸路径算法分别计算以发出求救信号车辆1、2、……、X为起点的最短逃逸路径L1、L2、……、LX,然后选择L1、L2、……、LX中最短的逃逸路径做为最终的逃逸路径;

情况二:如果求救信号来自同一被困区域,且该区域位于角落,那么由系统监控得到的位置信息图确定真正困在角落里的被困车辆,然后按照旋转逃逸路径完成逃逸;

情况三:如果求救信号不在同一被困区域内,即两被困车辆中心点间的距离大于二者逃逸半径R之和,则按照步骤3中的方法分别同时进行逃逸;

情况四:如果位于不同区域的两个被困车辆中心点间的距离小于等于二者逃逸半径R之和,那么认为求救信号在同一被困区域内,当该区域不位于角落时,按照情况一进行逃逸;否则,按照情况二进行逃逸。

本发明的有益效果是:本发明系统及方法让碰碰车加入了自动驾驶的新鲜体验以及碰撞之后自转所带来的刺激感,并且通过逃逸算法和自动驾驶有效解决了拥堵情况,让玩家在有限时间内可以享受更大的乐趣。

附图说明

图1是本发明的智能控制系统及方法的工作流程图;

图2是本发明的实施例1的示意图;

图3是本发明的实施例2的示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步阐述。

本发明提供的一种基于多智能体的智能控制系统,该系统协调车辆完成沿指定路线自动驾驶,该系统包括定位系统、通讯系统、识别系统和服务端;

所述通讯系统由配置在每辆车上的无线收发模块组成,所述无线收发模块包括置于车头的发送模块和置于车尾的接收模块,所有车辆之间,以及车辆与服务器之间,通过无线收发模块进行通信。

所述定位系统包括置于运动场地上方的摄像头,通过摄像头得到每辆车的位置信息,并将位置信息发送给服务端。

所述识别系统包括置于每辆车车头的双目摄像头,通过摄像头获得该车与前方车辆的距离以及邻近车辆,并通过无线收发模块将摄像头拍摄到的图像实时反馈给服务端。

所述服务端接收定位系统和无线收发模块发送的实时信号。当接收到车辆发出的自动驾驶请求时,服务端根据识别系统发送的图像、定位系统发送的位置信息以及无线收发模块发送的信号,得到被控车辆的具体位置,即发送模块和接收模块的位置,根据车尾指向车头的向量,得到车辆位置信息向量图,在图上每辆车均被抽象成一个长度为车身长、方向由车尾指向车头的向量,以每辆车对应的向量中点作为受力分析点,根据自动驾驶驱动力算法,得到所受合力方向,将被控车辆当前向量方向与合力方向投影到位置信息向量图上,将两方向之间小于180°的夹角作为被困车辆需转过的角度α,从而实现车辆的自动驾驶。当接收到车辆发出的求救信号时,服务端及时确定被困车辆的具体位置及编号,锁定被困区域,并通过智能逃逸算法确定逃逸路径,从而得到逃逸路径上的车辆位置及编号,并向逃逸路径上的车辆发出自动驾驶指令,实现被困车辆的逃逸。

进一步地,所述自动驾驶是在玩家没有选择手动模式以及发生拥堵的情况下进行的,可实现让被控车辆撞上任意指定目标车辆的侧面,得到侧撞的体验;目标车辆可以通过玩家指定也可以服务端指定;其中合力F和转角α的确定都以车头朝向路径方向为目标,F的大小可任意设定。

进一步地,所述逃逸路径为射线逃逸路径,通过获得最短路径实现逃逸,具体包括以下两种:

1)forward逃逸算法:设当前车辆为A,由识别系统得到A的邻近车辆,当A被围困时发出求救信号,信号由里层车辆传给外层邻近车辆,直到最外层车辆无可传播对象,即在它的外侧已经没有车辆。在传播信号的同时记录每一条射线传播路径L1、L2、……、LN上经过的车辆数N1、N2、……、NN及对应车辆编号,其中N1、N2、……、NN为信号由A传至最外层车辆所经过的车辆数并包括A和最外层车辆,取Nmin=min{N1、N2、……、NN},Nmin对应的射线传播路径作为最短逃逸路径。这种逃逸方法需要设置逃逸半径,设车辆自身的最大长度为d,则逃逸半径R需满足R≥0.5×Nmax×d。其中Nmax=max{N1、N2、……、NN}。

2)backward逃逸算法:当被困车辆A发出求救信号时,信号向外层射线传播,在传播时只需记住当前传播路径和前一个传播路径上经过的车辆数及所在的路径,比较之后取最大值,直至最后一条传播路径参与比较之后,所得到的最大值即为forward逃逸算法里的Nmax,由此计算逃逸半径,然后以逃逸半径为起点沿传播路径反向传播,直到传回求救车辆A,同理,在传播时只需记住当前传播路径和前一个传播路径上经过的车辆数及所在的路径,比较之后取最小值,并由系统确定最小值所在路径上的车辆编号,直至最后一条传播路径参与比较之后,得到的最小值所在的传播路径即为最短逃逸路径。

逃逸时由服务端向在逃逸路径上的车辆发出指令,最外层车辆先逃逸,由系统确定的一个超出逃逸半径的目标车辆以及其周围障碍车辆构成的合力做为该车自动驾驶的驱动力F并确定需转过的角度α,最外层车辆逃开后,沿着逃逸路径反方向上的车依次逃逸,直至A逃出逃逸半径以外,认为逃逸成功。

进一步地,所述逃逸路径为旋转逃逸路径,具体如下:该方法用于当有车辆被困在角落里的情况,假设车辆C1被其他车辆困在角落里,C1发出求救信号,服务端确认车辆C1位置后,将这几辆车的中心点所围成的近似圆作为旋转路径,指定顺时针或逆时针方向为旋转方向,先将每辆车的车头转到朝向指定的旋转方向的位置,再根据近似圆旋转路径的方向确定自动驾驶的F和α,F方向沿路径的切线方向,然后将C1转出角落,而另一辆车进入角落。执行一次后如果设定时间内不再有该区域内的求救信号发出,那么认为逃逸成功;否则,切换逃逸方式。

进一步地,所述的位置信息是车辆在区域内的坐标。

进一步地,所述自动驾驶驱动力算法为:车辆甲处于自动驾驶状态时,通过识别系统将当前所选择的目标车辆a对车辆甲的作用模拟为物体之间存在引力的作用,将车辆周围其余车辆对车辆甲的作用模拟为物体之间存在斥力的作用,依据当前车辆甲所受到的合力确定车辆甲当前的行驶方向、速度,其中合力的方向为车辆的行车方向,车辆的行驶速度随着合力大小的变化而变化,从而实现车辆的自动驾驶;具体如下:假设目标车辆a对车辆甲的引力F1为一个随车辆甲和车辆a间距离的减小而减小的数值;周围其他车辆对车辆甲的斥力分别为F2、F3、……、Fn,这些斥力的大小随两车间的距离的增大而减少,从而可得到车辆甲所受合力F的方向和大小,大小为一个随车辆甲和车辆a间距离的减小而减小的数值,再由牛顿第二定律F=ma可知,随着合力大小的变化,车辆甲越靠近目标车辆a,加速度越小,最后速度达到最大值,两车相撞。

进一步地,所述的目标车辆为在自动驾驶模式下系统或玩家指定的被控车辆要撞击的车辆。

进一步地,所述指定路线包括由逃逸算法得到的逃逸路径、车辆在逃逸半径内能够避开障碍车辆的路线以及系统在自动驾驶模式下被控车辆趋向目标车辆的行驶路线。在逃逸半径内要避开障碍车辆是为了防止拥堵情况发生时间相距过短。

本发明还提供一种基于多智能体的智能控制方法,如图1所示,该方法包括以下步骤:

步骤1:当玩家选择手动模式时,由多智能体控制系统实时监控小车的位置信息以及其所对应的编号;当玩家选择自动模式时,则除了实时监控外,系统还通过小车反馈回的邻近车辆信息确定目标车辆,并让被控车辆自动驾驶碰撞目标车辆,该目标车辆也可以由玩家自行制定;

步骤2:当小车发生碰撞时,被碰撞的车辆会自转系统设定圈数M后,再继续驾驶,驾驶情况包括以下两种:手动模式,自行控制驾驶方向;自动模式,在自转快结束时寻找下一目标车辆,并在自转结束时继续前进。其中自转时速度由慢变快再变慢;

步骤3:当只有一个车发出求救信号时,该信号被发送至服务端,服务端收到该信号判别该车是否真的被困,并确定对应的编号和位置信息,如果不是位于区域的某个角落,那么信号将被发送至外层邻近车辆,并按射线逃逸路径进行逃逸,同时计算逃逸半径,并实时监控。逃逸车辆在逃逸半径之内要躲避障碍车辆,当发出求救信号的车辆逃出逃逸半径以外时,逃逸过程结束,系统进入步骤1和步骤2所述的正常状态;如果发出求救信号的车辆位于区域的某个角落,那么按照旋转逃逸路径进行逃逸,并且如果设定时间10s内不再有求救信号从该区域发出,则逃逸过程结束,系统进入正常状态;否则,以射线逃逸路径进行逃逸,直至逃逸结束。

步骤4:若多辆车同时发出求救信号时,首先信号被发送到服务端,判断这些信号是否由同一被困区域发出,并根据不同情况执行不同指令:

情况一:如果求救信号来自同一被困区域,并且该区域不位于角落,那么由多智能体控制系统按照射线逃逸路径算法分别计算以发出求救信号车辆1、2、……、X为起点的最短逃逸路径L1、L2、……、LX,然后选择L1、L2、……、LX中最短的逃逸路径做为最终的逃逸路径;

情况二:如果求救信号来自同一被困区域,且该区域位于角落,那么由系统监控得到的位置信息图确定真正困在角落里的被困车辆,然后按照旋转逃逸路径完成逃逸;

情况三:如果求救信号不在同一被困区域内,即两被困车辆中心点间的距离大于二者逃逸半径R之和,则按照步骤3中的方法分别同时进行逃逸;

情况四:如果位于不同区域的两个被困车辆中心点间的距离小于等于二者逃逸半径R之和,那么认为求救信号在同一被困区域内,当该区域不位于角落时,按照情况一进行逃逸;否则,按照情况二进行逃逸。

实施例1

这里以forward逃逸算法为例。设被困车辆A发出求救信号,系统对其做出定位,呈现如图2所示的位置信息图,发现A不在角落里,然后由射线逃逸算法里的forward逃逸算法计算最短逃逸路径,在计算过程中,发现有L1、L2、……、L7共七条逃逸路径,并且显然L1为最短逃逸路径,同时得到Nmax为3,则逃逸半径R≥0.5×3×d,之后总部对车辆B发出指令,并为它指定一个超出逃逸半径外的车辆为撞击目标,由系统确定的目标车辆以及其周围障碍车辆构成的合力做为该车自动驾驶的驱动力F并确定需转过的角度α,当B逃开,A以同样的方法逃逸,直到逃出逃逸半径外,逃逸结束,系统恢复正常状态。

实施例2

设被困车辆C1发出求救信号,控制系统实时显示被困区域位置信息,发现C1位于整个区域的一个角落,所以选择旋转逃逸算法,如图3所示,以车辆C1、C2、C3和C4的中心点所围成的近似圆为路径,指定顺时针旋转方向,先将C2、C3的车头调转180°,然后根据近似圆旋转路径的顺时针方向确定自动驾驶的合力F和转角α,F方向沿路径的切线方向,α用于对车的车头朝向做微调,然后将C1转出角落,而C3进入角落,这里假设这四辆车沿着旋转路径转过180°,可通过系统设定任意旋转角度。执行一次后如果10s内不再有该区域内的求救信号发出,那么认为逃逸成功;否则,以射线逃逸路径进行逃逸,仿照实施例1进行。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1