[Documentation] [TitleIndex] [WordIndex

Only released in EOL distros:  

fovis: fovis_ros | libfovis

Package Summary

fovis_ros is a ROS-wrapper for libfovis, a visual odometry library. It implements ROS-nodes that interact with the library via ROS services and messages.

fovis: fovis_ros

Package Summary

A ROS-Wrapper for fovis, a library for visual odometry. Maintained by the Systems, Robotics and Vision group of the University of the Balearic Islands, Spain. http://srv.uib.es

fovis: fovis_ros

Package Summary

A ROS-Wrapper for fovis, a library for visual odometry. Maintained by the Systems, Robotics and Vision group of the University of the Balearic Islands, Spain. http://srv.uib.es

Overview

This package contains two nodes that talk to fovis (which is build by the fovis package): mono_depth_odometer and stereo_odometer. Both estimate camera motion based on incoming rectified images from calibrated cameras. The first one needs a registered depth image to associate a depth value to each pixel in the incoming image, the second one calculates this depth from a calibrated stereo system. Both odometers provide full 6DOF incremental motion estimates and should work out of the box.

Used tfs

Please read REP 105 for an explanation of odometry frame ids.

The chain of transforms relevant for visual odometry is as follows:

Visual odometry algorithms generally calculate camera motion. To be able to calculate robot motion based on camera motion, the transformation from the camera frame to the robot frame has to be known. Therefore this implementation needs to know the tf base_linkcamera to be able to publish odombase_link.

The name of the camera frame is taken from the incoming images, so be sure your camera driver publishes it correctly.

NOTE: The coordinate frame of the camera is expected to be the optical frame, which means x is pointing right, y downwards and z from the camera into the scene. The origin is where the camera's principle axis hits the image plane (as given in sensor_msgs/CameraInfo).

To learn how to publish the required tf base_linkcamera, please refer to the tf tutorials. If the required tf is not available, the odometer assumes it as the identity matrix which means the robot frame and the camera frame are identical.

Limitations

fovis was designed to estimate the motion of a MAV (micro aerial vehicle) using a Kinect sensor. As the used feature descriptors are not rotation invariant, the odometer needs to work at high frequencies to estimate in-plane rotations correctly.

Nodes

Common for mono_depth_odometer and stereo_odometer

Published Topics

~pose (geometry_msgs/PoseStamped) ~odometry (nav_msgs/Odometry) ~features (sensor_msgs/Image) ~info (fovis_ros/FovisInfo)

Parameters

~odom_frame_id (string, default: /odom) ~base_link_frame_id (string, default: /base_link) ~publish_tf (bool, default: true)
Odometry Parameters
Please see this page for a list of all parameters and their meanings. NOTE: To comply with ROS naming standards you have to replace hyphens by underscore when setting the parameters through ROS. All parameters are strings, even the numeric parameters have to be given as strings.

Required tf Transforms

~base_link_frame_id<frame_id attached to image messages>

Provided tf Transforms

~odom_frame_id~base_link_frame_id

mono_depth_odometer

Subscribed Topics

<camera>/rgb/image_rect (sensor_msgs/Image) <camera>/depth_registered/image_rect (sensor_msgs/Image)

stereo_odometer

Subscribed Topics

<stereo>/left/<image> (sensor_msgs/Image) <stereo>/right/<image> (sensor_msgs/Image) <stereo>/left/camera_info (sensor_msgs/CameraInfo) <stereo>/right/camera_info (sensor_msgs/CameraInfo)

Troubleshoting

If you have a problem, please look on ROS Answers (FAQ link above) and post a question if you could not find an answer.

Feedback

Please use the stack's issue tracker at Github to submit bug reports and feature requests regarding the ROS wrapper of fovis: https://github.com/srv/fovis/issues/new.


2019-07-13 12:39