SLAM从入门到精通(IMU参数的读取)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        上一篇文章我们说过,对于差速轮来说,旋转的计算很多程度上依赖于theta=tan(theta)这个公式来进行的。但是,我们也知道,如果机器人转弯很快的话,这个公式其实是不成立的。所以,对于旋转这件事情来说,我们能想到的,就是用IMU来对角度来进行补偿和计算的。

        试想一下,如果在地面上,我们尚可通过电机的编码器数据计算来获取里程计数据信息,那么对于天上的飞机或者其他飞行器来说,就没有这个便利了。这个时候,IMU设备就派上用场了。IMU也称之为陀螺仪,有三轴、六轴、九轴之说。一般三轴IMU包括了三个方向的角度信息;六轴陀螺仪则在三轴的基础上,添加了三个方向的线加速度信息;九轴陀螺仪则在六轴陀螺仪的基础之上,进一步添加了三个方向的磁力计信息。对于速度不是特别高的机器人设备来说,实时获取三个方向的角度信息就可以了,简单处理就是和里程计做一个卡尔曼滤波即可。

1、ros下的imu消息格式

        对于imu来说,我们可以通过index.ros.org网站,借助于关键词sensor_msgs,找到https://github.com/ros/common_msgs这个地址。进一步在sensor_msgs/msg/Imu.msg里面,就可以发现我们想找的信息。

Header headergeometry_msgs/Quaternion orientation
float64[9] orientation_covariance # Row major about x, y, z axesgeometry_msgs/Vector3 angular_velocity
float64[9] angular_velocity_covariance # Row major about x, y, z axesgeometry_msgs/Vector3 linear_acceleration
float64[9] linear_acceleration_covariance # Row major x, y z 

        除了通常的header之外,ros中的imu消息包还有三种数据。orientation是方向信息,不过是用四元数来表示的,orientation_covariance表示方向的协方差。angular_velocity是角速度信息,angular_velocity_vovariance是角速度的协方差。linear_acceleration是三个方向的线加速度,linear_acceleration_covariance是线加速度的协方差信息。一般来说,我们用的比较多的是orientation和angular_velocity。

2、编写测试代码imu_node.cpp


#include "ros/ros.h"
#include "sensor_msgs/Imu.h"
#include "tf/tf.h"void IMUCallback(sensor_msgs::Imu msg)
{if(msg.orientation_covariance[0] < 0){return;}tf::Quaternion quarternion(msg.orientation.x,msg.orientation.y,msg.orientation.z,msg.orientation.w);double roll;double pitch;double yaw;tf::Matrix3x3(quarternion).getRPY(roll, pitch, yaw);roll = roll*180.0f/M_PI;pitch = pitch*180.0f/M_PI;yaw = yaw*180.0f/M_PI;ROS_INFO("roll = %0.3f, pitch=%0.3f, yaw=%0.3f", roll, pitch, yaw);}int main(int argc, char* argv[])
{setlocale(LC_ALL, "");ros::init(argc, argv, "imu_node");ros::NodeHandle n;ros::Subscriber imu_sub = n.subscribe("/imu/data", 10, IMUCallback);ros::spin();return 0;
}

        代码不复杂,主要是订阅/imu/data信息,回调函数是ImuCallback。在ImuCallback函数中,我们获取orientation的四元数信息。如果想要获取yaw信息,则要把quaternion转换成矩阵后,再用getRPY生成。这个时候yaw是弧度信息,如果要直观显示的话,需要进一步转成角度信息。

3、添加CMakeLists.txt内容

add_executable(imu_node src/imu_node.cpp)
target_link_libraries(imu_node ${catkin_LIBRARIES})
add_dependencies(imu_node beginner_tutorials_generate_messages_cpp)

4、编译生成imu_node

        编译imu_node的方法很简单,就是直接输入catkin_make即可。

5、开始测试

        测试之前,有几点需要注意。首先,利用roslaunch打开wpb_simple.launch,

