新闻详情

新闻详情

首页 / 资讯中心 / 详情

imu标定

发布时间:2026/9/30 11:28:54来源:尧图网络
imu标定
使用工具版本Ubuntu20.04 ros-noeticgnuplot-5.0.5imu_tkCMAKEproject(imu_tk) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) cmake_minimum_required (VERSION 2.8) cmake_policy(SET CMP0015 NEW) if (${CMAKE_BUILD_TYPE} STREQUAL ) set(CMAKE_BUILD_TYPE Release) endif() if(NOT DEFINED BUILD_IMU_TK_EXAMPLES) set(BUILD_IMU_TK_EXAMPLES ON) endif(NOT DEFINED BUILD_IMU_TK_EXAMPLES) find_package(Boost REQUIRED) find_package(Eigen3 REQUIRED) find_package(Ceres REQUIRED) find_package(catkin REQUIRED COMPONENTS rosbag sensor_msgs ) catkin_package( INCLUDE_DIRS include LIBRARIES imu_tk CATKIN_DEPENDS rosbag sensor_msgs ) include_directories(/usr/include/eigen3) include_directories(./include /usr/include ${catkin_INCLUDE_DIRS} ${Boost_INCLUDE_DIRS} ${EIGEN_INCLUDE_DIR} ${CERES_INCLUDE_DIRS}) #Vis3D #find_package(Qt5 COMPONENTS QtCore QtGui QtOpenGL REQUIRED ) find_package(Qt5 COMPONENTS Core Gui Widgets OpenGL REQUIRED) find_package(OpenGL REQUIRED) find_package(GLUT REQUIRED) #include(${QT_USE_FILE}) add_definitions(${QT_DEFINITIONS}) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) include_directories( include ${catkin_INCLUDE_DIRS} ${OPENGL_INCLUDE_DIRS} ${GLUT_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR} ) set(IMU_TK_VIS_EXTRA_SOURCES ./src/vis_extra/gl_camera.cpp ./src/vis_extra/opengl_3d_scene.cpp ) set(IMU_TK_VIS_EXTRA_HEADERS ./include/imu_tk/vis_extra/opengl_3d_scene.h ) qt5_wrap_cpp(IMU_TK_VIS_EXTRA_HEADERS_MOC ${IMU_TK_VIS_EXTRA_HEADERS}) aux_source_directory( ./src IMU_TK_CORE_SRC ) set( IMU_TK_SRC ${IMU_TK_CORE_SRC} ${IMU_TK_VIS_EXTRA_HEADERS_MOC} ${IMU_TK_VIS_EXTRA_SOURCES} ) add_library(imu_tk STATIC ${IMU_TK_SRC}) target_link_libraries(imu_tk Qt5::Core Qt5::Gui Qt5::Widgets Qt5::OpenGL) set_target_properties(imu_tk PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) set (IMU_TK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include CACHE STRING imu_tk include directories) set (IMU_TK_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib CACHE STRING imu_tk libraries directories) set (IMU_TK_LIBS imu_tk ${CERES_LIBRARIES} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::OpenGL ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} CACHE STRING imu_tk libraries) message( ${IMU_TK_LIBS} ) add_executable(imu_calib_node apps/imu_calib_node.cpp) target_link_libraries(imu_calib_node ${IMU_TK_LIBS} ${catkin_LIBRARIES}) if( BUILD_IMU_TK_EXAMPLES ) add_executable(test_imu_calib apps/test_imu_calib.cpp) #qt5_use_modules(test_imu_calib Core Gui Widgets OpenGL) target_link_libraries( test_imu_calib ${IMU_TK_LIBS}) set_target_properties( test_imu_calib PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) add_executable(test_integration apps/test_integration.cpp) #qt5_use_modules(test_integration Core Gui Widgets OpenGL) target_link_libraries( test_integration ${IMU_TK_LIBS}) set_target_properties( test_integration PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) endif( BUILD_IMU_TK_EXAMPLES )录制ros包同样的打开imu数据。用rosbag record命令记录imu 信息在记录的过程中要多imu进行一定的操作旋转停留36-50次。IMU需要标定的参数主要是确定性误差和随机误差确定性误差主要标定biasscale和misalignment随机误差主要标定noise和random walkimu_tk是用于求取确定性误差的开源工具。打开imu命令为roslaunch lpms_ig1 lpmsig1.launchCould not find a package configuration file provided by Qt5Qtcore withany of the following names:Qt50tcoreconfig.cmakegt5qtcore-config.cmakeAdd the installation prefix of ot50tcore to CMAKE PREFIX PATH or setQt5QtCore DIR to a directory cont并运行rosrun imu_tk imu_calib_node bag名字 topic名字rosrun imu_tk imu_calib_node /home/hnu/robot_car/2026-09-28-15-10-20.bag /imu/data成功之后会在目录下生成两个文件imu_acc.calib和imu_gyro.calib.其中的参数分别表示加速度计和陀螺仪的非对齐误差、biase、scale。如图如果执行过程中出现gnuplot: not found的错误安装一下就好sudo apt-get install gunplot下载imu_utils和code_utilsimu_utils下载地址为https://github.com/gaowenliang/imu_utilscode_utils下载地址为 https://github.com/gaowenliang/code_utils安装依赖sudo apt-get install libdw-dev先把code_utils放在src下catkin build编译有个先后顺序的编译报错code_utils-master/src/sumpixel_test.cpp:2:24: fatal error: backward.hpp:No such file or directory填坑 在code_utils下面找到sumpixel_test.cpp修改#include backward.hpp为 #include “code_utils/backward.hpp”再编译。然后重新catkin build编译成功再把imu_utils也放到工作空间的src下面不要删除之前的文件同样编开始录制imu话题保持imu不动2个小时你没听错2个小时指令rosbag record topic名字 -o imu.bagrosbag record /imu/data -o imu.bag在主目录下生成imu.bag文件在imu_utils文件下的launch文件目录下添加一个launch文件我这里添加的是 imu.launch并把以下代码复制进文件代码中的/imu/data改成自己imu的topic。launch node pkgimu_utils typeimu_an nameimu_an outputscreen param nameimu_topic typestring value /IMU_data/ param nameimu_name typestring value imutest/ param namedata_save_path typestring value $(find imu_utils)/data// param namemax_time_min typeint value 120/ param namemax_cluster typeint value 100/ /node /launch之后执行roslaunch imu_utils imu.launch新开一个命令端口记得开启ros。回放录制了两个小时的imu数据。rosbag play -r 250 imu.bag这里的imu.bag替换成自己的bag文件名。在执行的命令端口等待一段时间自动结束之后会在imu_utils文件下的data文件目录下生成一个imutest_imu_param.yaml的文件文件中有16个数据表示陀螺仪和加速度计的高斯白噪声和随机游走误差到现在随机误差标定结束。%YAML:1.0 --- type: IMU name: imutest Gyr: unit: rad/s avg-axis: gyr_n: 3.4692268267587600e-04 gyr_w: 1.1257261060196834e-05 x-axis: gyr_n: 2.8481426941671267e-04 gyr_w: 1.0112560170976478e-05 y-axis: gyr_n: 4.1428540484421351e-04 gyr_w: 1.4734776689705731e-05 z-axis: gyr_n: 3.4166837376670178e-04 gyr_w: 8.9244463199082925e-06 Acc: unit: m/s^2 avg-axis: acc_n: 1.6441969330278847e-02 acc_w: 7.9843421789303466e-04 x-axis: acc_n: 1.2975895451652108e-02 acc_w: 2.6923211449265396e-04 y-axis: acc_n: 1.3347436773079705e-02 acc_w: 7.4091792261632915e-04 z-axis: acc_n: 2.3002575766104726e-02 acc_w: 1.3851526165701213e-03
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

