TouchDeeper / VIW-Fusion

Visual-inertial-wheel fusion odometry, better performance in scenes with drastic changes in light
GNU General Public License v3.0
436 stars 108 forks source link

a strange bug #25

Closed TheCuriousJoe closed 1 month ago

TheCuriousJoe commented 2 months ago

Great work!!!

But when I run your project, whether I use a public dataset or my own dataset, it always prints “wait for wheel …”, it seems that wheelVelBuf is empty. But the topic name is correct and it does have wheel data in that topic.

The strange thing is that sometimes it doesn’t print “wait for wheel …” and can work. That’s really confused me.

My work environment is a virtual machine and ubuntu18.04.

Looking forward to your reply!

Thanks!

w@w-vm:~/Projects/viw_fusion_ws$ rosrun vins vins_node /home/w/Projects/viw_fusion_ws/src/VIW-Fusion/config/robot/mono_imu_config.yaml [ INFO] [1718359519.053612103]: init begins config_file: /home/w/Projects/viw_fusion_ws/src/VIW-Fusion/config/robot/mono_imu_config.yaml USE_IMU: 1 USE_WHEEL: 1 INITIAL_WITH_WHEEL: 1 USE_PLANE: 1 IMU_TOPIC: /robot/imu WHEEL_TOPIC: /robot/odom [ WARN] [1718359519.056513415]: fix extrinsic param [ WARN] [1718359519.057242645]: fix intrinsic param result path /home/w/Projects/viw_fusion_ws/src/VIW-Fusion/output/robot/vio.csv groundtruth path /home/w/Projects/viw_fusion_ws/src/VIW-Fusion/output/robot/groundtruth.csv [ WARN] [1718359519.057319299]: fix extrinsic param camera number 1 [ INFO] [1718359519.057357816]: Unsynchronized sensors, online estimate time offset, initial td: 0 [ INFO] [1718359519.057385537]: Synchronized sensors, fix time offset: 0 [ INFO] [1718359519.057402633]: ROW: 480 COL: 640 exitrinsic cam 0 0 0 1 -1 0 0 0 -1 0 0.23777 -0.0667 -0.00535 exitrinsic wheel 1 0 0 0 1 0 0 0 1 0.07494 -0.04795 0.06335 initrinsic wheel 1 1 1 set g 0 0 9.8015 [ INFO] [1718359519.057529519]: reading paramerter of camera /home/w/Projects/viw_fusion_ws/src/VIW-Fusion/config/robot/cam.yaml MULTIPLE_THREAD is 1 [ WARN] [1718359519.057699677]: waiting for image and imu... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ... wait for wheel ...

TouchDeeper commented 2 months ago

@TheCuriousJoe I'm sorry for my late reply.

I'm currently unsure of the issue, but it might be due to an abnormal value of td_wheel, which is preventing the acquisition of wheel speed information for this period. You can add some log information to help identify the problem. For example, when you reach the printf("wait for wheel ... \n"); line, you could further print out the specific query timestamp feature.first + td - td_wheel, as well as the timestamps of the data in the wheelbuf buffer, to compare and see if they are normal.