一. 在模拟器中添加一个自定义的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
--> { }