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)上受支持。

在 Ubuntu Linux 上使用 ROS 进行 PX4 仿真的最简单方法是使用标准安装脚本,可以在 Linux 开发环境安装 > Gazebo with ROS 中找到。 该脚本安装了所有的环境,包括:PX4,ROS“Melodic”,Gazebo 9 和 MAVROS

该脚本是按照 标准的 ROS “Melodic”的安装说明,其中包括 Gazebo 9。

启动 ROS/Simulation

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

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

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

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

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

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

用 ROS Wrappers 启动 Gazebo

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

有launch文件的可以直接ROS中运行仿真

要在ROS中运行软件在环仿真,需要先source你的路径

(可选):如果您从源代码编译 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 ""