(二)openTCS学习日志——openTCS功能初识

openTCS简介

openTCS是一个开放的交通控制系统,可以实现机器人的任务分配、路径规划、调度等一系列的功能,也有相应的仿真平台,既可以使用该软件及仿真平台进行基本的任务分配、路径规划等操作,也可以基于该平台进行二次开发,总之是一款很好很强大的软件。

本文主要介绍openTCS软件中的一些基本元素及属性。主要内容来源于该软件内自带的opentcs-users-guide手册。

openTCS基础元素

  1. 节点(Point  即拓扑图中的节点,在仿真平台的地图中小车由一个节点转入另一个节点以实现运动。

Point的属性:

(1)type (类型)节点有三种不同的类型/分类

Halt position (停留节点)即小车在接到任务的时刻所在的节点(也就是说小车可以在该节点停留);在初始化仿真程序时小车的默认节点(default type)一定是Halt position 。

Reporting position (报告节点)小车不会被命令运行到当前的报告节点,也不会停留在当前的报告节点;(在软件自带的Demo-01中没有用到该节点,推测应用范围较小)。

Parking position (停留节点)小车可以长时间停留/泊车的节点。

图1 仿真平台界面

在仿真平台(plant overview)中,可以在界面上设置三种节点(图1左上角),不同节点的作用不同。

(2)position(坐标位置)即节点在地图中的坐标

一个点有两种坐标(如图1左下角所示,很好理解)

layout coordinates【仿真界面中的图形坐标】;model coordinates【真实坐标】

在仿真界面中拖动节点 x/y-position(model) 会变化,而Point x/y position不会变化。

同步两种坐标的方法:(界面中点击)

• Select Actions | Copy model values to layout or Actions | Copy layout values to model to synchronize them globally 或

• Select a single layout element, right click it and select Context menu | Copy model values to layout or Context menu | Copy layout values to model to synchronize them only for the selected element

(3)vehicle orientation angle(车辆朝向角)当车辆到达(occupy占据)该点时的朝向角(容易理解)。

2. 路径(Path  即拓扑图中的边,用于连接节点,在仿真平台的地图中小车经Path由一个节点转入另一个节点以实现运动。

Path的属性:

(1)length(长度) 路径的长度,为实际长度,不随节点拖动而改变(很好理解)。

(2)maximum velocity and maximum reverse velocity (最大速度和反向速度)该路径允许通行的最大速度和最大反向速度。

(3)A routing cost(行走成本)走过该路径消耗的代价(用于后续计算最短路径等)

(4)locked flag(锁定标识)若该路径被标记,则表明该路径上已有小车正在通行。

图2 路径的属性

3. 工位(Location  即执行某项工作/任务的位置,如装货(load)、卸货(unload)等。

Location的属性:

(1)type(操作类型) 定义该工位能够完成的任务/工作的类型。

如何设置?

当在地图中加入一个工位(Location)后,在图1工具栏下方的Components列表内会出现 Location type 项 可以在工具栏中点击Location type图标生成新的Location type 在该Location type内可以进行命名、设置actions(活动)等操作,待设置完成后,可以在工位(Location)的属性type中进行设置,即将actions(活动)附加到工位(Location)中,使该工位拥有该actions(活动)。

图3 设置工位可执行操作

(2)links(相邻点/可达节点) 定义能够到达该工位的点的集合(至少有一个)。

其实link是单独的一个元素,可以由工具栏Location type图标左侧的图标进行设置,用于连接节点和工位(区别于Path,用虚线表示)。

4. 小车(Vehicle  即小车实体的映射。

Vehicle的属性:

(1)电量相关的属性

A critical energy level 低于小车电量水平的阈值:用于确定何时充电

A good energy level 高于小车良好电量水平的阈值:用于确定何时充电

A fully recharged energy level 小车满电的阈值:用于确定何时充电结束

A sufficiently recharged energy level 小车充足电量的阈值:用于确定何时充电结束

(2)速度属性

A maximum velocity and maximum reverse velocity 小车的最大速度和最大反向速度

(3)An integration level 定义小车以什么身份参与到系统中

…ignored: 车和其reported position 被忽略,此时车不会显示在仿真界面中不会参与运输。

…noticed: 车显示在平台中,但没有资源(节点)分配给该车的位置,不会参与运送。

…respected: 有资源分配给该车的位置,不会参与运送。

…utilized: 参与运送 可以被openTCS使用。

(4)A set of processable transport order categories 小车可处理订单的种类(集合)

(5)A route color 标记该小车行走路径的颜色

(点击仿真平台中的小车,可以看到以上的属性中的绝大部分内容)

5. Block 用于实现一些特殊的交通规则,防止锁死(十字路口、路径终点)。

Block的属性:

(1)A set of members 组成Block的节点的集合,节点和节点之间用“——”相连

(2)type 有两种:A. Single vehicle only(单车) B. Same direction only(单方向)

Block的作用是防止不同小车运行到相同的位置导致局部路径阻塞,小车卡死。

默认的实现步骤(Default scheduler)是将一些易于阻塞的节点、路径设置为block,小车在当前位置时,会向上报告下一步运行位置,如下一步运行位置为block节点,则会进行检测,判断交通是否阻塞。

Block元素位于Components列表的第二栏,如图4所示。

图4 Block元素的属性

openTCS与操作相关的元素

1. 运输订单(Transport order )

如何创建订单:首先保存模型File->save model、连接到kernel File->Persist model、转化成操作模式 File->model->Operation mode

• Actions | Create transport order | 获取创建订单界面

在创建订单时,可以设置如下属性:

(1)destinations 目的地(可以是一系列的)

(2)deadline 订单处理的截止日期

(3)category 用于过滤可能分配给运输单的车辆

(4)intended vehicle 可选的预期车辆,告知调度员将运输订单分配给指定的车辆而不是自动选择一个

(5)dependencies 依赖项,完成该任务之前需要完成的任务,即为依赖项

虽有依赖项但可以由不同车完成(如图5所示)

图5 订单的依赖项

2. 订单序列(Order sequence)

可以建立一个订单序列(多个订单)并由指定车辆按顺序完成该序列,一旦将车辆分配给订单序列,它就不会处理不属于该序列的运输订单,直到订单序列完成(针对一系列连续的复杂任务---可以采用订单序列)。

订单序列属性:

(1)transport orders 订单序列 若未设置complete flag 则可以不断添加订单到队列末尾

(2)A complete flag 表示不会向序列中添加其他传输订单(不能重设置)

(3)A failure fatal flag 表示如果序列中的一个运输订单失败,则其后的所有订单也应立即被视为失败

(4)A finished flag 表示订单序列已处理(并且车辆不再受其约束)

(5)An optional category 与Transport order类似 但优先级高于Transport order

(6)An optional intended vehicle 完成该任务序列的预期车辆(如果设置 则该订单所有任务均为该车完成)

3. 一般元素

Unique name

每个工厂模型和工厂操作元素都有一个唯一的名称 不同类型的元素也不可能赋相同的名称

转载:openTCS(一)基本元素及属性 - 知乎

写得太好了,但显示用户已注销,担心后面找不到这篇文章了,所以转载了过来!

这位大神的专栏下面还有很多好的分享openTCS基础知识 - 知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark是一种大数据处理的框架,它可以处理大量的数据并进行分析。初学者可以通过学习Spark的基本概念和使用方法,了解Spark的工作原理和应用场景。在学习Spark的过程中,需要掌握Spark的核心组件和API,例如Spark Core、Spark SQL、Spark Streaming等。此外,还需要学习Spark的部署和调优,以及与其他大数据技术的集成。 ### 回答2: Spark是一种基于内存的分布式计算框架,是大数据处理中最流行的技术之一。Spark简单易用,能够快速地处理海量数据,尤其是在机器学习和数据挖掘领域中表现突出。本文将从初识Spark的角度入手,介绍Spark的基本概念和使用。 一、Spark的基本概念 1. RDD RDD全称为Resilient Distributed Datasets,中文意思是弹性分布式数据集,它是Spark的核心数据结构。RDD是一个不可变的分布式的对象集合,可以跨越多个节点进行并行处理。一个RDD可以分为多个分区,每个分区可以在不同的节点上存储。 2. DAG DAG即Directed Acyclic Graph(有向无环图),它是Spark中的一个概念,用来表示作业的依赖关系。Spark将一个作业拆分成一系列具有依赖关系的任务,每个任务之间的依赖形成了DAG。 3. 窄依赖和宽依赖 对于一个RDD,如果一个子RDD的每个分区只依赖于父RDD的一个分区,这种依赖就称为窄依赖。如果一个子RDD的每个分区依赖于父RDD的多个分区,这种依赖就称为宽依赖。宽依赖会影响Spark的性能,应尽量避免。 、Spark的使用 1. 安装Spark 要使用Spark,首先需要在本地或者集群上安装Spark。下载安装包解压缩即可,然后设置环境变量,即可在命令行中运行Spark。 2. Spark Shell Spark Shell是Spark的交互式命令行界面,类似于Python的交互式控制台,可以快速测试Spark代码。在命令行中输入spark-shell即可进入。 3. Spark应用程序 除了Spark Shell,Spark还支持以应用程序的形式运行。要创建一个Spark应用程序,可以使用Scala、Java、Python等语言进行编写。使用Spark API,读取数据、处理数据、保存数据等操作都可以通过编写代码完成。 总之,Spark是一种优秀的分布式计算框架,能够在海量数据处理中发挥出强大的作用。初学者可以从掌握RDD、DAG、依赖关系等基本概念开始,逐步深入学习Spark的使用。 ### 回答3: Spark是一种快速、分布式数据处理框架,它能够在成千上万个计算节点之间分配数据和计算任务。Spark的优势在于它支持多种语言和数据源,可以在内存中快速存储和处理数据。 在初学Spark时,我们需要对Spark的架构和核心组件有一些了解。首先,Spark的核心组件是Spark Core,它是一个可以用于建立各种应用程序的计算引擎。与此同时,Spark持有丰富的库,包括Spark SQL、Spark Streaming、MLLib和GraphX等,以支持在各种数据类型(文本、图像、视频、地理定位数据等)上运行各种算法。 若想要在Spark中进行任务,有两种编程API可供选择:Spark的核心API和Spark的SQL及DataFrame API。Spark的核心API基于RDDs(弹性分布式数据集),它是不可变的分布式对象集合,Spark使用RDD来处理、缓存和共享数据。此外,Spark的SQL及DataFrame API提供了更高层次的语言,可以处理结构化和半结构化数据。 除了组件和API之外,我们还需要了解Spark的4个运行模式:本地模式、Standalone模式、YARN模式和Mesos模式。本地模式由单个JVM上单个线程(本地模式)或四个线程(local[*]模式)运行。Standalone通常用于小规模集群或开发和测试环境。在YARN或Mesos模式下,Spark将任务提交给集群管理器,并通过管理器分配和管理资源。 总体来说,初学Spark时,我们需要了解Spark的核心组件、编程API和运行模式。熟悉这些概念以及Spark的架构,可以帮助我们更好地理解Spark和构建高效且可扩展的Spark应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值