主要内容

设计和模拟仓库拾起并定位应用程序使用移动机械手仿真软件和露台金宝app

这个例子展示了如何建立一个端到端的,拾起并定位工作流等移动机械手KINOVA®Gen3哈士奇®移动机器人,在仿真软件®。金宝app

概述

这个例子模拟移动机械手识别和回收对象分成两箱使用工具从这些工具箱:

  • 机器人系统工具箱™——模型和模拟机械手。

  • Stateflow®——安排高级任务的例子,从任务。

  • ROS工具箱™——连接MATLAB®和仿真软件露台®。金宝app

  • 计算机视觉工具箱™深度学习工具箱™——使用一个模拟执行对象检测相机在露台。

这个例子是建立在相关关键概念从以下例子:

机器人仿真和控制在露台

这个示例使用仿真软件来控制两个机器人金宝app在露台。使用ROS作为主要的通信机制,允许您使用允许官方哈士奇和底层运动控制和传感KINOVA ROS包。这有助于一个简单的从模拟过渡到硬件,ROS命令保持不变。

世界还使用提供的露台露台联合仿真插件,它允许直接MATLAB通信工具,如查询露台世界或直接设置在露台的链接。

模拟传感器

露台模拟这些传感器:

  • RGB-D相机连接到机器人机械手的末端执行器。模型使用这台相机饲料检测对象。

  • 二维激光雷达传感器前面的移动机器人的基础。这个模型使用激光饲料本地化机器人在一个预先计算的地图。

使用仿真软件和Stateflow拾起并定位工作流金宝app

在这个例子中,移动机械手操作在一个模拟的仓库回收设施,从中央输送带捡可回收的对象并将它们传递给相应的回收点。

  • 模拟回收设施

  • 模拟移动机械手是一种Kinova Gen3沙哑的移动机器人的机械手

打开模型探索拾起并金宝app定位组件模型。

open_system (“PickPlaceWorkflow金宝appSimulinkMobileArm.slx”);

仿真软件金宝app模型包含这些组件:

  1. 主要任务调度器——这Stateflow图表安排的任务移动机械手完成拾起并定位工作。它激活任务的机器人机械手或移动机器人根据所需的工作流。

  2. 机器人汇率操纵国——实现任务分配给机器人机械手的主要任务调度器。该组件包含这些主要模块:机械臂调度器、运动规划子系统和感知子系统。

  3. 移动机器人——实现任务分配给移动机器人的主要调度器。该组件包含这些模块:移动机器人调度器,路径规划子系统和路径跟踪子系统。

1。主要任务调度器

该模型实现了移动机械手的主要工作流程通过使用一个中央Stateflow图表,遵循这些步骤:

  1. 移动机械手导航到输送带拾取一个回收对象。

  2. 机器人手臂上的RGB-D相机检测到使用深度学习的姿态和类型的对象。

  3. 机器人手臂拿起检测对象。

  4. 移动机械手导航到适当的回收站的检测对象类型(瓶子也可以)和它的地方。

  5. 机器人返回到输送带和重复这个工作流,直到没有更多的检测对象。

2。机器人机械手

答:机械臂调度器

机器人手臂调度程序包含闲置,MoveToHome,检测,PickObject,PlaceObject州。在任何时候,机器人手臂是在其中的一个州,根据任务命令的主要任务调度器。为了避免冲突,如果机器人手臂或移动机器人non-idle状态,另必须处于闲置状态。

b .运动规划

运动规划子系统是一个使子系统,一旦通过一个信号从机器人臂调度器,计划一个轨迹和使用ros-control包发送的命令轨迹的关节轨迹跟踪控制器运行在ROS。

机器人手臂调度程序发出信号启用这个子系统当机器人机械手必须在拾起并定位工作流。子系统是启用,直到机器人到达预期的目标构成。使子系统的更多信息,请参阅使用启用子系统(金宝app模型)

c .知觉

感知子系统是一个触发子系统,pretrained深学习模型适用于模拟机器人的末端执行器相机饲料检测可回收部分。深度学习模型以相机坐标系作为输入和输出的二维位置对象的类型(像素位置)和回收它需要(蓝色或绿色本)。二维图像中的位置映射到机器人基坐标系使用相机的信息属性(焦距和视场),从深度传感器输入,机器人正运动学。

