ros中常见的坐标衔接关系为:map–>odometry–>base_link(base_footprint),所以随着机器人的移动,我们需要生成机器人的里程计信息,如此可以提供机器在map中大致的位置,一方面可以提供给相关算法(SLAM)减少搜索空间,另一方面如果没有SLAM也可以进行低精度的行走与导航。
odometry数据是由底盘的轮速与角速度结合起来计算并发布出来的,以下是ros官网的odometry数据生成源码。
#include <ros/ros.h>
#include <tf/transform_broadcaster.h>
#include <nav_msgs/Odometry.h>
int main(int argc, char** argv){
ros::init(argc, argv, "odometry_publisher");
ros::NodeHandle n;
ros::Publisher odom_pub = n.advertise<nav_msgs::Odometry>("odom", 50);
tf::TransformBroadcaster odom_broadcaster;
double x = 0.0;
double y =