主要内容

仓库中的路径规划和避障

的扩展使用凉亭模拟仓库中的移动机器人的例子。通过实例说明了将PRM路径规划器改为A*规划器,并添加矢量场直方图(VFH)算法来避免障碍物。

先决条件

模型概述

这个模型有两个主要的变化为仓库机器人执行任务的例子。目标是替换使用的路径规划算法,并添加一个控制器,以避免环境中的障碍。

规划师MATLAB®功能块现在使用plannerAStarGrid(导航工具箱)对象运行A*路径规划算法。

避障子系统现在使用向量场直方图块作为控制器的一部分。的rangeReadings函数块在接收到的数据不为空时输出范围和角度。然后VFH块根据扫描范围内的障碍物生成一个转向方向。对于近距离障碍物,机器人应该转身绕过它们。调整VFH参数,以不同的避障性能。

open_system (“aStarPathPlanningAndObstacleAvoidanceInWarehouse.slx”);

设置

仓库设施

加载示例映射文件,地图,它是一个逻辑值矩阵,表示仓库中已占用的空间。将这个矩阵求反以表示自由空间,并创建一个binaryOccupancyMap对象。指定分辨率为100单元格/米。

这张地图是根据obstacleAvoidanceWorld.world,在虚拟机中加载。生成了一个png文件作为映射矩阵collision_map_creator_plugin插件。有关更多信息,请参见碰撞地图创建插件

关闭图(“名称”“仓库地图”“可见”“上”)加载exampleHelperWarehouseRobotWithGazeboBuses.mat负载helperPlanningAndObstacleAvoidanceWarehouseMap.mat地图logicalMap = map.getOccupancy;mapScalingFactor = 100;显示(图)

分配xy-充电站、分拣站、仓库货架附近的卸货位置。选择的值是基于Gazebo中的模拟世界。

chargingStn = [2,13];loadingStn = [15,5];unloadingStn = [15,15];

在地图上标出不同的地点。

持有;localOrigin = map.LocalOriginInWorld;localform = trvec2tform([localOrigin 0]);文本(chargingStn (1) chargingStn (2), 1,“充电”);plot ([chargingStn, 0],[1 0 0]) text(loadingStn(1), loadingStn(2),1,“装载站”);plot ([loadingStn, 0], [1 0 0]) text(unloadingStn(1), unloadingStn(2),1,)“卸货站”);plotTransforms([unloadingStn, 0],[1 0 0])保持

模拟

为了模拟这个场景,设置到Gazebo的连接。

首先,运行露台模拟器。在虚拟机中,单击有障碍物的露台仓库机器人图标。如果Gazebo模拟器无法打开,您可能需要重新安装插件。看到手动安装Gazebo插件在Simulink和Gazebo之间进行联合仿真金宝app

在Si金宝appmulink中,打开露台Pacer块,然后单击配置露台网络和仿真设置.指定网络地址作为自定义主机名或IP地址为你的凉亭模拟,和港口14581,这是Gazebo的默认端口。虚拟机桌面显示IP地址。

有关连接到Gazebo以启用联合模拟的更多信息,请参见在Simulink和Gazebo之间进行联合仿真金宝app

单击初始化模型按钮初始化上面声明的所有变量。

运行仿真。机器人在周围环境中行驶,避免意外的障碍。

sim卡(“aStarPathPlanningAndObstacleAvoidanceInWarehouse.slx”);

请注意,有两个圆柱形障碍没有出现在占用地图上。当采用VFH算法检测时,机器人仍然会避开它们。

当机器人试图避开障碍物时,绿色的避障灯就会亮起来。