主要内容

基于Gazebo和Simulink的机械臂金宝app机器人联合仿真

建立UR10机器人模型,在Gazebo和Simulink™之间进行联合仿真。金宝app与Gazebo的联合仿真使您可以直接从Simulink连接到Gazebo,并使用Simulink模型控制仿真节奏。金宝app

有关Gazebo联合模拟和首次连接的介绍,请参见在Simulink和Gazebo之间进行联合仿真金宝app.本例使用了该示例中提供的虚拟机和插件,但也告诉您如何配置您自己的模型和系统。本例中使用的机械臂是一个六自由度机器人,Universal Robots UR10。

为MATLAB和Gazebo创建机器人表示

首先,将操作器添加到凉亭.西安文件。在这个例子中,提供了一个world文件(Ur10BasicWithPlugin.world)中所提供的机器人模型loadrobot函数。如果您的目标只是与Gazebo模拟进行交互,那么一个world文件就足够了。若要了解如何仅使用world文件控制模型,请参见用Simulink在凉亭中控制差动驱动机器人金宝app.然而,本例的目标是使用MATLAB®和Simulink中的基于模型的工具来控制机器人。金宝app因此,您还应该在MATLAB中为您的机械手定义一个刚体树机器人模型。有几种方法可以同时获得这些表示形式:

  • 提供的机器人模型:得到刚体树loadrobot函数,然后使用源存储库为Gazebo创建模型。

  • 自定义URDF模型:方法将URDF文件作为刚体树对象导入importrobot函数。手动修改URDF文件,使其与Gazebo SDF模型格式兼容。将模型保存到新的或现有的模型中.西安文件。如果你只有一个凉亭.西安文件,考虑修改一个类似的操作器或从头开始构建机器人,使用Gazebo世界的查询。

负载机器人模型

首先,在MATLAB中加载并显示机器人。

[robot,info] = loadrobot(“universalUR10”“重力”,[0 0 -9.81]);显示(机器人);

从机器人模型创建凉亭世界

Ur10BasicWithPlugin.worldWorld文件附加到本例中还提供了来自虚拟机的在Simulink和Gazebo之间进行联合仿真金宝app的例子。如果您正在使用该示例中提供的虚拟机,请直接跳到凉亭的开放世界

世界文件包含一个UR10机器人,其基座关节固定在地面上,一个红框指向机械手。中提供的源存储库创建了世界信息输出:

信息。源
Ans = "https://github.com/ros-industrial/universal_robot/tree/1.2.1"

用于创建Ur10BasicWithPlugin.world文件:

  • 打开链接到的存储库信息。源并按说明书安装自述文件。确保标签匹配,以便机器人的数值数据与等效刚体树对象中使用的数值数据匹配。如果使用提供的虚拟机,请确保分配至少4 GB RAM和4个内核,以避免编译错误。在提供的虚拟机上,相关ROS包中的一些工具已被禁用,以避免安装过程中的依赖关系问题:

忽略ur_运动学包,点击universal_robot/ ur_运动学/CATKIN_IGNORE
  • 存储库安装一个包以使用roslaunch命令:

Roslaunch ur_gazebo ur10.launch
  • 将新创建的世界保存到a.西安文件。您还可以将模型保存到SDF文件中,并将其添加到现有的世界中,手动或通过Gazebo GUI。

  • 在世界文件源代码中,通过手动给机器人模型添加固定关节,将机器人固定在地平面上。

<!——添加一个自定义固定关节,将机器人固定到世界——> <关节名称="world_to_robot" type="fixed"> world ur10::base_link 
  • 在世界文件源代码中,添加一个可以移动的红色框对象。

<!——添加一个红色框——> <型号名称='redBox'> <链接名称='link'> %更多信息见文件
  • 在世界文件源代码中,通过添加以下行来附加Gazebo插件:

<!——包括露台插件,确保连接MATLAB / Simulink——> <插件名称=“GazeboPlugin文件名”=“l金宝appib / libGazeboCoSimPlugin。所以“> 14581  .

Ur10BasicWithPlugin.world附加到这个示例的World文件有其他注释,以澄清各种元素。要了解更多关于凉亭世界中的机器人元素,请搜索凉亭文档中的“制作一个简单的抓手”教程。

用机器人模型和插件建立凉亭

要运行这个示例,您必须访问一台安装了Gazebo的机器,并安装了用于联合模拟的插件和提供的world文件。这些步骤包括在在Simulink和Gazebo之间进行联合仿真金宝app.如果您正在使用该示例中提供的虚拟机,请直接跳到凉亭的开放世界.在R2021a发布之前下载的虚拟机可能需要更新。

