(1)robot_pose_ekf扩展卡尔曼滤波功能包的使用方法

2023-05-16

这里写自定义目录标题

  • robot_pose_ekf功能包的编译安装
    • 如何使用机器人姿势EKF
  • 编译运行robot_pose_ekf
  • 订阅的话题
  • 发布的话题
  • 机器人姿态ekf如何工作
    • 参考文章

robot_pose_ekf功能包的编译安装

ros wiki社区有对该功能包的具体安装与使用说明,可通过该链接移步http://wiki.ros.org/robot_pose_ekf

Robot_Pose_EKF软件包用于基于来自不同来源的(部分)姿势测量值来估计机器人的3D姿势。它使用带有6D模型(3D位置和3D方向)的扩展卡尔曼滤波器,以结合车轮里程计,IMU传感器和视觉里程计的测量结果。基本思想是提供与不同传感器的松散耦合集成,其中传感器信号以ROS消息的形式接收。

如何使用机器人姿势EKF

可以在robot_pose_ekf软件包目录中找到EKF节点的默认启动文件。启动文件包含许多可配置的参数:

freq:过滤器的更新和发布频率。请注意,较高的频率会随时间推移为您提供更多的机器人姿态,但不会提高每个估计的机器人姿态的准确性。

sensor_timeout:当传感器停止向过滤器发送信息时,在没有该传感器的情况下,过滤器应等待多长时间才能继续运行。

odom_used,imu_used,vo_used:启用或禁用输入。

可以在启动文件中修改配置,如下所示:

<launch>
  <node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
    <param name="output_frame" value="odom"/>
    <param name="freq" value="30.0"/>
    <param name="sensor_timeout" value="1.0"/>
    <param name="odom_used" value="true"/>
    <param name="imu_used" value="true"/>
    <param name="vo_used" value="true"/>
    <param name="debug" value="false"/>
    <param name="self_diagnose" value="false"/>
  </node>
 </launch>

编译运行robot_pose_ekf

 rosdep install robot_pose_ekf
 roscd robot_pose_ekf
rosmake
cd catkin_ekf
catkin_make

rosdep install robot_pose_ekf 自动安装该ros包的依赖

一般常见报错:找不到工作空间路径

解决方案:将路径添加到.bashrc文件中

source ~/catkin_ekf/devel/setup.bash

运行robot_pose_ekf launch文件

roslaunch robot_pose_ekf.launch

订阅的话题

odom(nav_msgs / Odometry)

2D姿态(用于车轮里程计):2D姿态包含机器人在地平面中的位置和方向以及此姿态的协方差。发送此2D姿势的消息实际上代表3D姿势,但是z,roll和pitch都被忽略了。

imu_data(sensor_msgs / Imu)

3D方向(由IMU使用):3D方向提供有关机器人基础框架相对于世界参考框架的横滚,俯仰和偏航角的信息。横滚角和俯仰角被解释为绝对角(因为IMU传感器具有重力参考),偏航角被解释为相对角。协方差矩阵指定方向测量的不确定性。仅接收到有关此主题的消息时,robotpose ekf不会启动;它还期望有关“ vo”或“ odom”主题的消息。

vo(nav_msgs / Odometry)

3D姿势(用于视觉Odometry):3D姿势表示机器人的完整位置和方向以及该姿势的协方差。当传感器仅测量3D姿势的一部分时(例如,车轮里程表仅测量2D姿势),只需在3D姿势的未实际测量的部分上指定较大的协方差。

该robot_pose_ekf节点并不需要所有的三个传感器源可所有的时间。每个源都给出一个姿势估计和一个协方差。这些源以不同的速率和不同的延迟运行。源会随时间出现或消失,节点将自动检测并使用可用的传感器。要添加自己的传感器输入,请查看“添加GPS传感器”教程

发布的话题

过滤器的输出(估计的3D机器人姿态)
robot_pose_ekf/odom_combined(geometry_msgs/PoseWithCovarianceStamped)

提供的TF变换 rosrun rqt_tf_tree rqt_tf_tree 指令查看TF变换
odom_combined → base_footprint
在这里插入图片描述
 参数output_frame和base_footprint_frame默认为odom_combined和base_footprint,也可以根据需要在launch文件中进行更改,比如分别改为odom和base_link,再次用rqt_tf_tree命令查看,如下图所示:
