ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践

news2024/11/27 4:24:07

ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践

  • 在仿真下使用robot_pose_ekf

在仿真下使用robot_pose_ekf

仿真环境为 一个无人机,具备3D POSE里程计数据,和imu数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
robot_pose_ekf.launch文件进行如下更改

<launch>

<node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
  <param name="output_frame" value="odom_combined"/>
  <param name="base_footprint_frame" value="base_footprint"/>
  <param name="freq" value="30.0"/>
  <param name="sensor_timeout" value="1.0"/>  
  <param name="odom_used" value="false"/>
  <param name="imu_used" value="true"/>
  <param name="vo_used" value="true"/>

  <remap from="vo" to="/firefly/odometry_sensor1/odometry" />
  <remap from="imu_data" to="/firefly/imu" />
  
</node>

</launch>

即关掉2D轮速里程计
打开imu和vo里程计
并将话题重映射
vo重映射为/firefly/odometry_sensor1/odometry
imu_data重映射为/firefly/imu

启动 robot_pose_ekf 节点

roslaunch robot_pose_ekf robot_pose_ekf.launch

出现如下报错

[ERROR] [1686016442.630112783, 912.440000000]: Covariance specified for measurement on topic vo is zero
[ WARN] [1686016448.129717214, 917.940000000]: Could not transform imu message from firefly/imu_link to base_footprint. Imu will not be activated yet.

在这里插入图片描述在这里插入图片描述

第一个问题解决:
第一个问题,vo的数据协方差都是0

rostopic echo /firefly/odometry_sensor1/odometry

打印话题,查看如下
在这里插入图片描述
covariance 部分确实是0

原来在仿真环境里面,里程计的噪声设置为0了,

    noise_normal_position="0.01 0.01 0.01"
    noise_normal_quaternion="0.017 0.017 00.017"
    noise_normal_linear_velocity="0.02 0.02 0.02"
    noise_normal_angular_velocity="0.013 0.013 0.013"

把这里的噪声加上即可
在这里插入图片描述
协方差这里不再是0

再运行robot_pose_ekf节点,则不会出现下面这个报错

[ERROR] [1686016442.630112783, 912.440000000]: Covariance specified for measurement on topic vo is zero

第二个问题解决:
第二个问题是
imu消息无法从firefly/imu_link 到 base_footprint , 这是因为仿真的模型没有base_footprint,imu的坐标系是firefly/imu_link。
所以将robot_pose_ekf.launch中的

<param name="base_footprint_frame" value="base_footprint"/>

改为

<param name="base_footprint_frame" value="firefly/imu_link"/>

再运行即不会报任何错误

可以看到 /robot_pose_ekf/odom_combined 话题下面可以正常输出融合后的里程计信息

rostopic hz /robot_pose_ekf/odom_combined

在这里插入图片描述

rostopic echo /robot_pose_ekf/odom_combined

无人机在地面的:

header:
seq: 514
stamp:
secs: 33
nsecs: 680000000
frame_id: “odom_combined”
pose:
pose:
position:
x: 0.0017419902403915423
y: 0.043231049081159115
z: 0.06509762290083827
orientation:
x: 0.007851188432969749
y: 0.007545160963110543
z: -0.01976178367618696
w: 0.999745418240147
covariance: [1.0011717677116394e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0011717677116394e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0011717677116394e-08, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.592218287517943e-09, 9.655282989158597e-09, 9.65528301191329e-09, 0.0, 0.0, 0.0, 9.655282989158597e-09, 9.592218264790355e-09, 9.655283011899738e-09, 0.0, 0.0, 0.0, 9.65528301191329e-09, 9.655283011899738e-09, 9.592218287545048e-09]

无人机在空中的
在这里插入图片描述

header:
seq: 3389
stamp:
secs: 158
nsecs: 460000000
frame_id: “odom_combined”
pose:
pose:
position:
x: -0.033636298310285875
y: 0.08253540836294387
z: 1.5229299724233456
orientation:
x: 0.019733241066607503
y: 0.012368392749471947
z: -0.19686997503152537
w: 0.9801529650972284
covariance: [2.498272806406021e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.498272806406021e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.498272806406021e-07, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.409062825302344e-07, 2.4083166145225446e-07, 2.4083166315748764e-07, 0.0, 0.0, 0.0, 2.4083166145225446e-07, 2.409062830983563e-07, 2.408316631579213e-07, 0.0, 0.0, 0.0, 2.4083166315748764e-07, 2.408316631579213e-07, 2.409062848035895e-07]

