matlab怎么删除对象,ROS与Matlab语言入门教程-在Gazebo中增加、建立和移除对象
本例程探索如何深层次地与MATLAB中的Gazebo仿真器交互。主题包括创建简单的模型、增加链接和加入模型、将模型连接在一起和应用力到物体。
预备知识:"4.2 开始使用Gazebo和仿真的TurtleBot","5.1从Gazebo读取模型和仿真属性"。
连接到Gazebo
在用户的Linux计算机启动Gazebo,如果使用"4.2开始使用Gazebo和仿真的TurtleBot"中的虚拟机,则使用“Gazebo Empty world”。使用下面的指令初始化ROS,需要用虚拟机的IP地址代替示例IP地址(192.168.1.1),创建一个“ExampleHelperGazeboCommunicator”类的实例。
ipaddress = '192.168.1.1'
rosinit(ipaddress)
gazebo = ExampleHelperGazeboCommunicator();
产生一个简单的球体
使用“ExampleHelperGazeboModel”类创建一个模型,下面的代码创建了一个球体,使用“addLink”定义属性,使用“spawnModel”函数产生球体。
ball = ExampleHelperGazeboModel('Ball')
spherelink = addLink(ball,'sphere',1,'color',[0 0 1 1])
spawnModel(gazebo,ball,[8.5,0,1]);
这些指令的输出类似如下所示:
ball =
ExampleHelperGazeboModel with properties:
Name: 'Ball'
ModelObj: [1x1 org.apache.xerces.dom.DocumentImpl]
Links: []
Joints: []
spherelink =
link0
所有Gazebo命令的单位都是SI单位,根据用户的视野,可能需要缩小才能看见球体,因为它被放置在[8.5,0,1],下面是该场景的图片。
建立和产生保龄球木柱
创建x和y向量表示保龄球木柱的位置(m)。
x = [1.5 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”创建圆柱和球体。
pin = ExampleHelperGazeboModel('BowlPin');
link1 = addLink(pin,'cylinder',[1 0.2],'position',[0,0,0.5])
link2 = addLink(pin,'sphere',0.2,'position',[0,0, 1.2],'color',[0.7 0 0.2 1])
“addLink”的输出产生一个变量包含了链接分配的命名。这些变量创建了接头。
使用“addJoint”定义两个链接之间的关系,此处,他们被旋转关节连接在一起。
joint = addJoint(pin,link1,link2,'revolute',[0 0],[0 0 1])
“addJoint”函数的参数依次是对象、父、子、类型、限制和坐标。
定义了一个“bowlPin”之后,用户可以使用先前的“ExampleHelperGazeboModel”创建10个保龄球木柱。下面的“for”循环使用x和y向量在Gazebo产生了模型。
for i = 1:10
spawnModel(gazebo,pin,[x(i),y(i),0.7]);
pause(1);
end
增加木柱之后,如下图所示。
移除模型
如果TurtleBot存在于场景中,则移除它。查看模型列表,移除名称为“mobile_base”的模型。
if ismember('mobile_base',getSpawnedModels(gazebo))
removeModel(gazebo,'mobile_base');
end
产生内置(嵌入)的模型
为纽泽西护栏创建一个“ExampleHelperGazeboModel”,该对象在Gazebo网站查找给模型。
barrier = ExampleHelperGazeboModel('jersey_barrier','gazeboDB');
使用“spawnModel”创建两个纽泽西护栏,
spawnModel(gazebo,barrier,[1.5,-3,0]); % Right barrier
pause(1);
spawnModel(gazebo,barrier,[1.5,3,0]); % Left barrier
注意,用户需要连接到互联网以生成模型,该模型为包含在这些例程中。然而,如果如果用户之前已经在Gazebo仿真中创建了模型,它已经缓存了,那么用户没有网络连接也能创建。
创建之后如下图所示。
应用推力到球体
通过“ExampleHelperGazeboSpawnedModel”类,获取球体的句柄。
spawnedBall = ExampleHelperGazeboSpawnedModel(ball.Name,gazebo)
为力的应用定义参数,此处持续时间设置为1秒,力的向量设置为x方向-75N。
duration = 1; % Seconds
forcevec = [-75 0 0]; % Newtons
使用“applyForce”函数,应用力到模型。
applyForce(spawnedBall, spherelink, duration, forcevec);
pause(5);
下面的图表示碰撞和后果。
移除模型并关闭
为了清除干净,删除本例程创建的所有模型。
exampleHelperGazeboCleanupBowling;
当用户完成工作后,清楚工作空间中的发布器、订阅器和其它有关ROS的对象是个良好的习惯。
clear
建议当完成ROS网络有关的工作之后,使用“rosshutdown”指令关闭全局节点和断开与Gazebo的连接。
rosshutdown
当用户已经完成操作,在虚拟机上关闭Gazebo窗口。
matlab怎么删除对象,ROS与Matlab语言入门教程-在Gazebo中增加、建立和移除对象相关推荐
- R语言入门教程知识 第二章 赋值代码与命名规则
快捷键 新建脚本: Ctrl + shift + N 清理控制台快捷键: Ctrl + L 赋值快捷键ALT + - 赋值法 1.符号方式赋值: 对象名 <- 对象值 2.函数方式赋值:as ...
- c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事
一.学习目标 了解C语言的结构体的使用方法 了解C语言结构体的结构的赋值 了解多种C语言结构体变量的赋值方法和取值方法 目录 <零基础看得懂的C语言入门教程>--(二)简单带你了解流程 & ...
- c语言入门教程文库,C语言入门教程(全集)课件
C语言入门教程(全集)课件 01123364105 Y N p AB X=0? YN P1 A A P2 a a b b Y Y N N y n A B P A A B X=0? 3 a97 3 U ...
- 2017年Go语言入门教程-徐培成-专题视频课程
2017年Go语言入门教程-3763人已学习 课程介绍 Go语言入门教程,只要你懂中文都可以看的懂本套教程,为任何想学习Go语言研制的教程. 课程收益 让任何人都可以轻松掌握G ...
- GO语言入门教程(二)
Hello,各位小伙伴,在接着之前发表的Go语言系列教程之投石问路之后,我们大致了解了一下Go语言的发展史和Go语言的优势,另外我也带着小伙伴进行了Go语言环境的安装和常用命令的介绍.接下来我们就正式 ...
- java编程输出平行四边形_JAVA语言入门教程之打印图形实例——打印平行四边形...
本文主要向大家介绍了JAVA语言入门教程之打印图形实例--打印平行四边形,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 输出平行四边形: public class Parallelo ...
- C语言入门教程学习 C语言学习包括哪些?
嵌入式开发有一定了解的朋友们知道是在操作系统内部开发的,对于操作系统内部来说基本上都是用C语言来进行编译的,所以说对于C语言的学习在嵌入式开发过程中是非常重要的.下面就给大家介绍一些C语言入门教程的相 ...
- 小白都能看懂的C语言入门教程
文章目录 C语言入门教程 1. 第一个C语言程序HelloWorld 2. C语言的数据类型 3. 常量变量的使用 4. 自定义标识符#define 5. 枚举的使用 6. 字符串和转义字符 7. 判 ...
- cad怎么向下位移,CAD基础操作入门教程,CAD怎么按坐标位移来移动对象的方法
CAD基础操作入门教程,CAD怎么按坐标位移来移动对象的方法 CAD绘图操作无疑是比较考验软件操作熟练以及创意设计思维的过程,作为cad设计师,软件熟练是基础也是根本,而创意思维是升华,关系着你的后期 ...
最新文章
- CDQ分治 + 树状数组 ---- C. Goodbye Souvenir(三维偏序+思维)
- MySQL Server系统架构
- ITK:复制复合变换CompositeTransform
- 《梦断代码》阅读笔记02
- 鸿蒙轻内核源码分析:掌握信号量使用差异
- 自动变量和开辟内存的生存期和作用域探讨
- 前端输入框错误提示_WEB/APP开发基础之旅--前端、服务器端、数据库综合开发案例...
- How To Replace The Firefox Icon With Your Logo
- C/C++ Memory Layout
- php对象依赖注入作用,php面向对象依赖注入理解及代码举例分析解释
- 学计算机高考分数线,2020高考分数线预测
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_2_BufferedOutputStream_字节缓冲...
- matlab j计算丰水期的值,科学计算与MATLAB语言超星2020期末考试查题公众号答案
- 华为小程序怎么弄出来_华为手机添加桌面小程序 华为手机小程序怎么弄出来...
- Azure云centos7安装图形化界面
- 珊瑚橙怎么配色配色?橙色优学教你如何玩转2019年度流行色
- 扛住阿里双十一高并发流量,Sentinel是怎么做到的?
- 技术团队分享改进总结
- 关于利用Klayout查看GDS需要导入工艺库的layer properties file(.lyp)
- 桃飘火焰焰,梨堕雪漠漠。(排序 贪心