RT-Thread姿态解算控制平台设计:传感器与算法实现

9 下载量 105 浏览量 更新于2024-12-20 收藏 1.41MB ZIP 举报
资源摘要信息:"基于RT-Thread的姿态解算控制平台设计" 知识点概述: 1. RT-Thread操作系统:RT-Thread是一款开源的实时操作系统(RTOS),广泛应用于嵌入式设备。本设计中使用的版本为Master 4.0.3。RT-Thread具有轻量级、高可定制性、稳定性和高性能等特点。 2. CubeMax HAL库:HAL(硬件抽象层)库是为STM32微控制器提供的库,用于简化硬件资源的访问。本设计中使用CubeMax HAL库进行开发,HAL库为开发者提供了硬件操作的统一接口,可以减少硬件相关编程工作,提高开发效率。 3. Python project_generator:这是一个用于生成项目结构的工具,可以帮助开发者快速构建项目框架,提高开发速度。 4. C/C++混合编程:RT-Thread支持C/C++混合编程,这意味着开发者可以在同一个项目中使用C语言和C++语言进行开发,充分利用两种语言各自的优势。 5. GY-86传感器:GY-86是一款常用的动作跟踪模块,包含了多种传感器,如MPU6050(加速度计和陀螺仪)和HMC5883L(磁力计),用于姿态解算。 6. IIR Butterworth低通滤波器:IIR(无限冲激响应)滤波器中,Butterworth滤波器是最常用的一种。本设计中使用MATLAB设计了四阶低通滤波器,用于滤除传感器信号中的高频噪声。 7. 传感器校准:在使用传感器之前,需要进行校准以确保数据的准确性。校准过程包括消除零偏、消除交叉耦合影响等。 8. Mahony互补滤波算法:Mahony滤波算法是一种用于姿态解算的算法,它结合了加速度计和陀螺仪的数据,以提高姿态估计的准确度。 9. mavlink/私有协议、UDP/USB数据传输:通过mavlink协议和私有协议,将数据通过UDP或USB接口上传到PC,便于数据处理和调试。 10. MATLAB/STM32验证和比较算法:MATLAB和STM32用于验证和比较不同算法的效果,确保姿态解算的准确性。 11. 单轴单桨一维角度控制平台:搭建了单轴单桨一维角度控制平台,用于实验和验证姿态解算算法。 开发环境硬件: - ART_Pi:一种基于RT-Thread开发板,集成了多种硬件接口和传感器。 - GY86:用于姿态解算的传感器模块。 - 按键模块:用于输入控制信号。 - 硅胶线:用于连接各个硬件组件。 开发工具及版本: - STM32CubeMX 6.0.1:用于配置STM32微控制器的IDE。 - IAR for ARM 8.32.1:一款集成开发环境,用于ARM架构的程序开发。 - BeyondCompare4:一款文件比较工具。 - MATLAB R2019b:用于数值计算、算法开发和数据分析的软件。 - VSCode:一款开源的代码编辑器。 - SmartGit 20.1.5:一款Git客户端软件。 - 匿名飞控地面站-0512:一个用于飞行控制的地面站软件。 RT-Thread使用情况概述: - Pin:用于硬件的引脚配置和管理。 - serial:串行通信接口。 - cplusplus:RT-Thread对C++语言的支持。 - time:用于时间管理。 - finsh:RT-Thread提供的一个shell工具。 软件框架说明: - C/C++混合编程:指在同一个项目中同时使用C语言和C++语言进行开发。 - 进程和Loop Schedule结合:指在实时操作系统中,将多线程或多任务的调度与循环调度相结合的编程模式。 软件模块说明: - 核心部分:涉及GY86的驱动和姿态解算算法(Mahony)的实现。 演示效果和比赛感悟:作者分享了通过视频演示项目的成果,以及在比赛中的感悟和体会。 对AHRS(Attitude and Heading Reference System)算法的理解:对卡尔曼滤波和互补滤波的理解,以及BP神经网络逼近在滤波算法中的应用进行了分析。 滤波算法分析: - 卡尔曼滤波:一种基于数学模型的递归滤波器,通过先验估计和后验估计的方差融合传感器数据进行状态估计。 - NNI-BP逼近:利用神经网络逼近系统输出,进行滤波。该方法的主要控制参数可控,滤波效果可调节。 总结来说,本设计通过深入探讨和实践,将RT-Thread操作系统应用于姿态解算控制平台的设计中,展示了硬件选择、软件开发、算法实现和性能验证的完整流程。通过结合多种开发工具和编程语言,实现了对姿态解算算法的验证和控制平台的构建。
2021-04-19 上传
【RT-Thread作品秀】基于RT-Thread的智慧农业物联网网关作者:frankpyq 概述智慧农业是目前物联网一个比较广泛的发展方向,基于从事农业物联网相关硬件的开发,结合这次RTT大赛,决定基于RT-Thread设计一款物联网网关。本物联网网关基于STM32H7为主芯片进行设计,分为硬件网关和物联网平台。硬件网关有以ART-PI开发板为核心板,自行设计了一个扩展板,板载一路4G通讯模块,一路LORA无线采集模块,一路RS485电路,2路继电器输出,4路LED指示,1路DS18B20温度采集,1个蜂鸣器;硬件网关可以通过无线LORA采集节点数据,最多可以接收32路无线节点采集;也可以通过RS485电路采集传感器数据。采集到数据后,通过4G模块发送到物联网平台。这里物联网平台我使用的是深圳市模拟科技有限公司的TLINK物联网平台。板载2路继电器和LED指示灯,可以通过平台下发命令控制开关。 开发环境硬件:ART-PI(STM32H750XB), ART-PI_TOP扩展板; RT-Thread版本:RT-Thread V 4.0.3 开发工具及版本:RT-Thread Studio版本: 2.0.0 RT-Thread使用情况概述(1)内核部分:调度器,信号量等。 调度器:创建多个线程来实现不同的工作。 信号量:用来线程间的同步。 (2)组件部分:UART框架,SENSOR框架。 UART框架:使用了3个串口,分别连接4G模块,LORA模块,RS485;分别用于跟平台通讯和采集传感器数据。 SENSOR框架:使用DS18B20采集设备机箱温度。 (3)软件包:暂未使用相关软件包。 硬件框架软件框架说明软件模块说明项目工程文件是基于官方SDK的点灯示例程序开始的。 (1)read_temp_entry线程:用于读取板载DS18B20温度传感器的数值。 (2)LoraU6RxData线程:用于采集无线LORA传感器节点的数据。传感器节点采用主动上报方式传输数据,最多挂载32个节点。 (3)led_shine_entry线程:LED灯闪烁,用于指示设备状态; (4)Task_Tlink_Tx线程:跟TLINk云平台通讯,包含登录和主动上报数据。 (5)TlinkRxData线程:用于接收和解析TLINK云平台下发的控制指令,并执行相关继电器动作。 演示效果(1)设备照片: (2)平台接收数据照片: (3)云组态照片: (4)演示视频: 比赛感悟认识RT-Thread已经是很多年前的事情了,当初也买了第一代的魔笛网络收音机开发板,但是很遗憾一直都没有在实际项目中使用到。主要原因都是我手头的项目都是基于裸机开发的,都没有使用过RTOS。基于RTT大赛的机缘,我就想努力尝试一把,先用起来,然后决定以后项目中有需要的都上RTT系统。但是完事开头难,我这个项目当初想起来挺容易,但是实际做起来的时候,真的还是很不容易的。主要还是我的RTOS编程经验匮乏,对系统内核以及进程通信机制没有理解透彻,导致写程序的时候出了不少问题。从最开始的点灯,到后面的添加传感器驱动框架,添加串口驱动框架,实现了DS18B20传感器采集,实现了串口跟GPRS模块和LOR模块的通讯,实现了数据上TLINK云平台。完成数据上报云平台以及云平台下发控制指令和执行动作等等功能。这其中,我基本没有使用额外的软件包和驱动等,主要还是对RTT不是很熟悉,可以说还基本没有上手。按照当初的设想,本来是要使用广和通的L610的模块,使用AT指令软件包,ONENET软件包等上移动ONENET云平台。但是由于时间太紧和基础太差的原因,20号之前只能完成这么多了。其实这两天我已经用L610模块连上了ONENET云平台,但是详细功能还没有实现,后面我会继续把这个项目做下去,争取把这个产品做完善。最后感谢举办方给我一个很好的学习和锻炼的机会,RTT我相信我会一直用下去。