roslaunch wpr_simulation wpb_simple.launch

        接着打开imu_node,当然在此之前最好输入./devel/setup.sh,        

rosrun beginner_tutorials imu_node

        这个时候因为机器人还没有旋转,所以imu打印的参数中,都是信息为0。因此,我们可以继续输入rqt命令,让小车转起来,

rosrun rqt_robot_steering rqt_robot_steering

        通过窗口输入旋转的命令,这个时候,就可以看到console的打印命令了,yaw数据也开始发生了变化。这说明我们的imu数据已经被采集到了。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

以太坊代币标准ERC20、ERC165、ERC721

两个概念 ERC(Ethereum Request for Comment) 以太坊意见征集稿EIP(Ethereum Improvement Proposals)以太坊改进提案 ERC和EIP用于使得以太坊更加完善&#xff1b;在ERC中提出了很多标准&#xff0c;用的最多的标准就是它的Token标准; 有哪些标准详细见https://eips.ethereum…

中国TO B投资,迈入第二周期

2023年,中国TOB正在愈发成熟,迈进第二个周期的趋势已经体现在融资金额上。 作者|斗斗 编辑|皮爷 出品|产业家 TOB&#xff0c;依旧是一级市场的大热门。 统计数据显示&#xff0c;截止2023年8月31日&#xff0c;TOB领域共发生融资事件406起&#xff0c;同比2022年减少…

phpstudy2016 RCE漏洞验证

文章目录 漏洞描述漏洞验证 漏洞描述 PHPStudyRCE&#xff08;Remote Code Execution&#xff09;&#xff0c;也称为phpstudy_backdoor漏洞&#xff0c;是指PHPStudy软件中存在的一个远程代码执行漏洞。 漏洞验证 打开phpstudy2016&#xff0c;用bp自带的浏览器访问www目录下…

Vue3+element-plus切换标签页时数据保留问题

记录一次切换标签页缓存失效问题&#xff0c;注册路由时name不一致可能会导致缓存失效

Unity中Shader通道ColorMask

文章目录 [TOC](文章目录) 前言一、ColorMask是用来干什么的二、怎么做到和 Unity UI 中的 Shader 一样根据UI层级自动适配Shader中模板测试值1、借鉴Unity官方的 UI Shader 前言 Unity中Shader通道ColorMask 一、ColorMask是用来干什么的 ColorMask RGB | A | 0 | R、G、B、…

雨课堂 运动与健康 网课参考资料

整理于网络&#xff1a;仅用于学习交流讨论&#xff0c;侵删 参考文档&#xff1a;https://www.doc88.com/p-99629779008847.html 参考视频&#xff1a; 运动与健康&#xff08;2021年秋网课答案 69题版本&#xff09;_哔哩哔哩 | https://www.bilibili.com/video/av210112837/…

WebGL 用鼠标控制物体旋转

目录 鼠标控制物体旋转 如何实现物体旋转 示例程序&#xff08;RotateObject.js&#xff09; 代码详解 示例效果 鼠标控制物体旋转 有时候&#xff0c;WebGL程序需要让用户通过鼠标操作三维物体。这一节来分析示例程序RotateObject&#xff0c;该程序允许用户通过拖动&…

DT 卡通材质学习 一

渐变着色器 相交线 笔刷和卡通结合使用 修改器

计算机类软件方向适合参加的比赛

前言 博主是一名计算机专业的大三学生&#xff0c;在校时候参加了很多比赛和训练营&#xff0c;现在给大家博主参加过的几个的比赛&#xff0c;希望能给大一大二的学生提供一点建议。 正文 最近也有比赛的&#xff0c;我会从时间线上来给大家推荐一些比赛&#xff0c;并且给…

大屏大概是怎么个开发法(前端)

写在前面&#xff0c;博主是个在北京打拼的码农&#xff0c;从事前端工作5年了&#xff0c;做过十多个大大小小不同类型的项目&#xff0c;最近心血来潮在这儿写点东西&#xff0c;欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出&#xff0c;一定及时修改。有任何…

AutoDL云服务器的使用

