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则可以看到相机视角。