Agv车辆控制调度系统开发第十篇-终结篇
前言

2年前决定用10篇文章讲透调度原理,当时的计划是用每周更新一篇,没想到用了两年才更新完,
主要是这两年确实很累,每天保持15个小时的写代码状态,身心疲惫,经常会忘记更新。
今天是这个系列的最后一篇文章了,我决定多写一点,多分析点东西。
对这个系列做一个完整的总结,彻底结束一下。
一、工具部分
1.监控器
车辆运行监控器,这些年我一直没有停止探索,演变史乐意看这篇文章监控器演变史
最近因为效率不够,我又进行了一次重构,这一次从底层开始重构了,所有的图形的展示全部重新写了,目的就是为了提高效率,这一版的效率提升了几倍不止,目前展示千车调度不在卡顿了。

监控器一直是我的心病,最近终于下决心重构了,了却了一桩心事,上面是重构后的监控器。
下面是监控器先后使用的技术。
gojs
jtopo
原生canvas,使用原生重新了底层。
1.地图编辑器

最终版本是这个样子的,这一个版本是通过研究海康的地图编辑器和快仓的地图编辑器,反复打磨完成的一个版本。
这个编辑器使用的是gojs技术,并且使用了多种gojs技术融合开发的。
下面是使用的技术
主界面
拖拽
右键操作
属性修改
二、调度算法
1.避碰算法和寻路算法
这次升级最大的就是,避碰和寻路,他俩是完全重写的,把这两个算法使用cbs算法做了技术融合,效率提升了几十倍。
为了能调度更多的车,这次的重构完全是基于多线程的重构,所以现在我的调度可以轻松调度几千台车。
下面是我参考的代码
using System.Collections.Generic;
namespace CBSAlgorithm
{
class Node
{
public int x;
public int y;
public Node parent;
public double g;
public double h;
public Node(int x, int y)
{
this.x = x;
this.y = y;
}
public double f
{
get {
return g + h; }
}
};
class Path
{
public List<Node> nodes = new List<Node>();
public double cost;
};
class CBS
{
public static bool run(Node start, Node goal, Dictionary<string

作者在两年的时间里完成了Agv车辆控制调度系统的开发系列,重点介绍了监控器的重构以提高效率,地图编辑器的开发,以及基于CBS算法的避碰和寻路算法的优化,实现多线程以支持大规模车辆调度。此外,还升级了模拟器以增强性能。文章总结了整个系列并预告了新的篇章——智能工厂软件生态。

1万+

被折叠的 条评论
为什么被折叠?