在这里插入图片描述
与真实无人机高度吻合

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

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

相关文章

C++ unordered_map 性能优化

一 插入加速 unordered_map 在桶满时自动进行 rehash 操作。手动调用 rehash 函数可以手动调整 桶数量。 rehash 函数被调用时&#xff0c;需要注意以下几点&#xff1a; rehash 函数可能会造成 unordered_map 的迭代器失效。如果我们在重新哈希后仍需要继续迭代 unordered_…

机器学习实战六步法之数据预处理(五)

要落地一个机器学习的项目&#xff0c;是有章可循的&#xff0c;通过这六个步骤&#xff0c;小白也能搞定机器学习。 看我闪电六连鞭&#xff01;&#x1f923; 数据的预处理通常包括 5 个步骤&#xff0c;如下&#xff1a;这个是比较完整的一个步骤&#xff0c;不同的算法可能…

内网隧道代理技术(一)之内网隧道代理概述

内网隧道代理技术 内网转发 在渗透测试中&#xff0c;当我们获得了外网服务器&#xff08;如web服务器&#xff0c;ftp服务器&#xff0c;mali服务器等等&#xff09;的一定权限后发现这台服务器可以直接或者间接的访问内网。此时渗透测试进入后渗透阶段&#xff0c;一般情况…

FreeRTOS(8)----任务通知

一&#xff0c;任务通知的简介 相对于之前的信号量&#xff0c;事件组等&#xff0c;所谓的任务通知核心就是一个32位的无符号整数和8位的通知状态 任务通知可以通过如下方法更新接收任务的通知值&#xff1a; ● 不覆盖接收任务的通知值 ( 如果上次发送给接收任务的通知还没…

MyBatisPlus总结(1.0)

MyBatis-Plus MyBatis-Plus介绍 MyBatis-Plus&#xff08;简称MP&#xff09;是一个MyBatis的增强工具&#xff0c;在MyBatis的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生 特性 无侵入&#xff1a;只做增强不做改变&#xff0c;引入它不会对现有工程产生影…

为何波卡被称为Layer 0?

理解区块链的技术本质&#xff0c;将揭示加密货币运行轨迹的神秘面纱。了解这背后的原理&#xff0c;将为你带来全新的视角&#xff0c;让你对加密货币的奇妙世界充满无尽的好奇。 波卡是一个内部互连的区块链平台&#xff0c;被赋予技术堆栈元协议或Layer 0的定义&#xff0c…

Golang 基础案例集合:中文拼音转换、解析二维码、压缩 zip、执行定时任务

前言 曾经&#xff0c;因为不够注重基础吃了好多亏。总是很喜欢去看那些高大上的东西&#xff0c;却忽略了最基本的东西。然后会错误的以为自己懂的很多&#xff0c;但是其实是沙堆中筑高台&#xff0c;知道很多高大上的架构&#xff0c;但是基础的东西却不太了解。我觉得&…

PySpark实战指南:大数据处理与分析的终极指南【上进小菜猪大数据】

上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货。 大数据处理与分析是当今信息时代的核心任务之一。本文将介绍如何使用PySpark&#xff08;Python的Spark API&#xff09;进行大数据处理和分析的实战技术。我们将探讨PySpark的基本…

P2[1-2]STM32简介(stm32简介+ARM介绍+片上外设+命名规则+系统结构+引脚定义+启动配置+最小系统电路+实物图介绍)

1.1 stm32简介 解释:ARM是核心部分,程序的内核,加减乘除的计算,都是在ARM内完成。 智能车方向:循迹小车,读取光电传感器或者摄像头数据,驱动电机前进和转弯。 无人机:用STM32读取陀螺仪加速度计的姿态数据,根据控制算法控制电机的速度,从而保证飞机稳定飞行。 机…

maven的pom文件

maven项目中会有pom文件&#xff0c; 当新建项目时候&#xff0c; 需要添加我们需要的依赖包。所以整理了一份比较常用的依赖包的pom&#xff0c;方便以后新建项目或者添加依赖包时copy且快捷。不需要的依赖可以删掉&#xff0c;避免首次远程拉取失败和缩小项目打包大小。 <…

