【思维导图】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;

nav_msgs/OdometryROS (Robot Operating System) 中的一个消息类型,用于传递机器人的运动信息。Odometry里程计)表示机器人通过跟踪车轮或其他运动传感器的旋转和位移来估计自身位置和姿态。 这个消息类型包含了机器人的位置、姿态和速度信息。具体来说,包括了机器人在世界坐标系下的位置(坐标和方向),机器人在地图坐标系下的位置(坐标和方向),机器人当前线速度和旋转速度等。 这个消息类型的主要组成部分包括: 1. Header:包含了消息的时间戳和坐标系信息。 2. Child Frame ID:表示相对于哪个坐标系计算得出的位置和姿态。 3. Pose:包含了机器人在世界坐标系下的位置和姿态。 4. Pose Covariance:包含了位置和姿态的协方差矩阵,用于描述位置和姿态的不确定性。 5. Twist:包含了机器人的线速度和旋转速度。 6. Twist Covariance:包含了线速度和旋转速度的协方差矩阵,用于描述线速度和旋转速度的不确定性。 机器人在运动过程中,通过传感器获取到的旋转和位移信息会被用于计算机器人的新位置,并更新Odometry消息中的位置和姿态。这个消息类型在导航、路径规划、SLAM(Simultaneous Localization and Mapping,同时定位与地图构建)等机器人领域非常常用,可以帮助机器人实时获取自身的运动状态,并为后续的决策和控制提供依据。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值