目录 简介使用流程租借连接服务器输入登录指令以及密码设置服务器环境和同步文件 使用技巧查看远程主机资源上传下载数据如果上传的文件是压缩包 我的心得将大文件用百度云盘上传&#xff0c;小文件通过同步区域上传跨实例拷贝数据如果本实例没GPU选择其他实例 简介 使用此云服…

位移贴图的实现原理

在以前的文章中介绍过GLTF编辑器 &#xff0c; 编辑器可以对模型的各种材质纹理进行编辑修改&#xff0c;但是有一些新手用户可能对这些材质纹理不太了解&#xff0c;所以我收集了一些资料对这些材质纹理做一下详细的介绍&#xff0c;今天这篇文章主要是介绍位移贴图。 1、什么…

CMOS图像传感器——Stack Pixel(2)

在去年的时候, 就写过Sony大法的Stack Pixel CMOS图像传感器——Stack Pixel_stacked-pixel cis_沧海一升的博客-CSDN博客对索尼的2-Layer Transistor Pixel技术进行了介绍_stacked-pixel cishttps://blog.csdn.net/qq_21842097/article/details/127007460 IEDM 2021 上…

【好文推荐】openGauss 5.0.0 数据库安全——全密态探究

前言 写此文章的目的&#xff0c;主要是验证&#xff1a; openGauss 5.0.0 数据库能够实现哪种加密方式的全密态全密态数据库的特点 一、全密态介绍 全密态数据库意在解决数据全生命周期的隐私保护问题&#xff0c;使得系统无论在何种业务场景和环境下&#xff0c;数据在传…

Vue中的深度监听(Deep Watch):详细解析与实际示例

Vue中的深度监听&#xff08;Deep Watch&#xff09;&#xff1a;详细解析与实际示例 Vue.js 是一款流行的前端 JavaScript 框架&#xff0c;其响应式系统是其核心特性之一。通过响应式系统&#xff0c;Vue允许开发者轻松地监听数据的变化并对其做出响应。在某些情况下&#x…

Redis的softMinEvictableIdleTimeMillis和minEvictableIdleTimeMillis参数

背景&#xff1a; Redis的softMinEvictableIdleTimeMillis&#xff0c;minEvictableIdleTimeMillis是一个令人疑惑两个参数&#xff0c;特别是当它和minIdle组合起来时就更难理解了&#xff0c;本文就来梳理下他们的之间的关系 softMinEvictableIdleTimeMillis&#xff0c;mi…

2023智慧云打印小程序源码多店铺开源版 +前端

智慧自助云打印系统/智慧云打印小程序源码 前端 这是一款全新的基于Thinkphp的最新自助打印系统&#xff0c;最新UI界面设计的云打印小程序源码

【Java 基础篇】Java网络编程实战:P2P文件共享详解

Java网络编程是现代软件开发中不可或缺的一部分&#xff0c;因为它允许不同计算机之间的数据传输和通信。在本篇博客中&#xff0c;我们将深入探讨Java中的P2P文件共享&#xff0c;包括什么是P2P文件共享、如何实现它以及一些相关的重要概念。 什么是P2P文件共享&#xff1f; …

投资理财知识分享:100个金融知识专业术语

大家好&#xff0c;我是财富智星&#xff0c;今天跟大家分享一下投资理财知识方面100个金融知识专业术语&#xff0c;希望能帮助大家了解更多金融知识。 1. 股票&#xff1a;代表对一家公司所有权的证券。 2. 债券&#xff1a;公司或政府发行的借款证券。 3. 投资组合&#xff…

2023羊城杯决赛赛后记录

文章目录 前言ez_SSTIbreakfix easyuploadbreakfix BabyMemobreakfix fuzee_rcebreakfix Oh! My PDFbreakfix easy00aeshacker黑客的秘密LmqHmAsk 前言 参加了羊城杯决赛&#xff0c;一直都没自己重新搭环境对题目做一个复现和记录&#xff0c;当时还有有几道题是没有弄出来的…