利用凉亭模拟仓库中的移动机器人
这个例子展示了如何在凉亭中模拟一个仓库机器人。Gazebo使您能够模拟一个使用距离传感器的移动机器人,同时在模拟环境中执行某些任务。方法的应用,此示例详细说明如何使用模拟器为仓库机器人执行任务例如,机器人在仓库场景中递送包裹。该机器人利用瞭望台中的模拟距离传感器来检测与动态环境可能发生的碰撞并避免碰撞。
先决条件
下载一个虚拟机与ROS和凉亭建立一个模拟机器人。
检查为仓库机器人执行任务仓库场景中路径规划和导航的工作流示例。
检查凉亭差动驱动机器人的Simulink控制万博1manbetx在凉亭中采集传感器数据和控制机器人的基本步骤为例。
模型概述
打开模型。
open_system (“simulateWarehouseRobotInGazebo.slx”)
该模型可分为以下几个要素:
意义:从凉亭的传感器读取数据。
日程安排:为机器人分配包裹并规划递送路径。
控制:生成命令以遵循预定义的路径并避开障碍物。
动作:向Gazebo发送命令来驱动环境中的机器人。
时间表
该机器人在控制器的引导下完成在充电站、装载站和卸载站之间的任务调度器.
感觉
当前机器人姿态、车轮速度和距离传感器读数从凉亭的模拟环境中读取。的展开视图阅读凉亭传感器子系统。
控制
控件生成用于跟踪路径点的控制命令单纯的追求块。如果机器人上的距离传感器检测到障碍物avoidCollisionDistance
阈值,机器人停止。而且,当机器人足够接近目标时,它就会停下来。
开动
根据生成的控制命令,配置前轮控制子系统为每个车轮生成一个扭矩值。施加的扭矩是一个ApplyJointTorque
命令。
设置
仓库设施
加载示例映射文件,地图
,这是一个逻辑值矩阵,表示仓库中已占用的空间。求这个矩阵的倒数来表示自由空间,然后得到binaryOccupancyMap
对象。指定分辨率为每米100单元格。
这张地图是根据warehouseExtensions.world
文件,这是使用建筑编辑器在相同的缩放因子,如下所述。一个. png
映射的文件可以使用collision_map_creator_plugin
插件生成映射矩阵。关于如何安装插件的详细信息可以在碰撞地图创建插件.
mapScalingFactor = 100;负载gazeboWarehouseMap.mat地图logicalMap = ~map;map = binaryoccuancymap (logicalMap,mapScalingFactor);显示(图)
分配xy-充电站、分拣站的位置,以及仓库货架附近的卸货位置。所选择的值是基于Gazebo中的模拟世界。
chargingStn = [12,5];loadingStn = [24,5];unloadingStn = [15,24];
在地图上标出各个地点。
持有在;text(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])保持从;
距离传感器
的激光雷达扫描块传感节用于从模拟距离传感器读取距离值。的warehouseExtensions.world
文件包含场景中各种模型和演员(仓库工人)的详细信息。因为<演员>
标签是只有可视网格的静态链接,距离传感器的传感器类型为gpu_ray
.
此外,距离传感器使用640量程,但默认值是128。这就需要对用于的总线进行修改激光雷达扫描块。加载exampleHelperWarehouseRobotWithGazeboBuses.mat
文件,以获得修改后的总线Gazebo_SL_Bus_gazebo_msgs_LaserScan.range
设置为640。修改后的公共汽车被保存到.mat
文件使用类型编辑器。
负载exampleHelperWarehouseRobotWithGazeboBuses.mat
避碰
世界上的演员们正沿着预先设定好的轨迹前进。机器人利用距离传感器检查2.0米范围内的障碍物(avoidCollisionDistance)
从(π-π/ 10日/ 10)
在该范围和视图内的非零读数时,机器人停止,只有在该范围清除后才恢复。“停止机器人感知障碍”功能块结合了这一逻辑。
在运行模拟时,停止当机器人感觉可以继续前进时,灯变成绿色。如果它停止了,灯就会变成红色。
avoidCollisionDistance = 2;
模拟
为了模拟该场景,设置到Gazebo的连接。
首先,运行凉亭模拟器。在虚拟机中,单击凉亭仓库机器人图标。如果Gazebo模拟器无法打开,您可能需要重新安装插件。看到安装Gazebo Plugin手动在在Simulink和Gazebo之间进行联合仿真万博1manbetx.
在Si万博1manbetxmulink中,打开露台Pacer方块,点击配置Gazebo网络和仿真设置.指定网络地址作为自定义,的主机名或IP地址你的凉亭模拟,还有一个港口的14581
,这是Gazebo的默认端口。虚拟机桌面显示IP地址。
有关连接到凉亭以启用联合模拟的详细信息,请参见在Simulink和Gazebo之间进行联合仿真万博1manbetx.
单击初始化模型按钮,初始化上面声明的所有变量。
运行仿真。机器人在周围环境中行驶,每当工人进入规定的阈值内时,机器人就会停下来。