Home

Awesome

dvs_global_flow

Estimation of a global optical flow vector with an event camera. Using the Contrast Maximization method, the implemented algorithm estimates an optical flow vector (u,v) shared by all the events on the image during a short time window.

Documentation and video

Input / Output

Input:

Output:

Parameters (in the launch file):

Dependencies

Create a catkin workspace

Create a catkin workspace (if there is none yet). For example, from your home folder:

cd
mkdir -p catkin_ws/src
cd catkin_ws
catkin config --init --mkdirs --extend /opt/ros/melodic --merge-devel --cmake-args -DCMAKE_BUILD_TYPE=Release

Depending on the ROS distribution you installed, you might have to use kinetic instead of melodic in the previous command.

Add packages to the catkin workspace

Clone this repository into the src folder of your catkin workspace.

The catkin package dependencies are:

The above dependencies are specified in the dependencies.yaml file. They can be installed with the following commands from the src folder of your catkin workspace:

cd catkin_ws/src
sudo apt-get install python3-vcstool
vcs-import < dvs_global_flow/dependencies.yaml

The previous command should clone the repositories into folders catkin_simple, rpg_dvs_ros, etc. inside the src/ folder of your catkin workspace, at the same level as this repository dvs_global_flow. They should NOT be inside the dvs_global_flow folder.

The GSL library is a scientific library that can be installed with the command:

sudo apt-get install libgsl-dev

Compiling

Preliminaries: First, build catkin simple and the davis_ros_driver. The most important commands are:

catkin build catkin_simple
catkin build davis_ros_driver

Then, incorporate the packages to the path, so that ROS finds them:

source ~/catkin_ws/devel/setup.bash

Compile this package:

catkin build dvs_global_flow --force-cmake

The flag --force-cmake is optional. After building, at least the first time, remember to run:

source ~/catkin_ws/devel/setup.bash

Sometimes (in case of strange errors) it is useful to delete the build folder before compilation:

rm -rf build/dvs_global_flow/

An alternative command to start from scratch (cleaning all catkin packages) is (to be used with caution): catkin clean

Running the code

Download a ROS bag, for example slider_close, to use as source of data (as if an event camera was connected to the computer).

ROS bags with linear motion from the Event Camera Dataset IJRR 2017:

You may also test on the first seconds of sequences with dominantly linear motion and approximately constant depth, for example, the first 7 seconds of boxes_translation.bag.

In a terminal:

roslaunch dvs_global_flow ijrr_translation.launch

Please make sure that the launch file has the correct path to the data (e.g., ROS bag).

End the program execution with Ctrl + C keyboard shortcut.

References