扒一扒二维码AGV系统的交管思路

扒一扒二维码AGV系统的交管思路

好久没回来更新博客了,趁着今天没啥工作安排,正好摸摸鱼,时间有限,就发表下随笔博客,此文就不上代码了,需要了解的筒子们可以先了解下具体的概念,回头再回来上代码0.0

1. 概念

1.1 二维码坐标系
就同我们平时所接触的数学当中的直角坐标系一致,在平面内有X轴,Y轴。于是可以定义二维码的坐标系同我们的数学的直角坐标系一致即可。如下图所示:
不同的是 我们软件是生成的坐标系上面会显示对应的二维码的X\Y坐标
二维码的AGV只需要到达对应的二维码地标之后,将当前的二维码值反馈正常读取上来即可。至于运动的控制,启、停、移动距离、移动方向、AGV的姿态(旋转对应的角度由上位调度系统来配置)这个我们后面再说

1.2 AGV的姿态
这个概念可能比较抽象,下面我们来说明一下,AGV的姿态就是AGV当前在坐标系内AGV自身的角度的朝向,假定我们的车头的方向为参考对象(也可以定义为车尾,具体需要和车体的控制部分进行统一定义),那么比如AGV当前的姿态是0° 那么此时AGV的朝向就是沿着X轴正方向

1.3 AGV的运动角度
这个概念就比较好理解了,下面我们来说明一下,AGV的运动角度针对的是比如AGV从某个点到某个二维码点的整体的运动角度,比如AGV运动角度是90°,AGV的姿态是0°,那么此时AGV的朝向是朝着X轴方向,平移方向是朝着Y轴正方向去平移。

1.4 AGV的避障方案
这个就是用来配置说AGV从某个点移动到某个点所使用的雷达的避障方案,因为有些拐角可能会遇到柱子或者其他的遮挡物,我们需要使AGV可以正常通讯,我们就需要在不通的运动路线配置不同的避障方案

1.5 AGV的移动速度
同避障方案雷同,就是在不同的移动路线里面,AGV所使用的移动速度方案也是不一致的。需要可以配置不同的执行配方。

1.6 待机点
待机点是用来AGV不执行任务时,等待的工位点,当有任务生成之后,上位机软件会执行AGV任务的下发,当AGV电量需要进行充电的时候,调度系统下发充电的任务到AGV。

1.7 充电点
充电点是用来进行对AGV充电所处的二维码地标处。当AGV在充电点之后,调度系统发送执行到AGV打开充电回路,同时下发指令到充电桩,告知充电桩伸出充电头,对AGV进行充电

2. 路径计算

二维码整个平面所有的点到点都是可以互通的,但是,在正常的情况下,AGV从某个点移动到某个点只有一条主路径,只有在出现交管锁住的情况下可以重新计算路径。如下图所示:
在这里插入图片描述
如上,比如图中的红色框框为禁行区域,那么我们可以定义从12,13->20,17主路径为从12,13->12,14->…->12,18->…->17,18->17,17->…->20,17,返回来则反方向即可。至于路径计算可以用floyd路径计算算法(此需要我们提前定义好路径,将x值和y值定义成一个点比如12,13我们可以定义为00120013,然后可以看我之前的博客floyd最短路径计算算法) 也可以用迪杰斯特拉路径计算算法,此后面再更新上来0.0。

3.交管思路

	鉴于路径计算计算成功了之后,我们会获得到两组路径的集合,这个时候我们要判断路径集合的重叠部分,然后来进行如下的判断,判断交管是否需要锁定档前的车

3.1 跟随交管
跟随交管说明,我们先定义两台车A和B,比如A车的剩余的运动路线时1,2,3,4,5,6,7,8,9,10,11,12,18,19;B车的剩余的运动路线是 5,6,7,8,9,10,11,13,15,17;那么此时根据计算的路径的重叠部分就是5,6,7,8,9,10,11。此时说明A车是跟随在B车之后的,如下所示:
在这里插入图片描述
如上图,我们就可以定义一个跟随锁定的交管距离值,比如上图红色文字的4,当B车运动到5的时候,我们重叠部分的路径的取第一个值(5)所处B车的剩余运动路径(5,6,7,8,9,10,11,13,15,17)的索引就是0那个重叠部分的路径的取第一个值(5)所处A车的剩余运动路径(1,2,3,4,5,6,7,8,9,10,11,12,18,19)的索引就是4,当此值小于或者等于配置的跟随交管的距离值4时,我们将距离大的值的车锁住,将距离小的车就放行。此时就实现了跟随交管。此交管的现象就是A车和B车一直保持着一个暧昧的跟随交管距离值运动,会出现B车先动,然后A车跟随着动。

