这个例子展示了如何在Gazebo中模拟一个仓库机器人。Gazebo使您能够模拟一个使用距离传感器的移动机器人,同时在模拟环境中执行某些任务。这个例子详细说明了如何使用模拟器来应用为仓库机器人执行任务例如,机器人在仓库场景中交付包。该机器人利用露台上模拟的距离传感器来检测和避免与动态环境可能发生的碰撞。
先决条件
下载一个带有ROS和凉亭的虚拟机来设置一个模拟机器人。
检查为仓库机器人执行任务仓库场景中的路径规划和导航工作流的示例。
检查用Simulink控制凉亭差动驱动机器人金宝app举例说明了在凉亭中采集传感器数据和控制机器人的基本步骤。
打开模型。
open_system (“simulateWarehouseRobotInGazebo.slx”)
该模型可分为以下几个要素:
意义:读取Gazebo的传感器数据。
日程安排:分配包并规划机器人传递包的路径。
控制:生成命令以遵循预定义的路径并避免障碍。
动作:向Gazebo发送指令以启动环境中的机器人。
机器人在机器人的引导下完成充电站、上料站和卸料站之间的行走任务调度器.
从Gazebo的模拟环境中读取机器人当前的姿态、车轮速度和距离传感器读数。的展开视图阅读凉亭传感器子系统。
控件生成跟踪路径点的控制命令单纯的追求块。如果机器人上的距离传感器检测到avoidCollisionDistance
门槛,机器人停止。而且,当机器人足够接近目标时,它就会停下来。
根据生成的控制命令先锋轮控制子系统为每个车轮生成一个扭矩值。力矩是作为ApplyJointTorque
命令。
加载示例映射文件,地图
,它是一个逻辑值矩阵,表示仓库中已占用的空间。将这个矩阵求反以表示自由空间,并做abinaryOccupancyMap
对象。指定分辨率为100单元格/米。
这张地图是根据warehouseExtensions.world
文件,它是使用Building Editor在下面提到的相同缩放因子上创建的。一个. png
文件的地图可以使用collision_map_creator_plugin
插件来生成映射矩阵。关于如何安装插件的详细信息可以在碰撞地图创建插件.
mapScalingFactor = 100;负载gazeboWarehouseMap.mat地图logicalMap = ~地图;地图= binaryOccupancyMap (logicalMap mapScalingFactor);显示(图)
分配xy-充电站、分拣站、仓库货架附近的卸货位置。选择的值是基于Gazebo中的模拟世界。
chargingStn =(12、5);loadingStn =(24、5);unloadingStn =(15日24);
在地图上标出不同的地点。
持有在;文本(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])保持从;
的激光雷达扫描阅读块的传感段用于从模拟的距离传感器读取距离值。的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模拟器无法打开,您可能需要重新安装插件。看到安装露台插件手动在在Simulink和Gazebo之间进行联合仿真金宝app.
在Si金宝appmulink中,打开露台Pacer块,然后单击配置露台网络和仿真设置.指定网络地址作为自定义,的主机名或IP地址为你的凉亭模拟,和港口的14581
,这是Gazebo的默认端口。虚拟机桌面显示IP地址。
有关连接到Gazebo以启用联合模拟的更多信息,请参见在Simulink和Gazebo之间进行联合仿真金宝app.
单击初始化模型按钮初始化上面声明的所有变量。
运行仿真。机器人在周围环境中行驶,一旦工人进入设定的阈值,机器人就会停止工作。