主要内容

在凉亭中添加、构建和删除对象

本示例探索了来自MATLAB®的Gazebo®模拟器更深入的交互。主题包括创建简单的模型,为模型添加链接和关节,将模型连接在一起,以及将力应用到物体上。

先决条件:开始凉亭和模拟的龟毡

连接到露台®

在您的Linux®机器上启动Gazebo。如果您使用的虚拟机来自开始凉亭和模拟的龟毡,开始凉亭空桌面世界。

通过替换初始化ROSipaddress使用虚拟机的IP地址。对象的实例ExampleHelperGazeboCommunicator类。

ipAddress =“http://192.168.178.132:11311”;罗斯尼特(ipaddress)
使用NodeURI http://192.168.178.1:52158/初始化全局节点/matlab_global_node_77778
露台= ExampleHelperGazeboCommunicator;

产生一个简单的球体

要创建模型,请使用ExampleHelperGazeboModel类。定义属性(使用addlink.),并使用spawnModel函数。

球= ExampleHelperGazeboModel (“球”
Name: ' ball ' ModelObj: [1×1 org.apache.xerces.dom.]documentmpl]链接:[]接头:[]
sphereLink =通过addLink(球,“领域”,1,“颜色”,[0 0 1 1])
sphereLink = ' link0 '
spawnModel(露台,球,(8.5 0 1))

凉亭命令的所有单位都以SI单位指定。根据您的观点,您可能必须缩小才能看到球,因为它被放置在[8.5,0,1].下面是场景的图片:

建造和产卵保龄球瓶

创建向量xy为保龄球瓶的位置(以米计)。

X = [1.5 1.5 1.5 1.5 2.5 2.5 3.5 3.5 3.5 4.5];Y = [-1.5 -0.5 0.5 1.5 -1 0 1 -0.5 0.5 0];

定义保龄球瓶的基本模型ExampleHelperGazeboModel目的。用addlink.创造出圆柱体和球。

销= ExampleHelperGazeboModel (“BowlPin”);LINK1 = AddLink(PIN,“气缸”0.2 [1],“位置”[0 0 0.5]);link2 =通过addLink(销“领域”, 0.2,“位置”,[0 0 1.2],“颜色”,[0.7 0 0.2 1]);

的输出addlink.生成一个变量,其中包含为链接分配的名称。这些变量创建了关节。

addJoint定义两个链接之间的关系。在这种情况下,它们由一个转动关节连接在一起。

关节= Addjoint(PIN,LINK1,LINK2,“转动”,[0 0],[0 0 1]);

关于addJoint函数是对象、父类、子类、类型、极限和轴。

定义后bowlPin一旦,您可以从前面创建所有十个保龄球ExampleHelperGazeboModel.以下循环生成凉亭中的模型xy向量。

i = 1:10 spawnModel(gazebo,pin,[x(i),y(i),0.7]);暂停(1);结束

在向世界添加引脚后,它看起来像这样:

删除模型

如果现场存在TurtleBot®,请将其删除。查看模型列表。删除一个名为turtlebot3_burger对于这个特殊的世界。

如果ismember (“turtlebot3_burger”,GetSawnEdModels(凉亭))RemoveModel(凉亭,“turtlebot3_burger”);结束

产卵内置模型

创建一个ExampleHelperGazeboModel对于泽西障碍。该对象在凉亭网站上找到此模型。

障碍= examplehelpergazebomodel(“jersey_barrier”“gazeboDB”);

在世界上产卵两个泽西障碍使用spawnModel

spawnModel(露台,障碍,[1.5 - 3 0]);%右侧障碍暂停(1);SpawnModel(凉亭,屏障,[1.5 3 0]);%了障碍

注意:您需要一个Internet连接,以向这些示例中包含的模型产卵。但是,如果您之前在凉亭模拟中生成了模型,则会缓存,因此您可以在没有Internet连接的情况下将其生成它。

这个场景看起来像这个数字:

对球施加力

收回手柄,使球通过examplehelpergazebosawawawawhedmodel.类。

spawnedBall = ExampleHelperGazeboSpawnedModel (ball.Name露台)
spawnedball = examplehelpergazeBoSheawnedModel与属性:名称:'球'链接:{'link0'}关节:{0×1个单元}

定义力应用的参数。这里将持续时间设置为1第二,力矢量设置为-75牛顿在x方向。

时间= 1;%秒forceevec = [-75 0 0];%牛顿

使用该力量将力应用于模型ApplyForce.函数。

ApplyForce(SpawnEdball,Spherelink,持续时间,Forcevec);暂停(5);

以下是碰撞和事故后的图片

移除模型并关闭

删除为这个示例创建的模型。

examplehelpergazebocleanupbowling;

使用完发布者、订阅者和其他与ros相关的对象后,请清除它们的工作区。

清除

rosshutdown一旦你完成了ROS网络的工作。关闭全局节点并断开与Gazebo的连接。

rosshutdown
使用NodeURI http://192.168.178.1:52158/关闭全局节点/matlab_global_node_77778

完成后,将在虚拟机上关闭凉亭窗口。

另请参阅