Rosanswers logo

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 Stereo rig


The camera are not synchronized, and the distance between them is around 18cm.

I calibrated the cameras using the camera_calibration ROS node:

Camera calibration

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: Disparity

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:

viso2 info topic

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?


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.

Originally posted by catta202000 on ROS Answers with karma: 11 on 2015-08-21

Post score: 1

Original comments

Comment by Miquel Massot on 2015-08-24:
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.

Comment by catta202000 on 2015-08-27:
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?

Comment by catta202000 on 2015-08-31:
And for the cameras light, i configured the two cameras with the same parameters, i don't know why one camera has more light.

Comment by Miquel Massot on 2015-09-07:
It looks like you could. Try also stereo_image_proc with aproximate_sync = true.

Comment by catta202000 on 2015-09-07:
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.

Comment by Miquel Massot on 2015-10-27:
If the answer pleases you, would you please mark the question as answered?


1 Answer 1


Rosanswers logo

From what I see and what you commented, there are not enough inliers in your sequence. This can be caused by several issues.

The first issue you should solve is to remove the black border in the images. This rectangle appeared due to rectification. If I remember well, there's a slider in the calibration process where you can make this border dissapear.

The second issue is the speed. The faster you compute odometry, the less movement appears in the images. Viso2 expects high to normal framerates. It uses simple features not intended for high displacements. So try to resize your rectified images to something more handy. For example, half of the resolution. For that you can use camera bining, or software resize.

In image proc there's a tool for that. See this launchfile.

And finally, if that is not enough, you may have to touch the parameters, but it's unusual.

Originally posted by Miquel Massot with karma: 1471 on 2015-09-11

This answer was ACCEPTED on the original site

Post score: 0


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.