本文已参与「新人创作礼」活动,一起开启掘金创作之路。
关于代码拉取和启动在我的第一篇文章中。 第二步就是让飞机起飞, 之前一直没有找到官方文档,所以我以为单纯地点击fly to就可以飞了,但是一直没有动静。 今天发现了官方文档,跟着文档走就可以成功起飞:
在这里翻译一下:
本教程提供了如何使用 SITL 和 MAVProxy 文档进行 Copter 测试的基本演练。
概述
本文主要面向希望使用 SITL 和 MAVProxy 测试新 Copter 构建和错误修复的开发人员。它展示了如何起飞、在引导模式下飞行、运行任务、设置地理围栏以及执行许多其他基本测试任务。
本教程是对主题使用 SITL 进行 ArduPilot 测试的补充。
我们在这里使用 MAVProxy,但如果您愿意,您可以将另一个地面站附加到 SITL(类似的说明可以在任何 GCS 中使用)。 本教程适用于直升机 - 有关其他车辆的类似教程,请参阅 Plane 和 Rover。
前提条件
本教程假设您已经在 Windows 或 Linux 上设置了 SITL,并且您已经使用 --map 和 --console 选项启动了 SITL:(我的 第一篇文章就是在Linux上设置SITL并启动)
cd ~/ardupilot/ArduCopter
../Tools/autotest/sim_vehicle.py --map --console
如果您希望在不同的地图位置开始模拟或使用与标准 + 布局四轴飞行器不同的帧类型(六、三、八、直升机等的 -f 选项),请参阅 SITL 高级测试。可以使用 –help 选项找到模拟器启动选项的完整列表:
sim_vehicle.py --help
起飞
本节说明如何在 GUIDED 模式下起飞。主要步骤是切换到 GUIDED 模式,启动油门,然后调用起飞命令。起飞必须在布防后 15 秒内开始,否则电机将解除防备!
在撰写本文时,Copter 仅支持在引导模式下起飞;如果您想执行任务,您首先必须起飞,然后切换到自动模式。从 AC3.3 开始,也可以在 AUTO 模式下起飞。
在 MAVProxy 命令提示符中输入以下命令。(也就是终端里输入命令)
mode guided
arm throttle
takeoff 40
直升机应该起飞到 40 米的高度,然后悬停(等待下一个命令)。
监控
在起飞期间,您可以在 Alt 字段中的控制台上查看高度增加。 开发人员可能会发现通过首先输入 gtakeoff 命令绘制起飞图很有用。(这个不知道怎么用这个命令)
故障排除
最常见的起飞困难来源是: 1.在除 GUIDED 以外的任何模式启动。 2.在车辆未设防时尝试起飞。如果您在臂油门后呼叫起飞太慢,或者如果车辆未通过预臂检查,则可能会发生这种情况
您可以使用命令 arm list 列出所有启用的检查:
LAND> arm list
LAND> all
params
voltage
compass
battery
ins
rc
baro
gps
您可以分别使用 arm check n 和 arm uncheck n 启用和禁用检查,其中 n 是检查的名称。使用 all 的 n 值来启用/禁用所有检查。
改变飞行模式 - 盘旋和着陆
下面的命令显示了如何将 Copter 置于 CIRCLE_RADIUS 为 2000cm 的 CIRCLE 模式。这将使直升机以恒定的高度绕圈飞行,前部指向圆圈的中心。
mode circle
param set circle_radius 2000
如果您将 CIRCLE_RADIUS 设置为零,则车辆将原地旋转。
Copter 支持许多其他飞行模式,您可以使用 mode 命令在 MAVProxy 中列出这些模式:
LAND> mode
LAND> ('Available modes: ', ['RTL', 'POSHOLD', 'LAND', 'OF_LOITER', 'STABILIZE', 'AUTO', 'GUIDED', 'DRIFT', 'FLIP', 'AUTOTUNE', 'ALT_HOLD', 'LOITER', 'POSITION', 'CIRCLE', 'SPORT', 'ACRO'])
如上图,可以通过指定模式modename来改变模式。只需输入模式名称即可设置许多模式,例如rtl,自动,稳定等。
例如,要降落在您所在的位置,您可以使用命令:mode land。要返回发射点然后着陆,您可以使用命令:rtl。
引导车辆
起飞后,您可以在引导模式下在地图上移动车辆。最简单的方法是在你想去的地图上右击,选择Fly to,然后输入目标高度。
您也可以使用以下两种格式在命令行上手动输入目标位置。如果只指定了海拔高度,将使用最后指定的 LAT/LON
guided ALTITUDE
guided LAT LON ALTITUDE
除了起飞之外,您还可以在 GUIDED 模式下发送以下命令:
setyaw ANGLE ANGULAR_SPEED MODE (MODE is 0 for "absolute" or 1 for "relative")
setspeed SPEED_VALUE
velocity x y z (m/s)
这些命令对应于 MAV_CMD_NAV_TAKEOFF、MAV_CMD_DO_CHANGE_SPEED、MAV_CMD_CONDITION_YAW、SET_POSITION_TARGET_LOCAL_NED。 在撰写本文时,不支持其他直升机命令 (MAVProxy #150)
飞行任务
您可以随时使用 wp load 命令加载任务。起飞后,当前任务将在您更改为自动模式后立即开始。
下面的示例显示了如何加载和启动其中一个测试任务,跳到第二个航路点,然后循环任务:
wp load ..\Tools\autotest\Generic_Missions\CMAC-circuit.txt
mode auto
wp set 2
wp loop
MAVProxy Waypoints 文档列出了完整的可用命令集(或者您可以通过在命令行上键入“wp”使用自动完成来获取它们)。 如果你想创建一个航点任务,这在地图上最容易完成:
- 右键单击地图,然后选择Mission|Draw
- 左键单击要显示点的地图。
当您第一次单击时,不会发生任何可见的事情。第二次单击后,线条将连接您的点以显示路径。
- 完成后,您可以通过右键单击地图并选择Mission|Loop 此方法仅允许您创建 MAV_CMD_NAV_WAYPOINT 命令。您可以使用missitor 模块(module loadmissitor)在Linux 上编辑任务和使用其他命令。这目前在 Windows 上已被破坏。也可以从文件中加载其他类型的命令。
设置地理围栏
GeoFence 是 Copter 用来限制车辆移动的虚拟屏障。 Copter 使用简单地理围栏中描述的简单“锡罐边界”。当超出半径或最大高度时,直升机返回发射点和/或着陆。 使用 Copter Fence 参数启用围栏(并选择其类型)。您可以使用 param show 列出围栏参数:
GUIDED> param show fence*
GUIDED> FENCE_ACTION 1.000000
FENCE_ALT_MAX 100.000000
FENCE_ENABLE 0.000000
FENCE_MARGIN 2.000000
FENCE_RADIUS 150.000000
FENCE_TYPE 3.000000
栅栏的高度边界为 100 米 (FENCE_ALT_MAX),并以家庭位置周围的半径为 FENCE_RADIUS 的圆为界。 FENCE_TYPE=3 表示同时使用半径和高度(您可以将类型更改为仅具有高度或仅圆形围栏的其他数字 - 或根本没有)。
最初禁用围栏 (FENCE_ENABLE=0)。要打开它,我们将值设置为 1:
GUIDED> param set fence_enable 1
当我们飞出半径时,模式变为 RTL(返回陆地)。如果由于某种原因,我们以 FENCE_MARGIN 的值更远地行驶,那么车辆将简单地着陆。
测试车辆
MAVProxy 允许您使用 param show * 列出影响车辆和模拟的所有参数,并使用 param set PARAM_NAME VALUE 设置任何参数。除了影响车辆本身,一些参数模拟特定硬件组件和环境(例如,风)的性能/故障。这些可以使用:param show sim* 列出。使用 SITL 进行 ArduPilot 测试主题解释了有关如何使用 SITL 进行测试的更多信息。