开源APM模拟器在测绘无人机中的应用

【www.zhangdahai.com--其他范文】

刘亚非

(中国铁路设计集团有限公司,天津 300308)

近年来,无人机在铁路勘察设计领域得到越来越多的应用。无人机具有快速高效、机动灵活、应用成本低等优势[1-2],但针对铁路勘察行业特点设计的专用无人机并不多见。飞行模拟器能够模拟无人机实测飞行,因而能够节约开发成本,大幅提高研发效率。目前,市场上的无人机模拟器主要用于飞手培训,如微软公司开发的AriSim仿真器,可支持多平台运行,可通过多个API接口实现数据读取、无人机控制、环境条件控制,大疆飞行模拟器是一款面向无人机仿真培训软件,基于Windows系统和大疆先进的飞控技术,能与多款大疆无人机及遥控器无缝衔接,能够提供从基础知识教学仿真训练以及作业场景练习,但该模拟器仅限于大疆型号无人机及相关设备[3]。不难看出,无人机飞行模拟器通过计算机图形学技术实时模拟出飞行器地理位置和姿态相对应的连续的无人机飞行场景,形成一个逼真的飞行情景[4]。以下对开源APM模拟器的研发过程进行介绍。

1.1 无人机飞行姿态模拟的数学逻辑

根据矢量运算的数量积定义,机体坐标系b单位矢量在大地坐标系e上的投影为

(1)

同理,大地坐标系e的三轴单位矢量在机体坐标系b上的投影为

(2)

无人机飞行姿态决定于3个欧拉角:横滚角φ(右滚为正);
俯仰角θ(抬头为正);
航向角φ(机头在地面投影与正北方向夹角,俯视顺时针为正)。不难看出,三维空间的无人机无论处于何种飞行姿态,都可以由大地坐标e的初始状态通过3次旋转实现随机飞行姿态,有

(3)

方向余弦矩阵姿态估算方法在APM开源文件libraries/ap_math/Matrix3.cpp中,通过from_euler()函数来实现[6]。

1.2 无人机飞行姿态控制的实现

芯片技术的发展使无人机控制技术产生了质的飞越,彻底改变了无人机“航模”的概念。以32位STM32F427(FMUV3框架)系列单片机为核心,加载MPU6000系列电子三轴加速度计、Micro L3GD20系列16位电子陀螺仪、Micro LSM303D系列电子加速度计/磁力计、MEAS MS5611系列高精度电子气压高度计,构成了无人机飞控系统[7]。飞控计算机获得无人机随机飞行的姿态数据后,依据姿态估算理论得到无人机飞行预期的飞行姿态数据,再通过PID控制理论实现对电子调速器(ESC)的同步调节,从而达到对飞行姿态的精准控制。PID控制流程见图1[8]。

图1 PID控制流程

2.1 模拟器集成环境配置

该模拟器基于目前开源市场最新的飞控固件Ardupilot4.0.7(截止2021年底),建立仿真模拟环境之前,需要完成APM固件编译环境的配置[9]。其他插件工具包括:Cygwin64、Mavproxy、Gcc编译器、Githubdesktop、Git-2.32.0.2-64-bit、Eclipse,使用该工具需要配套相应的Java开发环境,建议选择最新的Vscode集成开发环境。采用安全缓冲区数据采集思路,具有作业风险低、建模精度高、数据冗余低的优势[10]。

2.2 模拟器程序的二次开发

(1)模拟器仿真实质

实际上,模拟器二次开发编译的是实际的飞控源代码,只不过仿真模拟时固件编译的目标是SITL,和实物固件用的是同一套源代码,二者的关系见图2。当模拟飞行的脚本运行时,编译器会自动生成模拟固件,然后自动运行,当修改或者重新编写飞控代码时,修改的部分就会被编译仿真,这就是仿真模拟飞行能够验证软件逻辑可行性的原因。

图2 实物固件与模拟固件编译对比

(2)模拟脚本的配置和运行

在“C:/cygwin64home本机名称/”目录下创建一个新的文件夹,重命名为sim。

在sim文件夹中新建txt文件,输入如下内容:“/cygdrive/d/ardupilot/tools/autotest/sim_vehicle.p-v ArduCopter”,将这个文件保存为“s”,并删除“.txt”后缀,这样这个文件就变成一个可执行脚本文件。

