1.导入地图模型:放在~/.gazebo/models

注意修改路径

2.修改世界模型,把地图模型放进去:~/PX4_Firmware/Tools/sitl_gazebo/worlds/empty.world

加上类似于下面的内容

<include>
 <uri>model://hoop_red</uri>
 <pose>1.48 -2.23 0.01 0 0 0</pose>
</include>
</include>
<include>
 <uri>model://gan</uri>
 <pose>0 -1 0 0 0 0</pose>
</include>
<include>
  <uri>model://xiangzi</uri>
  <pose>1.5 -1 0 0 0 0</pose>
</include>

3.新增无人机上的相机:~/PX4_Firmware/launch/mavros_posix_sitl.launch

    <!-- vehicle model and world -->
    <arg name="est" default="ekf2"/>
    <arg name="vehicle" default="iris"/>
       <arg name="my_model" default="iris_fpv_cam"/>
    <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/empty.world"/>
    <arg name="vehicle_sdf" default="iris"/>
    <!--<arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg vehicle)/$(arg vehicle).sdf"/>-->
    <arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg my_model)/$(arg my_model).sdf"/>

4.设置相机朝向:~/PX4_Firmware/Tools/sitl_gazebo/models/iris_fpv_cam

    <include>
      <uri>model://fpv_cam</uri>
      <pose>0 0 0 0 1.57 0</pose>
    </include>

5.设置相机参数:~/PX4_Firmware/Tools/sitl_gazebo/models/fpv_cam

            <image>
              <width>640</width>
              <height>480</height>
            </image>

6.制作障碍物模型

简单模型可以直接在sdf中编辑,复杂模型可以先用SolidWorks画好后导出stl

注意模型文件夹的地址是~/.gazebo/models,与地图保存路径一致

gazebo导入STL文件_gazebo导入stl模型-CSDN博客

举例:

画了一个圆环,导入stl后想与两根杆子组合起来并涂上颜色,那么sdf文件如下

<?xml version="1.0"?>
<sdf version="1.6">
  <model name="gan">
    <static>true</static>

    <link name="main_link">
      <!-- 红色杆子(左) -->
      <visual name="red_pole_visual">
        <pose>-0.5 0 0.95 0 0 0</pose>
        <geometry>
          <cylinder>
            <radius>0.023</radius>
            <length>1.9</length>
          </cylinder>
        </geometry>
        <material>
          <ambient>1 0 0 1</ambient>
          <diffuse>1 0 0 1</diffuse>
        </material>
      </visual>
      <collision name="red_pole_collision">
        <pose>-0.5 0 0.95 0 0 0</pose>
        <geometry>
          <cylinder>
            <radius>0.023</radius>
            <length>1.9</length>
          </cylinder>
        </geometry>
      </collision>

      <!-- 绿色杆子(右) -->
      <visual name="green_pole_visual">
        <pose>0.5 0 0.95 0 0 0</pose>
        <geometry>
          <cylinder>
            <radius>0.023</radius>
            <length>1.9</length>
          </cylinder>
        </geometry>
        <material>
          <ambient>0 1 0 1</ambient>
          <diffuse>0 1 0 1</diffuse>
        </material>
      </visual>
      <collision name="green_pole_collision">
        <pose>0.5 0 0.95 0 0 0</pose>
        <geometry>
          <cylinder>
            <radius>0.023</radius>
            <length>1.9</length>
          </cylinder>
        </geometry>
      </collision>

      <!-- —— 新增竖直圆环 —— -->
      <!-- 1. Visual(显示用) -->
      <visual name="ring_visual">
        <!-- 将圆环中心对齐到两杆之间正中,高度同柱子顶端 0.95m -->
        <pose>-0.35 0 1.2 0 0 0</pose>
        <geometry>
          <mesh>
            <uri>model://gan/meshes/gan.stl</uri>
            <!-- 网格尺寸若已是实际大小,可留 default 1 1 1 -->
            <scale>0.07 0.07 0.07</scale>
          </mesh>
        </geometry>
        <material>
          <!-- 可改为想要的颜色,比如白色半光 -->
          <ambient>0.8 0.8 0.8 1</ambient>
          <diffuse>0.8 0.8 0.8 1</diffuse>
        </material>
      </visual>

      <!-- 2. Collision(碰撞用)-->
      <collision name="ring_collision">
        <pose>-0.35 0 1.2 0 0 0</pose>
        <geometry>
          <mesh>
            <uri>model://gan/meshes/gan.stl</uri>
            <scale>0.07 0.07 0.07</scale>
          </mesh>
        </geometry>
        <!-- 可根据需要添加摩擦、回复系数等表面参数 -->
      </collision>
      <!-- —— 结束新增 —— -->

    </link>
  </model>
</sdf>

最终效果是这样

也可以用gazebo自带的工具制作简单模型

位置pose

Logo

更多推荐