Build Own Simulation World with Gazebo

爱⌒轻易说出口 提交于 2020-03-12 11:27:40

上次折腾完了发现Stage_ros没有IMU信息。

为了跑Cartographer所以只能用Gazebo。

参考Gazebo官方教材增加物体之后,如果Scale把方块拉成围墙,物体会摇摆,pitch yaw roll都会乱掉。

参考搭建模型仿真 ,Ctrl + B自定义自己的模型。

画好围墙,右击围墙可以设置位置和长宽高信息。

完事之后保存到自定义的位置,得到一个sdf文件和一个config文件。

config文件只是基本的描述信息。

sdf就是各个围墙的信息。

 

然后回到Gazebo, Ctrl + M 引入刚才设计的模型,保存为maze.world文件。

这个world只包含场景,不包含turtlebot模型(应该也可以直接引入)

这时找到turtlebot_empty.world文件,把maze.world里没有的相关信息(此处为ode)插入到maze.world。

<sdf version='1.6'>
  <world name='default'>
    <physics type="ode">
      <real_time_update_rate>1000.0</real_time_update_rate>
      <max_step_size>0.001</max_step_size>
      <real_time_factor>1</real_time_factor>
      <ode>
        <solver>
          <type>quick</type>
          <iters>150</iters>
          <precon_iters>0</precon_iters>
          <sor>1.400000</sor>
          <use_dynamic_moi_rescaling>1</use_dynamic_moi_rescaling>
        </solver>
        <constraints>
          <cfm>0.00001</cfm>
          <erp>0.2</erp>
          <contact_max_correcting_vel>2000.000000</contact_max_correcting_vel>
          <contact_surface_layer>0.01000</contact_surface_layer>
        </constraints>
      </ode>
    </physics>
............

 

最后把修改好的world文件丢到catkin/src/turtlebot_simulation/turtlebot_gazebo/world/下。

同时去catkin/src/turtlebot_simulation/turtlebot_gazebo/launch/下复制一份launch file,修改里面的world_name 值为maze.world。

也可以顺便修改robot postion。

另存为turtlebot3_maze.launch。

<launch>
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="x_pos" default="-9.0"/>
  <arg name="y_pos" default="-9.0"/>
  <arg name="z_pos" default="0.0"/>

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/maze.world"/> ---here
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

  <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

  <node pkg="gazebo_ros" type="spawn_model" name="spawn_urdf" args="-urdf -model turtlebot3_$(arg model) -x $(arg x_pos) -y $(arg y_pos) -z $(arg z_pos) -param robot_description" />
</launch>

 

最后,catkin_make。

roslaunch turtlebot3_gazebo turtlebot3_maze.launch

 

就是不知道有没有什么便捷方法提取里面的围墙信息作为groundtruth。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!