主要内容

A*仓库中的路径规划和障碍物躲避

的扩展利用凉亭模拟仓库中的移动机器人的例子。该示例演示了使用A*规划器更改PRM路径规划器,并添加了矢量场直方图(VFH)算法以避免障碍物。

先决条件

模型概述

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

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

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

open_system (“aStarPathPlanningAndObstacleAvoidanceInWarehouse.slx”);

ScreenShotExample2c.png

设置

仓库设施

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

这张地图是根据obstacleAvoidanceWorld.world,加载到虚拟机中。生成了一个png文件,用于与collision_map_creator_plugin插件。有关更多信息,请参见碰撞地图创建插件

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

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

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

在地图上标出各个地点。

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

模拟

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

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

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

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

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

运行仿真。机器人在周围环境中驾驶,并避免意想不到的障碍。

sim卡(“aStarPathPlanningAndObstacleAvoidanceInWarehouse.slx”);

warehouse.png

注意,有两个圆柱形的障碍在占用地图上是不存在的。当使用VFH算法检测到它们时,机器人仍然会避开它们。

cylindricalobstacles.png

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