官方地址:https://dev.px4.io/en/simulation/gazebo.html
框架图,各个UDP端口一目了然,仅有连接到模拟器的udp端口是随机的,从下图的启动界面可以看出,模拟器在等待14560端口的初始化数据,onboard运行在14540端口,和GSC通讯端口是14550
下面是编译不同飞机模型的一些命令:
cd ~/src/Firmware
#Quadrotor
make posix_sitl_default gazebo
#Quadrotor with Optical Flow
make posix gazebo_iris_opt_flow
#3DR Solo
make posix gazebo_solo
#Standard Plane
make posix gazebo_plane
#Standard VTOL
make posix_sitl_default gazebo_standard_vtol
#Tailsitter VTOL
make posix_sitl_default gazebo_tailsitter
#Ackerman vehicle (UGV/Rover)
make posix gazebo_rover
#HippoCampus TUHH (UUV: Unmanned Underwater Vehicle)
make posix_sitl_default gazebo_hippocampus
#起飞
pxh> commander takeoff
# The default takeoff location in SITL Gazebo can be overridden using environment variables.
# The variables to set are: PX4_HOME_LAT, PX4_HOME_LON, and PX4_HOME_ALT.
export PX4_HOME_LAT=28.452386
export PX4_HOME_LON=-13.867138
export PX4_HOME_ALT=28.5
make posix gazebo
#gazebo可以模拟GPS噪声
It is enabled by default in many vehicle SDF files: solo.sdf, iris.sdf, standard_vtol.sdf, delta_wing.sdf, plane.sdf, typhoon_h480, tailsitter.sdf.
To enable/disable GPS noise:
Tools/sitl_gazebo/models/iris/iris.sdf
Build any gazebo target in order to generate SDF files (for all vehicles). For example: make posix_sitl_default gazebo_iris
<plugin name='gps_plugin' filename='libgazebo_gps_plugin.so'>
<robotNamespace/>
<gpsNoise>true</gpsNoise>
</plugin>
软件仿真的思路:控制器从仿真模拟器获取传感器数据,控制器运算过后,把电机的转速、pwm反馈给模拟器。
UDP PORT:
14550 API/offboard
14540 GCS
启动mavros节点
#局域网
roslaunch mavros px4.launch fcu_url:="udp://:14540@192.168.1.36:14557"
#本机
roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"
gazebo可以直接把传感器(雷达......)的信息发送到ROS的topic,所以gazobo在启动的时候需要启动一些ros包
echo $ROS_PACKAGE_PATH //查看ROS包的路径信息
运行仿真前需要吧仿真包的路径信息导入:
source ~/catkin_ws/devel/setup.bash // (optional)这是自己创建的工作目录的ROS包
gazebo的插件、模型路径信息也需要添加到系统环境变量:
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/posix_sitl_default
$(pwd) $(pwd)/build/posix_sitl_default 分别是给到脚本文件的2个参数(目录信息)
然后更新一下ROS包的路径
pwd=~/src/Firmware,在源码根目录执行以下命令
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
启动PX4软件仿真
roslaunch px4 posix_sitl.launch