机器人机械手的任务调度器发出信号触发这个子系统时,机器人必须在拾起并定位检测下一个对象的工作流。触发子系统的更多信息,请参阅使用触发子系统(金宝app模型)

3所示。移动机器人

移动机器人工作流由Stateflow图表控制移动机器人的整体行为,触发子系统,计划使用MATLAB函数的路径,路径跟踪子系统和一个使用控制逻辑遵循的参考路径。

建立仓库空间映射

为了获得地图的工作空间,您必须首先扫描环境。挂载激光雷达传感器对环境和周围的沙哑的导航使用buildmap函数创建一个占用网格地图。有关更多信息,请参见实现同步定位和映射(大满贯)与激光雷达扫描(导航工具箱)

答:移动机器人调度程序

移动机器人调度程序包含闲置,PlanPath,FollowPath州。默认情况下,移动机器人闲置状态,也就是说,路径规划和路径跟踪系统是不活跃的。移动机器人调度程序接收任务的命令主要任务调度器。当移动机器人调度程序接收Tasks.Robot_Navigate的任务,它的开关闲置状态PlanPath状态。调度器比继续步骤中,使用的反馈路径规划和路径跟踪subystems推进阶段,最终回到空闲状态,使得任务活动和指示主要任务调度器它可以继续高级任务。然后重复给新输入的过程主要任务调度器

b .路径规划

PlanPath状态,移动机器人调度程序集taskActive真正的,这触发了路径规划子系统。这个子系统包含一个MATLAB功能块,计划提供二进制占用网格地图上的道路使用plannerRRTStar对象。子系统返回一组路径锚点在SE(2),以及一个合乎逻辑的国旗,isPath表明一个路径是否成功。

一旦移动机器人调度程序接收的值真正的isPath,它的进步FollowPath状态。

c .路径跟踪

FollowPath状态,移动机器人调度程序设置requestFollowPath旗帜真正的,这触发了路径跟踪子系统。

中列出的子系统有这些主要部分,执行顺序:

  1. 控制运动与纯粹的追求——纯粹的追求块是主要的运动控制器。鉴于目前机器人的构成和即将到来的路标,它分配一个速度移动机器人路径。

  2. 鉴于距离目标更新行为- - - - - -检查距离目标零速目标子系统确保机器人停止时,它已经达到了我们的目标。模型还使用的输出检查距离目标子系统验证任务完成。

  3. 发送命令通过ROS露台- - - - - -空白消息发布块发送命令的线速度和角速度零速目标子系统到适当的速度控制器在露台的机器人。

在一起,这些组件驱动机器人通过露台的世界。一旦机器人到达目标,子系统返回一个值真正的atGoal,这表明移动机器人的调度器,这种状态就完成了。

分配变量在模型中使用

运行仿真软件模型中,您金宝app必须指定一些参数相关的机器人,默认配置,和目标。

这个模拟使用KINOVA Gen3机械手沙哑的移动机器人。机械手,模型的KINOVA Gen3用钳子在文件存储在一个垫子。加载机器人机械手刚体树。

负载(“helperKINOVAGen3MobileArmPickPlace.mat”);显示(机器人)

ans =轴(初级)属性:XLim: [-1.5000 - 1.5000] YLim: [-1.5000 - 1.5000] XScale:“线性”YScale:“线性”GridLineStyle:“-”位置:[0.1300 0.1100 0.7750 0.8150)单位:“规范化”显示所有属性

初始化选择和应用程序的地方

设置初始机械臂末端执行器的配置和名称的身体。

initialRobotJConfig = (1.583 0.086 -0.092 1.528 - 0.008 1.528 - -0.08);endEffectorFrame =“爪”;

指定主机器人手臂配置和两个姿势下降两种不同类型的对象。第一个提出对应的蓝色垃圾桶,1型的对象,第二个姿势对应于绿色垃圾桶,2型为对象。

