实验平台
- 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就可以了。
- 单独启动SITL仿真器
在cmd中输入下述命令,启动SITL(Software in the Loop)仿真器。这里我们选择模型为四旋翼(quad)
dronekit-sitl copter --model quad
- 使用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
- 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,但可以正常起飞了。