在Windows平台使用python3调用dronekit并仿真

实验平台

  • Windows 10
  • Python3.7
  • dronekit-python 2.9.2

本文使用上述环境进行实验。dronekit-python官方文档1的Introduction/Release Notes部分更新到dronekit-python 2.9.1,并已经对python3有基本的支持。通过pip,可以在PyPI上获取2019年更新的版本dronekit-python 2.9.22。目前,我们只是对dronekit进行简单的使用,包括在树莓派Ubuntu mate 20.04上进行部署后,使用实体无人机起飞、位置控制、速度控制、降落。虽然文档中其他章节表示不支持python3,但我们在上述使用过程中都可以在python3的环境中运行。

仿真中MissionPlanner地面站的使用

根据文档Developing/Simulated Vehicle/Connecting an additional Ground Station部分所示,如果仿真中要连接地面站,需要通过MAVProxy。在ardupilot文档中可以知道Windows系统需要安装mavproxy.exe,而不同于其他系统可以通过pip安装mavproxy.py

下载并安装MAVProxy后,可以通过以下步骤使用仿真器并在地面站中显示。下面会涉及一些命令的输入,Windows的终端我们使用cmd就可以了。

  1. 单独启动SITL仿真器
    在cmd中输入下述命令,启动SITL(Software in the Loop)仿真器。这里我们选择模型为四旋翼(quad)
dronekit-sitl copter --model quad
  1. 使用MAVProxy连接
    地面站MissionPlanner中要获取消息,可以通过以下命令连接需要用到的端口。如果找不到mavproxy.exe可以用刚刚安装到的完整路径。
    注意,tcp地址前要加tcp:,udp则不用。
mavproxy.exe  --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
  1. MissionPlanner连接到仿真器
    之后,便可以打开MissionPlanner,在右上角选择UDP协议进行连接,端口可以是14550或14551

仿真不能正常起飞

pymavlink2.4.9引入了的新bug3,导致仿真不能正常起飞。运行起飞的脚本后,高度一直没有什么大的变化,不久,电机会自动disarm(arm指通电可以起飞的状态,disarm则相反)。降低pymavlink的版本,可以解决这个问题。

pip uninstall pymavlink 
pip install pymavlink==2.4.8

虽然安装时会报mavproxy 1.8.48 requires pymavlink>=2.4.14, but you have pymavlink 2.4.8 which is incompatible,安装后运行起飞脚本时,仍然会有ERROR:autopilot:ARMING MOTORS,但可以正常起飞了。

参考文献


  1. https://dronekit-python.readthedocs.io/en/latest/ ↩︎

  2. https://pypi.org/search/?q=dronekit ↩︎

  3. https://github.com/dronekit/dronekit-python/issues/1083 ↩︎

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值