在这里插入图片描述
 robot_pose_ekf节点默认会从odom、imu_data、vo这三个topic上订阅消息,可以使用remap将其映射到新名称的topic上。重映射是基于替换的思想,每个重映射包含一个原始名称和一个新名称。每当节点使用重映射中的原始名称时,ROS客户端库就会将它默默地替换成其对应的新名称。

 <launch>
    <node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf">
        <param name="output_frame" value="odom"/>
        <param name="base_footprint_frame" value="base_link"/>
        <param name="freq" value="30.0"/>
        <param name="sensor_timeout" value="1.0"/>
        <param name="odom_used" value="true"/>
        <param name="imu_used" value="true"/>
        <param name="vo_used" value="false"/>
        <param name="debug" value="false"/>
        <param name="self_diagnose" value="false"/>

        <remap from="imu_data" to="imu" />      <!-- 将节点订阅的imu_data话题改名为imu -->
    </node>
 </launch>

机器人姿态ekf如何工作

姿势解释

将信息发送到过滤器节点的所有传感器源都可以拥有自己的世界参考框架,并且这些世界参考框架中的每一个都可以随时间漂移。因此,不能将不同传感器发送的绝对姿势进行相互比较。该节点使用每个传感器的相对姿势差异来更新扩展的卡尔曼滤波器。

协方差解释

随着机器人的移动,在世界基准中其姿势的不确定性越来越大。随着时间的流逝,协方差将无限增长。因此,在姿态本身上发布协方差是没有用的,而是传感器源发布协方差如何随时间变化,即速度的协方差。请注意,使用对世界的观察(例如,测量到已知墙壁的距离)将减少机器人姿势的不确定性;但是,这是定位,而不是里程计。

定时

想象一下,机器人姿态过滤器是在时间t_0上一次更新的。直到每个传感器的至少一个测量值以晚于t_0的时间戳到达时,该节点才会更新机器人姿态过滤器。当如收到一条消息在Odom话题时间戳T_1> T_0,并在imu_data与话题时间戳T_2> T_1> T_0,过滤器现在将更新到其所有传感器的信息是可用的,在这种情况下,最晚时间到时间t_1。直接给出在t_1处的姿态,通过在t_0和t_2之间对imu姿态进行线性插值来获得t_1处的imu姿态。在t_0和t_1之间,用odom和imu的相对姿势更新了机器人姿势过滤器。

参考文章

robot_pose_ekf

robot_pose_ekf 使用说明

