带有 Gazebo 经典模拟的 ROS
ROS (机器人操作系统)可与 PX4 和 经典仿真场景Gazebo 模拟器。它使用 马弗罗斯 MAVLink 节点与 PX4 通信。
ROS/Gazebo Classic 与 PX4 的集成模式如下图所示(图中显示了 非专利 PX4 模拟环境).PX4 与模拟器(如 Gazebo Classic)通信,接收模拟世界的传感器数据,并发送电机和执行器数值。它与 GCS 和板外 API(如 ROS)通信,从模拟环境中发送遥测数据并接收指令。
信息
唯一的 微微 与 "正常行为 "不同的是,ROS 通过 14557 端口启动连接,而板外 API 通常通过 UDP 14540 端口监听连接。
安装 ROS 和 Gazebo Classic
信息
ROS 仅支持 Linux(不支持 macOS 或 Windows)。
在 Ubuntu Linux 上使用 ROS 设置 PX4 仿真的最简单方法是使用标准安装脚本,安装脚本可在以下网址找到 Linux > Gazebo 与 ROS 的开发环境.脚本会安装所需的一切:PX4、ROS "Melodic"、Gazebo Classic 9 模拟器,以及 马弗罗斯.
信息
脚本遵循 标准 ROS "Melodic" 安装说明其中包括 9 号仿真场景Gazebo。
启动 ROS/模拟
下面的命令可用于启动模拟,并通过以下方式连接 ROS 马弗罗斯其中 fcu_url
是运行模拟的计算机的 IP 地址/端口:
玫瑰发射 马夫罗斯 px4.launch fcu_url:="udp://:[email protected]:14557"
要连接到 localhost,请使用此 URL:
玫瑰发射 马夫罗斯 px4.launch fcu_url:="udp://:[email protected]:14557"
信息
调用 玫瑰发射 与 -w NUM_WORKERS
(覆盖工作线程数量)和/或 -v
(verbose),以便获得有关设置中缺少依赖项的警告。例如
玫瑰发射 马夫罗斯 px4.launch fcu_url:="udp://:[email protected]:14557"
使用 ROS 封装程序启动 Gazebo Classic
可以对 Gazebo Classic 仿真进行修改,以集成直接发布到 ROS 主题(如 Gazebo Classic ROS 激光插件)的传感器。为支持该功能,Gazebo Classic 必须使用相应的 ROS 封装程序启动。
有 ROS 启动脚本可用于运行 ROS 封装的模拟:
- posix_sitl.launch:普通 SITL 发射
- mavros_posix_sitl.launch:海丰国际信托有限公司和马弗洛斯公司
要运行封装在 ROS 中的 SITL,需要更新 ROS 环境,然后像往常一样启动:
(可选):只有在从源代码编译 MAVROS 或其他 ROS 软件包时,才将 catkin 工作区作为源代码:
CD <;PX4-Autopilot_clone>;
DONT_RUN=1 生产 px4_sitl_default 古董
消息来源 ~/catkin_ws/devel/setup.bash # (可选)
消息来源 Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd) /build/px4_sitl_default
出口 ros_package_path=$ros_package_path:$(pwd)
出口 ros_package_path=$ros_package_path:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic
玫瑰发射 px4 posix_sitl.launch
在自己的启动文件中包含上述启动文件之一,以便在模拟中运行 ROS 应用程序。
幕后花絮
本节说明了 玫瑰发射 之前提供的说明实际上是有效的(您可以按照这些说明手动启动模拟和 ROS)。
您将需要三个终端,所有这些终端都必须提供 ros 环境。
首先使用下面的命令启动模拟器:
CD <;PX4-Autopilot_clone>;
出口 ros_package_path=$ros_package_path:$(pwd)
玫瑰发射 px4 px4.launch
控制台的外观是这样的
信息 [px4] 实例:0
______ __ __ ___
| ___ \ \ \ / / / |
| |_/ / \ V / / /| |
| __/ / \ / /_| |
| | / /^\ \ \___ |
\_| \/ \/ |_/
px4 开始
信息 [px4] 启动脚本:/bin/sh etc/init.d-posix/rcS 0
信息 [init]发现模型自动启动文件为 SYS_AUTOSTART=10016
信息 [参数] 所选参数默认文件 parameters.bson
信息 [参数] 从 'parameters.bson';
信息 [参数] BSON 文档大小为 295 字节,解码后为 295 字节 (INT32:12、 FLOAT:3)
信息 [参数] 选定的参数备份文件 parameters_backup.bson
信息 [dataman] 数据管理器文件 './dataman'; 大小为 7866640 字节
etc/init.d-posix/rcS: 31: [: 非法 号
信息 [init] PX4_SIM_HOSTNAME: localhost
信息 [模拟器_mavlink]等待 对于 模拟器接受 TCP 端口 4560 的连接
在第二个终端中,确保可以使用 PX4-Autopilot 中定义的世界文件启动 gazebo。为此,请将环境变量设置为包含相应的 sitl_gazebo-classic
文件夹。
CD <;PX4-Autopilot_clone>;
消息来源 Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd) /build/px4_sitl_default
出口 ros_package_path=$ros_package_path:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic
现在启动 Gazebo Classic,就像使用 ROS 时一样
玫瑰发射 仿真场景Gazebo empty_world.launch world_name:=$(pwd) /Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds/empty.world
在第三个终端中,请确保您能使用 PX4-Autopilot 中定义的 sdf 文件生成模型。为此,请设置环境变量,将相应的 sitl_gazebo-classic
文件夹。
CD <;PX4-Autopilot_clone>;
消息来源 Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd) /build/px4_sitl_default
出口 ros_package_path=$ros_package_path:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic
现在插入 Iris 四旋翼飞行器模型,就像使用 ROS 时一样。加载 Iris 后,它会自动连接到 px4 应用程序。
玫瑰 仿真场景Gazebo 生成模型 -sdf -文件 $(pwd) /Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris/iris.sdf -模型 马兰花 -x 0 -y 0 -z 0 -R 0 -P 0 -Y 0