半物理仿真平台基本框架如图所示

多旋翼HIL平台结构图

其中,最重要的也就是中间的部分,一个是多旋翼模型,另一个是传感器部分实现。硬件平台目前使用的是NI的myRIO(临时的),里面运行的是32位Linux RT,还带有FPGA芯片。

在RT系统中运行四旋翼的模型,而在FPGA中则要实现传感器的功能,也就是伪造传感器,让飞控误以为自己在与真正的传感器通信。为什么不在RT上面实现伪造传感器的功能呢?实际上在测试过程中发现,在RT上实现传感器功能是很难得,原因在于响应速度太慢,PX4飞控与传感器通信采用11MHz的SP通信,并且通信过程并不是简单的数据传输,实际上是一种握手式的交互同行,类似于一问一答,如果慢一拍飞控就会认为传感器已经损坏无法使用,后面的工作几没办法进行。而FPGA在这方面就更容易了,因为是写好的FPGA程序直接以硬件的形式实现(如此表达可能不严谨),就类似于真正的传感器了,所以响应速度才有可能跟上速度。笔者使用的是160Mhz的FPGA时钟,也只是勉强满足飞控的通信速度。但是为什么不把时钟再提高呢?这个笔者也很想,但是FPGA这种硬件程序越复杂,布线越复杂,运行中延时越大,可以实现的时钟自然受限。也就是说FPGA最终的时钟频率往上受到本身程序复杂程度的制约,往下又要满足响应速度。即便是160Mhz也是反复优化之后才在FPGA上面编译实现的。这部分花费了很长时间。

另外一个问题是SPI通信误码的问题,开始认为是设备性能不足。后来发现是SPI接线过长导致的,SPI作为一种板上通信方式,并不适合飞线(做这种半物理仿真传感器这种东西是模拟出来的,所以需要飞线与飞控通信而不是与传感器IMU通信)。最后将SPI接线飞线做的很短才勉强实现。即使如此觉得有些小错误,但是作为噪声就可以了。SPI时钟11MHz,按照天线那套理论,满足其通信且不会发生反射的线长必然很短,本科本来学过,不过也荒废了。只知道一些概念。

以上是简单介绍一些问题。

PX4自带的HIL仿真是飞控自带模式通过mavlink通信,飞控是知道自己处于这种模式的,这也是PX4自己开发的功能。与PX4自带仿真不同,我们所开发的这套仿真是真正的HIL仿真,也就是在运行过程中,飞控并不知道自己在仿真,而是真的以为在真的飞机上飞行。

我们这个HIL系统理论上也可以用在任何飞控中。

Logo

更多推荐