AGV机器人的调度开发分析(2)- 内核中的调度

我们开发AGV的调度系统,最重要的是要实现调度的运行,那么调度要执行哪些任务呢?

先来看看德国开发的开源openTCS中的功能定义:

openTCS的控制核心是kernel,目的是提供运输系统/工厂的抽象驾驶模型,管理运输订单并计算车辆路线,其内部有三种算法策略模块,分别为Dispater、Router、Scheduler:

派发员(Dispatcher):决定哪个运输订单应该由哪辆车处理。此外,它需要决定车辆在某些情况下应该做什么,例如,当没有任何运输订单或车辆电量不足时。

路由(Router):为车辆找到到达目的地的最佳路线的路由器。

调度员(Scheduler):管理交通管理资源分配的调度程序,即避免车辆相互碰撞。

重点来了,我们的实现定义需要做到下面几个方法和接口:

  1. 定时拉取执行任务并规划相应路线

TimerFreshTask_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

一个定时器,可以将需要完成的AGV任务完成; 需要分发的任务分发;

需要充电的机器人去充电;需要去待命点的机器人去待命点

  1. 发送AGV路线指令(上面的任务需要发送路线,调用这个方法)

SendCarRoute(CarInfo car, SendRouteType RouteType, DispatchTaskDetail TaskDetail)

  1. 接受处理AGV回馈信息,每秒可能被执行5-10次

HandleCarFeedBack(CarStateInfo agvcar)

agvcar含有该有的机器人最新信息,这样机器人当前的状态,所达到的地标,电量等信息都能及时返回

4.发送指令给机器人的方法

Add_AGVCommand(string id, LatRcs.DispatchModel.CommandToValue ctov)

发送原理:接收命令的是通讯基类,命令先放到队列中。每个通讯设备都有自己一直开着的线程,对应的线程会自动从队列中获取指令,然后按协议发送给相关的机器人或设备。

这几个方法是调度中最重要的方法,当然还有很多线程锁和辅助方法,已经发送指令的方法,功能都比较简单,就没有列出。当代码看过3-5个不同的实现后,我们会觉得方案思想会更加重要。所以互动和讨论的内容,也许会优于于普通的代码,会更加有价值!当然初始做项目的人员还是解决方法的基本实现更有用。

如果需要讨论其他执行方法或者调度中控制细节的的可以评论,或者发邮件给我 448283544@qq.com

相关推荐
视***间1 分钟前
视程空间:以全栈边缘算力矩阵,构筑智能时代的技术底座
人工智能·机器人·边缘计算·智能机器人·视程空间·ai算力开发板
weiyvyy5 分钟前
机器人嵌入式开发趋势-开源生态与标准化
人工智能·嵌入式硬件·机器人·开源·信息化
Bnews16 分钟前
无人机位姿测量工具推荐:高精度光学动作捕捉在机器人科研中的核心价值
机器人·无人机
weiyvyy17 分钟前
无人机嵌入式开发实战-飞控系统原理与架构
人工智能·嵌入式硬件·机器人·无人机
物联网软硬件开发-轨物科技31 分钟前
【轨物方案】无刷 vs 有刷:针对不同电站需求的清洁机器人智能硬件选型指南
网络·机器人·智能硬件
鲁邦通物联网34 分钟前
工业物联网实战:针对老旧货梯的声明式 机器人梯控改造 架构实现与协议重构
机器人·机器人梯控·agv梯控·机器人乘梯·机器人自主乘梯·agv机器人梯控
PNP机器人37 分钟前
具身大型语言模型让机器人玩转复杂未知场景
人工智能·语言模型·机器人·kinova机械臂
IT猿手38 分钟前
多无人机动态避障路径规划研究:基于粒子群优化算法PSO的多无人机动态避障路径规划研究(可以自定义无人机数量及起始点),MATLAB代码
算法·matlab·机器人·无人机·路径规划·动态路径规划
weiyvyy43 分钟前
无人机嵌入式开发实战-安全机制与应急处理
人工智能·嵌入式硬件·安全·机器人·游戏引擎·无人机·信息化
weiyvyy1 小时前
机械臂控制开发实战-机械臂控制系统架构
人工智能·嵌入式硬件·机器学习·架构·机器人·需求分析·嵌入式实时数据库