主要内容

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

这个例子探索了与MATLAB®中的Gazebo®模拟器的更深入的交互。主题包括创建简单的模型,向模型添加链接和关节,将模型连接在一起,以及对物体施加作用力。

先决条件:开始使用凉亭和模拟乌龟机器人

连接到露台®

在您的Linux®机器上,启动Gazebo。如果您正在使用的虚拟机开始使用凉亭和模拟乌龟机器人,启动露台空桌面世界。

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

ipAddress =“http://192.168.178.132:11311”;rosinit (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. Name: ' ball ' ModelObj: [1×1 org.apache.xerces.dom. Name: ' ball 'documentmpl链接:[]joint: []
sphereLink =通过addLink(球,“球”,1,“颜色”,[0 0 1 1])
sphereLink = ' link0 '
spawnModel(露台,球,(8.5 0 1))

Gazebo命令的所有单位都用SI单位指定。根据您的视角,您可能必须缩小才能看到球,因为它被放置在[8.5, 0, 1].这是一个场景的图像:

建造和生成保龄球瓶

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

X = [1.5 1.5 1.5 2.5 2.5 2.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(销“气缸”0.2 [1],“位置”[0 0 0.5]);link2 =通过addLink(销“球”, 0.2,“位置”[0 0 1.2],“颜色”,[0.7 0 0.2 1]);

的输出通过addLink生成一个变量,该变量包含已分配的链接名称。这些变量创建了关节。

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

联合= addJoint(销、link1 link2,“转动”,[0 0],[0 0 1]);

的论点addJoint函数包括对象、父对象、子对象、类型、限制和轴。

在定义bowlPin一次,您可以创建所有10个保龄球瓶从前面ExampleHelperGazeboModel.以下循环生成的模型在Gazebo使用xy向量。

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

将大头针添加到世界之后,它看起来像这样:

删除模型

如果场景中存在TurtleBot®,将其移除。看看模特的名单。删除命名为turtlebot3_burger对于这个特殊的世界。

如果ismember (“turtlebot3_burger”getSpawnedModels(凉亭)removeModel(露台,“turtlebot3_burger”);结束

产生内建模型

创建一个ExampleHelperGazeboModel为了泽西岛的屏障该对象在Gazebo网站上找到了这个模型。

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

在世界中使用生成两个Jersey障碍spawnModel

spawnModel(露台,障碍,[1.5 - 3 0]);%的障碍暂停(1);spawnModel(露台,障碍,[1.5 - 3 0]);%了障碍

注意:您需要一个Internet连接来生成这些示例中没有包含的模型。但是,如果您以前在您的Gazebo模拟中生成过一个模型,那么它是缓存的,因此您可以稍后在没有Internet连接的情况下生成它。

场景看起来像这样:

对球施加力

把球的手柄通过ExampleHelperGazeboSpawnedModel类。

spawnedBall = ExampleHelperGazeboSpawnedModel (ball.Name露台)
名称:'Ball'链接:{'link0'}关节:{0×1 cell}

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

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

将力施加到模型上applyForce函数。

applyForce (spawnedBall, sphereLink、持续时间、forceVec);暂停(5);

以下是碰撞及其后果的图片

移除模型并关闭

删除为本示例创建的模型。

exampleHelperGazeboCleanupBowling;

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

清晰的

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

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

完成后,关闭虚拟机上的Gazebo窗口。

另请参阅