Reference Site
(예시) ROS time 기준 1643350626의 사진을 3개의 카메라에서 가지고 오라고 가정할 때, 각 clock frequency 가 다르다 보니 626 timestamp에 제일 근접한 것을 가지고 오려고 함. 이때 Cam1 에서는 622, Cam 2 에서는 625, Cam 3 에서는 620 등으로 다 다르게 가져올수 있는 현상이 발생
그런데, 하드웨어 sync 작업을 하게 되면 3대의 카메라의 clock frequency를 맞추는 효과가 있어서 626의 timestamp는 정확하지 않더라도 카메라끼리는 조금 더 균일한 timestamp로 이미지들을 가지고 옴 (예: Cam1: 622, Cam2: 623, Cam3: 622)
Reference Site
Code Example (PanoNetVLAD Code)
// Panorama Image Related
void Estimator::syncImage(double prev_time, double cur_time)
{
if(!frontimgBuf.empty())
{
double t = frontimgBuf.front().header.stamp.toSec();
if(t != cur_time)
{
ROS_WARN("NOT Sync Image !!");
return;
}
while(leftimgBuf.front().header.stamp.toSec() < prev_time)
leftimgBuf.pop();
while(rightimgBuf.front().header.stamp.toSec() < prev_time)
rightimgBuf.pop();
sensor_msgs::Image tmp_left_img = leftimgBuf.front();
sensor_msgs::Image tmp_front_img = frontimgBuf.front();
sensor_msgs::Image tmp_right_img = rightimgBuf.front();
tmp_left_img.header = tmp_front_img.header;
tmp_right_img.header = tmp_front_img.header;
left_image = tmp_left_img;
front_image = tmp_front_img;
right_image = tmp_right_img;
frontimgBuf.pop();
}
}