ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Visual odometry: low numbers of inlier (viso2/fovis)

asked 2015-08-21 15:06:47 -0500

catta202000 gravatar image

updated 2015-09-07 09:07:58 -0500

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.

edit retag flag offensive close merge delete


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.

Miquel Massot gravatar image Miquel Massot  ( 2015-08-24 04:56:06 -0500 )edit

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?

catta202000 gravatar image catta202000  ( 2015-08-27 09:34:34 -0500 )edit

And for the cameras light, i configured the two cameras with the same parameters, i don't know why one camera has more light.

catta202000 gravatar image catta202000  ( 2015-08-31 12:48:11 -0500 )edit

It looks like you could. Try also stereo_image_proc with aproximate_sync = true.

Miquel Massot gravatar image Miquel Massot  ( 2015-09-07 08:31:00 -0500 )edit

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.

catta202000 gravatar image catta202000  ( 2015-09-07 09:06:49 -0500 )edit

If the answer pleases you, would you please mark the question as answered?

Miquel Massot gravatar image Miquel Massot  ( 2015-10-27 10:21:59 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2015-09-11 03:34:17 -0500

Miquel Massot gravatar image

updated 2015-09-11 03:34:43 -0500

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.

edit flag offensive delete link more

Question Tools



Asked: 2015-08-21 15:06:47 -0500

Seen: 944 times

Last updated: Sep 11 '15