第十讲 平台常见问题与解决方法

1、基于RflySim平台,MATLAB/Simulink在进行代码自动生成时,有时会出现如下报错。

问题描述:

msedge_91jfpIt7lZ

Caused by:
Validation error(s):
### Validating other build tools ...
Unable to locate build tool "Pixhawk Toolchain C Compiler": echo
Unable to locate build tool "Pixhawk ToolchainC Pre-Linker": echo
Unable to locate build tool "Pixhawk Toolchain Archiver": echo

若出现编译错误,可能的编译问题可以分为:MATLAB模型问题、PX4固件问题、MATLAB模型与PX4固件链接问题。

问题解答:

处理MATLAB模型问题。MATLAB自动代码生成会在编译的初始阶段检查模型,所以这类问题往往在点击编译按钮几秒钟就会显示出来。最为常见的MATLAB问题是各个接口的数据不匹配,点击提示错误的模块可跳转到有问题的地方。

msedge_U64uiw9pX7

处理PX4固件问题。若PX4源码有编译问题,那么一般会在MATLAB的编译日志提示中显示出来,下图显示了问题代码出现的位置,根据提示去修改。平台中PX4的固件位于PX4PSP\Firmware。

msedge_Gosxy7JBlg

处理MATLAB模型与PX4固件链接问题。这类问题往往是PX4固件由于版本的升级而导致一些接口发生变化,而MATLAB自动代码生成的接口可能不匹配,所以在最终的链接阶段会发生错误。这类问题在MATLAB中看不到具体的错误,需要打开Win10WSL(选用其它编译工具的参考其它工具),重新执行下编译命令如:make px4_fmu-v6c_default(其它版本换成其对应的命令)方可看到具体的问题。

explorer_R27wT1TLtu

注意:在定位飞控编译问题时,应该保证平台是正确安装的,代码版本和编译命令能够相匹配。

2、在自动代码生成控制器中,用延迟模块直接生成控制指令,导致飞机乱飞。

问题描述:

在对例程:PX4PSP\RflySimAPIs\Exp02_FlightControl\e5-AttitudeCtrl\e5.1\HIL将遥控器输入CH1-CH4与inputConditioning模块断开,更改滚转(CH1)、俯仰(CH2)、油门(CH3)、偏航(CH4)的输入信号为我们自己想要的定值输入,只对AttitudeControl_HIL.slx做了这一个地方的修改,然后跟原AttitudeControl_HIL.slx例程一样的操作步骤对其进行硬件在环仿真,启动硬件在环后,飞机自己在地上乱飞,过一会后会出现报错,这是什么原因?该怎么解决?

修改前:

image-20230804093143394

修改后:

image-20230804093226997

仿真现象:更改后,进行硬件在环仿真时,无人机在地上乱飞。

image-20230804093322279

问题解答:

这种修改方式不可行,因为这个200个step的延迟,总共才200*0.001=0.2秒。因为px4_simulink_app程序是上电就开始运行的,因此相当于上电之后,过一下就输入了控制指令,变成满油门状态了。这种情况下,飞控还没初始化完毕,滤波器触发发散状态,没有得到准确的位姿信息。

image-20230804093548888

完美方案:直接读取EKF状态的uORB消息,判断滤波器初始化完毕后,再延迟一段时间给控制指令。简单方案:把延迟时间再拉大一点,或者直接用MATLAB函数写一个触发机制,等仿真时间达到60s以后,再给控制指令。

3、在进行SIL或HIL仿真时,RflySim3D出现:Fatal error:[File:D://Build/++UE4....]...报错

问题描述:

具体报错界面如下所示:

image-20230804102614406

问题解答:

上述RflySim3D的报错问题,可能是由于电脑的显卡驱动所造成的兼容性问题,建议升级显卡驱动到最新版,看下能否解决;如果不能解决,请联系RflySim平台相关售后人员。

4、如何做无人机姿态自主控制?

问题描述:

详细描述为:我们需要让无人机飞到一定高度定住,然后跟据我们自己给定的姿态角期望值输入,让无人机自主去动作,使三个姿态角动作到给定的期望值。

问题解答:

遥控器的通道可以用于传递触发信息,例如,CH5拨到满位置,程序就开始自动执行,在Simulink里面写个状态机,让飞机先起飞,等达到高度后,再且姿态控制。具体的控制器设计方法,属于Simulink编程范畴,可查阅相关文献资料进行了解。如果切换定高后,想从外部输入期望姿态角之类信息,请使用*\PX4PSP\RflySimAPIs\Exp02_FlightControl\e0-PlatformStudy\9.PX4CtrlExternalTune 这个目录里面的外部控制接口,在飞控内部订阅rfly_ctrls的消息(外部程序传入的),作为期望姿态角即可。

5、姿态控制硬件在环的结果数据怎么得到?目前我了解的下载飞行日志的方式可以得到我想要的吗?

问题解答:

请使用*\PX4PSP\RflySimAPIs\Exp02_FlightControl\e0-PlatformStudy\9.PX4CtrlExternalTune例程的接口,可以在Simulink里面实时获取模型的真实姿态(仿真值),和飞控内部传出的数据(填入飞控姿态),飞行日志也可以得到类似数据。

6、QGC的Analyze Tools-飞行日志,下载时刷新完之后,找不到我做硬件在环对应时间的日志

问题解答:

打开QGC,进入载具设置

image-20230804171355823

image-20230804171405701

到最下面的参数标签,搜索“log”,找到了SDLOG_MODE的参数,将其改成下图,从开机到关机,一直记录log,这样就能看到log日志了。

image-20230804171424417

results matching ""

    No results matching ""