本章将结束静态交通管制中关于标准锁的内容,通过前面章节获得的占用矩形来生成标准锁。
更多精彩内容请前往AGV调度管理系统技术中心。

本章目录
简介
矩形相交测试
临时锁关系数据持有者
开始生成锁关系
开始相交测试
确定锁关系
初始化锁关系
向标准锁中添加锁
简介
标准锁StandardLock---一种在软件层面解决/防止AGV碰撞的管制逻辑。
当AGV位于一条线段上时,系统会锁定一些线段,以避免其他AGV进入这些锁定的线段而与当前agv产生物理碰撞。这种根据一条线段来锁定其他线段的方式成为“锁关系”。
标准锁的通俗解释---谁在什么情况下释放谁。
这句话一共有三个Object,谁,什么情况下,释放谁。其中的这两个“谁”很容易理解,就是线段Segment嘛,也就是:哪个线段在什么情况下释放哪个线段。
线段锁关系类型SegmentLockReleaseType就是“在什么情况下”的对象名称。
它包括:NoBlock, //不锁,线段A不锁定线段B
OnDistance, //在线段A行驶一段距离之后释放线段B
OnReleaseBehind, /在线段A被释放后释放线段B
OnExit, //在退出时
OnLeave //在离开后
例子:
当AGV在段5上走了800mm后释放段2---OnDistance
当AGV离开段1时释放段22---OnLeave
标准锁对象建立:
standardLock=new Dictionary<int,InternalSegmentLock>,key为第一个“谁”,值internalSegmentLock包括:第二个谁+释放类型+距离,距离只有在释放类型为OnDistance时有值。
两个例子(现在可以看不懂,之后会详解其中文字的意思):
例子1:线段5在AGV在段5上行驶了800mm后释放段2。


算法运行前我们应该为其准备一些输入参数。包括:某个线段(假如是线段1)的占用矩形组(agvOccupancyRegionsOnInternalSegment)及其与之相交的所有占用矩形(intersectedRegions)。
在将上面两个参数输入到相关算法之前,我们先对其中的占用矩形排序,占用矩形排序规则:

