AutonomousFieldRoboticsLab / SVIn

Underwater Navigation with tightly coupled fusion of Visual Inertial Sonar and Depth Information
GNU General Public License v3.0
86 stars 19 forks source link

okvis node died after several seconds #14

Closed Song-Jingyu closed 2 days ago

Song-Jingyu commented 1 year ago

Hi,

When I was trying to run SVIn with the cave dataset, I saw the following error.

W0808 10:25:20.626619 336858 Subscriber.cpp:172] Frame delayed at time 1532199354.547382399
W0808 10:25:20.634047 336858 Subscriber.cpp:172] Frame delayed at time 1532199354.547884700
terminate called after throwing an instance of 'okvis::FrameSynchronizer::Exception'
  what():  [Exception] /home/jingyu/frog/svin_ws/src/SVIn/okvis_ros/okvis/okvis_multisensor_processing/src/FrameSynchronizer.cpp:128: detectionCompletedForAllCameras() assert(frameBuffer_[position].first->timestamp() > lastCompletedFrameTimestamp_ && (lastCompletedFrameId_ == 0 || frameBuffer_[position].first->id() > lastCompletedFrameId_)) failed: wrong order!
timestamp last: 1532199354.547382399
timestamp new:  1532199354.399061650
id last: 25903
id new:  25548
[okvis_node-4] process has died [pid 336858, exit code -6, cmd /home/jingyu/frog/svin_ws/devel/lib/okvis_ros/okvis_node /camera0:=/cam0/image_raw /camera1:=/cam1/image_raw /imu:=/imu/imu __name:=okvis_node __log:=/home/jingyu/.ros/log/874f02ca-35f5-11ee-b9cb-8d5efeec27ae/okvis_node-4.log].

I tried to play the rosbag at different rates (0.1-1.0) but this issue still happenned.

Would you mind providing any insight about why this happens? Thanks!

GHz12138 commented 1 year ago

I have the same problem,did you solve it?

xuduoudo0505 commented 8 months ago

I have the same problem also ,did you solve it?

1ADZX commented 5 months ago

Hi,

When I was trying to run SVIn with the cave dataset, I saw the following error.

W0808 10:25:20.626619 336858 Subscriber.cpp:172] Frame delayed at time 1532199354.547382399
W0808 10:25:20.634047 336858 Subscriber.cpp:172] Frame delayed at time 1532199354.547884700
terminate called after throwing an instance of 'okvis::FrameSynchronizer::Exception'
  what():  [Exception] /home/jingyu/frog/svin_ws/src/SVIn/okvis_ros/okvis/okvis_multisensor_processing/src/FrameSynchronizer.cpp:128: detectionCompletedForAllCameras() assert(frameBuffer_[position].first->timestamp() > lastCompletedFrameTimestamp_ && (lastCompletedFrameId_ == 0 || frameBuffer_[position].first->id() > lastCompletedFrameId_)) failed: wrong order!
timestamp last: 1532199354.547382399
timestamp new:  1532199354.399061650
id last: 25903
id new:  25548
[okvis_node-4] process has died [pid 336858, exit code -6, cmd /home/jingyu/frog/svin_ws/devel/lib/okvis_ros/okvis_node /camera0:=/cam0/image_raw /camera1:=/cam1/image_raw /imu:=/imu/imu __name:=okvis_node __log:=/home/jingyu/.ros/log/874f02ca-35f5-11ee-b9cb-8d5efeec27ae/okvis_node-4.log].

I tried to play the rosbag at different rates (0.1-1.0) but this issue still happenned.

Would you mind providing any insight about why this happens? Thanks!

This problem shows that there are duplicate frames in the frames corresponding to time 532199354.547382399 in the Cave data set, that is, the timestamps of two adjacent frames are equal. My solution is to add code to determine whether the timestamps are equal in the data subscription node, so as not to add duplicate frames to subsequent KFVIO.

joshi-bharat commented 2 days ago

It should work now as I have added stereo synchronizer to the code.