# 带有 Gazebo 仿真的 ROS

ROS (机器人操作系统)可与 PX4 和 仿真场景Gazebo模拟器.它使用 马弗罗斯 MAVLink 节点与 PX4 通信。

ROS/Gazebo 与 PX4 的集成模式如下图所示(图中显示了 非专利 PX4 模拟环境).PX4 与模拟器(如 Gazebo)通信,接收模拟世界的传感器数据并发送电机和执行器数值。它与 GCS 和机外 API(如 ROS)通信,以发送模拟环境的遥测数据并接收指令。

PX4 SITL 概览

备注

唯一的 微微 与 "正常行为 "不同的是,ROS 通过 14557 端口启动连接,而板外 API 通常通过 UDP 14540 端口监听连接。

# 安装 ROS 和 Gazebo

备注

ROS 仅支持 Linux(不支持 macOS 或 Windows)。

在 Ubuntu Linux 上使用 ROS 设置 PX4 仿真的最简单方法是使用标准安装脚本,安装脚本可在以下网址找到 Linux > Gazebo 与 ROS 的开发环境.脚本会安装所需的一切:PX4、ROS "Melodic"、Gazebo 9 模拟器,以及 马弗罗斯.

备注

脚本遵循 标准 ROS "Melodic" 安装说明 (打开新窗口)其中包括 9 号仿真场景Gazebo。

# 启动 ROS/模拟

下面的命令可用于启动模拟,并通过以下方式连接 ROS 马弗罗斯其中 fcu_url 是运行模拟的计算机的 IP 地址/端口:

roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

要连接到 localhost,请使用此 URL:

roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

备注

调用 玫瑰发射-w (警告)和/或 -v (verbose),以便获得有关设置中缺少依赖项的警告。例如

roslaunch mavros px4.launch fcu_url:="udp://:[email protected]:14557"

# 使用 ROS 封装程序启动 Gazebo

可以对 Gazebo 仿真进行修改,以集成直接发布到 ROS 主题(如 Gazebo ROS 激光插件)的传感器。为支持这一功能,Gazebo 必须使用相应的 ROS 封装程序来启动。

有 ROS 启动脚本可用于运行 ROS 封装的模拟:

要运行封装在 ROS 中的 SITL,需要更新 ROS 环境,然后像往常一样启动:

(可选):只有在从源代码编译 MAVROS 或其他 ROS 软件包时,才将 catkin 工作区作为源代码:

CD <;PX4-Autopilot_clone>;
DONT_RUN=1 生产 px4_sitl_default 仿真场景Gazebo
消息来源 ~/catkin_ws/devel/setup.bash    # (可选)
消息来源 工具/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
出口 ros_package_path=$ros_package_path:$(pwd)
出口 ros_package_path=$ros_package_path:$(pwd)/Tools/sitl_gazebo roslaunch px4 posix_sitl.launch

在自己的启动文件中包含上述启动文件之一,以便在模拟中运行 ROS 应用程序。

# 幕后花絮

本节说明了 玫瑰发射 之前提供的说明实际上是有效的(您可以按照这些说明手动启动模拟和 ROS)。

首先使用下面的命令启动模拟器:

无模拟=1 生产 px4_sitl_default 仿真场景Gazebo

控制台的外观是这样的

[启动] shell id: 46979166467136
[启动] 任务名称:PX4 ______ __ __ ___
| ___ \ \ \ / / /   |
| |_/ /  \ V / / /| |
|  __/ /   \  / /_| |
| |     / /^\ \ \___  |
\_|     \/   \/     |_/ 准备飞行。INFO LED::init
729 DevObj::init led
736 已添加驱动程序 0x2aba34001080 /dev/led0 INFO LED::init
742 DevObj::init led INFO 未使用 /dev/ttyACM0 对于 无线电控制输入。假设通过 MAVLink 输入操纵杆。信息等待 对于 通过 UDP 获取初始数据。请启动飞行模拟器继续..

现在,在新终端中确保您能通过 Gazebo 菜单插入 Iris 模型,为此,请设置环境变量以包含相应的 sitl_gazebo 文件夹。

CD <;PX4-Autopilot_clone>;
消息来源 工具/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default

现在像使用 ROS 时一样启动 Gazebo,然后插入 Iris 四旋翼飞行器模型。一旦 Iris 载入,它将自动连接到 px4 应用程序。

roslaunch gazebo_ros empty_world.launch world_name:=$(pwd)/Tools/sitl_gazebo/worlds/iris.world