六、Ardupilot飞控
一、 刷写Ardupilot固件
直接打开QGC地面站,点击到软件中的固件界面,插上usb,选择固件类型,点击刷写即可,步骤如下图所示。
.png)
设备配置
.png)
刷写Ardupilot固件
二、无人机飞行配置
刷写固件完成后对遥控器进行校准和配置飞行模式,步骤如下。
.png)
设备配置
.png)
遥控校准
.png)
飞行模式测试
.png)
遥控器校准及飞行配置
由于无人机在室内接入动捕飞行,要修改一些参数配置使其接入动捕数据,配置修改如下:
AHRS_EKF_TYPE=3
EK3_ENABLE=1
EK2_ENABLE=0
COMPASS_USE=0
COMPASS_USE2=0
COMPASS_USE3=0
VISO_TYPE=1
EK3_SRC1_POSXY=6
EK3_SRC1_POSZ=6
EK3_SRC1_YAW=6
EK3_SRC1_VELXY=0
EK3_SRC1_VELZ=0
.png)
设备设置
.png)
动捕接入参数配置
修改配置的同时也要将解锁时屏蔽的安全检查关掉,步骤如下。
.png)
关闭安全检查
.png)
解锁检查配置
.png)
安全设置
.png)
安全配置图
三、MAVProxy转发动捕数据操作说明
- 通过Nokov官方仓库下载MAVProxy XINGYING-4.x分支代码。
git clone -b XINGYING-4.x https://github.com/NOKOV-MOCAP/MAVProxy.git --recursive
.png)
拉取代码
- 下载XING_Python_SDK,解压。

下载Python SDK
- 在XING_Python_SDK-4.1.0.5645\dist\nokovpy-3.0.1-py3.9目录下找到nokov文件夹。

nokov sdk
- 将Python SDK中的nokov文件夹放入以下路径:MAVProxy/modules/mavproxy_nokov
.png)
放入mavproxy_nokov
- 修改
MAVProxy/modules/mavproxy_nokov/__init__.py,发送GPS_GLOBAL_ORIGIN来设置家位置使得可以在QGC界面显示无人机图案,QGC上只有获取GPS_GLOBAL_ORIGIN才能将无人机起飞在一定高度,如下图所示。 修改代码如下,下方的三个值填写当前位置的纬度、经度和高度,可通过安卓手机App的指南针获取:
lat_deg = 30.458333 # 北纬为正
lon_deg = 114.404167 # 东经为正
alt_m = 49.1 # 海拔米
# 转换为MAVLink格式
lat_int = int(lat_deg * 1e7)
lon_int = int(lon_deg * 1e7)
alt_int = int(alt_m * 1e3) # 米转毫米
nokov_module.master.mav.set_gps_global_origin_send(
nokov_module.target_system,
lat_int,
lon_int,
alt_int)

发送坐标原点位置
- 使用以下命令编译安装MAVProxy:
sudo python3 setup.py build install
.png)
编译MAVProxy
- 使用pip安装nokov_sdk。
.png)
安装PythonSDK
sudo pip3 install nokovpy-3.0.1-py3-none-any.whl
- 运行以下命令:
mavproxy.py --master=/dev/ttyACM0 --baudrate 57600 --out 192.168.5.213:14550
--master=内容根据实际填写,可以是无人机或者地面站,动捕数据将直接发送到master指定设备。
.png)
mavproxy
加载:module load nokov
设置动捕软件ip:nokov set host --动捕IP
设置追踪点名称(刚体名称):nokov set tracker_name --名称
设置向上坐标轴(根据动捕软件):nokov set axis --z或y
启动:nokov start
停止:nokov stop
四、通过QGroundControl观测动捕数据
- 开启QGroundControl,可以看到连接成功,MAVproxy中发送经纬度和高度数据后无人机图标会出现在地图上。

地面站图标
- 打开【Analyze Tools】【MAVLink检测】,加载完成后,应该可以在地面站看到GLOBAL_POSITION_INT参数中的经纬度坐标数据,和LOCAL_POSITION_NED参数中的位置数据。 这里LOCAL_POSITION_NED参数中的位置是无人机的传感器与动捕数据融合后的数据,与动捕中的刚体数据不会完全一致。

GLOBAL_POSITION_INT

LOCAL_POSITION_NED