功能包

  • rf2o_laser_odometry
  • robot_localization
  • 3
  • 4

rf2o_laser_odometry

代码地址 :`https://github.com/MAPIRlab/mapir-ros-pkgs`

rf2o_laser_odometry相当于激光里程计

----------------------------------------------------------------------------------------------

robot_localization

代码地址:https://github.com/cra-ros-pkg/robot_localization
参考使用:https://www.freesion.com/article/51831322254/#_1

robot_localization是状态估计节点的集合

在robot_localization包中包含了两个状态估计节点

(1)ekf_localization_node 是一个扩展卡尔曼估计器,它使用一个三维测量模型随着时间生成状态,同时利用感知数据校正已经监测过的估计。

ekf_se_map:frequency: 20sensor_timeout: 1two_d_mode: truetransform_time_offset: 0.0transform_timeout: 0.0print_diagnostics: falsedebug: falseuse_control: falsemap_frame: mapodom_frame: odombase_link_frame: base_linkworld_frame: mapodom0: /car/navsat_transform_map/odomodom0_config: [true, true, false,false, false, false,false,  false, false,false, false, false,false, false, false]odom0_queue_size: 1odom0_nodelay: trueodom0_differential: falseodom0_relative: falseodom0_remove_gravitational_acceleration: trueimu0: /car/imuimu0_config: [false, false, false,false, false, true,false, false, false,false, false, true,true,  false, false]imu0_nodelay: falseimu0_differential: falseimu0_relative: falseimu0_queue_size: 1imu0_remove_gravitational_acceleration: trueprocess_noise_covariance: [1e-3, 0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    1e-3, 0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    1e-3, 0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0.3,  0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0.3,  0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0.01, 0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0.5,   0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0.5,   0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0.1,  0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0.3,  0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0.3,  0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0.3,  0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0.3,  0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0.3,  0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0.3]initial_estimate_covariance: [1e-9, 0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    1e-9, 0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    1e-9, 0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    1.0,  0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    1.0,  0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    1e-9, 0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    1.0,  0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    1.0,  0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    1.0,  0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    1.0,   0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     1.0,   0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     1.0,   0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     1.0,  0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    1.0,  0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    1.0]
ekf_se_odom:frequency: 20sensor_timeout: 0.1two_d_mode: true #平面设置为truetransform_time_offset: 0.0 #生成时间戳要用transform_timeout: 0.0print_diagnostics: false #如果为True则向/diagnostics话题发布数据,用于调试程序debug: falseuse_control: false #会监听/cmd_vel的geometry_msgs/Twist信息map_frame: mapodom_frame: car/odombase_link_frame: car/base_linkworld_frame: car/odomimu0: /car/imuimu0_config: [false, false, false,false, false, true,false, false, false,false, false, true,false,  false, false]imu0_nodelay: falseimu0_differential: falseimu0_relative: falseimu0_queue_size: 1imu0_remove_gravitational_acceleration: trueprocess_noise_covariance: [1e-3, 0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    1e-3, 0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    1e-3, 0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0.3,  0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0.3,  0,    0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0.01, 0,     0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0.5,   0,     0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0.5,   0,    0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0.1,  0,    0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0.3,  0,    0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0.3,  0,    0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0.3,  0,    0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0.3,  0,    0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0.3,  0,0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0.3]initial_estimate_covariance: [1e-9, 0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    1e-9, 0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    1e-9, 0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    1.0,  0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    1.0,  0,    0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    1e-9, 0,    0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    1.0,  0,    0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    1.0,  0,    0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    1.0,  0,     0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    1.0,   0,     0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     1.0,   0,     0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     1.0,   0,    0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     1.0,  0,    0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    1.0,  0,0,    0,    0,    0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    1.0]

(2) ukf_localization_node 是一个无迹卡尔曼滤波估计器,它使用一系列sigma点通过非线性变换生成状态,并使用这些估计过的sigma点覆盖状态估计点和协方差,这个估计使用雅克比矩阵并使得估计器更加稳定。然而缺点是比ekf_localization_node耗费更大的计算量。

(3)navsat_transform_node节点

navsat_transform:frequency: 20#计算从GPS坐标到机器人世界坐标的转换之前等待的时间(秒)。delay: 0.0 #此参数指如果尚不可用坐标转换,需要等待的时间,默认为0,不等待#The value 0 means we just get us the latest available (see tf2 implementation) transform,transform_timeout: 1.0 #如果您的IMU未考虑磁偏角,请在此处输入您所在位置的值。如果你不知道,#此参数是必需的。#看http://www.ngdc.noaa.gov/geomag-web/(请确保将该值转换为弧度)。# For lat/long 55.944831, -3.186998magnetic_declination_radians: 0  #IMU的偏航,一旦magentic_declination_radians值被添加到它#当面向东方时,应该报告0。如果是#如果没有,请在此处输入偏移量。默认值为0。 yaw_offset: 0 #如果这是真的,则输出里程计信息中的高度设置为0。默认为false。zero_altitude: true#如果这是真的,将广播变换world_frame->utm变换以供其他节点使用。#默认为false。broadcast_utm_transform: false#如果这是真的,将发布utm->world_frame变换,而不是world_frame->utm变换。#请注意,仍然必须启用广播utm转换。默认为false。broadcast_utm_transform_as_parent_frame: false  #如果为true,navsat_transform_节点也会将机器人的世界坐标系(如地图)#位置转换回GPS坐标,#并在/GPS/filtered主题上发布sensor_msgs/NavSatFix消息。  publish_filtered_gps: true use_odometry_yaw: falsewait_for_datum: true # 设置为false,下方datum不需要定义,每次加载出来的小车起点都在地图的起点处!为true时,datum的经纬读就是地图的起点,小车的位置要和datum的经纬度比较。#datum: [34.8063928, 113.4973400, 0.0] #定义起点处经纬度#datum: [31.75669642, 117.18576584, 0.0]datum: [31.756573,117.18815044,0.0]

