gazebo中为Px4安装单目相机

注:适用于多无人机仿真(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。也可以自己编写图像接收程序。

以下是Ubuntu 18.04上安装ROS(Robot Operating System)Gazebo、MAVROS和PX4的教程: 1. 首先,确保你的Ubuntu 18.04系统已经更新到最新版本。打开终端并运行以下命令来更新系统: ``` sudo apt update sudo apt upgrade ``` 2. 安装必要的依赖项。在终端中运行以下命令: ``` sudo apt install build-essential cmake curl git sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool python-catkin-tools sudo rosdep init rosdep update ``` 3. 创建并初始化一个catkin工作空间。在终端中运行以下命令: ``` mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin init ``` 4. 下载PX4代码和模拟器。在终端中运行以下命令: ``` cd ~/catkin_ws/src git clone https://github.com/PX4/Firmware.git --recursive ``` 5. 安装PX4依赖项。在终端中运行以下命令: ``` cd ~/catkin_ws/src/Firmware ./Tools/setup/ubuntu.sh --no-nuttx ``` 6. 编译PX4。在终端中运行以下命令: ``` cd ~/catkin_ws catkin build px4 -j4 ``` 7. 安装Gazebo和相关插件。在终端中运行以下命令: ``` sudo apt install gazebo9 libgazebo9-dev sudo apt install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-ros-control ``` 8. 安装Mavros。在终端中运行以下命令: ``` sudo apt install ros-melodic-mavros ros-melodic-mavros-extras ``` 9. 配置序列设备。在终端中运行以下命令: ``` wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh chmod +x install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh ``` 10. 测试安装是否成功。在终端中运行以下命令,启动Gazebo仿真环境和Mavros节点: ``` roslaunch px4 mavros_posix_sitl.launch ``` 希望以上教程对你有所帮助!如果有任何问题,请在评论中提问。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值