加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

【RT-Thread作品秀】基于RT-Thread的姿态解算控制平台设计

2020/12/16
616
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
方块图(3)
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

RT-Thread作品秀】基于RT-Thread的姿态解算控制平台设计

作者:黄国盛

 

概述 

是一个姿态解算算法验证平台以及控制算法验证平台

 

实现步骤:

使用CubeMax HAL库开发;

使用Python project_generator生成工程;

精简 RTT Master内核并加入C++支持;

配置调试接口;

构建C/C++混合编程框架;

硬件IIC驱动GY-86传感器驱动;

MATLAB设计IIR Butterworth四阶低通滤波器

传感器校准;

Mahony互补滤波算法 实现姿态解算;

加入mavlink/私有协议、UDP/USB上传数据到PC;

通过MATLAB/STM32验证和比较各种算法;

搭建单轴单桨一维角度控制平台;

……

 

开发环境 

硬件:

碳纤管碳纤桨电机座、电机电调电源ART_Pi、GY86、按键模块、硅胶线……

RT-Thread版本:

Master 4.0.3

开发工具及版本:

STM32CubeMX 6.0.1、IARforARM8.32.1、BeyondCompare4、MATLAB R2019b、VSCode、SmartGit20.1.5、匿名飞控地面站-0512……

RT-Thread使用情况概述

Pin、serial、cplusplus、time、finsh

硬件框架

ART_Pi、GY86、按键模块、电调……

 

软件框架说明

C/C++混合编程,进程和Loop Schedule结合

 

软件模块说明

核心部分:关于GY86的驱动以及姿态解算的Mahony

 

演示效果

演示视频:

比赛感悟

 4/11/2020 Will_Watson

关于AHRS,卡尔曼滤波或互补滤波理解起来 简单但实施难度较大因为很多参数有待测定;

发现各开源项目用的最多的是Mahony算法,关于它的PI部分的本质着实难以理解;

当发现BP神经网络逼近好像可以和卡尔曼滤波一样,就当成滤波器,而且它还可以是一个逼近式的滤波器,免不了一番测试比较;

而后查看Madgwick原文中提到“梯度下降法”,瞬间明白了它的根源和本质;

当学习BP神经网络逼近的时候的思考流程如下:

逼近的需求来源是什么?  可能是为了预测系统下一个输出,为了做前馈控制?  预测 ——> 观测器 ——> 逼近式滤波器???

神经逼近网络 的特性有哪些? 不具有长时记忆,短时记忆即可以说只具有最近时刻 原系统的逼近特性;

尝试检测滤波特性,从这个角度理解 逼近网络 也是一个不断修正的预估观测器 或者说 卡尔曼滤波器

从执行流程/滤波效果上 分析一维卡尔曼滤波 和 NNI-BP逼近一维非线性系统的 区别:

卡尔曼滤波流程: 先验估计值——>先验估计方差——>依据各方差融合传感器数据做后验估计——>更新后验估计方差;

NNI-BP逼近流程: 由网络前状态和新输入直接计算输出——>与原系统输出比较修正网络状态(是为了下一次直接获得预估输出);

注:把原系统输出当成需滤波数据;把神经网络输出当成滤波后数据

卡尔曼滤波没有阶数的概念,而NNI-BP逼近的滤波特性具有一定延迟

卡尔曼滤波器的主要 控制参数(基于现实过程噪声和观测噪声)不可控,转移矩阵协方差矩阵需测得;

NNI-BP逼近 的主要 控制参数(学习速率和动量因子)可控 即滤波效果可调节,逼近系统特性;

 也有一部分 “内闭环软拟硬输入输出”思想

当然算法的表现依然可以看起来就是加减乘除那么简单,双重卡尔曼看起来和做起来 可能没那么友好;

 

  • 代码地址.txt
    描述:代码地址
  • 基于RT-Thread的姿态解算控制平台设计.docx
    描述:基于RT-Thread的姿态解算控制平台设计.docx

相关推荐

电子产业图谱