Inspiration
OpenDART grew from an interest in computer vision for space and planetary-defence problems. Earlier work on near-Earth asteroid detection raised a question that is more difficult than detection itself: can uncertain visual information actually drive an autonomous navigation decision?
Terminal optical navigation is challenging because a distant target may occupy only a few pixels, images can become noisy or disappear entirely, and a monocular camera does not directly provide range. A detector that simply reports an object is therefore not enough. The visual measurement has to affect a state estimate, that estimate has to affect an action, and the system has to respond sensibly when perception becomes unreliable.
OpenDART is a DART-inspired research demonstrator built around that perception–estimation–action loop. It is not a reconstruction of DART flight software and does not claim flight readiness or asteroid-deflection prediction.
What it does
The primary OpenDART demonstrator closes the loop from camera pixels back to the next camera image:
Camera → OpenCV 5 perception → target association → state estimation → guidance → spacecraft dynamics → new camera image
A synthetic monocular camera renders the current relative geometry. OpenCV 5 extracts candidate measurements directly from the image. A four-state planar Extended Kalman Filter estimates relative position and velocity, and estimated-state zero-effort-miss guidance generates bounded corrective thrust.
The crucial feature is causality: the applied action changes the simulated spacecraft geometry, which changes the next rendered observation. Ground truth is used for rendering and evaluation, not as a hidden fallback for guidance.
The system also exposes failure behaviour. If usable visual measurements disappear for long enough, navigation becomes stale and thrust is inhibited through NAV_HOLD. When valid visual evidence returns, the tracker and estimator can recover and guidance can resume.
How we built it
The core implementation is written in Python and uses OpenCV 5 for image normalisation, filtering, thresholding, morphology, connected-component extraction and image-space measurements.
The visual measurement is fused with the system model through a planar EKF. Monocular scale is supplied through the known physical target-size assumption, with an empirically calibrated apparent-radius correction for the synthetic renderer and detector.
Guidance uses a bounded zero-effort-miss controller. The project also retains supporting three-dimensional binary-asteroid dynamics and controller experiments, but these are clearly separated from the primary competition demonstrator.
The public application runs on AWS using a single EC2 instance with Nginx → Gunicorn → Flask → OpenDART/OpenCV 5. Private S3 storage is used for releases and selected evidence, with Systems Manager used for administration.
We also built a separate perception pipeline for real calibrated DRACO imagery from NASA's DART mission. These historical images cannot respond to OpenDART control commands, so they are presented strictly as real-image perception evidence rather than closed-loop guidance validation.
Evaluation
We evaluated the synthetic closed loop across two visual appearances, twelve seeds and four tested conditions: nominal operation, degraded imagery, an extended 40-second camera blackout, and an initial range-prior perturbation.
All 96/96 guided tested cases reached target contact under these bounded conditions. Each 12/12 condition cell has a Wilson 95% interval of approximately [0.758, 1.000], so we explicitly do not interpret this as 100% general reliability.
Four matched negative controls also behaved as expected: both ballistic and no-measurement cases missed.
During the extended blackout condition, visual updates resumed at 240 seconds in every tested case and the guided runs recovered.
A calibration of the apparent-size measurement reduced the nominal final position-estimation error from 59.18 m to 9.23 m. However, the evaluation also exposed substantial full-state covariance undercoverage, so we do not claim statistical EKF consistency.
For the real DRACO held-out sample, 18 of 20 sampled frames were manually reviewed. The autonomous method matched 6/8 compact targets within 5 pixels, with a median selected-point error of 1.218 px, and achieved a median visible-region IoU of 0.802 across eight reviewed resolved-region cases.
Challenges and lessons learned
The hardest part was not implementing an individual detector or controller. It was keeping the boundaries between perception, estimation, control and evaluation scientifically honest.
Monocular scale is fundamentally limited, and known physical target size remains an important assumption. Successful contact also does not imply calibrated uncertainty. Likewise, real historical DRACO imagery is useful for testing perception, but it cannot validate a new guidance law because prerecorded frames cannot change in response to OpenDART actions.
These limitations became part of the project rather than something to hide. OpenDART reports unavailable measurements, navigation hold, partial transmissions, negative controls and uncertainty failures alongside successful outcomes.
What we're proud of
The final system is an inspectable OpenCV 5 visual-feedback demonstrator in which image measurements genuinely influence later actions and observations.
It includes:
- a working perception–estimation–guidance closed loop;
- explicit failure and recovery behaviour;
- bounded synthetic evaluation with matched negative controls;
- real DRACO perception experiments;
- a live AWS deployment;
- reproducible source, tests and technical documentation.
OpenDART is intentionally a research demonstrator rather than a flight system, but it provides a concrete environment for studying how visual evidence propagates into autonomous decisions.
Log in or sign up for Devpost to join the conversation.