Visual odometry: low numbers of inlier (viso2/fovis)
Hello everyone,
Im trying to use viso2_ros (or fovis_ros) for stereo visual odometry. Let's start from the beginning: i have a stereo rig with 2 Photonfocus MV1-D1312-40-GB-12 cameras with Pentax 6.5mm f/1.8 lenses
The camera are not synchronized, and the distance between them is around 18cm.
I calibrated the cameras using the camera_calibration ROS node:
I tried to run visual odometry indoor and outdoor, using viso2 and fovis.
This is the disparity image from the stereo_image_proc, and it looks good to me:
But i always got "visual odometry got lost" or "insufficient inlier", specially during turning. I tryed to change the visual odometry parameters in many ways without improvements.
This is a screenshot from the /stereo_odometer/info topic during turning:
I also noticed that the runtime is pretty high (between 0.3 and 0.8s).
Using fovis, the runtime is much better, but i often got "insufficient inlier".
What can be the problem? the cameras synchronization? the network speed? the calibration?
Configuration:
Ubuntu 14.04
ROS Indigo
PS: Sorry for my bad english, this is my first post, if something is not clear, let me know.
EDIT 07/09/2015: I implemented a software synchronization of the two cameras by changing the ROS camera driver, now the visual odometry seems to go better, but the computation still take too long, probably i should reduce the resolution of the cameras.
You could sync these cameras with the proper cable. One can act as master and the other as a slave, with a trigger input/output connection. Regarding inliers, try to get the same image quality in both cameras. In the image you attach, it looks like one camera has more light than the other.
For the sync, there is no trigger output pin in the cameras., but there is a strobe output pin. Can i attach the strobe output pin from the master camera to the trigger input pin in the slave camera?
And for the cameras light, i configured the two cameras with the same parameters, i don't know why one camera has more light.
It looks like you could. Try also stereo_image_proc with aproximate_sync = true.
I sent an email to the Photonfocus support, and they said that it is possible to wire the strobe output from the master camere to the trigger input of the slave camera. Of course, i always used the approximate_sync:=True in both stereo_image_proc and viso2, cause the camera were not synchronized.
If the answer pleases you, would you please mark the question as answered?