Gazebo仿真教程
PX4支持的軟件在環一共是有jMAVSim、Gazebo、AirSim這三種。其中,Gazebo是PX4官方最為推薦的一種仿真器,支持旋翼、固定翼、傾轉、小車等,是所有仿真器里支持平台最多的,也能支持多個無人機的仿真。
Gazebo仿真是如何進行的?
上一張官方圖,Flight stack代表飛控即PX4,Simulator代表仿真器(如Gazebo)。所有仿真器與PX4的通訊都是通過MAVLink消息來進行的,SITL使用simulator模塊中的simulator_mavlink.cpp來處理這些消息,而HITL是使用mavlink模塊中的mavlink_receiver.cpp來處理這些消息。梳理一下這里的消息流向:
PX4到仿真器。PX4給仿真器只會發送一個HIL_ACTUATOR_CONTROLS的MAVLink消息,熟悉PX4的應該知道這個對應的uORB消息是actuator_outputs.msg,也就是姿態控制器最后的輸出控制量。這里也就意味着,混控是在仿真器中進行的,仿真器中也包含電機的模型。
仿真器到PX4。仿真器的作用就是模擬真實飛行,即模擬計算出真實飛行時的傳感器狀態,包括GPS,IMU等,將這些信息發送給飛控后,再由飛控中的估計模塊計算出飛機狀態量。
外部到PX4。這里的外部就比如地面站QGC(可以外接遙控器),Mavros,Dronecode SDK等,這里也就可以模擬我們平時控制飛機的方式。
下面這張圖更清楚的表示出了PX4與各個部分之間的關系。仿真器包含了傳感器和執行機構的模型,負責產生傳感器的原始數據和執行最后的底層控制指令;Offboard API及QGC負責發送傳輸上層指令(位置期望點、速度期望值等)並且監控飛機狀態;PX4固件本身則運行控制及估計模塊(即飛控核心算法)。