孫翔龍 梁彥剛
(國防科技大學空天科學學院 湖南省長沙市 410073)
PX4是一款致力于為學術界、業余愛好者和產業社區提供低成本高性能飛控的獨立開源項目,Gazebo是內置物理引擎的動力學仿真軟件,直接集成在ROS(Robot Operating System)開發環境中,二者都是智能無人機開發者常用的工具,國內外有不少相關的研究和工程開發。基于PX4飛控的四旋翼無人機在Gazebo仿真環境中進行強化學習訓練的相關研究過程中,需要一個接口程序使得強化學習訓練過程中能夠與仿真環境進行交互。本文就該程序的設計與實現方法進行探討,以期為其他研究者提供參考。
軟件在環仿真(SITL)中,PX4可以通過MAVLink消息與外部程序進行交互。同時,PX4也通過MAVLink消息與仿真環境(如Gazebo)進行交互。與Gazebo進行交互時,通常情況下,PX4向Gazebo發布驅動無人機螺旋槳電機的控制指令,Gazebo向PX4發布無人機模型(simulator)上的各種傳感器在仿真環境中感知到的信息。
在利用ROS開發環境進行編程時,由于各ROS節點(外部控制程序)之間通過ROS話題、服務進行交互,還需要利用MavROS功能包進行MAVLink消息與ROS話題、服務之間的轉換。消息流如圖1所示。

圖1:外部程序到simulator的消息流圖
Gazebo提供了一組ROS API,允許用戶修改并獲取有關模擬世界各個方面的信息。在ROS編程環境中,外部程序可以通過話題或服務直接與Gazebo仿真環境進行交互,如在仿真環境中增加、刪除模型、獲得模型狀態、設置模型狀態、暫停仿真等。……