报错原因
按照报错解释,以为是frame id没有正确设置,但其实代码没有问题。代码如下:
void publish_gnss_path(rclcpp::Publisher<nav_msgs::msg::Path>::SharedPtr pubPath)
{
if (gnss_extrinsic_initialized == false) {
return;
}
set_gps_posestamp(msg_gps_pose);
msg_gps_pose.header.frame_id = "camera_init";
msg_gps_pose.header.stamp = get_ros_time(lidar_end_time);
/*** if path is too large, the rvis will crash ***/
static int jjjj = 0;
jjjj++;
if (jjjj % 2 == 0)
{
gps_path.poses.push_back(msg_gps_pose);
pubPath->publish(gps_path);
}
}
可以看到提示是在time = 0.0的时候,才有frame_id为空。所以联想到应该有一个初始化的动作,告诉这个topic它的frame_id。
解决办法
在初始化的时候,对gps_path的frame_id赋值。
gps_path.header.stamp = this->get_clock()->now();
gps_path.header.frame_id = "camera_init";