3.2 汇总交叉交管
汇总交叉交管说明,我们先定义两台车A和B,比如A车的剩余的运动路线时1,2,3,4,5,6,7,8,9,10,11,12,18,19,20,21;B车的剩余的运动路线是 22,23,24,25,6,7,8,9,10,11,12,13,15,17;那么此时根据计算的路径的重叠部分就是6,7,8,9,10,11,12。此时说明A车和B车会汇总到一起的,如下所示:
在这里插入图片描述

如上图,我们就可以定义一个汇总交叉锁定的交管距离值5+3=8,比如上图红色文字的5和3,当B车运动到22的时候,A车运动到1的时候,我们重叠部分的路径的取第一个值(6)所处B车的剩余运动路径(22,23,24,25,6,7,8,9,10,11,12,13,15,17)的索引就是4那个重叠部分的路径的取第一个值(6)所处A车的剩余运动路径(1,2,3,4,5,6,7,8,9,10,11,12,13,15,17)的索引就是5,当此值(4+5)大于配置的汇总交叉交管的距离值8时,此时不会进行交管;当B车运动到23时,A车运动到2的时候,我们重叠部分的路径的取第一个值(6)所处B车的剩余运动路径(23,24,25,6,7,8,9,10,11,12,13,15,17)的索引就是3那个重叠部分的路径的取第一个值(6)所处A车的剩余运动路径(2,3,4,5,6,7,8,9,10,11,12,13,15,17)的索引就是4,当此值(3+4)小于配置的汇总交叉锁定的距离值8时,此时会进行交管;我们将距离大的值的车锁住,将距离小的车就放行。此时就实现了汇总交叉交管。此交管的现象就是距离重叠部分进的车优先放行,距离远的车等待,然后当距离近的车进入到重叠区域内的时候,再实现跟随交管,会使交管更加的灵活,所以在判断汇总交叉交管时需要优先判断跟随交管。

3.3 相对交叉交管
相对交叉交管说明,我们先定义两台车A和B,比如A车的剩余的运动路线时1,2,3,4,5,6,7,8,9,10,11,12,18,19,20,21;B车的剩余的运动路线是 22,23,24,25,12,11,10,9,8,7,6,13,15,17;那么此时根据计算的路径的重叠部分相对于A车就是6,7,8,9,10,11,12;重叠部分相对于B车就是12,11,10,9,8,7,6。此时说明A车和B车是对面形式而来,中间是单道双向的录像,如下所示:
在这里插入图片描述
如上图,我们就可以定义一个相对交叉交管的交管距离值5+3=8,比如上图红色文字的5和3,当B车运动到22的时候,A车运动到1的时候,我们重叠部分的路径的取最后一个值(12)所处B车的剩余运动路径(22,23,24,25,12,11,10,9,8,7,6,13,15,17)的索引就是4那个重叠部分的路径的取第一个值(6)所处A车的剩余运动路径(1,2,3,4,5,6,7,8,9,10,11,12,13,15,17)的索引就是5,当此值(4+5)大于配置的相对交叉交管的距离值8时,此时不会进行交管;当B车运动到23时,A车运动到2的时候,我们重叠部分的路径的取最后一个值(12)所处B车的剩余运动路径(23,24,25,12,11,10,9,8,7,6,13,15,17)的索引就是3那个重叠部分的路径的取第一个值(6)所处A车的剩余运动路径(2,3,4,5,6,7,8,9,10,11,12,13,15,17)的索引就是4,当此值(3+4)小于配置的相对交叉交管的距离值8时,此时会进行交管;我们将距离大的值的车锁住,将距离小的车就放行。此时就实现了相对交叉交管。此交管的现象就是距离重叠部分近的车优先放行通过双向单路径,距离远的车等待,然后当距离近的车进入到重叠区域内的时候,下一台车再放行。

以上,鉴于篇幅有限(没上代码,几乎纯文字,提供写程序的思路)、时间有限(摸鱼时间到,下班),就随便扒一扒二维码的交管的思路,欢迎各路大神指正和相互探讨,如有侵权,请告知删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工控程序狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值