![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenTCS
文章平均质量分 75
白色冰激凌
这个作者很懒,什么都没留下…
展开
-
OpenTCS客户端开发之Web客户端(一)
这些问题很多是关于算法方面的,也有一部分是关于UI方面的,毕竟OpenTCS本质上是一个算法项目,但是如果希望把它进行商业化,那免不了需要UI,然而OpenTCS的UI是使用Swing做的,比较古老的框架,而且说实话,个人觉得java也不太适合做桌面客户端。3、关于建模,这部分可以说是最复杂的,这里推荐使用HTML5的Canvs进行图形的建模,也可以使用一些比较好的框架。从本文开发,我会陆续记录一些关于开发OpenTCS客户端的一些文字以便给需要帮助的人。这里抛开后端不说,推荐一种做法,使用。原创 2022-10-29 18:04:51 · 2413 阅读 · 6 评论 -
OpenTCS算法改进之Router动态规划
前面章节有提到,OpenTCS是不支持动态规划的。本节记录下OpenTCS路由算法的改进。注意:这里说的动态规划仅限于Router(实际上真正意义上的动态规划是要考虑交通死锁、运行效率等一系列问题的)。问题抛出:假设有如下场景,一个网格形地图(可以考虑仓储场景下),现场有三台车,目前状态如下:此时Vehicle-0002收到了一个订单,要求前往Point-0026(Location-005),此时按照OpenTCS的默认算法,会得到这样的一条路径,如下所示:上图可以看出Vehi.原创 2021-11-12 17:25:53 · 3313 阅读 · 14 评论 -
OpenTCS拓展之Python语言交互与拓展
最近有小伙伴给我留言,问OpenTCS除了使用内核的Extention功能进行静态拓展外,还有没有更灵活的方式进行拓展呢?我推荐他使用python进行拓展。python是一门动态的语言,号称胶水语言,非常容易和宿主语言进行结合,在JAVA中可以使用Jython进行集成,非常方便。jython是python语言的JAVA实现版(以下统称Python),官网:https://www.jython.org/使用Python对OpenTCS进行拓展是不是很酷?这里来讲一下主要流程。第...原创 2021-02-04 18:15:22 · 893 阅读 · 0 评论 -
OpenTCS打造移动机器人交通管制系统(八)
上一篇文章记录了下如何在OpenTCS框架下拓展数据库(点此查看上一篇),本篇来探讨下如何拓展Kernel。OpenTCS框架主要的作用是提供一个交通管制的框架,但是通常来说,一个完整的调度系统(这里指的是广义的调度系统),是不仅仅只有交通管制的,通常还会有业务层、逻辑层等相关模块一起和OpenTCS构成一个实际可用的系统。一般来说实际项目的架构至少应该是下面的样子:那么很显然,要想系统更紧凑,OpenTCS-Kernel需要拓展,其实OpenTCS在设计之初就预留了拓展的接口(...原创 2020-05-17 17:29:11 · 2263 阅读 · 6 评论 -
OpenTCS打造移动机器人交通管制系统(七)
在一个实际的项目中(非实验室),数据是至关重要的。本篇讲下OpenTCS的数据存储问题,OpenTCS的关键数据主要是Vehicle数据和TransportOrder的数据。然而这些数据OpenTCS没有做专门的持久化处理,也就是说只要Kernel一重启,之前发生的事就一无所知了。为了将数据持久化,本文提出一种基于redis数据库的存储方案来存储Transportorder数据(如果要...原创 2020-04-27 19:46:56 · 2674 阅读 · 5 评论 -
OpenTCS打造移动机器人交通管制系统(六)
上一篇谈到了OpenTCS的调度策略问题。并提出了关于自带算法的"死锁"的问题。1、错开订单的下发。2、改进调度资源分配算法,将双向路径考虑到资源分配的过程当中。 方法1显然是可以解决的前文提到的死锁问题的,但是有点别扭,也有点low,因此笔者尝试从算法层次着手改进。我们拓展上一篇文章提出的地图,将其拓展如下:(地图画的有点乱,懒得整理了,...原创 2020-04-16 20:16:10 · 2762 阅读 · 14 评论 -
OpenTCS打造移动机器人交通管制系统(五)
本文来谈一谈OpenTCS的调度问题。OpenTCS默认的算法是基于"前馈锁路"的方式进行交通管制的。所谓的“前馈锁路”,意思是当某辆车需要运动时,在运动之前会将MovementCommand转换成一种交通管制资源向系统中注册。只有当该资源被系统接受时,车辆才会运动,大致的逻辑如下所示:OpenTCS的这种默认交通管制策略其实比较简单,也容易理解,那么这种方式是否在实际项目中...原创 2020-04-11 18:16:53 · 3815 阅读 · 0 评论 -
OpenTCS打造移动机器人交通管制系统(四)
先分析下OpenTCS的一些策略方面的东西,这是OpenTCS的基础。首先需要先明确下OpenTCS内核中的三个概念:路由(Route) : 决定了车辆通过什么样的方式和算法来获得一段路径,未来车辆将沿着此路径运行。派遣(Dispacher): 决定了一个订单应该关联哪一辆小车,即为订单分配车辆和为车辆分配订单。调度(schedule):狭义上的调度,交通管制的核心,决定了何时分配...原创 2020-03-26 20:05:55 · 4356 阅读 · 13 评论 -
OpenTCS打造移动机器人交通管制系统(三)
本章主要介绍下如何开发一个新的VehicleAdapter模块(车辆驱动适配对象)。OpenTCS是一个开放的系统,从内核到模块组件全部是挂载式设计,这得益于Java语言的反射机制(JAVA从语言级就支持反射)。在介绍驱动开发之前有必要说明下IOC和DI。即所谓的依赖注入和控制反转,网络上有很多关于这两个技术的介绍,其实这是一种设计模式。(个人觉得IOC时DI的一种实现)。OpenTCS使...原创 2020-03-13 20:50:20 · 4612 阅读 · 0 评论 -
OpenTCS打造移动机器人交通管制系统(二)
OpenTCS从使用上来说主要分为三个模块(基于4.17版本的系统)。分为:openTCS-Kernel:交通管制的内核系统,主要算法均集中在此模块。openTCS-KernelControlCenter:内核配置的桌面图形化窗口系统,主要是对驱动进行设置。openTCS-PlantOverview:建模用的的图形化桌面程序。主要用于创建地图模型和做简单的监控。桌面软件均使用JAV...原创 2020-03-07 17:15:12 · 4445 阅读 · 9 评论 -
OpenTCS打造移动机器人交通管制系统(一)
OpenTCS是一个存在已经很久的开源的交通管制系统,之前一直没有认真研究,最近由于项目需要,着重研究了下此系统,发现内核设计的的确不错。本文记录本人在使用OpenTCS二次开发过程中的一些琐事,供有需要的工程师参考。首先要使用OpenTCS,首先要具备JAVA语言的开发能力,JAVA是一门非常优秀的语言,用户数量庞大.........首先我们从官网下载源码(目前的最新版本为v4.1...原创 2020-03-03 16:22:02 · 4595 阅读 · 3 评论 -
OpenTCS打造移动机器人交通管制系统(十)
最近实在有点忙,都有点忙昏头的感觉,没来得及更新TCS系列文章。本篇文章算是一个TCS系列博文的完结篇。(后续如果有一些新的东西有可能会继续更新,但可能会是以专题的形式发布。)这里顺便提一下,现在官网的TCS5版本也出来了,但是遗憾的是,本人没有发现有新的突破性的东西,其实挺失望的。本文其实没有什么新的东西可记录,但是后台有很多伙伴给我留言,想知道基于TCS的Web客户端怎么去实现,我想大概是TCS自带的客户端太丑了吧,哈哈,但其实PlantView个人觉得还是挺实用的。那么本文就来谈一下基于O原创 2020-07-14 19:43:42 · 2533 阅读 · 3 评论 -
OpenTCS打造移动机器人交通管制系统(九)
上一篇文章探讨了如何拓展Kernel。本文来讲下如何为OpenTCS增加WebAPI。由于OpenTCS有MES系统或别的第三方系统对接时通常都是使用WebAPI进行交互的。OpenTCS系统的WebAPI遵循RestAPI的设计,提供了一系列API接口,这些API接口通过Documente可以查看到。如何测试这些API?可以通过浏览器来测试(推荐使用Google浏览器),比如这里要获取全部的车辆信息,可以在浏览器中输入如下地址:http://localhost:55200/v1...原创 2020-06-23 11:18:56 · 2406 阅读 · 7 评论