ekf pose使用方法 ros_使用robot_pose_ekf融合odom和imu数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(1)robot_pose_ekf扩展卡尔曼滤波功能包的使用方法 的相关文章

  • 滤波学习理解----EKF(一)

    最近回到slam方向了 xff0c 所以有时间整理一下最近的收获 最复杂也是最简单的模块 滤波 引入 那么滤波是什么呢 xff1f 滤波就是由于观测observation xff08 OB xff09 天生具备的误差和噪声 当有多个信号源观
  • EKF之雅克比矩阵(一)

    扩展卡尔曼滤波 EKF EKF之雅克比矩阵 文章目录 扩展卡尔曼滤波 EKF 前言一 什么是线性化 xff1f 二 雅克比矩阵1 矩阵的几何含义2 非线性矩阵与基底的关系3 雅克比矩阵 三 工程中雅克比矩阵如何应用总结 前言 一般的卡尔曼滤
  • 我看了下GAAS里ROS里发布的pose 的 topic包含position和orientation,我觉得position是实际位置,orientation是期望位置。错了,是标准的里程计消息。

    我看了下GAAS里ROS里发布的pose 的 topic包含position和orientation xff0c 我觉得position是实际位置 xff0c orientation是期望位置 错了 xff0c 我后来看到ROS机器人开发实
  • 机器视觉(Robot Vision)——2

    参考书籍 Robot Vision MIT机器视觉课程指定教材 机器视觉探究两个基本问题 xff1a 成像过程的基本原理是什么 xff1f 如何探索对成像过程 求逆 的基本知识和方法 所谓 求逆 xff1a 具体来说 xff0c 就是从一张
  • rviz导航——2D Pose estimate

    关于rviz中小车初始点的设置问题 一般有两种方法 xff1a 1打开rviz 在其上方工具栏中有2D Pose estimate xff0c 用来设置大概的初始点 2一般在amcl launch文件中也会定义初始点 xff0c 大多设为0
  • 扩展卡尔曼滤波(EKF)

    本篇文章是看完http blog csdn net adamshan article details 78265754这篇文章后再加上自己的理解写的 xff0c 如果侵权可以联系我删除 xff0c 如果有不对的地方请您不啬赐教 xff01
  • 人体姿态估计综述(Human Pose Estimation Overview)

    主流数据集整理 xff1a http blog csdn net qq 36165459 article details 78332172 Part1 xff1a Single Person Pose Estimation 2015 年之前
  • ros(23):接收rviz中的2D Nav Goal、2D Pose Estimate消息

    1 rviz 教程 1 1 2D Nav Goal 2D Nav Goal Keyboard shortcut g This tool lets you set a goal sent on the 34 goal 34 ROS topic
  • 【论文阅读笔记】VNect: Real-time 3D human Pose Estimation with a Single RGB

    论文总结 xff1a 文中方法比较简单 xff0c 通过全卷积CNN预测一个heatmap及location map location map实际上就是X Y Z三个方向的坐标图 xff0c 找到关键点的过程为heatmap 中寻找照最大值
  • 寻找APM中EKF的五大公式

    EKF核心代码位置 AP NavEKF2 cpp 进入该函数 进入该函数 xff0c 然后可以看到关键部分 xff0c 也即卡尔曼五个公式的地方 下面介绍每个公式的具体位置 28状态值 首先要知道选用的状态值有哪些 xff0c 28状态值
  • ekf pose使用方法 ros_【ROS-Gazebo】为什么选择SDF?

    前言 这是一个系列小文章 xff0c 主要介绍在ROS Gazebo中如何更好地使用SDF格式建模与仿真 众所周知 xff0c URDF是ROS的原生支持格式 xff0c 但在某些情况下 xff08 尤其是Gazebo仿真时 xff09 x
  • EKF SLAM

    EKF 方法是解决 SLAM 问题的一种经典方法 xff0c 其应用依赖于运动模型和观测模型的高斯噪声假设 在 SLAM 问题首次提出不久后 xff0c Smith 和 Cheesman 及 Durrant Whyte对机器人和路标间的几何
  • 位姿估计Robot_pose_efk的配置和使用

    Robot pose efk 用于融合里程计 xff0c 惯性测量单元和视觉里程计的传感器输出 xff0c 从而减少测量中的总体误差 了解ROS的robot pose ekf软件包中扩展卡尔曼滤波器的用法 xff1a robot pose
  • EKF的通俗理解

    导 xff1a ekf xff0c 扩展卡尔曼滤波简称 xff0c 应用非常广泛 xff1b 1 五个黄金公式 2 应用场合 1 xff09 找清楚模型 2 xff09 对准五个公式的公式 3 xff09 实现 xff1a 求革新值 xff
  • Convolutional Pose Machines

    本论文将 深度学习 应用于人体姿态分析 xff0c 同时用卷积图层表达纹理信息和空间信息 目前在2016年的 MPII竞赛中名列前茅 作者在github提供了 训练和测试源码 convolutional pose machines CVPR
  • ROS AGV 笔记

    Ubuntu18 04 install of ROS Melodic 1 Installation 1 1 Configure your Ubuntu repositories 1 2 Setup your sources list sud
  • ROS 2正式版来了,到底有哪些新变化?

    锋影 email 174176320 qq com 如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 2017 12 09 机器人开源操作系统软件ROS 2终于推出首个正式版 新版本命名为
  • 2D/3D人体姿态估计 (2D/3D Human Pose Estimation)

    1 基本概念 算法改进入口 网络设计 特征流 损失函数 数据集的重要性 只要有一个好的 针对性的数据集 问题都可以解决 过集成新一代AutoML技术 可降低算法试错成本 人体姿态估计 Human Pose Estimation 是指图像或视
  • 2D/3D人体姿态估计 (2D/3D Human Pose Estimation)

    1 基本概念 算法改进入口 网络设计 特征流 损失函数 数据集的重要性 只要有一个好的 针对性的数据集 问题都可以解决 过集成新一代AutoML技术 可降低算法试错成本 人体姿态估计 Human Pose Estimation 是指图像或视
  • 当对象一个在另一个之上时,从单个 2D 图像或来自 RGBD 相机的点云对已知 3D CAD 对象进行实时 6D 姿态估计?

    我正在开展一个研究项目 需要在拾取和放置任务中实时估计物体的 6DOF 姿态 姿态必须是实时估计的 并且物体可以是一个在另一个之上并且是相同的 所以我必须获得顶部物体的位置和方向 问题是物体是相同的 PPVC 块 在建筑领域 但好处是它们的

