Git Product home page Git Product logo

ergo_uvo's Introduction

		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		++++++++++++++++++++++++++ ADVERTISEMENT ++++++++++++++++++++++++++
		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

			The set-up of this github page is still work in progress.
			Stay tuned and do not miss further developments.

		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
		+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

UVO - Underwater Visual Odometry

This repository contains the ROS implementation of two Visual Odometry (VO) strategies tailored for the underwater domain developed by Team ERGO, the underwater robotics reasearch group of Department of Information Engineering at University of Pisa, which is part of the Interuniversity Center of Integrated Systems for the Marine Environment (ISME).

Monocular UVO

This strategy exploits a single camera together with range information to solve the scale ambiguity issue. The strategy is feature-based and switches between essential and homography matrix for relative motion estimation. The estimated motion is used to triangulate matched features, which are then compared to scene distance information (available from an additional sensor) to retrieve the scale factor.

Stereo UVO

This solution exploits a stereo VO approach, following a 3D-to-2D method that allows to recover the motion between two consecutive camera views from the visual feedback of a stereo camera.


Input/Output

In both cases, the input is a sequence of distorted and compressed images (sensor_msgs/CompressedImage). The monocular strategy takes as additional input the range observations from a distance sensor (sensor_msgs/Range), necessary to recover the scale factor at each iteration. Instead, the provided output is composed of:

  • the relative motion between previous and current camera views in terms of linear velocity expressed with respect to the camera frame (geometry_msgs/Vector3Stamped);
  • validity flag to assess the successfulness of the current motion estimate (std_msgs/Bool).

The ROS diagram of the two UVO nodes including their input and output topics is shown below.

Monocular VO ROS diagram

Stereo VO ROS diagram

Content

The content of the uvo folder is the following:

  • bags folder containing the bag file that can be used to test the mono UVO node.

  • config folder containing the configuration files that are exploited to set all the parameters of the two nodes. It includes the calibration files and parameter files used within the two UVO nodes.

  • include folder providing the visual odometry class needed to utilise the two UVO nodes.

  • launch folder with the launch file to use to run the two UVO nodes using ROS framework.

  • src folder containing the ROS node implemented for the two UVO strategies.


Requirements

UVO has been tested on Ubuntu 18.04 with ROS melodic and OpenCV 4.5 libraries.

ROS Melodic

The VO nodes have been developed within ROS framework to share sensor messages between nodes.

To install the Full-Desktop version of ROS Melodic: http://wiki.ros.org/melodic/Installation/Ubuntu

OpenCV

OpenCV libraries (http://opencv.org/) are used to elaborate images and estimate camera motion.

Note: OpenCV extra modules are required to use SURF detector and descriptor.

Dowload and installation instructions of OpenCV with extra modules can be found at: https://github.com/opencv/opencv_contrib


Execution

Run the .launch file contained in the launch folder to test the mono UVO node using the .bag file provided by the authors. To download the .bag file, please follow this link: https://131.114.50.130/index.php/s/8NJTp2FYWRi5xKS Once the .bag file is downloaded, please put it inside the dedicated bag folder.

The following steps are necessary to execute the code with your own data:

  1. Insert the intrinsic parameters of your camera within the corresponding configuration file. It should include the radial and tangential distortion coefficients.

  2. Execute the .launch file by selecting the specific visual_odometry_node to be used (either mono or stereo) and specifying the camera_name as indicated in the intrinsic parameters file.


License & Disclaimer

The UVO source code is released under a GPLv3 license. This is a research code, any fitness for a particular purpose is disclaimed.


Citing

If you use UVO in an academic context, please cite the following publications:

  • Monocular UVO

@article{ruscio2022visual,
   title={Visual-based Navigation Strategy for Autonomous Underwater Vehicles in Monitoring Scenarios},
   author={Ruscio, F and Tani, S and Bresciani, M and Caiti, A and Costanzi, R},
   journal={IFAC-PapersOnLine},
   volume={55},
   number={31},
   pages={369--374},
   year={2022},
   publisher={Elsevier}
}

  • Stereo UVO

@article{tani2023stereo,
   title={Development and testing of a navigation solution for Autonomous Underwater Vehicles based on stereo vision},
   author={Tani, S and Ruscio, F and Bresciani, M and Nordfeldt, B M and Bonin-Font, F and Costanzi, R},
   journal={Ocean Engineering},
   volume={280},
   pages={114757},
   year={2023},
   publisher={Elsevier}
}

ergo_uvo's People

Contributors

simotani avatar francescoruscio avatar riccardocostanzi avatar

Stargazers

 avatar  avatar  avatar  avatar Chuchu Chen avatar Jeremy Nicola avatar

Watchers

 avatar

ergo_uvo's Issues

Dataset

Hi,

Can you share the dataset you were using?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.