Rosanswers logo

Hi, everyone.

I'm trying to have a visual odometry with viso2_ros.
I got some warning and viso2_ros doesn't work well.
Could you give me some advice ?

I've already finished followings.

  1. With usb_cam, camera_calibration and stereo_image_proc, got stereo rectified images
  2. With image_view, confirmed that disparity image is published
  3. With viso2_ros(stereo_odometer) and rviz, confirmed that viso2_ros publish pose and odometry and it is shown in rviz
  4. With rqt_graph, checked that usb_cam, stereo_image_proc and stereo_odometer(viso2) are connected correctly

The problem is occur when a robot which has stereo camera is moved manually.
When the robot is moved, I get warning "Visual Odometer got lost!"
and the pose shown in rviz changes slightly.

For example, the pose changes only 5deg or so even if I rotate the robot to 90deg.

How can I solve this problem ?
Thanks in advance.

OS: Ubuntu 12.04
ROS distro: Groovy
Camera: Logicool USB Web cam(C600) X 2

Originally posted by moyashi on ROS Answers with karma: 721 on 2013-05-15

Post score: 1


1 Answer 1


Rosanswers logo

The viso2_ros stereo_odometer prints this error when the call to VisualOdometryStereo::process() fails. This can have several reasons. If your cameras are not perfectly synchronized (e.g. through a trigger cable), you could try to relax the match_disp_tolerance threshold. If you subscribe to the stereo_odometer/point_cloud topic in rviz, you can see the 3D positions of the features that the stereo_odometer uses. There should be a fair amount of points.

Originally posted by Stephan with karma: 1924 on 2013-05-16

This answer was ACCEPTED on the original site

Post score: 0

Original comments

Comment by moyashi on 2013-05-16:
Thank you! I set the parameter bigger(20), but the warning still appear. I'm not sure that all parameters are set correctly. If camera is towards to front of the robot, x axis of camera frame is along to x axis of the robot, right? Camera frame is attached to a left camera, isn't it?

Comment by Stephan on 2013-05-20:
If the camera looks forward, the robot's x axis coincides with the camera's z axis and the robot's y axis coincides with the camera's negative x axis. The camera coordinate system is defined as seen in the top image here: http://www.ros.org/wiki/image_pipeline/CameraInfo

Comment by moyashi on 2013-05-20:
Thank you. I modified tf configuration. However, the warning still appear. Even if I set the param to 100, I have the same situation. Do you have any ideas ?

Comment by Stephan on 2013-05-21:
Does the warning appear several times? I think it's normal to appear once in the first iteration. You can also inspect the message published on the ~info topic, especially the number of matches and the number of inliers.

Comment by moyashi on 2013-05-26:
Yes, several times. As you say, I checkd info topic. When the warning appears, the numbers are low. So maybe it is because the environment doesn't have enough features. Thank you.

Comment by Javier J. Salmerón García on 2013-06-04:
I have exactly the same problem here. When the camera is still, a little motion is found, but when I move the camera I always get a Visual Odometer got lost problem. When I move the camera almost 0 matches and inliners are found. I see the disparity map but not the point cloud, I also have 2 webcams

Comment by Stephan on 2013-06-04:
Javie: viso2_ros does not use the disparity map but if that looks fine your stereo system is calibrated well. Maybe your cameras have a lot of motion blur? If they use a rolling shutter this could be a problem as well.


Your Answer

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