gazebo(二) URDF对象

一. 在模拟器中添加一个自定义的urdf

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

1.开启一个新的空world

roslaunch gazebo_ros empty_world.launch

2.创建一个简单的box urdf

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

为目标创建一个urdf并保存为objects.urdf

<robot name="simple_box">
  <link name="my_box">
    <inertial>//惯性
      <origin xyz="2 0 0" />//原点
      <mass value="1.0" />//质量
      <inertia  ixx="1.0" ixy="0.0"  ixz="0.0"  iyy="100.0"  iyz="0.0"  izz="1.0" />
    </inertial>
    <visual>//视觉
      <origin xyz="2 0 1"/>//原点
      <geometry>//几何
        <box size="1 1 2" />
      </geometry>
    </visual>
    <collision>//碰撞
      <origin xyz="2 0 1"/>//原点
      <geometry>//几何
        <box size="1 1 2" />
      </geometry>
    </collision>
  </link>
  <gazebo reference="my_box">
    <material>Gazebo/Blue</material>
  </gazebo>
</robot>

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

一级标签robot包含link和gazebo两个二级标签;

  link又包括inertial,visual,collision三个三级标签,

    inertial标签下有origin(原点),mass(质量)和inertia(惯性参数);

     visual和collision标签下有origin和geometry两个小标签;

  gazebo下只有一个material的小标签。

这段代码就是定义了各个标签的内容参数。

3.模拟器中生成模型

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }

要在高度z = 1米处上方生成URDF对象,并将模拟中的模型名称分配为my_object。

rosrun gazebo spawn_model -file `pwd`/object.urdf -urdf -z 1 -model my_object

应该的运行结果:(可是我运行出错了)

出错:[rospack] Error: package ‘gazebo‘ not found(还未解决)

二. 在模拟器中添加其他的示例目标

一些示例在https://bitbucket.org/osrf/simulator_gazebo/src/595f9360af4fa9e9fb4262623314ce947495c4db/gazebo_worlds/objects/?at=default 中被提供,例如你可以生成一个桌子通过以下语句:

roslaunch gazebo_worlds table.launch

简单看一下table.launch

<launch>
  <!-- send table urdf to param server -->
  <param name="table_description" command="$(find xacro)/xacro.py $(find gazebo_worlds)/objects/table.urdf.xacro" />

  <!-- push table_description to factory and spawn robot in gazebo -->
  <node name="spawn_table" pkg="gazebo" type="spawn_model" args="-urdf -param table_description -z 0.01 -model table_model" respawn="false" output="screen" />
</launch>

类似的,添加一个coffee杯子到桌面上

roslaunch gazebo_worlds coffee_cup.launch

p { margin-bottom: 0.25cm; line-height: 120% }
a:link { }
开启一个新的空world
--> { }

时间: 2024-08-05 20:44:19

gazebo(二) URDF对象的相关文章

未完成_gazebo(三) URDF对象

一. 在模拟器中添加一个自定义的urdf 1.开启一个新的空world roslaunch gazebo_ros empty_world.launch 2.创建一个简单的box urdf 为目标创建一个urdf并保存为objects.urdf <robot name="simple_box"> <link name="my_box"> <inertial>//惯性 <origin xyz="2 0 0"

深入理解Spring AOP之二代理对象生成

深入理解Spring AOP之二代理对象生成 spring代理对象 上一篇博客中讲到了Spring的一些基本概念和初步讲了实现方法,当中提到了动态代理技术,包含JDK动态代理技术和Cglib动态代理 动态代理这部分我有过一篇博客介绍:动态代理,想深入了解的朋友能够看一看,再回想一下,Spring中怎样区分採用JDK动态代理和CGlib动态代理: 假设目标对象的实现类实现了接口.Spring AOP 将会採用 JDK 动态代理来生成 AOP 代理类: 假设目标对象的实现类没有实现接口,Spring

二、对象和类型(第四部分)

二.对象和类型(第四部分) 四.匿名类型 var关键字,它用于表示隐式类型化的变量.var与new关键字一起使用时,可以创建匿名类型.匿名类型只是继承自Object且没有名称的类.该类的定义从初始化器中推断,类似于隐式类型化的变量. 五.结构 结构是值类型,而不是引用类型.它们存储在栈中或存储为内联(inline)(如果它们是存储在堆中的另一个对象的一部分),其生存周期的限制与简单的数据类性一样. *.结构不支持继承. *.对于结构,构造函数的工作有一些区别.尤其是在编译器总是提供了一个无参数的

Hibernate复习(二)主要对象

1.SessionFactory 一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例. SessionFactory有以下特点: –它是线程安全的,这意味着它的同一个实例可以被应用的多个线程共享. –它是重量级的,这意味着不能随意创建或销毁它的实例.如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实 例.如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFac

Qt对象模型之二:对象树与元对象系统

一.对象树的概念 Qt中使用对象树(object tree)来组织和管理所有的QObject类及其子类的对象.当创建一个QObject时,如果使用了其他的对象作为其父对象(parent),那么这个 QObject就会被添加到父对象的children()列表中,这样当父对象被销毁时,这个QObject也会被销毁.实践表明,这个机制非常适合于管理GUI对象.例如,一个 QShortcut(键盘快捷键)对象是相应窗口的一个子对象,所以当用户关闭了这个窗口 时,这个快捷键也可以被销毁. QWidget作

ES6学习及总结(二):对象的解构

ES6学习及总结(二):对象的解构 一:数组的解构 1:ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring).本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值. let [foo, [[bar], baz]] = [1, [[2], 3]]; foo // 1 bar // 2 baz // 3 let [ , , third] = ["foo", "bar", "

Hibernate(二)——POJO对象的操作

POJO对象其实就是我们的实体,这篇博客总结一下框架对POJO对象对应数据库主键的生成策略,和一些对POJO对象的简单增删改查的操作.  一,Hibernate框架中主键的生成策略有三种方式: 1,数据库负责生成主键(代理主键)  a,native:表示由设置的方言决定采用什么数据库生成主键方式,例如:在MySQL中会采用自增长的方式,主键字段必须都是整形类型:在Oracle数据库中,会采用序列的增长方式.  b,sequence:表示采用数据库的序列生成主键,适用于Oracle,DB2数据库中

Java 并发编程(二)对象的不变性和安全的发布对象

一.不变性 满足同步需求的另一种方法是使用不可变对象(Immutable Object).到目前为止,我们介绍了许多与原子性和可见性相关的问题,例如得到失效数据,丢失更新操作或光查到某个对象处于不一致的状态等等,都与多线程视图同时访问同一个可变的状态相关.如果对象的状态不会改变,那么这些问题与复杂性也就自然消失了. 如果某个对象在被创建后其状态就不能被修改,那么这个对象就被成为不可变对象.线程安全型是不可变对象的固有属性之一,他们的不变性条件是由构造函数创建的,只要他们的状态不改变,那么这些不变

单元测试(二)-桩对象

在单元测试时,难免会碰到一些外部依赖,外部依赖是指在系统中代码与其交互的对象,而且无法对其做人为控制,比如文件系统.线程.内存.时间.数据库结果集等,这时可以使用伪对象(fake)来替代外部依赖,桩对象(stub)便是其中之一 一 桩对象 a) 桩对象是对系统中现有依赖项的一个替代品,可人为控制.通过使用桩对象,无需涉及依赖项,即可直接对代码进行测试.使用桩对象可以轻松地控制模拟依赖项的返回值会行为(比如模拟内存溢出异常). b) 使用桩对象的前提是要找到原系统中的接缝(Seam).接缝是指代码