fix: vendor the hero banner image instead of hotlinking the main site (#136)
The landing page hero background hotlinked splash.jpg from tanagraspace.com, which was removed in the main site’s redesign, leaving the hero without its banner. Vendor the image into docs/ and ship it in the Pages artifact.
Co-authored-by: Claude Fable 5 noreply@anthropic.com
版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9
京公网安备 11010802047560号
CCSDS 124.0-B-1
The definitive implementation of the CCSDS 124.0-B-1 lossless compression algorithm of fixed-length housekeeping data.
Citation
If CCSDS 124.0-B-1 contributes to your research, please cite:
BibTeX
About
CCSDS 124.0-B-1 is the CCSDS standard for lossless compression of fixed-length spacecraft housekeeping data. It standardizes POCKET+, an European Space Agency (ESA) patented algorithm implemented using very low-level instructions such as OR, XOR, AND, etc., designed to run on spacecraft command and control processors with low CPU power available and tight real-time constraints.
An earlier version of POCKET+ was flight-proven onboard both the Nanomind 3200 flight computer and SEPP payload computer of ESA’s OPS-SAT-1 spacecraft.
Conformance
Conforms to CCSDS 124.0-B-1 (Blue Book, February 2023), demonstrated two ways: byte-identical output to the ESA reference implementation on all shared reference vectors, and validation against the UAB/CNES cross-validation suite — a 24,900-vector compatibility test bench for CCSDS 124.0-B-1 implementations. Full results, the standard issue conformed to, per-implementation status, and documented gaps are in CONFORMANCE.md.
Documentation
Implementations
implementations/c/implementations/cpp/implementations/python/implementations/go/implementations/rust/implementations/java/¹ Byte-for-byte validated against the ESA reference implementation via the shared test vectors. ² Validated against the UAB/CNES CCSDS 124.0-B-1 cross-validation suite (24,900 vectors); see CONFORMANCE.md for results and documented gaps. Harnesses for the other implementations are tracked in #93.
Which implementation should I use?
For bare-metal embedded systems: Use the C or C++ implementation. Both are suitable for resource-constrained systems. The C++ implementation is header-only with template-based size optimization and works with
-fno-exceptions -fno-rtti. The C implementation is optimized for 32-bit microcontrollers (e.g., GomSpace Nanomind 3200 / AVR32 MCU).For payload computers: All implementations run on embedded Linux systems such as payload processors (e.g., SEPP on OPS-SAT-1). Choose based on your runtime environment and preference — C/C++ for the smallest footprint, Python/Go/Rust/Java for ecosystem convenience.
For ground systems and prototyping: All implementations produce identical compression output. Use whichever language fits your toolchain.
Repository Structure
Quick Start
Docker (recommended)
Build, test, and generate coverage for any implementation:
Artifacts are written to
implementations/<lang>/build/.Local Build
C
C++
Python
Go
Rust
Java
Performance
Key findings (venus-express dataset, 151K packets, 13.6 MB):
All implementations produce identical compression output. Choose based on your deployment constraints and language ecosystem.
See Benchmark Results for detailed comparison.
Test Vectors
All vectors are synthetic test data except for venus-express, which contains real housekeeping telemetry from ESA’s Venus Express mission.
Run Benchmarks
Results are written to
docs/BENCHMARK.md.Note: Python is excluded from benchmarks as it prioritizes readability over performance.
Contributing
See CONTRIBUTING.md for versioning strategy, release process, and contribution guidelines.
License
See LICENSE for details.