使用从源码编译的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源代码。
步骤
打开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
- 使用从源码编译的SITL测试dronekit代码
- 如何从源码编译SITL
- 在C++中使用sqlite的示例(从下载、编译、工程建立、配置、测试代码编写全方位介绍)
- 在C++中使用sqlite的示例(从下载、编译、工程建立、配置、测试代码编写全方位介绍)
- DroneKit教程(一):安装DroneKit和测试工具
- 从源码编译skyeye的mmi_branch
- 教程:使用DroneKit在室内控制无人机
- 从源码编译postgresql
- 从源码编译Ambari
- 从源码编译TensorFlow
- 从源码编译TensorFlow
- 从Android源码编译生成的so文件查找源码
- dubbo源码 编译 测试
- 使用EditPlus工具进行简单的C#代码编译和测试
- 使用maven编译部署代码时,跳过Junit测试的办法
- 一些从源码编译 pytorch的时候的问题
- 从源码编译CEGUI for OGRE 的配置
- 从源码编译cef-chromium的正确步骤
- Windows核心编程
- MapReduce模型初探(二)
- android 解析未安装apk中的AndroidManifest.xml以及系统源码分析
- 封装+继承+多态-零星知识点
- AVL树的插入算法
- 使用从源码编译的SITL测试dronekit代码
- java提高篇之理解java的三大特性——多态
- 重拾C语言-函数多文件定义
- 链栈求解迷宫
- 设计模式复习、实践和总结(一)
- C++程序员学Java系列之十二:一维数组定义,初始化,遍历,最值及异常
- HDU 1166 敌兵布阵 线段树
- LeetCode 76. Minimum Window Substring
- 模板实现动态顺序表(含容量检测函数的详细讲解)