随机推荐

  • 【C++学习笔记】头文件详解

    个人整理学习用 xff0c 非教材 xff0c 有错误欢迎指正 头文件 究竟什么是头文件 xff1f 首先说明一个概念 xff0c 所谓的文件后缀并不是必须的 xff0c 在Linux下这种特点尤为明显 对于编译器来说 xff0c 无论是
  • 编程实现字符串连接函数strcat()

    按如下函数原型编程实现字符串连接函数strcat 的功能 void MyStrcat char dstStr char srcStr 输入提示信息 xff1a Input a string Input another string 输入字符
  • UDP通讯

    目录 利用DatagramSocket发送和接收UDP数据报 DatagramPacket构造方法说明 利用DatagramPacket和Datagramsocket简单实现服务器和客户端的通信 UDP协议通讯的用户状态跟踪 利用Datag
  • ubuntu 下C/C++文件编写

    1 Ubuntu下c cpp文件 1 1 cmake方式编译 cmake通常建立CmakeLists txt xff0c 通过cmake命令生成makefile文件编译工程 文件内容 xff1a span class token numbe
  • C语言基础入门:链表详解篇

    链表概述 链表是一种常见的重要的数据结构 它是动态地进行存储分配的一种结构 它可以根据需要开辟内存单元 链表有一个 头指针 变量 xff0c 以head表示 xff0c 它存放一个地址 该地址指向一个元素 链表中每一个元素称为 结点 xff
  • Linux c udp广播

    文章目录 1 对比2 代码2 1 服务端2 2 客户端 1 对比 服务端 xff1a 需要利用这个函数开发套接字的发广播权限 xff0c 并且需要客户端地址绑定为广播地址 span class token function setsocke
  • React—— HelloWorld

    React 学习笔记 Hello WorldJSX JavaScript XML 语法规则JavaScript 语法函数组件 类组件 amp 属性 props组合组件 生命周期函数 xff08 不全 xff09 amp 状态 state事件
  • Linux下makefile 编译项目

    文章目录 1 规划makefile编写2 makefile文件2 1 根目录下common mk2 2 config mk2 3 根目录makefile 2 4 其他目录下 1 规划makefile编写 a 根目录下放三个文件 xff1a
  • RPLIDAR激光雷达测试

    本文主要介绍PRLIDAR A2M8 R2激光雷达的的测试过程 关于该激光雷达的具体参数和描述 xff0c 可以直接去官网查询 本文的测试环境为Ubantu16 04 ROS xff08 kinetic xff09 关于Ubantu16 0
  • 【ROS机器人入门】1.1 ROS概念及环境配置

    文章目录 ROS设计目标系统要求配置步骤1 设置安装源2 设置ROS软件Key3 更新软件包4 安装完整版ROS Noetic软件5 配置ROS环境6 安装构建依赖7 1 安装rosdep 7 1与7 2任选其一 解决方法 7 2 安装ro
  • 纯C语言进行Get和Post请求(亲测)

    废话不多说 xff0c 直接上代码 span class token macro property span class token directive hash span span class token directive keywor
  • C++ 实现Get和Post请求(亲测)

    废话不多说 xff0c 直接上代码 span class token comment include lt stdlib h gt span span class token macro property span class token
  • php 接入海康平台

    php获取海康平台的监控流地址 先获取所有监控点 xff08 artemis api resource v1 cameras xff09 在根据监控点的cameraIndexCode请求 artemis api video v1 camer
  • [开源]一个面向数仓开发人员的低代码工具,零代码开发API服务

    一飞开源 xff0c 介绍创意 新奇 有趣 实用的免费开源应用 系统 软件 硬件及技术 xff0c 一个探索 发现 分享 使用与互动交流的开源技术社区平台 致力于打造活力开源社区 xff0c 共建开源新生态 xff01 一 开源项目简介 介
  • (14)Ubuntu 安装 velodyne 激光雷达的Ros驱动包

    1 安装ROS驱动 xff1a sudo apt get install ros kinetic velodyne 2 创建ROS工程 xff1a mkdir p catkin velodyne src cd catkin velodyne
  • (2)ROS终端出现没有那个文件或目录,解决每次都要source问题

    1 在创建完程序包后需要 source catkin ws devel setup bash 即解决每次都要source方法 在终端输入 xff1a gedit bashrc 在文件末尾添加一下这一行 xff0c 保存即可 xff1a so
  • (3)GNSS在ROS中数据获取与解析

    1 在ubuntu16 04中安装串口工具minicom 输入sudo minicom s进行串口配置 xff1a 弹出如下设置界面 xff1a 使用方向键 选择 Serial port setup xff0c 按Enter键 xff0c
  • 一篇文章搞定Github API 调用 (v3)

    收藏 segmentfault 作者 SolomonXie 文章 xff1a 一篇文章搞定Github API 调用 v3 xff09
  • (3)安装ROS报错sh: 0: Illegal option -h解决办法及国内源ROS安装教程

    从ROS官网安装ROS报错 sh 0 Illegal option h 可能是软件源的原因 xff0c 使用国内的软件源可以解决此问题 1 安装软件源 xff0c 建议采用国内软件源 xff0c 下面的为USTC的软件源 sudo sh c
  • (1)robot_pose_ekf扩展卡尔曼滤波功能包的使用方法

    这里写自定义目录标题 robot pose ekf功能包的编译安装如何使用机器人姿势EKF 编译运行robot pose ekf订阅的话题发布的话题机器人姿态ekf如何工作参考文章 robot pose ekf功能包的编译安装 ros wi