#include <base_local_planner/odometry_helper_ros.h>
首先看其头文件,可以知道OdometryHelperRos类是base_local_planner局部规划器里起辅助功能的一个类,主要作用就是从/odom的topic中获取机器人的速度状态(包括线速度(x,y),和角速度z)
TrajectoryPlannerROS局部规划器初始化的时候便调用这个类初始化/odom topic
TrajectoryPlannerROS::TrajectoryPlannerROS() :
world_model_(NULL), tc_(NULL), costmap_ros_(NULL), tf_(NULL),
setup_(false), initialized_(false), odom_helper_("odom") {}
1. OdometryHelperRos ( std::string odom_topic = “” )
OdometryHelperRos()在初始化的时候,新建了NodeHandle并设置关注的topic的名称odom_topic;
并在回调函数odomCallback()中, 取出速度信息
base_odom_.twist.twist.linear.x = msg->twist.twist.linear.x;
base_odom_.twist.twist.linear.y = msg->twist.twist.linear.y;
base_odom_.twist.twist.angular.z = msg->twist.twist.angular.z;
base_odom_.child_frame_id = msg->child_frame_id;
2. getRobotVel(tf::Stamped < tf::Pose>& robot_vel)
getRobotVel()函数更像是一个数据类型转换的工具,将速度信息从nav_msgs::Odometry转换到tf::Stamped< tf::Pose>中, 然后供外部调用.上图便是一个它的一个被调用图.
3. getOdom( nav_msgs::Odometry & base_odom )
getOdom()则将odom的速度信息以nav_msgs::Odometry格式传递出去;
总之, base_local_planner并没有使用/odom中的位置信息仅是使用了它的速度信息.