大疆开发型c板BMI088-IMU零漂问题优化解决(1)

这篇具有很好参考价值的文章主要介绍了大疆开发型c板BMI088-IMU零漂问题优化解决(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在基于clion开发大疆开发型c板STM32F407IG过程中出现的零点漂移严重情况的解决

1.首先我们先了解一下IMU零漂

校准IMU数据的目的是消除传感器本身固有的偏差和不确定性,使得测量数据更加准确和可靠。在这个函数中,校准过程主要是通过乘以比例因子和加上偏移量来实现的,具体步骤如下:首先需要进行传感器的零偏校准(offset calibration)。这一步骤的目的是测量出传感器在静止状态下的输出,以便消除偏差。在实际应用中,可以将传感器放置在静止的水平面上,记录下此时的输出值,然后将这些输出值的平均值作为传感器的零偏。

在大疆开发型c板的代码中,传感器的零偏值存储在gyro_offsetaccel_offsetmag_offset这三个数组中,分别对应陀螺仪、加速度计和磁力计。

/**
  * @brief          计算陀螺仪零漂
  * @param[out]     gyro_offset:计算零漂
  * @param[in]      gyro:角速度数据
  * @param[out]     offset_time_count: 自动加1
  * @retval         无
  */
void gyro_offset_calc(fp32 gyro_offset[3], fp32 gyro[3], uint16_t *offset_time_count)
{
    if (gyro_offset == NULL || gyro == NULL || offset_time_count == NULL)
        return;

    gyro_offset[0] = gyro_offset[0] - 0.0003f * gyro[0];
    gyro_offset[1] = gyro_offset[1] - 0.0003f * gyro[1];
    gyro_offset[2] = gyro_offset[2] - 0.0003f * gyro[2];

    (*offset_time_count)++;
}
/**
  * @brief          校准陀螺仪
  * @param[out]     陀螺仪的比例因子,1.0f为默认值,不修改
  * @param[out]     陀螺仪的零漂,采集陀螺仪的静止的输出作为offset
  * @param[out]     陀螺仪的时刻,每次在gyro_offset调用会加1,
  * @retval         无
  */
void INS_cali_gyro(fp32 cali_scale[3], fp32 cali_offset[3], uint16_t *time_count)
{
    if( *time_count == 0)
    {
        gyro_offset[0] = gyro_cali_offset[0];
        gyro_offset[1] = gyro_cali_offset[1];
        gyro_offset[2] = gyro_cali_offset[2];
    }
    gyro_offset_calc(gyro_offset, INS_gyro, time_count);

    cali_offset[0] = gyro_offset[0];
    cali_offset[1] = gyro_offset[1];
    cali_offset[2] = gyro_offset[2];
    cali_scale[0] = 1.0f;
    cali_scale[1] = 1.0f;
    cali_scale[2] = 1.0f;
}

2.接下来需要进行传感器的比例因子校准(scale factor calibration)。这一步骤的目的是测量出传感器的输出与实际值之间的比例关系,以便消除比例误差。在实际应用中,可以使用标准的参考值(例如重力加速度、磁场强度等)来测量传感器的输出,并根据这些数据计算出比例因子。

在代码中,传感器的比例因子存储在gyro_scale_factoraccel_scale_factormag_scale_factor这三个二维数组中,其中每行对应传感器的一个轴,每列对应比例因子。将计算出的偏移量和比例因子应用到原始传感器数据上,得到校准后的数据。具体地,对于每个传感器的每个轴,将原始数据乘以相应的比例因子,再加上相应的偏移量,即可得到校准后的数据。

/**
  * @brief          旋转陀螺仪,加速度计和磁力计,并计算零漂,因为设备有不同安装方式
  * @param[out]     gyro: 加上零漂和旋转
  * @param[out]     accel: 加上零漂和旋转
  * @param[out]     mag: 加上零漂和旋转
  * @param[in]      bmi088: 陀螺仪和加速度计数据
  * @param[in]      ist8310: 磁力计数据
  * @retval         无
  */
static void imu_cali_slove(fp32 gyro[3], fp32 accel[3], fp32 mag[3], bmi088_real_data_t *bmi088, ist8310_real_data_t *ist8310)
{
    for (uint8_t i = 0; i < 3; i++)
    {
        gyro[i] = bmi088->gyro[0] * gyro_scale_factor[i][0] + bmi088->gyro[1] * gyro_scale_factor[i][1] + bmi088->gyro[2] * gyro_scale_factor[i][2] + gyro_offset[i];
        accel[i] = bmi088->accel[0] * accel_scale_factor[i][0] + bmi088->accel[1] * accel_scale_factor[i][1] + bmi088->accel[2] * accel_scale_factor[i][2] + accel_offset[i];
        mag[i] = ist8310->mag[0] * mag_scale_factor[i][0] + ist8310->mag[1] * mag_scale_factor[i][1] + ist8310->mag[2] * mag_scale_factor[i][2] + mag_offset[i];
    }
}

在代码中,这一步骤通过循环遍历每个数组元素来实现。对于陀螺仪、加速度计和磁力计的每个轴,分别使用对应的比例因子和偏移量对原始数据进行校准,并将结果存储在对应的输出数组中。

综上,这个函数通过零偏校准和比例因子校准来消除传感器的偏差和比例误差,从而得到更加准确和可靠的IMU数据。

传感器的三个轴指的是传感器所处的三个空间维度的方向,通常包括X、Y、Z三个轴。具体地,对于陀螺仪、加速度计和磁力计等惯性传感器,三个轴的定义通常如下:

  • X轴:指向传感器的右侧(正方向);
  • Y轴:指向传感器的前方(正方向);
  • Z轴:指向传感器的顶部(正方向)。

需要注意的是,不同的传感器可能存在一定的轴向约定,因此具体定义需要参考传感器的数据手册或者文档。同时,由于IMU系统通常包含多个传感器,每个传感器的轴向可能不同,因此在进行数据融合时需要进行坐标系变换,使得所有传感器的数据处于同一个坐标系下。

此时的imu零漂非常严重,每秒有近0.001的零漂

imu

此时的imu使用起来精度非常低,大疆官方给了我们一个解决办法:

imu零漂,单片机,stm32,嵌入式硬件

这一章在大疆的开发型C板嵌入式软件教程文档中有提及:

 等有时间了写一下(2)calibrate_task的任务,主要是给自己一个提醒,自己理一理思路文章来源地址https://www.toymoban.com/news/detail-641976.html

 

到了这里,关于大疆开发型c板BMI088-IMU零漂问题优化解决(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 激光无人机开发(一)大疆Livox-Avia雷达硬件设计及连接线改造

    在Fast-LIO中,作者使用了一个搭载了Livox-Avia的无人机平台进行数据采集,如下图所示: 其中除了雷达外,还搭载了一个FPV相机,用于录制第一人称视角的视频。 飞控选用的是常见的Pixhawk 4-mini;机载电脑选用的是大疆妙算2(现在好像停产了)。 整个无人机轴距260mm*270mm,属

    2024年02月07日
    浏览(30)
  • 大疆开发板A型基于HAL库驱动M3508直流无刷电机及PID控制

    官网:RoboMaster 机甲大师赛 芯片型号STM32F427IIH6   1)新建new project,选择开发板A型的芯片 2)打开外部高速时钟 这是我的时钟树配置 3)我选择用can总线指令控制,所以根据开发版A型原理图打开相应的接口 其中can1为电调专用接口,can2为DJI OnboardSDK和Robomaster UWB定位系统用  我

    2023年04月09日
    浏览(25)
  • Robomaster电控组小白的学习经验分享(一)——用大疆C型开发板控制GM6020电机转动到既定角度

    88ab4432dec2153611cbbc8f98d96f0f 1、大疆C型开发板         我们可以从Robomaster官网上下载C板的用户使用手册,在编写代码的时候用户开发手册往往非常重要。引脚配置、IO说明等信息都可以从用户手册上获得。 2、GM6020电机         GM6020的说明手册也可以从Robomaster的官网上下载,

    2024年02月16日
    浏览(29)
  • GitHub:HairCLIP AI换发型 项目部署

    HairCLIP是在2022年3月发布的,它是基于StyleCLIP改进的,StyleCLIP是一种用文本换发型的项目,比如输入文本:长发、短发、刘海、卷发等等,就能生成对应发型图片,但很多发型不好准确的描述出来,所以HairCLIP在文本的基础上增加了参考图片,也就是可以同时用文本描述+参考图

    2024年02月01日
    浏览(27)
  • 大疆开发板A型基于HAL库使用RoboMaster 遥控器(DT7&DR16)及Debug在线调试

    资料官网: RoboMaster 机甲大师赛 1)新建new project,选择开发板A型芯片型号  2)打开外部高速时钟 下面是我的时钟树配置  3) 配置USART1通信接口  选择Asynchronous(异步通信)方式,并检查对应IO口是否与原理图对应 根据DBUS参数,配置参数设置 配置DMA (直接存储器访问)

    2024年02月07日
    浏览(29)
  • 计算机视觉与仿生学融合:探索生物启发型算法的未来

    导言:         计算机视觉和仿生学的结合为人工智能领域带来了新的可能性。本文将深入研究这两者的可能结合方向,揭示各自的侧重点、当前研究动态、技术运用、实际应用场景、未来发展,并提供相关链接。 1. 计算机视觉与仿生学的结合方向: 1.1 计算机视觉的应

    2024年01月20日
    浏览(36)
  • 用Python写一个BMI计算代码

    有粉丝问我怎么写一个BMI算法,安排 height = float(input(\\\"请输入身高(米): \\\")) weight = float(input(\\\"请输入体重(千克): \\\")) bmi = weight / (height ** 2) print(\\\"您的BMI指数为: {:.2f}\\\".format(bmi)) if bmi 18.5:         print(\\\"您的体重过轻\\\") elif bmi 24:         print(\\\"您的体重属于正常范围\\\") e

    2023年04月14日
    浏览(26)
  • 安卓程序设计作业源码——BMI计算

    1.(程序题 50.0分)按图1完成界面1的设计,使用表格布局实现,设定表格布局的内边距为20dp,“BMI计算”居中显示,设置上外边距为30dp,文本大小为30sp;其他所有文本大小都为24sp,性别男默认为选中状态。点击按钮计算后,先判断身高和体重是否填写,如果没有填写,使用

    2024年02月12日
    浏览(27)
  • Python编写一个程序来计算 BMI 值。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、 BMI 是什么? 二、使用步骤 1.简单代码 2.结果 总结 Python编写一个程序来计算 BMI 值: 小時候都會算的BMI指數,用身高作為基準,計算出你的體重是過重、標準還是過輕,但是因為BMI指

    2024年02月07日
    浏览(32)
  • 案例088:基于微信小程序的校车购票平台设计与实现

    文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 目录 前言 系统展示 管理员功能实现 学生管理 乘车信息管理 车辆信息管理 座位管

    2024年02月02日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包