This repository contains the implementation of multi-range, recursive fiducial marker AstraTag. The marker template is derived from square shaped Spidron. The marker is designed for in-orbit operations around cooperative targets. The objective of introducing recurisve feature is to make it suitable for conducting rendezvous and proximity operation. Its three layers provide robustness against a partial occlusion. Below are some of the sample markers.
To test the marker, a space-like environment was created using a pair of mock-up spacecraft. The mock-ups, inspired by the Aditya-L1 spacecraft and the Indian Space Station module BAS-01, were used as targets. The images below demonstrate a sample result. The setup was placed on a turntable to simulate out-of-plane rotation.
AstraTag markers can also be used in robotics application in terrestial and underwater environments.
- C++17 or later
- OpenCV 4.x (required by CMake)
- CMake 3.16 or later
- A standard build toolchain (gcc/clang, make)
- Clone the repository and build:
git clone https://github.com/ravikt/astratag.git
cd astratag
mkdir build && cd build
cmake ..
make -j$(nproc)If OpenCV is installed in a custom location, pass the path at configure time:
cmake -DOpenCV_DIR=/path/to/opencv/lib/cmake/opencv4 ..To embed dictionary and keypoints data into the library (no external data files needed at runtime):
cmake -DASTRATAG_EMBED_DATA=ON ..- Run the detector on the example images:
# from project root
./build/astratag_detectResults are saved to the results/ folder with detected markers annotated with bounding boxes and 3D pose cubes.
If you use AstraTag in your work, please cite it:
@software{astratag,
title = {AstraTag: Multi-Range Fiducial Marker for Autonomous On-Orbit Robotics},
author = {Astradyn Systems LLP},
year = {2026},
url = {https://github.com/astradyn/astratag},
doi = {10.5281/zenodo.18524681},
license = {Apache-2.0}
}See LICENSE in the repository root for license terms.