爆料,华为重回深圳,深圳第二个硅谷来了-龙华九龙山未来可期

房地产最重要的决定因素&#xff1a;科技等高附加值产业&#xff01;过去几年&#xff0c;发生的最大的变化就是——科技巨头对全球经济的影响力越来越大&#xff0c;中美之间的博弈&#xff0c;由贸易战升级为科技战&#xff0c;就是基于此原因。人工智能、电子信息技术产业、…

工程数值分析(散装/自食/非全)

1.蒙特卡洛 基本流程 蒙特卡洛模拟法基于随机抽样原理&#xff0c;通过生成大量的随机样本&#xff0c;从而对目标变量进行估计和分析。具体来说&#xff0c;蒙特卡洛模拟法的基本流程如下&#xff1a; 1.确定问题&#xff1a;首先需要明确要解决的问题是什么&#xff0c;以及需…

使用腾讯手游助手作为开发测试模拟器的方案---以及部分问题的解决方案

此文主要介绍使用第三方模拟器(这里使用腾讯手游助手)作为开发工具&#xff0c;此模拟器分为两个引擎&#xff0c;一个与其他模拟器一样基于virtualbox的标准引擎&#xff0c;不过优化不太好&#xff0c;一个是他们主推的aow引擎&#xff0c;此引擎。关于aow没有太多的技术资料…

计算机网络(数据链路层,复习自用)

数据链路层 数据链路层功能概述封装成帧与透明传输差错编码&#xff08;检错编码&#xff09;差错编码&#xff08;纠错编码&#xff09;流量控制与可靠传输机制停止-等待协议后退N帧协议&#xff08;GBN&#xff09;选择重传协议&#xff08;Selective Repeat&#xff09; 信道…

ChatGPT-4.5:AI技术的最新进展

✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄潮儿的个人主页 &#x1f3d9;️ 个人社区&#xff0c;欢迎你的加入&#xff1a;全栈弄潮儿的个人社区 &#x1f4d9; 专栏地址&#xff1a;AI大模型 OpenAI最新发布的GPT-4&#xff0c;在聊天机器人…

Windows下IDEA创建Java WebApp的一些总结

在踩了无数坑之后&#xff0c;写一下小总结&#xff0c;帮助兄弟们少走弯路 环境准备 Java 这个不用多说&#xff0c;推荐在环境变量Env加入Java Home环境变量&#xff0c;方便后面设置idea 能用Ultimate版本最好&#xff0c;我这种穷B就用Community版本了Mysql 如果是压缩包…

JVM垃圾回收算法及Java引用

目录 Java垃圾回收算法 1.标记清除算法&#xff1a;Mark-Sweep 2.复制算法&#xff1a;copying 3. 标记整理算法&#xff1a;Mark-Compact 4.分代收集算法 5.新生代垃圾回收算法&#xff1a;复制算法 6.老年代&#xff1a;标记整理算法 7.分区收集算法 Java引用 1.Ja…

迪赛智慧数——其他图表(漏斗图):高考生和家长志愿填报困扰问题感知

效果图 高考前的紧张&#xff0c;等分数的忐忑&#xff0c;填志愿的纠结&#xff0c;录取前的煎熬&#xff0c;希望就在不远的前方。 志愿填报心有数&#xff0c;就业前景要关注。收集信息要先行&#xff0c;切莫匆匆抉择定。热门专业不追捧&#xff0c;选择院校不跟风。兴趣爱…

阿里云异构计算GPU、FPGA、EAIS云服务器详细介绍说明

阿里云阿里云异构计算主要包括GPU云服务器、FPGA云服务器和弹性加速计算实例EAIS&#xff0c;随着人工智能技术的发展&#xff0c;越来越多的AI计算都采用异构计算来实现性能加速&#xff0c;阿里云异构计算云服务研发了云端AI加速器&#xff0c;通过统一的框架同时支持了Tenso…

[Daimayuan] 模拟输出受限制的双端队列(C++,模拟)

给你一个输出受限的双端队列&#xff0c;限制输出的双端队列即可以从一端插入元素&#xff0c;弹出元素&#xff0c;但是另一端只可以插入不可以删除元素。即每次你可以执行以下三种操作的其中一种&#xff1a; 在左边压入一个字符在右边压入一个字符弹出最左边的字符 现在给你…