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

来源:互联网 发布:足球角球比分数据 编辑:程序博客网 时间:2024/06/05 22:32

使用从源码编译的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源代码。

步骤

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

    pip install -U mavproxy
  2. (已经完成编译SITL)运行SITL服务。打开Cygwin Terminal,运行

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

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

  3. 运行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窗口都会有信息显示。

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

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

  5. 运行代码。代码中,使用形如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

阅读全文
0 0
原创粉丝点击