问题:
map中status:Error报错,no transform from map to base_footprint. 有时候会延迟几分钟后显示正常。如图1所示
打开rqt,显示base_footprint上面没有连接任何TF发布,如图2或者图3情况。
图1
图2
图3
问题原因:
缺少odom与base_footprint的TF转换
解决方法:
在小车对象中添加
tf::TransformBroadcaster odom_broadcaster;
在该对象的文件添加
#include <tf/transform_broadcaster.h>
在话题发布的CPP文件中,
odom话题发布下添加
current_time_ = ros::Time::now();
// 发布TF
geometry_msgs::TransformStamped odom;
odom.header.stamp = current_time_;
odom.header.frame_id = "odom";
odom.child_frame_id = "base_footprint";
geometry_msgs::Quaternion odom_quat;
odom_quat = tf::createQuaternionMsgFromYaw(theta);
odom.transform.translation.x = x_;
odom.transform.translation.y = y_;
odom.transform.translation.z = 0.0;
odom.transform.rotation = odom_quat;
odom_broadcaster.sendTransform(odom_trans);