实物机器人发布odom到baselink的tf变换
摘要:
ros navigation stack的输入默认是amcl定位,该定位包做好了map->odom->base_link的变换的,当需要替换为其他定位方式或定位包时就不一定有这个转换了。本文主要介绍如何提供定位包需要订阅的odom->base_link的变换。
参考
真实机器人的tf变换
ros官方有个教程,该教程假设了机器人走一个圆。基础可以参考上方链接。本文之展示如何通过轮速里程计来开发,尤其是轮速来获取速度和位置。
int leftSpeedTick = encoderMsg->leftTick;
int rightSpeedTick = encoderMsg->rightTick;
double leftRpm = (double)leftSpeedTick * 60.0 / 65536.0 / wheelRate_;
double rightRpm = (double)rightSpeedTick * 60.0 / 65536.0 / wheelRate_;
double vx = rpm_to_liner_vel_x(leftRpm,rightRpm);
double vth = rpm_to_liner_vel_th(leftRpm,rightRpm);
current_time = ros::Time::now();
//compute odometry in a typical way given the velocities of the robot
double dt = (current_time - last_time).toSec();
double delta_x = (vx * cos(th)) * dt;
double delta_y = (vx * sin(th)) * dt;
double delta_th = vth * dt;
x += delta_x;
y += delta_y;
th += delta_th;
版权声明:本文为u012197995原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。