PX4控制无人机在Gazebo中飞行时由于视角跟随无人机在画面中心导致视角乱晃的解决方法
问题描述
无人机在Gazebo中飞行时,无人机始终处于画面中央,会带着视角乱晃,在Gazebo中进行任何操作视角都无法固定。
观察Gazebo左侧World栏GUI选项,发现有一个track_visual项,这个是Gazebo中的跟随视角,跟踪目标是无人机iris,但是手动点击无法取消,设置Gazebo使用FOLLOW选项跟随其他目标也无法实现,Gazebo打开时默认是不会进行视角跟随的,所以我猜测原因是PX4在Gazebo仿真中写了一个脚本来使无人机一直处于画面中央。
通过观察发现这个camera的名称为gzclient_camera,于是在PX4源码中搜索这几个关键词,比如client、camera、gazebo,结果还真找到了相关代码。
在Tools/sitl_run.sh文件中有如下的代码,控制Gazebo中的视角跟随无人机。
# Disable follow mode
if [[ "$PX4_NO_FOLLOW_MODE" != "1" ]]; then
follow_mode="--gui-client-plugin libgazebo_user_camera_plugin.so"
else
follow_mode=""
fi
解决方法
在运行仿真命令时加上前缀PX4_NO_FOLLOW_MODE=1
来屏蔽视角跟随部分代码。
PX4_NO_FOLLOW_MODE=1 make px4_sitl_rtps gazebo
之后再次运行即可在固定视角下观察无人机的运动。