一文带你入门RCS4.x【任务编排】(一)
随着RCS-CMS-WCS不断更新,终于我们在4.x迎来了一个新系统,TAS【TaskArrangementService(任务编排服务)】,本文主要用于未接触过4.X新手引导入门,但由于是新系统,作者若有错误敬请谅解,本文仅供参考。

宇宙免责声明

在您继续阅读本文之前,请注意,本文涉及的RCS-CMS-WCS 4.x版本及其新系统TAS(Task Arrangement Service,任务编排服务)可能包含作者基于当前知识水平的推测和假设。

作者已尽最大努力确保信息的准确性和完整性,但鉴于宇宙的无限性和技术的不断进步,本文中的信息可能与读者的量子状态发生纠缠,导致不可预测的结果,根据量子物理学,本文中的某些信息可能处于存在与不存在的叠加状态。作者不对因量子不确定性导致的信息不准确性负责。作者无法保证所有信息的绝对正确性。

一,任务编排入口/关注/类别

为了防止有些萌新不清楚4.X如何找到RCS,作为引导进入主页面使用,死在第一步可不是好事情。

RCS IP

根据各项目实际对外暴露RCS的IP,若不清楚现场IP为多少,谁搭的服务器找谁询问。
一般路径为: [https://(对外IP) /portal/home]

image.png

登录账号密码由于不能使用连续数字验证,所以4.x版本密码大概率为Hik@321++,密码取决于搭建RCS时搭建者所选择,若不清楚可咨询服务器搭建人员。
在导航页面,4.x融入了很多可直接跳转的组件,并把WCS单独独立出来处理,以后不需要每次都上服务器去替换WCS配置文件了。

任务编排入口

从导航页面进入RCS的门户页,只要咱们不是只靠声音生存,几乎都能看到导航栏上的任务编排入口。

image.png

任务分类与收藏

初识任务编排时,我们会看到四个子菜单节点,分别为

【项目关注】|【搬运主流程】|【WMS主流程】|【子流程】

下面将逐个介绍分别对应任务分类

【项目关注】: 顾名思义,只是起到一个收藏的作用,类似于书签,在任务条的侧边,有一个五角星(收藏)图标

image.png

点亮图表即可把任务加入收藏,就可以在项目关注中查看到该任务,方便使用者快速查找任务。

【搬运主流程】: 即为所有主任务合集,所有导入的任务编排都可以在此中寻找,若找不到也可以使用搜索框

image.png

进行模糊搜索或筛选功能,但请注意不要直接更改自带任务编排,最好复制出来更改备份编排

【WMS主流程】:这里面一般存放用于与IWMS对接的任务编排,如叉车通用,CTU通用,接驳,顺序出库编排,但是一般情况下仓储项目都需要定制编排,所以使用的情况很少,可按需使用。

【子流程】:子流程任务编排更像是一个组件包,并不属于能够直接下发的任务编排,所以尽量不要修改原生子任务编排,当然你也改不了

image.png

我们把任务抽象成一个箱子,那么子流程更像构建箱子的材料,而不是箱子里包装的东西,比如一个纸箱子,他里面装的什么和箱子本身并无关系,而子任务在这种情况下,更像是做纸箱子的纸材料,回归到任务编排的层面,一个任务编排可能有很多个节点,而这其中很多节点也有自身的子节点,他们本身只是把参数传递到子节点中,依靠着子节点去处理逻辑并返回给主节点,再回归到大的任务编排中。

二,任务编排逻辑

===========

任务链

当你第一次开始研究4.X的任务编排时就会发现,这个任务编排实在是太自由了,就像把一片地给你,你在这块地上搭建什么都随你,比起3.X的只能拖拽固定任务模块去拼接实在是强太多了,但是随之而来的难度也不可忽视。在此我们使用LMR潜伏车通用搬运任务链来做讲解。

image.png

------------------------------------------------重点内容警告----------------------------------------------

进入任务编辑前,先确定任务是否是需要编辑的任务,查看左侧任务表是否选中,之后再点击右上方蓝色编辑按钮进入编辑模式 【需注意不要在原生任务链上进行更改,所以我们可以复制一份任务链出来更改,点击收藏按钮边上的展开按钮(样式为三个点),选择复制,填写任务名后即可】 进入编辑模式后,我们来认识一下界面上的一些元素。

image.png

在界面上方的是操作栏,主要用于连线节点与布局,保存任务链,但是就算不对齐节点,也是可以连线上去的,连线需要选择一个起点节点,需要选择一个终点节点(大多数情况下),连线的箭头方向即表达为任务链的流动方向

image.png

比如图中 申请载具节点 指向 申请站点节点(申请载具 ==> 申请站点) 则表示这个任务流需要先申请载具,然后才能申请站点,如果申请载具失败了则会直接报错,并不会向后流动。

而在界面左侧的则是组件节点,他们大多时是用来构建任务链的内部逻辑的,一个完整的任务链一定是需要一个开始符号与结束符号的,类似于下图

image.png

在构建任务链时,我们第一步一定需要先从组件栏中配置开始符与结束符,然后再在他们之间加我们需要的节点逻辑

任务编排

在了解了任务链的基础功能的情况下,现在,我们试着去了解LMR潜伏通用搬运任务链的逻辑吧

首先,我们先找到任务编排中最重要的开始符与结束符image.png

基本参数:

然后我们来看他们之间的组件逻辑,任务开始时遇到的第一步为申请载具节点,单击选择他即可看到他的节点属性image.png ID为节点的标识,名称则为节点前端渲染的字符,调用流程就是我们前面提到的子流程
【忘记了的小伙伴可以回到(任务分类与收藏)这一栏重新观看】

业务参数:

我们再切到业务参数属性中,这里主要用于给节点配置入参属性image.png载具获取方式分为 目标路径/接口参数的方式获取货架一类的载具,其中目标路径更像是一种全局变量(一个内置的TypeValue),其中包含了以下类型

class TypeValue = { ZONE: '区域', SITE: '站点别名', STORAGE: '仓位别名', MAT_LABEL: '物料标签', CARRIER: '载具编号', STACK: '巷道编号', STACK_LABEL: '巷道特征值', CARRIER_TYPE: '载具类型', BIN_TYPE: '仓位类型', MIX_CONDITION: '条件组合', EQPT: '外设编号' };

而接口参数更像是直接填 入参 去调用接口,比如上图中,获取载具的方式为目标路径,所以他使用的是一个目标接口数组 ${submitParam.targetRoute[0]}

而如果我们 使用 接口参数 去调用这个数组,我们只需要在下面的获取方式值中填 1 即可获取到 ${submitParam.targetRoute[0]}的返回值,有的小伙伴就想问了,这里为什么不是填0呢,这里有一个小注意事项,如果使用接口参数来获取的话,targetRoute 数组中 只需要填写 targetRoute 中的第几个参数,从1开始,而填0是获取不到参数的。所以使用接口参数去填写的话,应该是如下图所示
image.png

继续往下

image.png

载具编号:

场景一: 载具获取方式值为空,载具编号填入相应的值,支持通过载具获取到系统已绑定的载具。

场景二: 载具获取方式值为点位,载具编号填入相应的值,支持已填入的点位为起点,填入的载具编号为任务载具。

场景三: 载具获取方式值为区域,载具编号填入相应的值,支持在区域中查找相应的载具。

是否多任务:

该参数用于控制申请载具时是否可以选中已经被锁定的载具,选择“是”,常用于多工作台拣选的场景,多工作台挑中同一货架,支持对同一个货架下发多个任务。

申请策略:

查找载具时的附加条件,满足现场的特殊要求

参数 具体含义
先进先出 优先挑最新执行任务的载具,载具状态表更新时间升序排列
后进先出 优先挑最早执行任务的载具,载具状态表更新时间降序排列
近距离优先 优先挑离终点近的载具
远距离优先 优先挑离终点远的载具
特殊:区域策略排序 按照区域的优先顺序进行排序查询
特殊:自定义策略 需要通过脚本的方式自定义查找的策略

扩展属性:

image.png

载具种类

申请载具的种类,包括货架、托盘、料箱三种,在查询的时候会增加载具种类的条件进行筛选

载具类型

查找的载具类型,可选择系统中已添加的载具类型

是否空载具

是否查找空的载具

空载具定义:载具上所有仓位都是空的,只要有一个仓位不是空的则不算空载具

是否从仓位中找

确定载具是否在仓位上查找

选择“否”:优先从站点中查找载具,找不到再从仓位中查找

选择"是": 在仓位中查找载具,同时需要选择仓位所属类型

是否无码载具

无码载具表示系统中未维护该载具,常用于工厂不方便提前贴载具码的场景。系统会自动生成随机的载具编号进行搬运。

所在地图

可选择地图,在查询的时候以该地图范围进行筛选

过滤条件

可以增加SQL语句的筛选条件,扩展功能,可以使用系统定义别名。

申请次数

包含两个参数:

一次:只查找一次,未找到则直接报错

一直:循环申请,需要设置申请间隔时间

申请间隔时间(s)

申请载具未成功,等待循环的时间间隔

运行数据:image.png

输入:

表示本节点的入参,可以抽象成一个对象结构,比如前面一个节点输出了一个Object,然后他指向的那个节点就可以接收到这个Object,去获取他的属性。

输出:

节点运行会输出,赋值给变量,可供后续节点调用,参数名可修改,流程中不可重复,有覆盖的风险

------至此我们已经认识到了任务链中一个节点自身做附带的属性------

接下来,让我们来看看任务链中的节点逻辑吧

image.png
这就是一个完整的任务链的逻辑,其实抽象一下就很好理解

【AGV要搬运的是什么货架 ==> 起点有没有这个货架 ==> 终点是不是空闲的 ==> 点位在不在一张拓扑图上 | 在的话我需要用什么车去搬 | 不在的话我该怎么走才能去另外一张图 】



现在,我们尝试着自己写一个任务编排来运行一下吧!!
(一阶段入门结束)


附件:
版权声明:本文为V社区用户原创内容,转载时必须标注文章的来源(V社区),文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:v-club@hikrobotics.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
上一篇
已经是第一篇啦~
下一篇

叉车电梯多托场景实现配置

评论请先登录 登录
全部评论 1

大佬,牛掰👍

2024-11-02 10:30:24 山西省
回复
  • 1
Lv.0
2
关注
3
粉丝
2
创作
8
获赞
相关阅读
  • 【保姆级教程】算法模块封装详解
    2024-10-17 浏览 0
  • 第三届“悉灵杯”基于MV-DT01SDU相机识别果蔬等数据集
    2024-10-14 浏览 0
  • [启智杯]赛事资料下载说明
    2024-10-29 浏览 0
  • 一文带你入门RCS4.x【任务编排】(一)
    2024-10-28 浏览 0
  • 【3D系列】2D-2D对极几何估计相机运动3D位姿
    2024-10-14 浏览 0

请升级浏览器版本

您正在使用的浏览器版本过低,请升级最新版本以获得更好的体验。

推荐使用以下浏览器