【思维导图】nav_msgs/Odometry 消息的构成及订阅

导航功能包要求机器人 能够通过里程计信息源发布包含速度信息的里程计nav_msgs/Odometry 消息;

本篇整理了nav_msgs/Odometry消息的具体结构,更加清晰一点,以及如果订阅这种类型的topic时应该如何获取数据;

【思维导图】nav_msgs/Odometry 消息的构成及订阅_第1张图片

了解了具体的结构后来看一下简单一点的订阅实例:

typedef struct {
    float x;
    float y;
    float th;
} POSE2D;

vector odom_poses;

void ImageGrabber::GrabOdom(const nav_msgs::Odometry &odom_msg){
    cout << "get odom data" << endl;
    POSE2D odom_pose;
    double odom_time = odom_msg.header.stamp.toSec();
    double x = odom_msg.pose.pose.position.x;
    double y = odom_msg.pose.pose.position.y;
    double ang = odom_msg.pose.pose.orientation.w;

    odom_pose.x = x;
    odom_pose.y = y;
    odom_pose.th = ang;
    odom_poses.push_back(odom_pose);
}

这里需要声明一下POSE2D的数据包含位置x,y,同时包含机器人的pitch信息th;

你可能感兴趣的:(SLAM)