进入Cygwin64 Terminal终端,输入“cd sim/./”,模拟脚本执行情况见图3。

图3 执行脚本文件

若脚本文件运行结果为“Configure finished successfully”,则表明执行脚本成功。

(3)模拟固件编译

该模拟固件是基于APM开源的4.0系列固件,编译器共需要编译处理642个文件,模拟固件编译界面见图4。

图4 模拟固件编译界面

若编译文件显示“Build finished successfully”,则表示模拟固件编译成功。

2.3 二次开发注意事项

由于开源的APM代码需要其他开源项目支持,如Uavcan、Mavlink、Chibios等若编译过程中出现报错,解决办法有以下几种。

(1)“ImportError: No module named pymavlink”,这个报错的意思是缺少一个叫“pymavlink”的Python库,解决办法:打开cygw64,输入代码“pip install pymavlink”,然后安装该库。采用背向散射(backscatter)通信技术和无人机,设计远距离无源铁路监测信息采集系统,以降低铁路区间轨旁监测信息传输系统的建设成本和维护难度[10-11]。

(2)“Build failed:task in ‘objs/AP_NavEKF2’ failed”,这个报错是由于cygwin64环境内部使用了较新的gcc导致的,这时会出现编译实物固件时可以编译成功,但是无法仿真。解决方法:将cygwin64环境内的gcc版本号降级,再删除“ardupilot/build”文件夹,以防止之前编译产生的临时文件影响编译结果。

(3)“Build failed:a bytes-like object is required,not ‘str’”,导致这个报错的原因是build文件夹中的之前编译的中间文件与本次编译冲突。解决办法:只需要将ardupilot/build文件夹删掉然后重新开始仿真即可。

2.4 模拟器程序创新点

(1)虚拟环境重新配置

由于cygwin64环境内部使用了最新的gcc编译器,在进行仿真的时候会报错,需要重新运行cygwin64,将插件列表中的gcc-core、gcc-g++、libgcc1 3个安装插件包的版本改为“9.3.0-2”(原环境默认的是10.2.0-1系列版本),改完后重启电脑,此问题就能被解决。

(2)显示函数选择

要想在开源地面站MissionPlanner中显示课题的内容,而又不影响其他主要数据的显示传递,函数频率的选择至关重要,经过多次反复尝试,选择“one_hz_loop()”函数作为该软件显示本课题内容的函数,最终成功实现在MissionPlanner中显示“CRDC-2021A240505”课题的内容。另外,无人机飞控与地面站之间的通信链路带宽有限,大部分采用57600波特率的串口。飞控不可能一直向地面站发送信息,否则姿态解算很可能会出错。可采用每隔一定的时间发送一次,实现过程如下。

选择函数:one_hz_loop(),添加代码:Gcs().send_text(MAV_SEVERITY_CRITICAL,

“CRDC-2021A240505”),即可实现课题相关内容在MissionPlanner中的显示。

(3)修改MissionPlanner起始点位置

修改飞控固件源码中的自动测试文件,将需要位置的经纬度(十进制)、海拔高度、初始航向等参数设置为变量CRDC_Home,然后把该变量加入到脚本文件,通过脚本文件调用该变量,即可实现三维位置地图在该模拟器中的调用。

3.1 模拟飞行测试

模拟固件编译成功后,软件将自动连接虚拟机。如果连接不成功,删除飞控源代码文件夹Ardupilot下的Build文件夹,重新编译仿真固件。此时,打开地面站软件MissionPlanner,连接模式设置为UDP,波特率选择115200,点击地面站连接按钮,直接点击弹出窗口的“OK”,模拟器连接地面站一般会成功。如果连接不成功,关闭MissionPlanner地面站,并关闭仿真环境,删除源代码中“ardupilot/build”文件夹,重新运行仿真环境再试。

模拟器连接地面站成功后,根据需要,可以把模拟仿真位置设置为地球上的任意地方,也可以根据任务要求修改初始航向。飞行模式为stablize,定位形式为GPSrtk模式,HDOP的值为1.2,定位良好,卫星数量10颗星,左侧下半部显示数据为模拟出的飞行姿态。然后,打开本地电脑文件夹ArdupilotToolsAutotest下的locations.txt文件,添加了1个名称为“CRDC_Home”、纬度为“39.1636181°”、经度为“117.2465090°”、海拔高度为2m、初始航向为0°的位置点,在脚本文件中添加预先选定的位置:/cygdrive/d/ardupilot/Tools/autotest/sim_vehicle.py-v Ardu Copter-L CRDC_Home。若不能显示正确的home点,在“飞行计划”页面,点击右侧边栏中的“起始位置”,即可跳转到预先设置的位置(见图5)。

