Indigo/ROSJava/Android/科大讯飞

03-数据融合-机器人定位

2016-12-12  本文已影响2762人  joey_zhou

参考:http://wiki.ros.org/robot_localization

什么是机器人定位robot_localization

robot_localization是一系列的机器人状态估计节点集合,其中每一个都是用于三维平面的机器人非线性状态估计,它包括两个机器人状态估计节点ekf_localization_node和ukf_localization_node。此外也提供了 navsat_transform_node节点用于整合GPS数据。
更详尽的细节可以查看robot_localization的参考文献

特性

所有的状态估计节点有相似的特性,例如:

所有状态估计节点跟踪机器人15个状态维度 (x, y, z, roll, pitch, yaw, 他们各自的速度和线加速度)。

robot_localization安装

  1. ubuntu软件源安装

     sudo apt-get install ros-indigo-robot-localization
    
  2. git 安装

     source /opt/ros/indigo/setup.bash
     cd catkin_ws/src
     git clone https://github.com/cra-ros-pkg/robot_localization --branch indigo-devel
     cd ..
     catkin_make -DCMAKE_BUILD_TYPE=Release
     source catkin_ws/devel/setup.bash
    

状态估计节点

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

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

  3. 使用robot_localization的状态估计节点
    在robot_localization在的launch file中每个节点有大量的参数需要配置,软件包中包含了示例launch文件帮助入门。

  4. 参数
    robot_localization的状态估计节点具有大量参数可以用于估计计算,参数如下所示,另外,我们提供了示例的sample ekf_template.launch和 ukf_template.launch文件,文件的注释非常清晰。
    4.1 标准参数

其中的布尔值是X, Y, Z, roll, pitch, yaw, X velocity, Y velocity, Z velocity, roll velocity, pitch velocity, yaw velocity, X acceleration, Y acceleration, 和 Z acceleration. 在这个例子中,我们将融合 X 和 Y position, yaw, X velocity, 和 yaw velocity. 注意这个分类在传感器坐标系中完成而不再世界坐标系或者机器人坐标系中。参见 Sensor Integration tutorial

4.2 扩展参数

4.3 节点特有参数
标准和扩展的参数可以用于所以robot_localization节点,这个参数用于特定的节点。
4.3.1 ukf_localization_node
ukf_localization_node 依照original paperwiki article的语法

  1. 发布主题
  1. 发布的坐标变换
  1. Manual State Reset手动状态重置
    通过分配geometry_msgs/PoseWithCovarianceStamped消息到set_pose主题, 用户可以手动设置滤波器的状态,这在重置滤波器的过程中非常有用,可以在测试过程中重置滤波器,并且可以与rviz交互。此外同样,状态估计节点发布一个SetPose服务,服务类型是robot_localization/SetPose

其他节点

  1. navsat_transform_node
    navsat_transform_node输入 nav_msgs/Odometry 消息 (通常是ekf_localization_node或ukf_localization_node的输出), 和一个包含准确的机器人朝向估计的 sensor_msgs/Imu ,还有一个包含GPS数据的sensor_msgs/NavSatFix 消息。它生成一个世界坐标系的里程消息。 注意当将这个节点的输出与其他节点数据融合时,应该确保odomN_differential设置是false

1.1 Parameters参数

1.2 订阅的主题

1.3 Published Topics

1.4 Published Transforms

上一篇 下一篇

猜你喜欢

热点阅读