/*-----------------------------------------------------------------------------------------------/

在官方文件中 params/dual_ekf_navsat_example.yaml包含了navsat_transform和ekf_se_odom 直接加载即可

<rosparam command="load" file="$(find robot_localization)/params/dual_ekf_navsat_example.yaml" />

整体架构
节点的关系

3

4

rf2o_laser_odometry和robot_localization相关推荐

  1. ROS学习笔记之——robot_localization包

    之前博客已经介绍过robot_pose_ekf功能包以及(extended)kalman滤波的原理< ROS学习笔记之--EKF (Extended Kalman Filter) node 扩展 ...

  2. robot_localization中EKF源码介绍

    robot_localization中EKF源码介绍 /** Copyright (c) 2014, 2015, 2016 Charles River Analytics, Inc.* Copyrig ...

  3. ros移动机器人,激光雷达里程计rf2o_laser_odometry的使用与分析

    目录 1.问题分析 2.激光雷达里程计 2.1 代码下载 2.2 使用方法 (1) ERRO:"base_link" passed to lookupTransform argum ...

  4. rf2o_laser_odometry运行警告Waiting for laser_scans....

    项目场景: rf2o是我们常用的一个功能包,其功能主要就是在缺少轮式里程计的时候用雷达数据计算机器人的运动,模拟一个里程计的功能 问题描述 最近搞rf2o的过程中遇到了一个问题,它老是警告我,会一直输 ...

  5. rf2o_laser_odometry常见问题

    二维激光雷达里程计 rf2o_laser_odometry 常见问题 前言 激光雷达里程计 代码下载 使用方法 1.运行rf2o_laser_odometry出现Waiting for laser_s ...

  6. 基于rf2o_laser_odometry纯激光里程计的gmapping建图

    ROS环境:ubuntu16.04 & ROS kinetic 激光雷达:EAI-X4 or RPlidar-A1 激光里程计:rf2o_laser_odometry 建图:gmapping ...

  7. robot_localization:配置

    转自:https://blog.csdn.net/learning_tortosie/article/details/103346902  仅供学习 将传感器数据合并到robot_localizati ...

  8. ros robot_localization

    robot_localization是状态估计节点的集合,每个节点都是针对在3D空间中移动的机器人的非线性状态估计器的实现. 它包含两个状态估计节点ekf_localization_node和ukf_ ...

  9. robot_localization多传感器定位-IMU数据的校准与融合

    robot_localization多传感器融合中的IMU数据获取分四个部分来说明,分别是数据类型.IMU校准及融合理论.rikirobot源码解析以及优化 第一部分:数据类型 robot_local ...

  10. 运行rf2o_laser_odometry时出现错误

    ERRO:"base_link" passed to lookupTransform argument source_frame does not exist. 或者 ERRO:I ...

最新文章

  1. 北大数学天才许晨阳,回国效力6年后,为什么又去了美国任教?
  2. 趣谈网络协议笔记-二(第十九讲)
  3. kafka log4j配置
  4. 【多线程学习笔记】sychronized关键字底层原理、sychronized与ReentrantLock、volatile和synchronized
  5. 为什么那么好的女孩子还单身?
  6. 【概率论】对弈输光模型,ruin model
  7. 域迁移过程下详细步骤
  8. dispatch_sync
  9. 无穷级数判敛方法使用限制
  10. MIPS汇编语言学习笔记27:数组
  11. 地理信息科学考计算机二级,全国信息化工程师----GIS应用水平考试大纲(二级)...
  12. 如何将3d文件在网页中显示(webGL,three.js)
  13. Linux的vx开头的文件,微博 Qzone 微信 Linux文件及目录常用命令,进来瞅瞅
  14. Android 通过 WebView 请求下载 APK
  15. mybatis的插入与批量插入的返回ID的原理
  16. treeview demo
  17. 隔空手势操作、智能护眼模式——详解优酷最新交互技术
  18. HTTP 与 HTTPS 的理解
  19. Android AbsoluteLayout布局(绝对布局)
  20. vscode一格式化就报错?各种风格问题各种报错烦不胜烦,教你如何用好vue的eslint风格配置...

热门文章

  1. 启动 COMSOL 时发生意外错误:无法加载文件或程序集 ‘cstextrenderer_wpf‘
  2. C语言实现调用python绘图
  3. Android ndk开发C调用C++
  4. PyQt窗口设计之Qt Designer
  5. IDEA 打包jar
  6. Linux 的文件与目录(软连接和硬连接)
  7. Flink POJO类状态使用注意事项
  8. 数据可视化—第七次人口普查数据分析(基于d3.js)
  9. uni-app引入阿里图标【单色】
  10. 值得推荐的Vue 移动端UI框架