主要内容

多仓库机器人的控制与仿真

这个例子展示了如何控制和模拟在仓库设施或配送中心工作的多个机器人。机器人在工厂周围开车,拾取包裹,并将它们送到车站进行存储或处理。这个例子建立在为仓库机器人执行任务例如,它驱动一个机器人在同一设施周围运行。

可以使用状态流程图和机器人系统工具箱在Simulink®中对此包排序方案进行建模™ 算法块。A.金宝app中央调度器向机器人发送命令,以便从机器中拾取包裹装货站把它们送到一个特定的卸货站这个机器人控制器根据装卸站的位置规划轨迹,生成机器人的速度指令。这些命令被提供给植物,其中包含一个差动驱动机器人模型,用于执行速度命令和返回机器人的地面真实姿态。将姿态反馈给调度程序和控制器来跟踪机器人的状态。这个工作流程是为一组5个机器人完成的,它们都是同时被安排、跟踪和建模的。

提供的Simulink模型金宝app,multiRobotExampleModel,对上述场景进行建模。

中央调度器

中央调度器使用状态流程图来处理从服务器分配给机器人的包包装分配器.每个机器人一次可以携带一个包裹,并根据每个包裹所需的位置被指示从装货站前往卸货站。调度器还跟踪包和机器人的状态并更新状态指示板. 根据机器人的姿势,调度器还可以在检测到即将发生的碰撞时向一个机器人发送停止命令。这种行为可以让机器人在可行的情况下进行局部避障。

对于每个机器人和包装状态子系统是一个为每个子系统(金宝app模型)它处理一组总线,用于跟踪机器人和包装状态RobotPackageStatus总线对象。这使得为不同数量的机器人更新这个模型变得很容易。有关使用For- each子系统处理总线阵列的详细信息,请参见使用总线阵列(金宝app模型)

调度程序

以下示意图详细说明了传感器的信号值调度程序Stateflow图表。

机器人控制器

机器人控制器使用为每个子系统(金宝app模型)为5个机器人生成机器人控制器阵列。

以下示意图详细说明了与信号相关的信号值的类型对于每个机器人控制器

每个机器人控制器有以下输入和输出。

控制器接收包含包信息的传递命令,并计划一条路径,以便在仓库中使用移动机器人这个纯粹的追求块采用此路径并生成访问每个路径点的速度命令。此外,当机器人达到目标时,机器人和包的状态也会更新。每个机器人也有自己的内部调度程序,根据包裹信息告诉他们卸货站的位置,并在他们放下包裹时将它们送回卸货站。

机器人控制器模型使用相同的模型,仓库任务机器人仿真模型,如中所示为仓库机器人执行任务

植物

植物子系统使用差动驱动运动学模型块来模拟机器人的运动。

模型设置

开始在MATLAB®中为模型设置各种变量。

定义仓库环境

逻辑类型矩阵,逻辑地图表示仓库的占用地图。仓库包含表示墙、货架和其他处理站的障碍物。中还提供了装载、卸载和充电站xy-坐标。

负载multiRobotWarehouseMap.mat逻辑地图装载站卸载收费站仓库图(“名字”“仓库设置”“单位”“归一化”“外置”,[0 0 1 1]); 可视化仓库(仓库图、逻辑地图、装货站、卸货站、装货站);

图形仓库设置包含一个axes对象。标题为Warehouse Map的axes对象包含46个patch、line、image、text类型的对象。

检查车站占用情况

确保地图上的站点没有被占用。

映射=二进制职业映射(logicalMap);如果(任何(检查占用率(地图、[充电站;装货站;卸货站])错误)(“地图中至少有一个站点位置被占用。”结束

中央调度器

中央调度器要求了解要交付的包裹,以便将交付命令发送给机器人控制器。

定义包

包裹以各种卸货站的索引号数组的形式给出,这些卸货站应将包裹运送到各个卸货站。因为此示例有三个卸载站,所以有效的包可以采用1、2或3的值。

负载包装材料
包=1×113 2 1 2 3 1 1 1 2 3 1

数量的机器人

机器人的数量用于确定初始化过程中各种信号的大小调度程序Stateflow图表

numRobots=大小(计费站,1);每个机器人都有自己的充电站;

碰撞检测和目标达到阈值

中央调度器机器人控制器使用某些阈值进行碰撞检测,collisionThresh实现了一个目标,,远离目标

碰撞检测确保在一定距离阈值内的任意一对机器人,允许指标较低的机器人移动,另一个机器人停止(零速度命令)。仍在运动的机器人应该能够避开其路径中的局部静态障碍。您可以通过另一个低级控制器来实现这一点,例如向量场直方图(导航工具箱)块。

当机器人在距离阈值范围内时,达到目标条件发生,远离目标,从目标位置。

负载示例MultirobotParams.mat远离目标collisionThresh

总线对象

机器人传送命令RobotPackageStatus总线对象用于在中央调度器机器人控制器

负载warehouseRobotBusObjects.mat机器人传送命令RobotPackageStatus

模拟

打开Simulin金宝appk模型

开放式系统(“multiRobotExampleModel.slx”

运行仿真。您应该看到机器人驱动计划路径和交付包。

sim卡(“多机器人示例模型”);
###启动serial model reference simulation build ###成功更新了model reference simulation target for:模型重建行动的原因  ========================================================================================== robotController robotController_msf代码生成和编译。Mexa64并不存在。建造时间:0小时2米4.3063秒

图中包含一个轴对象。标题为“二进制占用网格”的轴对象包含46个类型为patch、line、image、text的对象。

指标和状态仪表板

对于每个包,模型中的仪表板显示包是“InProgress”、“Unassigned”还是“Delivered”。机器人状态显示行驶距离、包裹位置和包裹ID。

扩展模型

此模型用于根据可用性修改仓库中机器人的数量。添加更多机器人需要定义更多充电站。

收费站(6,:)=[10,15];%增加的第6个机器人充电站充电站(7,:)= [10,17];%附加第7个机器人的充电站

您还可以添加更多卸货站并为其分配包裹。

unloadingStations(4,:) = [30,50];包=[包,4,4];

额外的微分运动学模型块也需要匹配机器人的数量。这个示例HelperReplacePlantSubsystem通过更新来添加这些numRobots

numRobots = size(充电站,1)%和以前一样,每个机器人都有自己的充电站
numRobots = 7
exampleHelperReplacePlantSubsystem (“多机器人示例模型/机器人”, numRobots);

还可以重新定义任何现有位置。修改加载站位置。

装载站=[35,20];

模拟

进行修改后,再次运行模拟。您应该看到更新的站点位置和增加的机器人数量。

sim卡(“多机器人示例模型”);
###启动serial model reference simulation build ###成功更新了model reference simulation target for:模型重建行动的原因  ============================================================================================== robotController代码生成和编译全局变量unloadingStations已经改变了。建造时间:0小时1米4.1706秒

图中包含一个轴对象。标题为“二进制占用网格”的轴对象包含61个类型为patch、line、image、text的对象。

可视化

可视化辅助提供更改仓库视图的一些选项。打开块掩模,在各种之间进行切换预置视图不同的车站。切换路径可视化或更新机器人网格类型。调整样品时间改变可视化的速度,不影响实际机器人仿真的执行。