OOTK Documentation
November 30, 2025 · View on GitHub
Welcome to the OOTK (Orbital Object Toolkit) documentation!
Documentation Structure
For New Users
Getting Started Guide - Start here if you're new to OOTK!
This guide covers:
- Installation and setup
- Your first satellite tracking program
- Understanding coordinate systems
- Working with ground sensors
- Common use cases with complete examples
- Troubleshooting tips
Perfect for: Beginners, developers new to orbital mechanics, quick start tutorials
For All Users
User Guide - Comprehensive reference for all OOTK features
This guide covers:
- All modules and their functionality
- Detailed API documentation
- Advanced features
- Code examples for every feature
- Performance optimization tips
- Complete reference material
Perfect for: Intermediate to advanced users, comprehensive feature documentation
Deep Dives
Coordinate Systems Guide - In-depth guide to coordinate systems
This guide covers:
- All coordinate systems (J2000, TEME, ITRF, Geodetic, RIC, Hill)
- Orbital element representations (Classical, Equinoctial)
- When to use each system
- Coordinate transformations
- Common workflows and decision guides
Perfect for: Understanding the differences between coordinate systems and choosing the right one
Quick Links
Getting Started
Core Features
- Satellite Operations
- Sensor Operations
- Coordinate Systems - Comprehensive guide
- Orbit Propagation
- Time Systems
Advanced Features
What is OOTK?
OOTK is a comprehensive TypeScript/JavaScript library for orbital mechanics calculations. It provides:
- Satellite Tracking: Propagate satellite positions using SGP4 and numerical integrators
- Sensor Operations: Calculate visibility and predict satellite passes
- Coordinate Transformations: Convert between ECI, ECF, geodetic, and other systems
- Orbit Determination: Determine orbits from observations
- Mission Planning: Calculate maneuvers and delta-v requirements
- High-Precision Propagation: Model perturbations including gravity harmonics, drag, SRP
Key Features
- Type-Safe: Written in TypeScript with comprehensive type definitions
- Unit Types: Prevents mixing incompatible units (degrees/radians, km/meters)
- Browser & Node.js: Works in both environments
- Multiple Propagators: SGP4, Kepler, Runge-Kutta (multiple orders), Dormand-Prince
- Extensive Coordinate Systems: J2000, TEME, ITRF, Geodetic, RIC, Hill, and more
- Battle-Tested: Originally developed for KeepTrack
Installation
npm install ootk
Quick Example
import { Satellite, Sensor, Degrees, Kilometers } from 'ootk';
// Create satellite from TLE
const satellite = new Satellite({
tle1: '1 25544U 98067A 24028.54545847 .00031576 00000-0 57240-3 0 9991',
tle2: '2 25544 51.6418 292.2590 0002595 167.5319 252.0460 15.49326324436741'
});
// Get current position
const lla = satellite.lla();
console.log(`Lat: ${lla.lat}°, Lon: ${lla.lon}°, Alt: ${lla.alt} km`);
// Create ground sensor
const sensor = new Sensor({
lat: 41.754785 as Degrees,
lon: -70.539151 as Degrees,
alt: 0.060966 as Kilometers,
minEl: 5 as Degrees,
maxEl: 85 as Degrees
});
// Check if satellite is visible
if (sensor.isSatInFov(satellite)) {
const rae = sensor.rae(satellite);
console.log(`Visible! Az: ${rae.az}°, El: ${rae.el}°, Range: ${rae.rng} km`);
}
// Predict passes
const passes = sensor.calculatePasses(30, satellite);
console.log(`Found ${passes.length} passes`);
Support
- GitHub Repository: https://github.com/thkruz/ootk
- Issues: https://github.com/thkruz/ootk/issues
- NPM Package: https://www.npmjs.com/package/ootk
- Examples: Check the
/examplesdirectory
License
AGPL-3.0
Version
5.1.1