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

这篇具有很好参考价值的文章主要介绍了ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在仿真下使用robot_pose_ekf

仿真环境为 一个无人机,具备3D POSE里程计数据,和imu数据。
ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践
ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践
ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践
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.

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

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

rostopic echo /firefly/odometry_sensor1/odometry

打印话题,查看如下
ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践
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"

把这里的噪声加上即可
ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践
协方差这里不再是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

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

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]

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

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]

ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践
与真实无人机高度吻合文章来源地址https://www.toymoban.com/news/detail-490983.html

到了这里,关于ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【机器人位姿表示】好的、坏的、丑的机器人位姿表示

    关于作者: Paul Furgale 是苏黎世联邦理工学院(ETH Zurich)自动化系统实验室的副主任。他的研究重点是移动机器人系统的长期自主性,包括在高度动态环境中长时间尺度的感知、建图、定位和规划。他是 V-Charge 的科学协调员,这是一个欧洲项目,同时也是工业/学术合作,旨

    2024年02月03日
    浏览(37)
  • 【ROS2机器人入门到实战】2.ROS2功能包与工作空间

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 大家好,我是小鱼~上一节小鱼给大家介绍了一下节点,运行一个

    2024年01月23日
    浏览(51)
  • 4.1底盘基础功能:nmcli命令配置机器人无线网 Xshell中进行(冰达ros机器人例程运行)

    4.1.3nmcli命令配置机器人无线网 Xshell中进行(Xshell此软件安装包在3.windows实用软件当中下载)注:如果没有办法使用直接百度上搜索Xshell官网下载最新版本 配置无线网络视频教程首先准备一台路由器和网线 如下图所示连接小车(注:路由器可以没有互联网) 连上小车后需等

    2024年04月25日
    浏览(49)
  • RoboMaster EP 实用功能开发(三): 基于树莓派的ROS2机器人系统搭建

    功能: 在树莓派4b上安装ros2系统,引入robomaster sdk,搭建一个基于ROS2的机器人系统,用于ROS系统的学习、开发和实践。 硬件: RobotMaster EP、树莓派4b 系统平台: Ubuntu 20.04、ROS2(Foxy) 开发语言及主要库函数版本:p ython == 3.8,robomaster == 0.1.1.62 一、树莓派4b安装ubuntu20.04  

    2024年02月09日
    浏览(45)
  • ROS中map,odom坐标系的理解以及acml和robot_pose_ekf的对比和小车漂移方法解决

    之前一直不知道odom,map到底是什么关系,看了这个博客:https://blog.csdn.net/u012686154/article/details/88174195 才了解了一些。这边记录我自己的看法,看下是否正确: 我想解决的问题是:计算出小车在真实世界(这个坐标系称为map)的位置 我可以得到的数据: gazebo的传感器(比如 lib

    2024年01月18日
    浏览(30)
  • 机器人连续位姿同步插值轨迹规划—对数四元数、b样条曲线、c2连续位姿同步规划

    简介: Smooth orientation planning is benefificial for the working performance and service life of industrial robots, keeping robots from violent impacts and shocks caused by discontinuous orientation planning. Nevertheless, the popular used quaternion inter polations can hardly guarantee C2 continuity for multiorientation interpolation. Aiming at the pro

    2024年02月09日
    浏览(38)
  • 机器人连杆惯量参数辨识(估计)

    杆的转动惯量的计算公式是I=mr^2。在经典力学中,转动惯量(又称质量惯性矩,简称惯矩)通常以I 或J表示,SI 单位为 kg·m²。对于一个质点,I = mr²,其中 m 是其质量,r 是质点和转轴的垂直距离。 力矩等于转动惯量乘以角加速度即M=J*a。J是转动惯量,a是角加速度,M是力

    2024年02月06日
    浏览(41)
  • 【机器人状态估计】粒子滤波算法介绍

    问题分类:位姿追踪、局部定位、全局定位;静态、动态环境定位;单一机器人定位、多机器人定位。 贝叶斯滤波框架: 定位置信度与运动模型卷积,两次独立估计值的整合比单一估计值使系统状态确定性更高。 基本思路 随机产生M个粒子(如M=1000),每个粒子表示状态变

    2024年02月22日
    浏览(39)
  • nav_msgs/Odometry.h发布机器人位姿(位置和方向)和线速度、角速度

    在 ROS(Robot Operating System)中, #include nav_msgs/Odometry.h 是一个用于处理和发布里程计数据的头文件。这个头文件定义了 nav_msgs/Odometry 消息类型,它广泛用于在 ROS 中表示机器人或其他移动实体的运动学和位置信息。以下是 nav_msgs/Odometry 消息类型的一些主要功能和组成部分:

    2024年02月12日
    浏览(36)
  • 基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

    随着我们了解到机器人如何建立运动学模型和动力学模型之后,我们可以使用Matlab中的仿真工具箱内来对模型的准确性进行验证,并且可以通过内置的函数进行简单的轨迹规划和可视化观察,本节涉及到的工具箱是MATLAB自带的Robotics Toolbox工具箱。 平移与旋转函数: SE2(x,y,t

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包