又花了将近一个星期,终于把姿态解算的框架完成了。仅仅是把陀螺仪、加速度计、罗盘融合在一起,得出旋转姿态,没有对加速度积分,没有用到气压计,几乎没有滤波。算是阶段性的工作吧,把框架设计得合理一点,以后添加/修改就很简单了。从传感器的读取,到四元数的学习,到空间旋转的处理方法,循序渐进,逐个击破。主要参考了以下资料(按阅读的时间循序):《/product.aspx?product_id=8963918计算机图形学几何工具算法详解》(四元数转矩阵的公式是错的!)《/product.aspx?product_id互式计算机图形学——基于OpenGL的自顶向下方法》/wiki/%E5%9B%9B%E5%85%83%E6%95%B0维基百科——四元数/note/206638855/框框的日记——四元数/Mrt-02/archive/2011/10/15/2213656.html青衫湮痕——四元数/heath/archive/2009/12/13/103127.htmlHeaths blog——四元数与欧拉角之间的转换/forum.php?mod=viewthreadtid=4769138阿莫电子论坛——【原创】姿态估计下面总结一下“姿态解算”的过程,分为“传感器”、“四元数与旋转”、“姿态解算框架”、“长期融合”、“快速融合”四部分。1.传感器我用的是10轴姿态传感器模块,其中陀螺仪是L3G4200D,加速度计是ADXL345,罗盘是HMC5883L,气压计是BMP085。全部都通过一条共用的I2C总线访问,速度都支持400kHz。先讲讲I2C库。要配置、读取传感器,首先把通信做好,这里就是I2C库了。现在大部分单片机都有支持中断的硬件I2C了,可以写个高效的I2C库。我只实现了主机发送和主机接收模式,这里简单介绍一下接口。接口函数主要有2个:uint8_t I2C_transmit???????????(uint8_t which,I2C_transmitCallback cb);void I2C_setNextCallback???????(uint8_t which,I2C_transmitCallback cb);I2C_transmit()用于触发一次传输(发送或接收),异步执行,调用后马上返回。其中有一个I2C_transmitCallback类型的参数,就是决定发送或接收、如何处理数据的回调函数了,其定义如下:/*?数据传输回调函数。?* 每(准备)传输一个字节都调用一次。?* 参数:?*??????seq??= 序号,第一次调用时为0,以后每次调用递增。?*??????data = seq==0时写(从机地址+W/R)到data。?*??????????????seq!=0时data是数据。发送就写data,接收就读data。?* 返回值表示下一步的行为:?*???I2C_RT_START = 发送开始信号。?*???I2C_RT_STOP??= 发送停止信号。?*???I2C_RT_REPEAT_START_OR_STOP = 如果有下一次传输,就发送RepeatStart,否则发送Stop。?*???I2C_RT_ACK???= 继续传送,回应ACK。?*???I2C_RT_NACK??= 继续传送,回应NACK。?*/typedef uint8_t (* I2C_transmitCallback)(uint8_t seq,uint8_t * data);当用I2C_transmit()成功触发一次传输后,I2C库会根据需要调用回调函数,所以使用这个I2C库就是写回调函数了。而I2C_setNextCallback()则是用来设置紧接着的一次传输的。当本次传输结束时,不发送“Stop”信号,而是发送“Repeat Start”信号,然后开始下一个传输。利用这个函数可以发起连续多次传输。有了I2C库就可以操作传感器了,以L3G4200D为例讲解。先看看DataSheet,操作L3G4200D有两个步骤,首先配置好寄存器,然后不断获取数据。配置寄存器比较简单,就是发送一段数据,用到两个函数:/*??* 初始化芯片。?* 返回值 : {L3G4200D_RT_NORMAL,L3G4200D_RT_BUS_BUSY} */uint8_t l3g4200d_init(void){?if(I2C_transmit(L3G4200D_WHICH_I2C,l3g4200d_init_callback) == I2C_RT_TRANSMIT_NORMAL)?return L3G4200D_RT_NORMAL;?return L3G4200D_RT_BUS_BUSY;}/*?* 初始化使用的I2C回调函数。 */uin
您可能关注的文档
- 四年级科学鄂教版7.保护心脏.ppt
- 四年级第一学期期末家长会.pptx
- 四年级科学上 植物的花 植物的果实.pptx
- 高一下信息 期中试卷.doc
- 四年级美术知识.doc
- 四年级美术(上)教案.doc
- 四年级英语上册第一单元复习要打印2.docx
- 高一下必修五等差数列精编专题测试卷.doc
- 高一上第2单元园丁赞歌记叙要选好角度.ppt
- 高一化学《混合物的分离和提纯》课件(新人教版必修1).ppt
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- LY_T 1955-2022 林地保护利用规划林地落界技术规程.docx
- 2025年独角兽企业:宁德时代组织结构及部门职责.pdf VIP
- 2026年党支部在学习贯彻党的创新理论等“对照五个方面”存在的问题及整改措施4280字范文.docx VIP
- 汉英翻译技巧课件钟书能 ISBN9787566304049 PPT11.ppt VIP
- 西华大学2024-2025学年第1学期《高等数学(上)》期末考试试卷(A卷)附参考答案.pdf
- 2026年责任制整体护理工作计划范文(2篇).docx VIP
- 2026年党支部在学习贯彻党的创新理论、加强党性锤炼等“对照五个方面”存在的问题及整改措施4030字范文.docx VIP
- 《药品上市后评价管理规程》.docx VIP
- 学校1530安全教育记录(2026年春季期).docx
- 《边教书边成长》读书分享课件.pptx VIP
原创力文档

文档评论(0)