使用imu_tools对imu_raw进行滤波处理

news2024/11/17 10:04:20

文章目录

  • 1 前言
  • 2 安装
  • 3 查找自己的IMU话题
  • 4 imu_tools滤波

1 前言

imu_filter_madgwick:一种滤波器,可将来自常规IMU设备的角速度,加速度和磁力计读数(可选)融合到一个方向中。基于工作:http://www.x-io.co.uk/open-source-imu-and-ahrs-algorithms/

imu_complementary_filter:一种滤波器,它使用一种基于互补融合的新颖方法,将来自通用IMU设备的角速度,加速度和磁力计读数(可选)融合到方向四元数中。基于文献:http://www.mdpi.com/1424-8220/15/8/19302

rviz_imu_plugin:rviz插件,可显示sensor_msgs::Imu消息。

ROS org imu_tools官方介绍地址:http://wiki.ros.org/imu_tools

github源代码地址:https://github.com/ccny-ros-pkg/imu_tools

2 安装

From binaries
This repo has been released into all current ROS1 and ROS2 distros. To install, simply:

sudo apt-get install ros-<YOUR_ROSDISTO>-imu-tools

From source (ROS1)
Create a catkin workspace (e.g., ~/catkin_ws/) and source the devel/setup.bash file.

Make sure you have git installed:

sudo apt-get install git

Clone this repository into your catkin workspace (e.g., ~/catin_ws/src; use the proper branch for your distro, e.g., melodic, noetic, …):

git clone -b <YOUR_ROSDISTO> https://github.com/CCNYRoboticsLab/imu_tools.git

Install any dependencies using rosdep.

rosdep install imu_tools

Compile the stack:

cd ~/catkin_ws
catkin_make

3 查找自己的IMU话题

rostopic list

4 imu_tools滤波

修改imu_tools文件

打开文件:
~/imu_tools_ws/src/imu_tools/imu_complementary_filter/src/complementary_filter_ros.cpp,有如下代码:
// Register IMU raw data subscriber.
imu_subscriber_.reset(new ImuSubscriber(nh_, ros::names::resolve("imu") + "/data_raw", queue_size));

可以看出,imu_tools订阅的topic为imu/data_raw,而IMU发布的topic为/imu_data,因此需要修改代码,使topic一致:

将imu订阅的话题改为自定义的话题名称即可:

// Register IMU raw data subscriber.
imu_subscriber_.reset(new ImuSubscriber(nh_, "/imu_data", queue_size));

然后,修改launch文件

打开launch文件:~/imu_tools_ws/src/imu_tools/imu_complementary_filter/launch/complementary_filter.launch,进行一些修改:

前半部分已省略
 
重点修改以下部分的内容
 
<!-- ComplementaryFilter launch file -->
<launch>
  #### Complementary filter
  <node pkg="imu_complementary_filter" type="complementary_filter_node"
      name="complementary_filter_gain_node" output="screen">
    <param name="do_bias_estimation" value="true"/>
    <param name="do_adaptive_gain" value="true"/>
    <param name="use_mag" value="false"/>
    <param name="gain_acc" value="0.01"/>
    <param name="gain_mag" value="0.01"/>
    <param name="publish_debug_topics" value="false"/>
    <param name="publish_tf" value="true"/>
  </node>
</launch>

重新编译:catkin_make, 然后 source ~/.bashrc

开一个终端运行imu_tools中的launch文件,若正常运行不报错则已经开始了滤波操作

roslaunch imu_complementary_filter complementary_filter.launch

在rqt中进行可视化
在这里插入图片描述
PS:在rqt_plot中添加想要可视化的数据时,格式为话题名称+对应的数据名称,例如/imu/data/orientation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/852974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电力系统电流三段式保护MATLAB仿真模型

整体模型如下&#xff1a; Matlab/Simulink搭建的电力系统电流保护模型采用辐射型单电源供电的运行方式 Ⅰ段保护的搭建 Ⅰ段保护为瞬时速断保护&#xff0c;根据Ⅰ段整定原则确定整定值。线路发生短路故障时&#xff0c;短路电流急剧增大&#xff1b;超过设置的整定值时&…

lokibot样本分析

火绒剑行为监控 行为监控 1.主程序在temp文件夹下释放frhdgr.exe 2.并创建进程 参数为 C:\Users\xxx\AppData\Local\Temp\frhdgr.exe C:\Users\xxx \AppData\Local\Temp\vxogkynyop 3.主进程退出 4.frhdgr.exe自我删除 并释放C:\Users\xxx\AppData\Roaming\F503CB\B28854…

【ARM Cache 系列文章 8 -- ARM DynamIQ 技术介绍

文章目录 DynamIQ 技术背景DynamIQ技术详解DynamIQ 与 big.LITTLEDynamIQ cluster 分类硬件支持 DynamIQ为什么适合人工智能&#xff1f; DynamIQ 技术背景 2017年3月21日下午&#xff0c;ARM在北京金隅喜来登酒店召开发布会&#xff0c;正式发布了全新的有针对人工智能及机器…

推动多云管理平台发展的因素简单分析

随着云计算的快速发展&#xff0c;上云企业的不断增加&#xff0c;使用多云管理平台企业也在快速增加&#xff0c;多云管理平台发展越来越迅速。但还有不少人不明白为什么多云管理平台发展会这么快&#xff0c;推动多云管理平台发展的因素有哪些&#xff1f;今天我们大家就来简…

/proc directory in linux

