的扩展使用凉亭模拟仓库中的移动机器人的例子。通过实例说明了将PRM路径规划器改为A*规划器,并添加矢量场直方图(VFH)算法来避免障碍物。
先决条件
检查使用凉亭模拟仓库中的移动机器人示例设置传感和驱动元件。这个示例介绍了如何下载和使用虚拟机(VM)来设置一个模拟机器人。
检查为仓库机器人执行任务仓库场景中的路径规划和导航工作流的示例。
这个模型有两个主要的变化为仓库机器人执行任务的例子。目标是替换使用的路径规划算法,并添加一个控制器,以避免环境中的障碍。
的规划师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算法检测时,机器人仍然会避开它们。
当机器人试图避开障碍物时,绿色的避障灯就会亮起来。