robot_localization包的使用

robot_localization包没有限制传感器的数据输入。

支持的状态估计节点数据类型:

• nav_msgs/Odometry
• geometry_msgs/PoseWithCovarianceStamped
• geometry_msgs/TwistWithCovarianceStamped
• sensor_msgs/Imu

状态向量:[x y z α β γ x˙ y˙ z˙ α˙ β˙ γ˙ ˙x˙ ˙y˙ ˙z˙](分别代表线速度,欧拉角,加速度,角加速度)

两种典型使用案例:

  • 融合连续的传感器数据(里程计和IMU)创建局部精确的状态估计
  • 融合连续的传感器数据及全局位姿估计来提供精确而完整的全局状态估计

状态估计节点

  • ekf_localization:扩展卡尔曼滤波
  • ukf_localization:无迹卡尔曼滤波

gps传感器预处理节点

navsat_transform_node:允许用户将地理坐标(纬度和经度)转换为机器人的世界框架(通常是map或odom)

robot_localization包的使用_第1张图片

TF树

robot_localization包的使用_第2张图片

协方差矩阵(包含初估计方差和噪声方差)

robot_localization包的使用_第3张图片

kf_localization_node

指明坐标框架




传感器输入










robot_localization包的使用_第4张图片

协方差矩阵的输入

噪声方差

process_noise_covariance: [0.05, 0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0.05, 0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0.06, 0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0.03, 0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0.03, 0,    0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0.06, 0,     0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0.025, 0,     0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0.025, 0,    0,    0,    0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0.04, 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.01, 0,    0,    0,    0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0.02, 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.01, 0,
                           0,    0,    0,    0,    0,    0,    0,     0,     0,    0,    0,    0,    0,    0,    0.015]

估计方差

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,    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,    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,    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,     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]

使用navsat_transform_node

过程

  • 将gps数据转换成UTM坐标
  • 使用初始的UTM坐标,EKF/UKF输出和IMU生成从UTM网格到机器人世界框架的(静态)变换T
  • 使用T变换所有测量的gps数据
  • 将数据发给EKF/UKF

需要的输入:
• nav_msgs/Odometry (EKF输出,需要机器人当前的位置)
• sensor_msgs/Imu (必须有陀螺仪,需要确定全局朝向)
• sensor_msgs/NavSatFix (从导航卫星设备输出)

相关设置





robot_localization包的使用_第5张图片

 

 

 

你可能感兴趣的:(ROS)