六哥,您好,想请问为什么VINS-Mono的特征点检测线程需要控制发布频率(复位控制频率)?
config文件说设置freq为1000,就是图像原始运行频率,既然rosbag包都是原始运行频率,为什么这里还要调整频率?具体就是下面这部分的代码。
以及还有不懂的地方就是,下面代码中的TODO的地方
if (round(1.0 * pub_count / (img_msg->header.stamp.toSec() - first_image_time)) <= FREQ)
{
PUB_THIS_FRAME = true;
// reset the frequency control
if (abs(1.0 * pub_count / (img_msg->header.stamp.toSec() - first_image_time) - FREQ) < 0.01 * FREQ)
{
first_image_time = img_msg->header.stamp.toSec();
pub_count = 0;
}
}
else
PUB_THIS_FRAME = false;
// TODO: 为什么这里还需要判断img_msg->encoding的类型再做转换?是有什么注意事项吗?
// 例如当img_msg->encoding = '8UC1'时为什么不能够只写
// ptr = cv_bridge::toCvCopy(img, sensor_msgs::image_encodings::MONO8);
cv_bridge::CvImageConstPtr ptr;
if (img_msg->encoding == "8UC1")
{
sensor_msgs::Image img;
img.header = img_msg->header;
img.height = img_msg->height;
img.width = img_msg->width;
img.is_bigendian = img_msg->is_bigendian;
img.step = img_msg->step;
img.data = img_msg->data;
img.encoding = "mono8";
ptr = cv_bridge::toCvCopy(img, s
0 个回答
暂无回答