图5 模拟飞行流程

打开地面站MissionPlanner,点击“飞行计划”功能菜单,进入航线规划页面,点击鼠标右键弹出功能选项菜单,按照菜单提示规划自己想要的航线,航线规划完成后点击页面右侧的“写入航点”和“保存航点文件”两个功能键,保存自己规划好的航线(因篇幅所限,不再具体讲解)。航线规划结束后,依次输入以下命令“arm throttleenterc 3 1500entermode autoenter”,此时飞机会按照既定规划航线完成飞行。

图5中紫色航迹线为模拟飞行完成的规划航线。模拟起飞时需要注意,APM固件不允许在自动航线模式下起飞。如果在自动航线模式下输入解锁命令,仿真环境将提示Mode not armable(解锁失败)。正确的做法是先将飞控切换到自稳模式(目前有20多种飞行模式可以选择),然后解锁起飞,起飞后再切换到自动航线模式。

3.2 模拟器评估

评估一款无人机飞行模拟器的性能,主要是验证该款模拟器是否能够逼真地模拟出无人机实际飞行时的各种要素[13-15],如飞行姿态、高度、速度、无线电遥控信号状态,导航定位信号状态等。实践表明,该款模拟器不但能够显示铁路无人机装备研发及应用“CRDC-2021A240505”课题的相关内容,而且飞行姿态等数据通过左侧画面显示出来,导航定位信息为GPSrtk定位,定位状态良好(HUD显示区右下角显示Fixed),HODP值等于2,卫星数量为10颗,无线电信号良好,其他硬件信息也可在相应位置显示出来。

采用相同的参数指标比较实测飞行和模拟飞行的加速度日志图像数据(见图6),从2次日志的4个转弯加速度姿态图像来看,第1转弯处加速度差值为+2 cm/s2,第2转弯处重合,第3转弯处差值为-2 cm/s2,第4转弯处差值为+1 cm/s2,不难看出,模拟飞行图像与实测飞行图像相互吻合度较高。

图6 加速度图像对比

近年来,随着无人机技术地不断发展,无人机在铁道勘察领域的应用越来越广泛,同时,围绕无人机进行的二次开发利用项目也越来越多。无人机装备的研发需要多次的实际试飞验证,受实际试飞测试受天气、空域管制、飞行安全、炸机等各方面的限制,试飞成本非常高。因此,对于新研发的无人机,应首先在模拟环境上测试,这样不但能够有效地节约研发成本,还可以大幅提高研发效率。

猜你喜欢飞控固件文件夹民用飞机飞控通电自检测安全性研究民用飞机设计与研究(2019年2期)2019-08-05无人机飞控软件架构设计初探电子测试(2018年23期)2018-12-29摸清超标源头 大文件夹这样处理电脑爱好者(2017年21期)2017-12-0402 飞控技术与机场安保引关注中国公共安全(2017年7期)2017-10-13调动右键 解决文件夹管理三大难题电脑爱好者(2017年15期)2017-08-31飞控系统故障告警实时监控软件的设计与实现计算机测量与控制(2017年6期)2017-07-01基于固件的远程身份认证网络空间安全(2016年3期)2016-06-15挂在墙上的文件夹文体用品与科技(2016年3期)2016-03-24不容忽视的空文件夹电脑爱好者(2015年2期)2015-09-10提取ROM固件中的APP电脑爱好者(2015年7期)2015-04-09

推荐访问:模拟器 测绘 开源

本文来源:http://www.zhangdahai.com/shiyongfanwen/qitafanwen/2023/0922/657780.html

  • 相关内容
  • 热门专题
  • 网站地图- 手机版
  • Copyright @ www.zhangdahai.com 大海范文网 All Rights Reserved 黔ICP备2021006551号
  • 免责声明:大海范文网部分信息来自互联网,并不带表本站观点!若侵害了您的利益,请联系我们,我们将在48小时内删除!