要执行这个例子,你必须能够连接到一台安装了Linux的机器,并配置了相应的环境:

  • 设置Gazebo环境并添加插件。遵循手动安装Gazebo插件说明在在Simulink和Gazebo之间进行联合仿真金宝app.此示例假设插件位于/用户/ src / GazeboPlugIn回家目录中。

  • 将提供的world文件添加到目录中/home/user/worlds

  • 从机器人模型中访问机器人网格文件。网格文件为Collada (*.)DAE文件),这些文件是可视化机器人所需的。这个机器人是用loadrobot,因此存储库链接信息。源包含所有相关信息,包括网格。

disp (info.Source)
https://github.com/ros-industrial/universal_robot/tree/1.2.1
  • 在Gazebo机器上执行以下命令克隆链接的存储库。第二个命令中的URL应该匹配信息。源

cd /home/user/ catkin_ss /src git克隆-b 1.2.1 https://github.com/ros-industrial/universal_robot/ %#(可选)忽略ur_kinem_package,以避免在build touch universal_robot/ ur_kinem_ignore /CATKIN_IGNORE过程中出现依赖问题

请注意,构建这个例子的包是没有必要的(这个例子只需要相关的网格文件),尽管这样做也不会导致任何问题。

检查以确保机器人网格文件位于/home/user/catkin_ws/src/universal_robot ur_description /

凉亭的开放世界

在凉亭机的终端运行以下命令打开世界:

cd /home/user/src/ gazeboplugin /export export SVGA_VGPU10=0 gazebo /home/user/worlds/ ur10basicwithplugin。世界——详细

凉亭展示了机器人和世界上任何其他物体。

如果Gazebo模拟器无法打开,您可能需要重新安装插件。看到安装Gazebo Plugin手动在Simulink和Gazebo之间进行联合仿真金宝app

连接到凉亭

接下来,初始化到MATLAB和Simulink的Gazebo连接。金宝app指定IP地址和端口号14581,这是Gazebo插件的默认端口。

ipGazebo =“192.168.116.162”将此替换为凉亭机器的IPgzinit (ipGazebo, 14581);

检查模型

使用Gazebo MATLAB接口命令验证模型具有所需的元素。调用gzmodel函数返回当前Gazebo世界中的所有模型。

gzmodel (“列表”
MODEL LIST: ground_plane ur10 redBox

列出UR10机器人模型中的链接。

gzlink (“列表”“ur10”
模型:ur10链接:base_link forearm_link shoulder_link upper_arm_link腕链1_link腕链链接腕_3_link

在Simulink中控制机器人位置金宝app

现在凉亭世界已连接到MATLAB,您可以从Simulink执行联合仿真,以提高凉亭中的仿真状态。金宝app

gazeboCosimControl模型中使用滑块控制机械手的末端执行器位置用户输入:终端执行器部分。的逆运动学子系统生成实现所需位置的联合配置。然后,关节控制器子系统为每个关节产生力矩以达到这个位置。关于此模型的详细信息可以在在Simulink和Gazebo中联合仿真控制机械手机器人金宝app的例子。

露台溜蹄基于Simulink步长控制凉亭的步长。金宝app

打开模型并初始化用于发送命令的轨迹、起始位置和总线对象的模型参数。

打开模型open_system (“gazeboCosimControl”);初始化参数Ts = 0.01;Ts_trajectory = 0.05;Q0 = [0 -70 140 0 0 0]' * pi/180;负载(“custom_busobjects_basic”);

模拟模型几秒钟。

sim卡(“gazeboCosimControl”“StopTime”“5”);

中使用滑块用户输入:终端执行器左侧区域用来控制机器人的位置。

现在使用绿色的“run”箭头直接运行模型。

在模拟运行时,您可以发送MATLAB命令来更新世界状态。例如,将红色方框移动到新的位置。

将箱子移动到机器人对面离地面0.3 m的新位置gzlink (“设置”“红”“链接”“位置”,[0.5 -0.4 .3])
STATUS: Succeed MESSAGE:参数设置成功。

通过设置关节位置来改变机器人的位置,并查看控制器如何响应。

移动机器人提肩关节至/4[status,message] = gzjoint(“设置”“ur10”“shoulder_lift_joint”“轴”' 0 '“角”, -π/ 4);

由于凉亭现在由Simulink进行步进,因此暂停Simulink模型也会暂金宝app停凉亭模拟。

下一个步骤

了解更多关于gazeboCosimControl在仿真中控制机器人的模型,请参见在Simulink和Gazebo中联合仿真控制机械手机器人金宝app的例子。