Skip to main content

Overview

The macros module provides lightweight helpers for the time conversions Basilisk relies on internally (all simulation times are integers in nanoseconds) and a set of common unit-conversion constants.
from Basilisk.utilities import macros

Time conversion functions

All conversion functions return an int (nanoseconds), suitable for direct use as task rates, stop times, and event rates.
sec2nano(time)
function
Converts seconds to integer nanoseconds.
ns = macros.sec2nano(10.0)   # 10000000000
Returns int.
min2nano(time)
function
Converts minutes to integer nanoseconds.
ns = macros.min2nano(90.0)   # 5400000000000
hour2nano(time)
function
Converts hours to integer nanoseconds.
ns = macros.hour2nano(1.5)
day2nano(time)
function
Converts days to integer nanoseconds.
ns = macros.day2nano(1.0)

Time-unit constants

Use these to convert logged nanosecond timestamps back to human-readable units.
ConstantValueDescription
NANO2SEC1e-9Nanoseconds → seconds
NANO2MIN1/60 × 1e-9Nanoseconds → minutes
NANO2HOUR1/3600 × 1e-9Nanoseconds → hours
t_sec = dataLog.times() * macros.NANO2SEC

Angular unit constants

ConstantValueDescription
D2Rπ / 180Degrees → radians
R2D180 / πRadians → degrees
RPM2π / 60RPM → rad/s
rpm2radsec2π / 60RPM → rad/s (alias)

Usage example

from Basilisk.utilities import macros

# Task running at 10 Hz
taskRate = macros.sec2nano(0.1)          # [ns]

# Stop at 10 orbital periods (≈ 5700 s for LEO)
stopTime = macros.sec2nano(10 * 5700.0)  # [ns]

# Reaction wheel spin rate
omega_rw = 1500.0 * macros.RPM          # [rad/s]

# Convert result timestamps to seconds
t_s = dataLog.times() * macros.NANO2SEC  # [s]

Build docs developers (and LLMs) love