[Announcement] Gazebo Event Camera Plugin for ROS 2 Jazzy + Gazebo Harmonic

Hi everyone,

We are happy to share a new event camera simulation plugin for Gazebo Harmonic and ROS 2 Jazzy.

The goal of this project is to provide a practical way to simulate an event camera directly in Gazebo and generate asynchronous brightness-change events from a simulated camera stream.

The plugin currently implements an ESIM-style event generation model, including:

- Log-intensity based event generation

- Positive and negative contrast thresholds

- Multiple threshold crossings between frames

- Sub-frame event timestamp interpolation

- Per-pixel reference intensity

- Refractory-period handling

- Optional contrast-threshold variation

- ROS 2 custom “Event” and “EventArray” messages

- Gazebo Transport protobuf messages

- Configurable camera and event parameters

The current example uses a 128 × 128 camera at 500 Hz and publishes events to:

/event_cam/events

The plugin has been tested with ROS 2 Jazzy and Gazebo Harmonic, and the generated event stream can be directly consumed by ROS 2 nodes for event-based vision and robotics applications.

GitHub

The complete source code, example world, launch files, configuration, custom messages, and documentation are available here:

:link: GitHub:

Demo

We also recorded a short demonstration of the plugin running in Gazebo:

:movie_camera: Video:

I would really appreciate feedback from the Gazebo / ROS community, especially regarding the event-camera model, sensor effects, performance, and possible integration with existing event-based vision workflows.

Future improvements I am considering include additional sensor non-idealities, noise models, bandwidth limitations, and support for more realistic event-camera characteristics.

Hope this is useful for anyone working on event-based vision, visual odometry, SLAM, perception, or robotics simulation.

Thanks!

This work is equally contribution done by Aachal Sharma and Rahul Gupta

1 Like