QC-LDPC编码原理与5G物理层实现详解 2026/9/30 12:05:46

QC-LDPC编码原理与5G物理层实现详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
PRD算法:从前端页面逆向到需求文档的高可用框架 2026/9/30 12:05:46

PRD算法:从前端页面逆向到需求文档的高可用框架

先说一个判断:PRD算法这个提法,容易让人觉得是某种排序或求解模型,但在产品和技术圈的语境里,PRD更多指的是产品需求文档。这篇文章想聊的也不是某个数学公式,而是如何用算法思维,把PRD这门看似"靠感觉…

阅读更多 →
TensorFlow生产级实践:SavedModel、tf.function与分布式训练 2026/9/30 12:05:46

TensorFlow生产级实践:SavedModel、tf.function与分布式训练

1. 这不是“装个库”那么简单:TensorFlow到底在解决什么问题? 很多人第一次听说TensorFlow,是在“Python深度学习环境配置”的教程里,或者在招聘JD上看到“熟悉TensorFlow者优先”。但如果你真去翻官方文档首页,第一句…

阅读更多 →
达梦数据库SQL实战:从语法兼容到迁移排错,一份能直接用的速查清单 2026/9/30 12:05:46

达梦数据库SQL实战:从语法兼容到迁移排错,一份能直接用的速查清单

1. 这份达梦SQL清单能帮你解决哪些问题达梦数据库(DM)在国内信创和央国企项目里出现的频率越来越高,很多原本写惯了Oracle、MySQL的人第一次接触时,最大的感受不是功能不够,而是“看着面熟,写起来处处要小心…

阅读更多 →
自定义Trait实战:统一业务契约的组合之道 2026/9/30 12:05:46

自定义Trait实战:统一业务契约的组合之道

去年年底帮团队梳理一套订单系统的公共逻辑时,我发现最头疼的其实不是业务复杂度,而是同一类能力散落在各种类型上,方法名不一样、参数不一样、返回类型也不一样。后来我们用“自定义Traits”把校验、日志、排序、序列化这些横切能力统一成了…

阅读更多 →
四大云厂商算力选型指南:从显存估算到集群落地与成本优化 2026/9/30 12:05:39

四大云厂商算力选型指南:从显存估算到集群落地与成本优化

简介:这份PDF资料聚焦阿里云、华为云、腾讯云与百度智能云四大厂商的算力布局,面向关注云计算产业、数据中心建设与“东数西算”政策的从业者、研究者及投资分析人士,帮助读者系统理解算力竞赛的底层逻辑与竞争格局。资源为单个PDF文件&#…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