将 last_letter 用作外部 SITL 模拟器

本文将介绍如何运行 SITL 为平面使用 last_letter 作为飞行模拟引擎(而不是 JSBSim).

备注

目前 last_letter 模拟器还处于早期开发阶段,也只支持固定翼飞机。预计其架构会经常更新和变化。最新文档 last_letter 可以在 Github 页面找到。

../_images/cover_init.jpg

概述

目前,Plane SITL 的默认模拟软件是 JSBSim.虽然这是一个著名的固定翼飞机仿真解决方案,但它主要针对全尺寸飞行器,并侧重于相关功能,如燃料管理、可变螺距驱动和油动装置。经过多年的使用,它很难进行修改以满足无人机的特殊应用。此外,它还与 FlightGear 作为可视化软件,它对系统资源的要求相当高。

相比之下,在机器人平台的开发过程中,更重要的往往是能够方便地访问系统状态,轻松更改模拟器组件,添加新的子系统,以及与其他软件包连接。

"这款" 机器人操作系统 (ROS) 框架可以满足这一需求。它是一个软件框架,位于操作系统之上,协调多个程序的执行以及它们之间的通信。它提供了编译以 C++ 和 Python 编写的程序并监控其执行的工具。它专门针对模块化机器人应用程序的开发,提供标准化的消息头、通用的系统工具、日志记录功能、跨多台机器的执行能力,最重要的是,它还提供了一个由用户提交的独立软件包组成的大型代码库,适用于各种不同的应用程序。

last_letter 是一个在 ROS 框架下主要用 C++ 编写的飞行模拟器。它对飞机模型进行了模块化描述,对空气动力学、螺旋桨和电机动力学、地面反应、风和阵风干扰等进行了建模。它的结构允许比较容易地编码附加功能,并为所有平台的统一模拟器、与其他 ROS 软件包的兼容性以及模块化的详细模拟解决方案提供了可能性。

先决条件

ROS 版本

最后字母 正在根据 靛蓝玫瑰这是唯一支持的版本。

提示

最后字母 最初是在 ROS Hydro 下开发的,过渡期间无需修改代码。虽然 ROS Hydro 不再受支持,但需要使用 last_letter 可能会发现它仍然有效。

操作系统要求

所选操作系统必须是 与 ROS Indigo 兼容 为了运行 last_letter.

我们推荐 Ubuntu 14.04.2,因为它是用于开发的平台。 last_letter 并与 SITL 兼容。两者还支持 Ubuntu Linux 13.10 和 14.04。 靛蓝玫瑰 和 SITL。

安装

首先在 Linux 机器上安装 Plane SITL,具体步骤如下 在 Linux 上设置 SITL.

就像其他 ROS 软件包一样、 last_letter 及其配套图书馆软件包 last_letter_msgs, uav_utils, math_utilsrqt_dashboard 需要在系统中安装 ROS。如果您以前有过使用 ROS 的经验,而且系统上也有 ROS,那么安装last_letter 只需克隆工作区中的软件包文件即可。如果没有,下面的说明将指导您完成整个过程。

安装 ROS

按照 请参阅 ROS 网站上的说明 安装 靛蓝玫瑰 在您的机器中。

创建工作区

安装 ROS 后,你需要创建一个 ROS 工作区。这是创建、复制或编辑自定义软件包(不属于 ROS 官方软件库的软件包)的目录。这也是 ROS 编译器(也称为 柔荑花序) 查找您的代码。

按照以下步骤 创建工作区的说明.它们会指示你在主文件夹下创建工作区,但也可以在其他地方创建。只需确保你对该文件夹拥有完全权限,因此在主文件夹下创建子文件夹是个不错的选择。确保 $ros_package_path 看到您的 catkin_ws/src 文件夹。

提示

你可能不想每次打开新控制台时都要输入工作区路径。为避免这种情况,请在您的 /home/<username>/.bashrc 文件(假设您直接在主文件夹下创建了 catkin 工作区)。

消息来源 ~/catkin_ws/发展/设置.敲击

克隆 last_letter 模拟器文件

在控制台中执行以下命令,下载并编译模拟器(不含注释):

roscd
CD ../来源 #导航至 ROS 用户源文件目录
git 复制 https://github./Georacer/last_letter.git #克隆模拟器文件
roscd
CD .. #在 ROS 工作区中导航
catkin_make # 编译文件

编译可能需要一段时间。

测试一切安装是否正确

在控制台中运行

玫瑰发射 last_letter 开创.启动

这将启动模拟器,并使用名为 RViz.......。 rqt_gui 应用程序也将启动;这里将显示航空电子仪器。

如果一切顺利,您就可以关闭一切,然后继续进入界面 last_letter 与平面 SITL.

使用 last_letter 作为 SITL 的物理模拟器

按照 平面 SITL 说明 下载并编译 Plane 代码。确保您的本地 git 分支已在 .

一切完成后,进入 Plane 目录并开始 SITL 模拟:

CD ~/ardupilot/ArduPlane
模拟载具.py -f last_letter --游戏机 --地图

这将运行 SITL、Plane、MAVProxy 和 last_letterRViz 一气呵成 RViz 显像器可能需要几秒钟才能启动)。该程序将自动调用 last_letter 启动文件,并设置 固定翼飞行器 参数改为 这样 last_letter 和 "平面 "被提出。如果 last_letter 当 MAVProxy 与 Plane 通信正常时,MAVProxy 控制台应显示三维卫星定位和 10 颗卫星的轨迹。

启动 sim_vehicle.py 时,将创建一个 xterm,用于启动 ArduPilot 和 last_letter。如果在运行模拟器时遇到困难,找到这个(最小化的)xterm 并查看其中的调试输出会很有帮助。

您可以像往常一样使用 MAVProxy 发布命令或 RC 重载。

功能缺失

在撰写本报告时(2015 年 3 月 17 日)、 last_letter 不支持常用的初始化参数(如起始位置)。此外,还不支持控制 JSBSim 模拟器的 MAVProxy 命令(如 wind 和 pause 命令)。

目前,选择飞机并改变其初始状态的唯一方法是编辑模拟器的参数文件,具体方法见 相应的手册页面.

在虚拟机中运行 last_letter

最后字母 中描述的配置在虚拟机中成功运行。 兼容性信息.要测试模拟器在特定环境中的性能,请查看为模拟器输出分配的 xterm 窗口:这里应该有一条帧速率信息,每 5 秒更新一次。

目前,Plane 和 SITL 设置为以标称的 500Hz 频率运行。频率超过 480Hz 表示模拟器的运行速度可以接受。