系列文章目录
Agv、Rgv 车辆控制调度系统开发第二篇(理论片)
前言
这篇要讲什么我想了很久,最终还是决定将理论,没有好的理论知识是无法写出好的系统的。
我从一下几点分析下什么是调度系统
一、什么是调度系统?
个人见解,很直白的说调度系统就是让车从A点到B点的一个过程,但是在这个过程当中会有很多问题,只有解决了这些问题才能称为调度系统。
问题
- A点到B点的路线怎么走最合理(选路)
- 运行过程中如何避免和其他车辆产生冲突(避碰)
- 有其他的车挡住了路线怎么办(移车)
- 如果和其他有任务的车产生了冲突怎么办(解锁)
上面的是移动过程中的主要问题,今天就先分析这几项
二、问题分析
1.寻找路线
对于找路线这件事,其实已经不是很大的问题了,现在市面上的这种算法有很多,比如:A*,D*,F*,这些算法都是很成熟的寻路算法,只需要找一个合适的算法去理解和使用就行了,不管用什么算法一定要做到熟练使用,如果不熟练,就会有很多问题,比如:比如屏蔽的路线,拣选点,入库口这些地方的处理,如果对算法不熟悉是很难精细化调整的。
2.避碰算法
避碰是调度系统的核心,我觉得只要不碰撞上其他问题都是好说的,一旦撞了就涉及到车辆和货物损伤和赔偿问题。
如何才能不碰撞哪,我的做法是在节点对象上加两个属性,一个是预约车辆,一个是占用车辆,
举例:A车预约了1001这个位置,其他的车就不允许在预约这个位置了,如果1001被A车占用了,其他车就不允许在过来了,如何确定预约位置,我的做法是(载货/空车刹车距离)根绝当前位置计算出安全距离,在安全距离内的路线只要没有被预约,就可以预约使用。、
3.移车算法
移车算法我使用的是定时任务,定时去路线对象里面去找有没有车在路线上,找到占用的车辆使用递归的方式找安全位置移动过去。
4.解锁算法
解锁算法其实就是移车算法的扩展,我的做法是定时去查当前路线是否和其他路线重叠,如果重叠可能会形成死锁,提前给能安排路线的车重新规划路线,把原路线的权重加大,如果已经形成死锁了,就调用移车算法,上面的流程是一个周期,3-5个周期就可以解锁了。
总结
上面的理论就是我完成整套系统的核心理论。
用几张实际截图验证上面的理论
预告
下期讲地图编辑器,因为只有有了地图编辑器才能编辑地图,测试代码。
系列文章链接
Agv、Rgv 车辆控制调度系统开发第一篇
Agv、Rgv 车辆控制调度系统开发第二篇
Agv、Rgv 车辆控制调度系统开发第三篇
Agv、Rgv 车辆控制调度系统开发第四篇
Agv、Rgv 车辆控制调度系统开发第五篇-避碰
Agv、Rgv 车辆控制调度系统开发第六篇-流程控制器
Agv、Rgv 车辆控制调度系统开发第七篇-选车算法
Agv、Rgv 车辆控制调度系统开发第八篇-错误纠正
Agv、Rgv 车辆控制调度系统开发第9篇-性能测试
Agv车辆控制调度系统开发第十篇-终结篇
其他文章
调度系统核心算法第一篇-交通管制
agv车辆调度系统-技术篇
agv调度系统3.0技术介绍
调度算法研究交流群的建立-欢迎加群交流
Agv、Rgv 车辆控制调度系统开发知识点篇