My solutions to exercises from Prof. Guillermo Gallego's course "Event-based Robot Vision", from Technical University Berlin (TUB).
Details of the exercises are as follow:
- A simple introduction to image processing with OpenCV in python; code in
imgproc_pydirectory. - A notebook containing visualisations of many common representations of event data; code in the
events_vizdirectory. - A ROS node for visualising event data as either: brightness-increment images, or overlaid over color frame. Quite similar in functionality to the
dvs_rendererpackage from rpg_dvs_ros. My package can be found inevis_ws/src/dvs_displayer. - An implementation of Cedric Scheerlinck paper to reconstruct images from events asynchronously, visualised in the GIF above. My package can be found in
evis_ws/src/dvs_integrator. - An extension to the previous, focused on implementing asynchronous spatial convolution of event data and subsequent reconstruction. My package can be found in
evis_ws/src/dvs_integrator_conv. - A ROS node for computing a global optical flow vector for the image, by contrast maximisation, based on Prof. Gallego's paper. This node is implemented in Python to allow me to prototype faster, but a C++ node maybe developed later on. Note while building the workspace to NOT use the
--symlink-installoption as it fails and breaks the workspace due to theament_cmake_pythonbuild tool. Use theclean_build.bashscript in case your build breaks. My package can be found inevis_ws/src/dvs_global_flow. - A ROS node for reconstructing absolute intensity images asynchronously from events and camera orientation. First, an edge and gradient map is computed from the events, then it is integrated using Poisson to recover the image. My package can be found in
evis_ws/src/dvs_mosaic.
The solutions for exercises 3 to 5 (evis_ws) are implemented in ROS2, as opposed to the professor's provided code in ROS1. To ensure compatibility, I've ported the dvs_msgs package from the RPG's rpg_dvs_ros repo. To convert any ROS1 bag, including the one used in this exercise, to ROS2, install the rosbags library from pip and convert it using the following command (ensuring the executable is in your path):
rosbags-convert --src <ros1_bag_name>.bag --dst <ros2_bag_folder name>To run this bag, you must ensure to source the workspace containing dvs_msgs. Example instructions for the bag I used are as follows:
cd evis_ws
./clean_build.bash # script to build dvs_msgs first
source install/setup.bash
wget http://rpg.ifi.uzh.ch/datasets/davis/slider_depth.bag
rosbags-convert --src slider_depth.bag --dst slider_depth_ros2
ros2 bag play -l slider_depth_ros2/slider_depth_ros2.db3My notes on the course, and more, can be found on my website.
