Skip to content

Latest commit

 

History

7 Commits

Folders and files

Repository files navigation

EVPeriscope

Extended Perception across Aerial and Ground Vehicles with
Event-based Propeller Tracking

Dexter Ong  ·  Vijay Kumar  ·  Pratik Chaudhari

GRASP Laboratory, University of Pennsylvania

International Symposium of Robotics Research (ISRR) 2026

Paper Project Page Video

system_overview.mp4

Overview

Reliable relative localization between aerial and ground robots is a key requirement for tightly coordinated heterogeneous teams, and is difficult to achieve with conventional frame-based cameras and fiducial markers because they are sensitive to motion blur, lighting variations, and payload constraints.

EVPeriscope is an event-based perception system that detects, localizes and controls a quadrotor using an upward-facing event camera on a ground robot, keying on the high-frequency visual signature of the spinning propellers rather than on any added marker. This lets the quadrotor act as an extended perception system for the ground robot when its own sensors are degraded or occluded.

We demonstrate the marsupial ground–aerial system in field conditions with wind speeds up to 15 mph, in daylight and at night, and show that it supports localization and closed-loop navigation through dense foliage where the ground robot's sensors are occluded. The control system runs at 200 Hz entirely on onboard sensing and computation.

This repository contains the perception and control stack:

  • epa::EpaController — event detection, pose estimation, tracking and the landing state machine
  • epa::EpaInterface — MAVROS bridge (arm / offboard / takeoff / land, ZED VIO → PX4 vision pose)

A reference implementation of the same estimator in Python, for offline analysis, lives in scripts/. It reads HDF5 event files, which dv_ros2_bag_to_h5.py in dv-ros2-wrapper generates from a bag.

Setup

Tested on Ubuntu 22.04 with ROS 2 Humble. See docs/setup.md for step-by-step instructions and troubleshooting. Prerequisites:

  • GCC 13 or newer — required by dv-processing
  • dv-processing 2.0.3
mkdir -p ~/epa_ws/src && cd ~/epa_ws/src

git clone https://github.com/grasp-lyrl/evperiscope.git
git clone https://github.com/grasp-lyrl/dv-ros2-wrapper.git

cd ~/epa_ws
rosdep install --from-paths src --ignore-src -r -y

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_C_COMPILER=gcc-13 -DCMAKE_CXX_COMPILER=g++-13
source install/setup.bash

dv-ros2-wrapper provides the event camera driver and the EventArray message type this package subscribes to.

Running

A sample bag is available here: epa_sample.

Then, in three terminals, each with the workspace sourced:

# 1. the pipeline
ros2 launch epa epa_bag.launch.py

# 2. the bag
ros2 bag play /path/to/epa_sample

# 3. visualization
ros2 run rqt_image_view rqt_image_view /epa/debug_image

/epa/debug_image shows the tracked centroids (red, turning blue once the detection is stable), the reprojected quadrotor model (green circles) and the estimated body X axis (red arrow). The pose estimate itself is on /epa/pose.

Citation

If you find this work useful, please cite:

@misc{ong2026evperiscope,
      title={EVPeriscope: Extended Perception across Aerial and Ground Vehicles with Event-based Propeller Tracking}, 
      author={Dexter Ong and Vijay Kumar and Pratik Chaudhari},
      year={2026},
      eprint={2609.11920},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2609.11920}, 
}

About

EVPeriscope: Extended Perception across Aerial and Ground Vehicles with Event-based Propeller Tracking

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages