使用从源码编译的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,运行
.. -- -,,, --
--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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)