ardupilot在Linux上设置SITL(FlightGear)

2023-05-16

本页介绍如何在Linux上设置SITL(软件在环路中)。特定命令在Ubuntu上从12.10到16.04进行了测试。

概观

SITL模拟器允许您在没有任何硬件的情况下运行Plane,Copter或Rover。它是使用普通C ++编译器构建的自动导航代码,为您提供了一个本机可执行文件,允许您在没有硬件的情况下测试代码的行为。

SITL在Linux和Windows上本机运行。有关Windows安装,请参见单独的Windows安装页面 。

../_images/SITL_Linux.jpg

安装步骤

请按照设置构建环境(Linux / Ubuntu)中的说明设置完整环境,包括SITL。

 

启动SITL模拟器

要启动模拟器,请先将目录更改为车辆目录。例如,对于multicopter代码更改为ardupilot / ArduCopter

cd ardupilot/ArduCopter

然后使用sim_vehicle.py启动模拟器。第一次运行它时,应使用-w选项擦除虚拟EEPROM并为您的车辆加载正确的默认参数。

sim_vehicle.py -w

加载默认参数后,您可以正常启动模拟器。首先使用Ctrl-C杀死正在运行的sim_vehicle.py。然后:

sim_vehicle.py --console --map

提示

sim_vehicle.py 有许多有用的选项,从设置模拟速度到选择初始车辆位置。可以通过使用-h标志调用它们来列出这些(有些在使用SITL进行ArduPilot测试中进行了演示)。

提示

如果未加载地图标题,则可以通过单击“查看/服务”临时更改地图窗口中的地图提供程序。要在启动之间保持新的地图服务,请将以下行添加到“.bashrc”的末尾(通过所需的提供程序更改MicrosoftHyb):

export  MAP_SERVICE = “MicrosoftHyb”

学习MAVProxy

为了充分利用SITL,您需要学习使用MAVProxy。阅读MAVProxy文档。享受飞行!

更新MAVProxy和pymavlink

新版本的MAVProxy和pymavlink定期发布。如果您是常规SITL用户,则应使用此命令不时更新

pip install --upgrade pymavlink MAVProxy --user

FlightGear 3D视图(可选)

开发人员可以选择安装FlightGear飞行模拟器并使用它(在仅查看模式下)来显示车辆及其周围环境的3D模拟。与MAVProxyMission Planner提供的2D地图和HUD飞行显示相比,这提供了更好的可视化。

../_images/flightgear_copter_windows.jpg

FlightGear:KSFO的模拟直升机(点击查看大图)。 

SITL 在UDP端口5503上输出FlightGear兼容状态信息。我们强烈建议您在启动SITL之前启动FlightGear(尽管这不是必需的,但已发现它可以提高某些系统的稳定性)。

主要步骤(在Ubuntu Linux 14.04 LTS上测试)是:

  1. 从终端安装FlightGear:

    sudo apt-get install flightgear
  2. 打开一个新的命令提示符并运行相应的shell文件在您的车辆/ ardupilot /工具/自动测试/:fg_plane_view.sh (平面)和 fg_quad_view.sh (直升机)。

    这将启动FlightGear

    注:如果要在win10下运行flightgear,先下载安装flightgear,然后在/ardupilot/Tool/autotest路径下以管理员身份运行fg_quad_view.bat或fg_plane_view.bat。
  3. 以正常方式在终端中启动SITL。在这种情况下,我们将起始位置指定为旧金山机场(KSFO),因为这是一个有趣的机场,有很多可以看到:

    sim_vehicle.py -L KSFO

    FlightGear总是首先在KSFO上加载场景(这是硬编码到批处理文件中),但是一旦启动SITL,它将切换到模拟位置的场景。

提示:

   如果车辆似乎在太空中盘旋(没有那么FlightGear没有所选位置的任何风景文件。选择一个新的位置!

您现在可以像往常一样起飞和飞行 直升机或 飞机,观察车辆运动,包括俯仰,偏航和侧倾。

下一步

安装后,请参阅使用SITL进行ArduPilot测试,获取有关使用SITL进行飞行和测试的指导。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ardupilot在Linux上设置SITL(FlightGear) 的相关文章

  • 执行命令而不将其保留在历史记录中[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在进行软件开发时 经常需要在命令行命令中包含机密信息 典型示例是将项目部署到服务器的凭据设置为环境变量 当我不想将某些命令存储在命令历史记
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • Google BQ:运行参数化查询,其中参数变量是 BQ 表目标

    我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL 此 SQL 脚本将用于多个日期 客户端和 BQ 表目标 因此这需要在我的 BQ API 命令行调用中使用参数 标志 parameter 现在 我已经点击此链接来了解参数化查询 h
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • 如何使用 Cloud Init 挂载未格式化的 EBS 卷

    Context 我正在使用https wiki jenkins io display JENKINS Amazon EC2 Plugin https wiki jenkins io display JENKINS Amazon EC2 Pl
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • 为什么 fopen("any_path_name",'r') 不给出 NULL 作为返回值?

    在调试一些代码时 我得到如下内容 include
  • 在 Mono 上运行 .Net MVC5 应用程序

    我正在 Windows 上的 Visual Studio 2013 中开发 Net 4 5 1 MVC5 应用程序 现在我想知道 是否可以在Linux Ubuntu 12 04 上运行这个应用程序 可以使用OWIN吗 Owin 可以自托管运
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • Intel 上的 gcc 中的 _mm_pause 用法

    我参考过这个网页 https software intel com en us articles benefitting power and performance sleep loops https software intel com
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 为什么opencv videowriter这么慢?

    你好 stackoverflow 社区 我有一个棘手的问题 我需要你的帮助来了解这里发生了什么 我的程序从视频采集卡 Blackmagic 捕获帧 到目前为止 它工作得很好 同时我用 opencv cv imshow 显示捕获的图像 它也工
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设

随机推荐