当前位置: 首页 > news >正文

imu_tk阅读笔记

1. imu_tk简介

imu_tk是一款开源的面向消费级imu的无基准标定软件,不需要转台设备,即可以实现acc/gyr bias、scale和misalignment的标定。标定原理参考文献[1]。

2. 程序框架

2.1 文件读取

读取acc和gyr的数据(如果自己的acc和gyr数据在文件中需要改一下)。

void importAsciiData( const char *filename,std::vector< TriadData_<_T> > &samples, TimestampUnit unit = TIMESTAMP_UNIT_USEC,DatasetType type = DATASET_SPACE_SEPARATED ); 

通过unit将数据中的时间戳转化成秒,所以需要根据自己的数据具体调整。

2.2 参数配置

// 配置加计零偏和陀螺刻度因子 (将文件中acc和gyr转成已m/s^2和rad/s为单位)
CalibratedTriad init_acc_calib, init_gyro_calib;
init_acc_calib.setBias( Vector3d(32768, 32768, 32768) );
init_gyro_calib.setScale(Vector3d(1.0/6258.0, 1.0/6258.0, 1.0/6258.0));MultiPosCalibration mp_calib;
// 设置静态数据时间长度,默认是在数据最前段取,也可以自己手动改成在数据最后段取(程序中已实现)
mp_calib.setInitStaticIntervalDuration(50.0);
mp_calib.setInitAccCalibration( init_acc_calib );
mp_calib.setInitGyroCalibration( init_gyro_calib );  
// 设置当地重力,用来acc标校(最好用重力模型计算一个较准确的当地重力值)
mp_calib.setGravityMagnitude(9.81744);
mp_calib.enableVerboseOutput(true);
mp_calib.enableAccUseMeans(false);
//mp_calib.setGyroDataPeriod(0.01);
// 标校程序主函数
mp_calib.calibrateAccGyro(acc_data, gyro_data );	
// 输出acc和gyr的标校结果,acc和gyr标定的结果文件被保存在程序运行路径下
mp_calib.getAccCalib().save("test_imu_acc.calib");
mp_calib.getGyroCalib().save("test_imu_gyro.calib");

2.2 静态识别

根据配置静态数据时长(mp_calib.setInitStaticIntervalDuration(50.0))取数据最前段(static DataInterval initialInterval( const std::vector<TriadData_<_T> > &samples, _T duration ))或最后段(static DataInterval finalInterval( const std::vector< TriadData_<_T>> &samples, _T duration ))的数据,计算静态数据的方差norm_th,通过th_mult*norm_th对数据进行静态判别。

2.3 acc标定

然后用判别出的静态数据及当地重力对acc进行标校,对比th_mult取不同值对应的标校残差大小,选残差最小的th_mult*norm_th作为静态判别指标。

bool MultiPosCalibration_<_T>::calibrateAcc ( const std::vector<TriadData_<_T> >& acc_samples )

\[\boldsymbol{g= \left\| f^b\right\|^2} \]

2.4 gyr标定

最后用标校后的acc数据矢量标校gyr。大致原理:g_versor_pos1 = Cbb * g_versor_pos0,g_versor_pos0和g_versor_pos1为相邻acc静态数据,Cbb为g_versor_pos0和g_versor_pos1中间动态段imu的姿态变化(用动态段gyr求得)。

bool MultiPosCalibration_<_T>::calibrateAccGyro ( const vector< TriadData_<_T> >& acc_samples, const vector< TriadData_<_T> >& gyro_samples )

\[\boldsymbol{f^{b_1}=C_{b_2}^{b_1}f^{b_2}} \]

所以,测试数据需要静止一会儿,动一下(变化一下姿态),静止一会儿,动一下(变化一下姿态),以此重复。文献[1]中指出至少需要9个不同的姿态,最好动36-50次。

程序与文献[1]的区别是bias补偿的正负号不一致,程序中补偿模型:

\[\boldsymbol{imu^o=TK(imu^S - b)} \]

参考文献

[1] D. Tedaldi, A. Pretto and E. Menegatti, “A Robust and Easy to Implement Method for IMU Calibration without External Equipments”. In: Proceedings of the IEEE International Conference on Robotics and Automation (ICRA 2014), May 31 - June 7, 2014 Hong Kong, China, Page(s): 3042 - 3049.

http://www.gsyq.cn/news/54143.html

相关文章:

  • Docker 安装 Oracle 11g
  • linux do while
  • ICPC2025沈阳 游记
  • AVLT
  • 一线操作工也能管能耗?MyEMS 的 “傻瓜式仪表盘”,把专业数据变成 “大白话”
  • 2025年【口碑好的/比较好的/靠谱的】工业级/国产化/变电站/变电站/电力/机房/光伏/远动/发电厂/工业级/嵌入式机柜/通讯管理机【公司/工厂/厂家】推荐/排行榜 哪家好/强/靠谱
  • linux dmesg
  • linux dns 服务器 搭建
  • 双指针的“适用边界”:从直方图最大矩形错误,看透三大经典问题的本质差异
  • linux dia
  • linux dhcp服务器配置
  • 一文讲清,生产质量管理的10大核心指标及公式
  • CSharp_Winform控件学习_Winform 上加ToolStrip时图标大小调整
  • oracle 查看定义语句
  • linux dhcp服务器的配置
  • 2025 年 11 月碳化钨(WC/C)涂层厂家推荐排行榜,碳化钨涂层,WC/C 涂层,耐磨碳化钨涂层,耐腐蚀碳化钨涂层公司推荐
  • jenkins docker 启动记录
  • Substance Designer的通道合并(Channel Packing)自动化工作流 - 教程
  • 2025年11月外企求职机构推荐榜单与选择指南:知名机构列表与市场报告分析
  • 2025年11月美国求职机构权威推荐:五大机构详细对比分析报告
  • 2025年11月美国求职机构推荐榜单及选择指南:一份基于数据的全面参考列表
  • WSL2安装PostgreSql并远程连接Windows图形工具
  • 2025年11月香港求职机构推荐榜单及权威选择指南
  • 深入解析:解锁Servlet核心:深入剖析HttpServletRequest与HttpServletResponse
  • 2025年洛阳私立高中学校权威推荐榜单:高中学校/民办初中/私立民办学校精选
  • 北京离婚股权分割律师有哪些?业内推荐榜单参考
  • 2025年11月四川考公机构推荐榜单:五家优质机构综合对比与选择指南
  • Qt5实现Windows平台串口通信
  • 2025年不容错过的十大散装物料处理系统品牌,引领工业革新潮流!
  • 如何避免Stimulsoft报表中按页汇总时出现的计算偏差?——原理解析与最佳实践