Its zero-length files are neither binary nor text, yet you can examine and display themUnder Linux, everything is managed as a file; even devices are accessed as files (in the /dev directory). Although you might think that “normal” files are either text …

windows11 svn 找不到clean up选项

刚开始使用windows 11 系统&#xff0c;在更新项目时遇到冲突&#xff0c;提示clean up&#xff0c;于是在项目点击右键svn里没找到clean up 这项&#xff0c;后来才知道需要在settings里勾选才能有&#xff0c;如下图&#xff1a;

stm32_断点调试无法进入串口接收中断

先说结果&#xff0c;可能是stm32调试功能/keil软件/调试器&#xff08;试过STLINK和JLINK两种&#xff09;的问题&#xff0c;不是代码&#xff1b; 1、入坑 配置完串口后&#xff0c;可以发送数据到串口助手&#xff0c;但不能接收数据并做处理&#xff0c;所以第一步&…

低代码培训实录:个性化策略助力企业成长

比起培训总监&#xff0c;其实我更愿意将自己看作是 1 个有 5 年经验的低代码开发爱好者。 ​ 作者介绍 胡杰&#xff0c;万应低代码培训总监、产品专家&#xff0c;主导过多个百万级低代码项目交付。 这几年来&#xff0c;我亲眼见证了低代码平台在国内的崛起&#xff1a;从最…

ESP8266_RTOS_SDK AP和Station功能实现

一、开发环境搭建 SDK开发工具集选择乐鑫配置&#xff1a;VirtualBox Linux 交叉编译工具 使用的是以下这块开发板 VirtualBox下载地址 Lubuntu 镜像下载地址Lubuntu是一个轻量级系统&#xff08;由乐鑫官方提供&#xff09; source insight 编辑代码 为了便于我们开发&…

微信-网页授权

参考文档 基础配置 代码测试说明测试公众号配置你本地的ip 完整的代码在文字末尾 下载微信的开发者工具 公众号AppId以及AppSecret的申请,并可以获取到token 注意 回调地址需要和js安全域名配置为同一个 授权地址必须在微信执行(本地在微信的开发工具进行执行) 授权地址…

卷积神经网络实现彩色图像分类 - P2

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;365天深度学习训练营-第P2周&#xff1a;彩色识别&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子…

网络嗅探,大神都在用这10个抓包工具

下午好&#xff0c;我的网工朋友。 前两天发了一篇网工能干的工作大科普&#xff0c;没看过的看这&#xff1a;《不得不说&#xff0c;网工能干的活也太多了吧》。 然后有小友就说&#xff0c;里面的有些工作岗位要求&#xff0c;自己不知道从哪去补充知识&#xff0c;希望可…

【Java并发】synchronized关键字的底层原理

文章目录 1.synchronized作用2.synchronized加锁原理3.monitor锁4.synchronized锁的优化4.1.自适应性自旋锁4.2.偏向锁4.3.轻量级锁4.3.重量级锁 5.总结 1.synchronized作用 synchronized是Java提供一种隐式锁&#xff0c;无需开发者手动加锁释放锁。保证多线程并发情况下数据…

dubbo之高可用

负载均衡 概述 负载均衡是指在集群中&#xff0c;将多个数据请求分散到不同的单元上执行&#xff0c;主要是为了提高系统的容错能力和对数据的处理能力。 Dubbo 负载均衡机制是决定一次服务调用使用哪个提供者的服务。 策略 在Dubbo中提供了7中负载均衡策略&#xff0c;默…

1.0 Python 标准输入与输出

python 是一种高级、面向对象、通用的编程语言&#xff0c;由Guido van Rossum发明&#xff0c;于1991年首次发布。python 的设计哲学强调代码的可读性和简洁性&#xff0c;同时也非常适合于大型项目的开发。python 语言被广泛用于Web开发、科学计算、人工智能、自动化测试、游…

C#实现三菱FX-3U SerialOverTcp

设备信息 测试结果 D值测试 Y值写入后读取测试 协议解析 三菱FX 3U系列PLC的通信协议 1. 每次给PLC发送指令后&#xff0c;必须等待PLC的应答完成才能发送下一条指令; 2. 报文都是十六进制ASCII码的形式 3. 相关指令 指令 命令码&#xff08;ASCII码&#xff09; 操作原件 …

七牛云获取qn(url、bucket、access-key、secret-key)

1.注册账号 2.access-key和secret-key&#xff1a; 点击“密钥管理” 复制AK和SK即可 域名&#xff1a; bucket&#xff1a; 这个就是对象存储空间名字 先新建一个空间&#xff08;没买需要先购买&#xff09;&#xff0c;步骤如下&#xff1a; 填写存储空间名字&#xff0…

“OSError: [WinError 1455]页面文件太小,无法完成操作。”解决方案

按照下面步骤, 会发现电脑默认情况下是没有给D盘分配虚拟内存的, 所以将Python装在D盘的朋友, 在跑程序时, 没有分配虚拟内存, 自然就遇到了上面的问题, 所以根本操作只要给D盘分配虚拟内存即可 第一步&#xff1a;鼠标右击我的电脑 (此电脑)&#xff0c;点击属性进入以下界面 …

PostMessage/SendMessage在不同线程的调用探究

PostMessage和SendMessage是我们比较常用的windows API&#xff0c;最近也探究这两个api在调用之后&#xff0c;执行的线程问题&#xff0c;发现如下结论&#xff1a; 仅仅是RegisterClass注册类之后&#xff0c;调用createwindow第一个参数通过&#xff1a;(const TCHAR*)base…