打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
圆点博士——代码注释——初版——来自波波——sensor.c
四轴飞行器
//     Copyright (c) 2013 js200300953@qq.com All rights reserved.
//         ==================================================
//         ========圆点博士微型四轴飞行器配套软件声明========
//         ==================================================
//     圆点博士微型四轴飞行器配套软件包括上位机程序、下位机Bootloader
// 、下位机App和遥控程序,及它们的源代码,以下总称“软件”。
//     软件仅提供参考,js200300953不对软件作任何担保,不对因使用该软件
// 而出现的损失负责。
//     软件可以以学习为目的修改和使用,但不允许以商业的目的使用该软件。
//     修改该软件时,必须保留原版权声明。
//
//     更多资料见:
// http://blog.sina.com.cn/js200300953
// http://www.etootle.com/
// http://www.eeboard.com/bbs/forum-98-1.html#separatorline
// 圆点博士微型四轴飞行器QQ群:276721324
// app/sensor/sensor.h
// 2012-11-7 13:43:43
// js200300953
#include "bsp/mpu6050.h"
#include "bsp/hmc5883.h"
#include "app/attitude/interface.h"
#include "sensor.h"
void sensor_init(void);
void sensor_checkEvent(void);
void sensor_getRawAcc(int16_t acc[3]);
void sensor_getRawGyr(int16_t gyr[3]);
void sensor_getRawMag(int16_t mag[3]);
void sensor_getCalibratedAcc(float acc[3]);
void sensor_getCalibratedGyr(float gyr[3]);
void sensor_getCalibratedMag(float mag[3]);
void sensor_init(void)
{
}
void sensor_checkEvent(void)
{
if(mpu6050_dataIsReady())
{
float acc[3],gyr[3];
if(mpu6050_read() != 0)
return;
mpu6050_getCalibratedAcc(acc); //波:得到校准后的 加速度值
mpu6050_getCalibratedGyr(gyr); //波:得到校准后的 euler 值
//
// 简单、暴力的高通。
//波:此为 滤波函数 将得到的euler 值 -TH
const static float TH = 0.01; // 阈值,rad/s。
//波:gyr三轴角速度 高通滤波 简单粗暴
for(int i=0;i<3;i++)
{
if(gyr[i] > -TH && gyr[i] < TH)
gyr[i] = 0;
}
//
attitude_inputAcc(acc);  //波:输入加速度计三个数值
attitude_inputGyr(gyr);  //波:输入姿态角
//
attitude_mixGyrAccMag();
}
//
}
//波: 得到mpu6050的 加速度计数值 此为测量标准值
void sensor_getRawAcc(int16_t acc[3])
{
mpu6050_getRawAcc(acc);
}
//波:得到mpu6050的 euler 值 姿态
void sensor_getRawGyr(int16_t gyr[3])
{
mpu6050_getRawGyr(gyr);
}
//波:得到 磁场数值 都是机体坐标系下的
void sensor_getRawMag(int16_t mag[3])
{
hmc5883_getRawMag(mag);
}
//波:得到校正后的 加速度计数值 三个 三轴嘛
void sensor_getCalibratedAcc(float acc[3])
{
mpu6050_getCalibratedAcc(acc);
}
//波:得到校准后的 euler 值 三个
void sensor_getCalibratedGyr(float gyr[3])
{
mpu6050_getCalibratedGyr(gyr);
}
//波: 得到校准后的 磁场值 三个 三轴
void sensor_getCalibratedMag(float mag[3])
{
hmc5883_getCalibratedMag(mag);
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android 系统Gsensor系统架构
让地平线X3运行PX4(硬件篇)
I2C通信之加速度计、陀螺仪、磁强计(345+3205+5883)
Android之使用传感器获取相应数据
Unity调用Android ? Unity3D频道
流氓 Android传感器API之:方向SensorOrientation传感器功能实现与源码分享
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服