PX4+gazebo仿真中给无人机添加相机,以及改变相机的位姿

添加无人机摄像头

  • 找到你的需要运行的lauch文件,例如mavros_posix_sitl.lauch,编辑(最好先备份一份)。
cd ~/your_path/launch
degit mavros_posix_sitl.launch
  •  修改sdf部分(也就是添加一个传感器给无人机),传感器模块路径,选择一个相机(本文选择的是iris_depth_camera):
    ~/path_yo_your_px4/Tools/sitl_gazebo_models

 根据选择的相机修改launch文件,如下:

    <include file="$(find px4)/launch/posix_sitl_cp.launch">
        <arg name="x" value="$(arg x)"/>
        <arg name="y" value="$(arg y)"/>
        <arg name="z" value="$(arg z)"/>
        <arg name="R" value="$(arg R)"/>
        <arg name="P" value="$(arg P)"/>
        <arg name="Y" value="$(arg Y)"/>
        <arg name="world" value="$(arg world)"/>
        <arg name="vehicle" value="$(arg vehicle)"/>
        <arg name="sdf" value="$(arg sdf)"/>
        <arg name="gui" value="$(arg gui)"/>
        <arg name="interactive" value="$(arg interactive)"/>
        <arg name="debug" value="$(arg debug)"/>
        <arg name="verbose" value="$(arg verbose)"/>
        <arg name="paused" value="$(arg paused)"/>
        <arg name="respawn_gazebo" value="$(arg respawn_gazebo)"/>
<arg name="sdf" value="$(arg sdf)"/>
修改为:
<arg name="my_model" default="iris_depth_camera"/> !!必须在前面
<arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg my_model)/$(arg my_model).sdf"/> 
  • 保存后运行roslauch  mavros_posix_sitl.lauch即可看到无人机前方的摄像头

改变相机的位姿

  • 相机的位姿是在你所选的相机sdf文件修改的,以本文选择的ris_depth_camera为例,打开ris_depth_camera下ris_depth_camera.sdf的文件。
......
<include>
      <uri>model://depth_camera</uri>
      <pose>0.1 0 0 0 0 0</pose>
</include>
......
  • 其中<pose>0.1 0 0 0 0 0</pose>即表示相机相对于无人机的相对位姿; <pose> 的值应该包含六个元素,分别对应模型的 x、y、z 位置以及绕 x、y、z 轴的旋转,其中该坐标轴为右手坐标系,x轴指向无人机朝向,y轴指向无人机左侧,z轴指向上方。本文想让无人机相机朝下:
 <pose>0.1 0 0 0 0 0</pose>
修改为
 <pose>0.1 0 0 0 1.57 0</pose> #注意是弧度
  • 保存,运行roslauch  mavros_posix_sitl.lauch,可以看到无人机上的相机位姿已经改变,新建一个终端打开rviz
rviz

 选择rgb则可以看到相机视角。