gazebo中为Px4安装单目相机

2023-05-16

注:适用于多无人机仿真(Multi-Vehicle Simulation with Gazebo)

       即使用 multi_uav_mavros_sitl.launch 启动无人机仿真

1、添加相机插件

修改Tools/sitl_gazebo/models/rotors_description/urdf/component_snippets.xacro文件

下面这段代码是根据原有程序(<!-- Macro to add a camera.--> 下面那一段)修改的,去掉了一些我用不到的相机参数。

  <xacro:if value="$(arg enable_camera_truth)">
    <xacro:macro name="camera_macro"
      params="namespace parent_link camera_suffix frame_rate
        horizontal_fov image_width image_height min_distance
        max_distance enable_visual *origin">
      <link name="${namespace}/camera_${camera_suffix}_link">
        <collision>
          <origin xyz="0 0 0" rpy="0 0 0" />
          <geometry>
            <box>
              <size>0.01 0.01 0.01</size>
            </box>
          </geometry>
        </collision>
        <xacro:if value="${enable_visual}">
          <visual>
            <origin xyz="0 0 0" rpy="0 1.57079632679 0" />
            <geometry>
              <box>
                <size>0.01 0.01 0.01</size>
              </box>
            </geometry>
            <material name="red" />
          </visual>
        </xacro:if>
        <inertial>
          <mass value="1e-5" />
          <origin xyz="0 0 0" rpy="0 0 0" />
          <inertia ixx="1e-6" ixy="0" ixz="0" iyy="1e-6" iyz="0" izz="1e-6" />
        </inertial>
      </link>
      <joint name="${namespace}/camera_${camera_suffix}_joint" type="fixed">
        <xacro:insert_block name="origin" />
        <parent link="${parent_link}" />
        <child link="${namespace}/camera_${camera_suffix}_link" />
      </joint>
      <gazebo reference="${namespace}/camera_${camera_suffix}_link">
        <sensor type="camera" name="${namespace}_camera_${camera_suffix}">
          <update_rate>${frame_rate}</update_rate>
          <camera name="head">
            <horizontal_fov>${horizontal_fov}</horizontal_fov>
            <image>
              <width>${image_width}</width>
              <height>${image_height}</height>
              <!--<format>${image_format}</format>-->
            </image>
            <clip>
              <near>${min_distance}</near>
              <far>${max_distance}</far>
            </clip>
          </camera>
          <plugin name="${namespace}_camera_${camera_suffix}_controller" filename="libgazebo_ros_camera.so">
            <robotNamespace>${namespace}</robotNamespace>
            <alwaysOn>true</alwaysOn>
            <updateRate>${frame_rate}</updateRate>
            <cameraName>camera_${camera_suffix}</cameraName>
            <imageTopicName>image_raw</imageTopicName>
            <cameraInfoTopicName>camera_info</cameraInfoTopicName>
            <frameName>camera_${camera_suffix}_link</frameName>
            <hackBaseline>0.0</hackBaseline>
            <distortionK1>0.0</distortionK1>
            <distortionK2>0.0</distortionK2>
            <distortionK3>0.0</distortionK3>
            <distortionT1>0.0</distortionT1>
            <distortionT2>0.0</distortionT2>
          </plugin>
        </sensor>
      </gazebo>
    </xacro:macro>
  </xacro:if>

2、激活相机插件

Tools/sitl_gazebo/models/rotors_description/urdf/iris_base.xacro中开启相机模块

   <!-- Instantiate camera plugin. -->
  <xacro:if value="$(arg enable_camera_truth)">
    <xacro:camera_macro
      namespace="${namespace}"
      enable_visual="true"
      parent_link="base_link"
      camera_suffix="Monocular"
      frame_rate="30"
      horizontal_fov="1.047"
      image_width="320"
      image_height="240"
      min_distance="0.1"
      max_distance="100"
      >
      <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" />
    </xacro:camera_macro> 
  </xacro:if>

不要忘记在iris_base.xacro文件起始部分定义变量enable_camera_truth 的值为true

<xacro:arg name='enable_camera_truth' default='true' />

3、运行仿真环境

roslaunch px4 multi_uav_mavros_sitl.launch

4、仿真结果

快捷查看方式,点击gazebo导航栏中window->Topic Visualization,在弹出的窗口中选择相机的topic。也可以自己编写图像接收程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gazebo中为Px4安装单目相机 的相关文章

随机推荐