使用从源码编译的SITL测试dronekit代码

xiaoxiao2021-02-28  135

使用从源码编译的SITL测试DroneKit代码

本作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议进行许可。

DroneKit和SITL简述

DroneKit是一款Python语言的无人机开发库,可以对使用MAVLink通讯协议的ArduPilot和PX4无人机进行控制。如果已经安装了pip,使用pip install dronekit 可以安装DroneKit。

SITL = Software in the loop,是著名无人机开源社区ArduPilot打造的开源软件模拟器。用户可以在不依托任何硬件的情况下,对固定翼(Plane)、旋翼机(Copter)和车辆(Rover)进行模拟。在通常情况下,如果你成功安装了python和pip,不论你身处何种平台,都可以使用pip install dronekit-sitl命令安装SITL。

但是,如果需要使用其他版本的SITL,就只能自己从源代码编译。这篇文章 详细介绍了从源代码编译SITL的方法。假设当你已经完成了上述所有步骤,成功从源代码编译了所需的SITL,本文将介绍如何使用SITL测试DroneKit源代码。

步骤

打开cmd,升级mavproxy组件。运行

pip install -U mavproxy

(已经完成编译SITL)运行SITL服务。打开Cygwin Terminal,运行

cd ~/ardupilot/ArduCopter/ ./ArduCopter.elf --home -35,149,584,270 --model quad

--home 参数指示无人机出生点的经纬度、海拔、朝向,--model 用于设置机型(此处为四旋翼)。

运行mavproxy服务。新开一个cmd,运行

mavproxy.py --master tcp:127.0.0.1:5760 --sitl 127.0.0.1:5501 --out 127.0.0.1:14550 --out 127.0.0.1:14551

若正常连接,mavproxy和sitl窗口都会有信息显示。

运行MissionPlanner地面站。地面站打开后,右上角选择UDP,点击connect连接。端口可填写14550或14551

如果连接成功,MissionPlanner界面右上角显示绿色连线connected,同时自动下载参数表。

运行代码。代码中,使用形如vehicle = connect('127.0.0.1:14551', wait_ready=True)的代码连接SITL。注意端口不要冲突(即不同服务要使用不同的端口)。

如果正常连接,运行DroneKit程序的窗口将显示mavproxy信息。

错误参考

MAVProxy与SITL连接后,显示FRAME UNKNOWN

有同学反映,完成第三步操作,MAVProxy和SITL成功建立连接后,MAVProxy窗口会提示 FRAME UNKNOWN。在此情况下,一般SITL都无法正常地处理指令,也不能正常解锁。

在MAVProxy窗口下,输入param set FRAME_CLASS 1命令,可以解决该问题。另外,因为MAVProxy会保存当前参数供下一次使用,因此设置一次后,之后打开应当均输出正常。

因为各种原因,无法正常解锁

飞行器的解锁需要通过各种Pre-arming Check(起飞前检查),如果SITL的参数设置有误,很可能无法正常解锁,并且有消息提示 PreArm:加报错信息 。为了解决该问题并顺利进行测试,一种做法,当然是为SITL正确配置每一项参数,但这样太过麻烦;可以在MAVProxy窗口中,输入param set ARMING_CHECK 0 ,将Pre-arming Check取消。

版本信息

1.0 20170702 initial commit 1.1 20170711 add troubleshooting

转载请注明原文地址: https://www.6miu.com/read-49070.html

最新回复(0)