homeArmPose = trvec2tform (0.0 [-0.35—0.4]) * axang2tform([0 0 1 -π/ 2])* axang2tform([0 1 0π]);detectionArmPose = trvec2tform (0.4 [0.0—0.56]) * axang2tform([0 0 1 -π/ 2])* axang2tform([0 1 0π]);placingArmPose = trvec2tform (0.6 [0.0—0.57]) * axang2tform([0 0 1 -π/ 2])* axang2tform([0 1 0π/ 2])* axang2tform ([1 0 0 -1.4]);

指定国内移动机器人位姿和两个姿势在蓝色和绿色垃圾箱删除对象,根据对象类型。

homeRobotPose = (7.95, 10.6, 0);% x, y,θplacingRobotPose2 = (13.16, 7.94, -0.92);placingRobotPose1 = (15.15, 3.8, -1.752);

设置仿真步长。

t = 0.1;

开始拾起并定位的工作流程

开始一个ROS-based模拟器KINOVA Gen3机器人和机器人的配置MATLAB连接模拟器。这个例子

开始露台模拟

这个例子使用一个虚拟机(VM)包含ROS旋律可供下载在这里。这个例子不支持ROS智力的,因为它依赖于RO金宝appS包只支持直到ROS旋律。

  • 虚拟机启动Ubuntu®桌面。

  • 在Ubuntu桌面,点击移动机械手的世界图标开始露台世界建立在这个例子中,或运行这些命令:

源/ opt / ros /旋律/ setup.bash;源~ / catkin_ws猛击/设置。bash出口出口GAZEBO_PLUGIN_PATH SVGA_VGPU10 = 0 = / home / user / src / GazeboPlugin /出口:美元GAZEBO_PLUGIN_PATH roslaunch kortex_gazebo_depth mobilemanipulator.launch

开始ROS主人和露台接口连接

指定的IP地址和端口号ROS大师在露台MATLAB可以与机器人通信模拟器。对于这个示例,192.168.203.128:11311露台的ROS的主人,您的主机地址192.168.31.1。这些替换为适当的值对应于你的ROS设备设置。启动ROS 1网络使用rosinit

rosIP =“172.16.34.129”;% ROS使机器的IP地址rosshutdownROS %关闭现有连接
关闭全局节点/ matlab_global_node_01327 NodeURI http://172.16.34.1:44315和http://172.16.34.129:11311 MasterURI。
rosinit (rosIP, 11311);
初始化全局节点/ matlab_global_node_63154 NodeURI http://172.16.34.1:34719和http://172.16.34.129:11311 MasterURI。

初始化露台接口使用gzinit

gzinit (rosIP);

初始化模型

设置初始的手臂姿势使用ROS在露台。

configResp = helperSetCurrentRobotJConfig (initialRobotJConfig);

物理学Unpause露台。

physicsClient = rossvcclient (“露台/ unpause_physics”);physicsResp =调用(physicsClient,“超时”3);

加载预先计算的仓库回收设施的地图。

负载(“helperRecyclingWarehouseMap.mat”);

启动工作流。通过选择模拟模型运行模拟选项卡。

该模型模拟,直到停止。

一旦这两个物品已经移动,与模型仍然运行,使用露台MATLAB接口重置红色瓶子和绿色的位置可以:

gzlink (“设置”,“绿能”,“链接”,“位置”(7.80007 11.2462 0.736121),“定位”[1 0 0 0]);
状态:成功的信息:参数设置成功。
gzlink (“设置”,“红色瓶”,“链接”,“位置”(7.932210479374374 11.287119941912177 0.783803767011424),“定位”[1 0 0 0]);
状态:成功的信息:参数设置成功。

你也可以改变位置值尝试控制器在不同的位置。MATLAB接口使您能够直接从MATLAB控制露台世界,通过命令使用等功能gzlinkgzmodel

重新启动模式:

  • 在Ubuntu VM关闭并重新运行脚本。或者使用终端的命令列表,简单地关闭(Ctrl + C)和调用roslaunch又命令:

roslaunch kortex_gazebo_depth mobilemanipulator.launch
  • 从运行setup命令初始化模型部分在MATLAB仿真软件,选择金宝app运行