【思維導圖】nav_msgs/Odometry 消息的構成及訂閱

導航功能包要求機器人 能夠通過里程計信息源發佈包含速度信息的里程計nav_msgs/Odometry 消息;

本篇整理了nav_msgs/Odometry消息的具體結構,更加清晰一點,以及如果訂閱這種類型的topic時應該如何獲取數據;

瞭解了具體的結構後來看一下簡單一點的訂閱實例:

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

vector<POSE2D> 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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章