Gazebo 与 ROS 仿真

ROS(机器人操作系统)可与 PX4 和 Gazebo 模拟器一起使用。 它使用 MAVROS MAVLink 节点与 PX4 通信。

ROS/Gazebo 与 PX4 的集成遵循下图中的模式(这显示了 generic PX4 simulation environment )。 PX4 与模拟器(例如 Gazebo)通信以从模拟世界接收传感器数据并发送电机和执行器值。 它与 GCS 和 Offboard API(例如 ROS)通信,以从模拟环境发送遥测数据并接收命令。

PX4 SITL 概述

与“正常行为”的唯一 slight 差异是 ROS 在端口 14557 上启动连接,而外部 API 更典型地侦听 UDP 端口上的连接 14540。

安装 ROS 和 Gazebo

ROS 仅在 Linux(不是 macOS 或 Windows)上受支持。

The easiest way to setup PX4 simulation with ROS on Ubuntu Linux is to use the standard installation script that can be found at Development Environment on Linux > Gazebo with ROS. The script installs everything you need: PX4, ROS "Melodic", the Gazebo 9 simulator, and MAVROS.

The script follows the standard ROS "Melodic" installation instructions, which includes Gazebo 9.

启动 ROS/Simulation

以下命令可用于启动仿真并通过 MAVROS 将 ROS 连接到它,其中fcu_url是运行仿真的计算机的 IP /端口:

roslaunch mavros px4.launch fcu_url:="udp://:14540@192.168.1.36:14557"

要连接到本地主机,请使用以下 URL:

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

使用-w(警告)和/或-v(详细)调用 roslaunch 以获取有关设置中缺少依赖项的警告可能会很有用。 例如:

sh
  roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

用 ROS Wrappers 启动 Gazebo

可以对 Gazebo 模拟进行修改,以直接集成发布到 ROS 主题 (如 Gazebo ROS 激光插件)的传感器。 要支持此功能,必须使用适当的 ROS wrappers 启动 Gazebo。

有 ROS 启动脚本可用于运行包含在 ROS 中的模拟:

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

(可选):如果您从源代码编译 MAVROS 或其他 ROS 包,则仅获取 catkin 工作区:

cd <Firmware_clone>
DONT_RUN=1 make px4_sitl_default gazebo
source ~/catkin_ws/devel/setup.bash    # (optional)
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/sitl_gazebo
roslaunch px4 posix_sitl.launch

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

事件之后发生了什么

本节显示了之前提供的 roslaunch 指令实际上是如何工作的(您可以按照它们手动启动模拟和 ROS 系统)。

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

no_sim=1 make px4_sitl_default gazebo

控制台将如下所示:

[init] shell id: 46979166467136
[init] task name: px4

______  __   __    ___
| ___ \ \ \ / /   /   |
| |_/ /  \ V /   / /| |
|  __/   /   \  / /_| |
| |     / /^\ \ \___  |
\_|     \/   \/     |_/

Ready to fly.


INFO  LED::init
729 DevObj::init led
736 Added driver 0x2aba34001080 /dev/led0
INFO  LED::init
742 DevObj::init led
INFO  Not using /dev/ttyACM0 for radio control input. Assuming joystick input via MAVLink.
INFO  Waiting for initial data on UDP. Please start the flight simulator to proceed..

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

cd <Firmware_clone>
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default

现在就像使用 ROS 并插入 Iris 四轴飞行器模型一样启动 Gazebo。 一旦 Iris 被加载,它将自动连接到 Px4 应用程序。

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

results matching ""

    No results matching ""