API Reference

cubesat_specs — Standardized CubeSat and PocketQube form factor data.

Provides

Data models

FormFactor, CenterOfGravityLimits, DeployerSpec, LaunchProvider

Form-factor registries

CUBESAT_FORM_FACTORS dict[str, FormFactor] (0.5U … 27U) POCKETQUBE_FORM_FACTORS dict[str, FormFactor] (1p … 3p) ALL_FORM_FACTORS combined dict (cubesat + pq_-prefixed PocketQube)

Launch providers

LAUNCH_PROVIDERS dict[str, LaunchProvider]

Standards

CDS CDS Rev 14.1 constraints (cubesat_specs.standards) PQS PocketQube Std Issue 1 constraints

Lookup helpers

get_form_factor(key) unified lookup get_compatible_providers(key) providers whose deployers support the form factor

class cubesat_specs.FormFactor(name, units, width_mm, depth_mm, height_mm, max_mass_kg, cg_limits=CenterOfGravityLimits(x_pm_cm=None, y_pm_cm=None, z_pm_cm=None))[source]

Bases: object

Standard satellite form factor specification.

Covers both CubeSat (Cal Poly CDS Rev 14.1) and PocketQube (PocketQube Standard Issue 1) with a unified interface.

Added in version 0.2.0: Renamed from CubeSatFormFactor.

Changed in version 0.2.0: min_freq_hz removed — the CDS does not specify a minimum natural frequency (§3.1.1). Added cg_limits.

Parameters:
name: str

Human-readable name, e.g. ‘1U CubeSat’ or ‘1p PocketQube’.

units: float

Number of CubeSat Units (U) or PocketQube units (p).

width_mm: float

Outer envelope width [mm] (X-axis).

depth_mm: float

Outer envelope depth [mm] (Y-axis).

height_mm: float

Outer envelope height [mm] (Z-axis / deployment axis).

max_mass_kg: float

Maximum allowed mass per the standard [kg] (CDS Rev 14.1 Table 1).

cg_limits: CenterOfGravityLimits = CenterOfGravityLimits(x_pm_cm=None, y_pm_cm=None, z_pm_cm=None)

Centre-of-gravity limits (CDS Table 2 for CubeSats, PQ-Mass-04 for PocketQubes).

property volume_cm3: float

Outer envelope volume [cm³].

property volume_liters: float

Outer envelope volume [L].

property mass_density_max_kg_per_liter: float

Maximum allowable mass density [kg/L] (max_mass / volume).

is_same_cross_section(other, tol_mm=1.0)[source]

True if both form factors share the same cross-sectional footprint (±tol_mm).

Parameters:
Return type:

bool

class cubesat_specs.CenterOfGravityLimits(x_pm_cm=None, y_pm_cm=None, z_pm_cm=None)[source]

Bases: object

Acceptable centre-of-gravity offset from the geometric centre.

Values are expressed as ±cm on each axis.

  • CubeSat: per-form-factor limits from CDS Rev 14.1 Table 2.

  • PocketQube: ±1 cm on all axes (PQ-Mass-04).

  • None means no specified limit for that axis.

Parameters:
x_pm_cm: float | None = None

Max CG offset from geometric centre on X-axis [±cm].

y_pm_cm: float | None = None

Max CG offset from geometric centre on Y-axis [±cm].

z_pm_cm: float | None = None

Max CG offset from geometric centre on Z-axis [±cm].

within(x_cm, y_cm, z_cm)[source]

Return True if the given CG offset is within all limits.

Parameters:
Return type:

bool

class cubesat_specs.DeployerSpec(name, provider, max_units, supported_form_factors, max_payload_mass_kg, deployment_velocity_min_ms=None, deployment_velocity_max_ms=None, tip_off_rate_max_deg_s=None, mechanism='spring', inclination_deg=None, altitude_km_min=None, altitude_km_max=None, notes='')[source]

Bases: object

Specification for a CubeSat deployment system (P-POD, NRCSD, ISIPOD, …).

Changed in version 0.2.0: deployment_velocity_min_ms, deployment_velocity_max_ms, and tip_off_rate_max_deg_s are now Optional[float]; many commercial deployer specs are proprietary and these fields may be None.

Parameters:
  • name (str)

  • provider (str)

  • max_units (float)

  • supported_form_factors (List[str])

  • max_payload_mass_kg (float)

  • deployment_velocity_min_ms (float | None)

  • deployment_velocity_max_ms (float | None)

  • tip_off_rate_max_deg_s (float | None)

  • mechanism (str)

  • inclination_deg (float | None)

  • altitude_km_min (float | None)

  • altitude_km_max (float | None)

  • notes (str)

name: str

Deployer product name.

provider: str

Company or organisation providing the deployer.

max_units: float

Maximum total CubeSat units (U) the deployer can accommodate.

supported_form_factors: List[str]

Form factor keys accepted by this deployer, e.g. [‘1U’, ‘2U’, ‘3U’].

max_payload_mass_kg: float

Maximum total payload mass that can be loaded into the deployer [kg].

deployment_velocity_min_ms: float | None = None

Minimum ejection velocity [m/s] (None = not publicly specified).

deployment_velocity_max_ms: float | None = None

Maximum ejection velocity [m/s] (None = not publicly specified).

tip_off_rate_max_deg_s: float | None = None

Maximum tip-off angular rate [deg/s] per axis (None = not publicly specified).

mechanism: str = 'spring'

Ejection mechanism type (‘spring’, ‘pneumatic’, ‘electromagnetic’).

inclination_deg: float | None = None

Typical orbital inclination [deg] if this deployer is orbit-specific.

altitude_km_min: float | None = None

Typical minimum deployment altitude [km] (None = mission-specific).

altitude_km_max: float | None = None

Typical maximum deployment altitude [km] (None = mission-specific).

notes: str = ''

Additional constraints or remarks.

class cubesat_specs.LaunchProvider(name, website, deployers=<factory>, notes='')[source]

Bases: object

A launch service provider offering CubeSat deployment services.

Parameters:
name: str

Provider name.

website: str

Official website URL.

deployers: List[DeployerSpec]

Deployer systems offered by this provider.

notes: str = ''

Additional notes.

class cubesat_specs.CDSConstraints(rail_min_width_mm=8.5, rail_surface_roughness_max_um=1.6, rail_edge_radius_min_mm=1.0, rail_end_contact_area_min_mm=(6.5, 6.5), rail_contact_pct_min=75.0, max_protrusion_mm=6.5, rbf_max_protrusion_mm=6.5, separation_spring_max_force_n=6.7, separation_spring_min_stroke_mm=2.5, outgassing_tml_max_pct=1.0, outgassing_cvcm_max_pct=0.1, magnetic_field_max_gauss=0.5, min_deployment_switches=1, rf_inhibit_count=3, deployable_inhibit_count=3, propulsion_inhibit_count=3, rtc_max_freq_khz=320.0, rtc_max_current_ma=10.0, deployable_wait_minutes=30, rf_silence_minutes=45, battery_faa_guideline_wh=100.0, reentry_energy_max_j=15.0)[source]

Bases: object

All CDS Rev 14.1 constraints collected in a single object.

This is a convenience wrapper that mirrors the module-level constants.

Parameters:
  • rail_min_width_mm (float)

  • rail_surface_roughness_max_um (float)

  • rail_edge_radius_min_mm (float)

  • rail_end_contact_area_min_mm (Tuple[float, float])

  • rail_contact_pct_min (float)

  • max_protrusion_mm (float)

  • rbf_max_protrusion_mm (float)

  • separation_spring_max_force_n (float)

  • separation_spring_min_stroke_mm (float)

  • outgassing_tml_max_pct (float)

  • outgassing_cvcm_max_pct (float)

  • magnetic_field_max_gauss (float)

  • min_deployment_switches (int)

  • rf_inhibit_count (int)

  • deployable_inhibit_count (int)

  • propulsion_inhibit_count (int)

  • rtc_max_freq_khz (float)

  • rtc_max_current_ma (float)

  • deployable_wait_minutes (int)

  • rf_silence_minutes (int)

  • battery_faa_guideline_wh (float)

  • reentry_energy_max_j (float)

rail_min_width_mm: float = 8.5
rail_surface_roughness_max_um: float = 1.6
rail_edge_radius_min_mm: float = 1.0
rail_end_contact_area_min_mm: Tuple[float, float] = (6.5, 6.5)
rail_contact_pct_min: float = 75.0
max_protrusion_mm: float = 6.5
rbf_max_protrusion_mm: float = 6.5
separation_spring_max_force_n: float = 6.7
separation_spring_min_stroke_mm: float = 2.5
outgassing_tml_max_pct: float = 1.0
outgassing_cvcm_max_pct: float = 0.1
magnetic_field_max_gauss: float = 0.5
min_deployment_switches: int = 1
rf_inhibit_count: int = 3
deployable_inhibit_count: int = 3
propulsion_inhibit_count: int = 3
rtc_max_freq_khz: float = 320.0
rtc_max_current_ma: float = 10.0
deployable_wait_minutes: int = 30
rf_silence_minutes: int = 45
battery_faa_guideline_wh: float = 100.0
reentry_energy_max_j: float = 15.0
class cubesat_specs.PQSConstraints(pyrotechnics_allowed=False, outgassing_tml_max_pct=1.0, outgassing_cvcm_max_pct=0.1, component_envelope_mm=7.0, deployable_envelope_mm=10.0, rail_clamp_width_mm=2.0, min_contact_surface_mm=21.5, min_kill_switches=2, backplate_thickness_mm=1.6, mass_per_unit_kg=0.25, cg_max_offset_cm=1.0, hard_anodize_required=True)[source]

Bases: object

All PocketQube Standard Issue 1 constraints collected in a single object.

Parameters:
  • pyrotechnics_allowed (bool)

  • outgassing_tml_max_pct (float)

  • outgassing_cvcm_max_pct (float)

  • component_envelope_mm (float)

  • deployable_envelope_mm (float)

  • rail_clamp_width_mm (float)

  • min_contact_surface_mm (float)

  • min_kill_switches (int)

  • backplate_thickness_mm (float)

  • mass_per_unit_kg (float)

  • cg_max_offset_cm (float)

  • hard_anodize_required (bool)

pyrotechnics_allowed: bool = False
outgassing_tml_max_pct: float = 1.0
outgassing_cvcm_max_pct: float = 0.1
component_envelope_mm: float = 7.0
deployable_envelope_mm: float = 10.0
rail_clamp_width_mm: float = 2.0
min_contact_surface_mm: float = 21.5
min_kill_switches: int = 2
backplate_thickness_mm: float = 1.6
mass_per_unit_kg: float = 0.25
cg_max_offset_cm: float = 1.0
hard_anodize_required: bool = True
cubesat_specs.get_form_factor(key)[source]

Return a form factor by key, searching both CubeSat and PocketQube dicts.

Parameters:

key (str) – Form factor key, e.g. '1U', '3U', '1p', '2p'.

Return type:

FormFactor

Raises:

KeyError – If key is not found in either dictionary.

cubesat_specs.get_compatible_providers(form_factor_key)[source]

Return all launch providers whose deployers support form_factor_key.

Parameters:

form_factor_key (str) – Form factor key, e.g. '1U', '6U', '1p'.

Returns:

Providers with at least one deployer accepting the given form factor.

Return type:

list[LaunchProvider]

cubesat_specs.data_path()[source]

Return the directory containing the machine-readable JSON data files.

Useful for non-Python consumers that want the path to the installed JSON files, or for programmatic loading.

>>> from cubesat_specs import data_path
>>> sorted(p.name for p in data_path().glob("*.json"))
['deployers.json', 'form_factors.json', ...]
Return type:

Path

cubesat_specs.load_json(name)[source]

Load one of the bundled JSON data files and return it as a dict.

Parameters:

name (str) – Filename without directory, e.g. 'form_factors.json' or 'standards_cds.json'.

Returns:

Parsed JSON data.

Return type:

dict

Raises:

FileNotFoundError – If name does not exist in the data directory.

Models

Dataclass models for satellite form factors, deployers, and launch providers.

class cubesat_specs._models.CenterOfGravityLimits(x_pm_cm=None, y_pm_cm=None, z_pm_cm=None)[source]

Bases: object

Acceptable centre-of-gravity offset from the geometric centre.

Values are expressed as ±cm on each axis.

  • CubeSat: per-form-factor limits from CDS Rev 14.1 Table 2.

  • PocketQube: ±1 cm on all axes (PQ-Mass-04).

  • None means no specified limit for that axis.

Parameters:
x_pm_cm: float | None = None

Max CG offset from geometric centre on X-axis [±cm].

y_pm_cm: float | None = None

Max CG offset from geometric centre on Y-axis [±cm].

z_pm_cm: float | None = None

Max CG offset from geometric centre on Z-axis [±cm].

within(x_cm, y_cm, z_cm)[source]

Return True if the given CG offset is within all limits.

Parameters:
Return type:

bool

class cubesat_specs._models.FormFactor(name, units, width_mm, depth_mm, height_mm, max_mass_kg, cg_limits=CenterOfGravityLimits(x_pm_cm=None, y_pm_cm=None, z_pm_cm=None))[source]

Bases: object

Standard satellite form factor specification.

Covers both CubeSat (Cal Poly CDS Rev 14.1) and PocketQube (PocketQube Standard Issue 1) with a unified interface.

Added in version 0.2.0: Renamed from CubeSatFormFactor.

Changed in version 0.2.0: min_freq_hz removed — the CDS does not specify a minimum natural frequency (§3.1.1). Added cg_limits.

Parameters:
name: str

Human-readable name, e.g. ‘1U CubeSat’ or ‘1p PocketQube’.

units: float

Number of CubeSat Units (U) or PocketQube units (p).

width_mm: float

Outer envelope width [mm] (X-axis).

depth_mm: float

Outer envelope depth [mm] (Y-axis).

height_mm: float

Outer envelope height [mm] (Z-axis / deployment axis).

max_mass_kg: float

Maximum allowed mass per the standard [kg] (CDS Rev 14.1 Table 1).

cg_limits: CenterOfGravityLimits = CenterOfGravityLimits(x_pm_cm=None, y_pm_cm=None, z_pm_cm=None)

Centre-of-gravity limits (CDS Table 2 for CubeSats, PQ-Mass-04 for PocketQubes).

property volume_cm3: float

Outer envelope volume [cm³].

property volume_liters: float

Outer envelope volume [L].

property mass_density_max_kg_per_liter: float

Maximum allowable mass density [kg/L] (max_mass / volume).

is_same_cross_section(other, tol_mm=1.0)[source]

True if both form factors share the same cross-sectional footprint (±tol_mm).

Parameters:
Return type:

bool

class cubesat_specs._models.DeployerSpec(name, provider, max_units, supported_form_factors, max_payload_mass_kg, deployment_velocity_min_ms=None, deployment_velocity_max_ms=None, tip_off_rate_max_deg_s=None, mechanism='spring', inclination_deg=None, altitude_km_min=None, altitude_km_max=None, notes='')[source]

Bases: object

Specification for a CubeSat deployment system (P-POD, NRCSD, ISIPOD, …).

Changed in version 0.2.0: deployment_velocity_min_ms, deployment_velocity_max_ms, and tip_off_rate_max_deg_s are now Optional[float]; many commercial deployer specs are proprietary and these fields may be None.

Parameters:
  • name (str)

  • provider (str)

  • max_units (float)

  • supported_form_factors (List[str])

  • max_payload_mass_kg (float)

  • deployment_velocity_min_ms (float | None)

  • deployment_velocity_max_ms (float | None)

  • tip_off_rate_max_deg_s (float | None)

  • mechanism (str)

  • inclination_deg (float | None)

  • altitude_km_min (float | None)

  • altitude_km_max (float | None)

  • notes (str)

name: str

Deployer product name.

provider: str

Company or organisation providing the deployer.

max_units: float

Maximum total CubeSat units (U) the deployer can accommodate.

supported_form_factors: List[str]

Form factor keys accepted by this deployer, e.g. [‘1U’, ‘2U’, ‘3U’].

max_payload_mass_kg: float

Maximum total payload mass that can be loaded into the deployer [kg].

deployment_velocity_min_ms: float | None = None

Minimum ejection velocity [m/s] (None = not publicly specified).

deployment_velocity_max_ms: float | None = None

Maximum ejection velocity [m/s] (None = not publicly specified).

tip_off_rate_max_deg_s: float | None = None

Maximum tip-off angular rate [deg/s] per axis (None = not publicly specified).

mechanism: str = 'spring'

Ejection mechanism type (‘spring’, ‘pneumatic’, ‘electromagnetic’).

inclination_deg: float | None = None

Typical orbital inclination [deg] if this deployer is orbit-specific.

altitude_km_min: float | None = None

Typical minimum deployment altitude [km] (None = mission-specific).

altitude_km_max: float | None = None

Typical maximum deployment altitude [km] (None = mission-specific).

notes: str = ''

Additional constraints or remarks.

class cubesat_specs._models.LaunchProvider(name, website, deployers=<factory>, notes='')[source]

Bases: object

A launch service provider offering CubeSat deployment services.

Parameters:
name: str

Provider name.

website: str

Official website URL.

deployers: List[DeployerSpec]

Deployer systems offered by this provider.

notes: str = ''

Additional notes.

Form Factors

Standardized CubeSat and PocketQube form factor data.

Sources

Height values for CubeSat use the maximum structural envelope along the deployment (Z) axis as defined in CDS Rev 14.1 Appendix B drawings.

PocketQube Z-axis heights for 2p and 3p follow PocketQube Standard Issue 1 Table 1 (“External dimensions without backplate”): 114 mm for 2p, 178 mm for 3p. The 1.6 mm sliding backplate adds to the Y-axis only (51.6 mm total).

Changed in version 0.2.0: * min_freq_hz removed — CDS Rev 14.1 does not specify a minimum natural frequency; all vibration test levels are delegated to the Launch Provider (§3.1.1). * min_mass_kg and typical_mass_kg removed — not in CDS. * cg_limits added from CDS Rev 14.1 Table 2.

cubesat_specs.form_factors.get_form_factor(key)[source]

Return a form factor by key, searching both CubeSat and PocketQube dicts.

Parameters:

key (str) – Form factor key, e.g. '1U', '3U', '1p', '2p'.

Return type:

FormFactor

Raises:

KeyError – If key is not found in either dictionary.

Launch Providers

Launch provider and deployer specifications.

Sources

cubesat_specs.launch_providers.get_compatible_providers(form_factor_key)[source]

Return all launch providers whose deployers support form_factor_key.

Parameters:

form_factor_key (str) – Form factor key, e.g. '1U', '6U', '1p'.

Returns:

Providers with at least one deployer accepting the given form factor.

Return type:

list[LaunchProvider]

Standards

Constants and constraints from the CubeSat Design Specification (CDS) Rev 14.1.

Every value in this module is directly traceable to the CDS Rev 14.1 (CP-CDS-R14.1, Cal Poly SLO, February 2022). Section references are given as §X.Y.Z.

Source

https://static1.squarespace.com/static/5418c831e4b0fa4ecac1bacd/ t/62193b7fc9e72e0053f00910/1645820809779/CDS+REV14_1+2022-02-09.pdf

cubesat_specs.standards.RAIL_MIN_WIDTH_MM: float = 8.5

Minimum rail width measured from edge of rail to first protrusion [mm] (§2.2.5).

cubesat_specs.standards.RAIL_SURFACE_ROUGHNESS_MAX_UM: float = 1.6

Recommended maximum rail surface roughness Ra [µm] (§2.2.6).

cubesat_specs.standards.RAIL_EDGE_RADIUS_MIN_MM: float = 1.0

Minimum radius on rail edges [mm] (§2.2.7).

cubesat_specs.standards.RAIL_END_CONTACT_AREA_MIN_MM: Tuple[float, float] = (6.5, 6.5)

Minimum rail end contact area on ±Z faces [mm × mm] (§2.2.8).

cubesat_specs.standards.RAIL_CONTACT_PCT_MIN: float = 75.0

Minimum percentage of rail length in contact with dispenser rails [%] (§2.2.9). Up to 25 % may be recessed.

cubesat_specs.standards.MAX_PROTRUSION_MM: float = 6.5

Maximum protrusion of any component from the rail plane [mm] (§2.2.3).

cubesat_specs.standards.RBF_MAX_PROTRUSION_MM: float = 6.5

Maximum RBF-pin protrusion from rail surface when inserted [mm] (§2.3.5.2).

cubesat_specs.standards.RECOMMENDED_AL_ALLOYS: Tuple[str, ...] = ('7075', '6061', '6082', '5005', '5052')

Aluminium alloys recommended for CubeSat structure and rails (§2.2.12.1).

cubesat_specs.standards.HARD_ANODIZE_REQUIRED: bool = True

All aluminium surfaces in contact with dispenser rails shall be hard anodized to prevent cold welding (§2.2.13).

cubesat_specs.standards.SEPARATION_SPRING_MAX_FORCE_N: float = 6.7

Maximum recommended separation spring force [N] (1.5 lbf) (§2.2.14.1).

cubesat_specs.standards.SEPARATION_SPRING_MIN_STROKE_MM: float = 2.5

Minimum recommended separation spring stroke [mm] (0.1 in) (§2.2.14.1).

cubesat_specs.standards.OUTGASSING_TML_MAX_PCT: float = 1.0

Maximum Total Mass Loss [%] (§2.1.7.1).

cubesat_specs.standards.OUTGASSING_CVCM_MAX_PCT: float = 0.1

Maximum Collected Volatile Condensable Material [%] (§2.1.7.2).

cubesat_specs.standards.MAGNETIC_FIELD_MAX_GAUSS_ABOVE_EARTH: float = 0.5

Maximum residual magnetic field above Earth’s ambient [Gauss] (§2.1.8).

cubesat_specs.standards.ASCENT_VENT_RATIO_MAX_M: float = 50.8

Maximum ventable-volume / vent-area ratio [m] (2 000 in) (§2.1.9).

cubesat_specs.standards.MIN_DEPLOYMENT_SWITCHES: int = 1

Minimum number of deployment switches (§2.3.2).

cubesat_specs.standards.RF_INHIBIT_COUNT: int = 3

Minimum independent RF-transmission inhibits (§2.3.7).

cubesat_specs.standards.DEPLOYABLE_INHIBIT_COUNT: int = 3

Minimum independent inhibits for deployable structures (§2.3.8).

cubesat_specs.standards.PROPULSION_INHIBIT_COUNT: int = 3

Minimum independent inhibits for propulsion activation (§2.1.4).

cubesat_specs.standards.RTC_MAX_FREQ_KHZ: float = 320.0

Maximum RTC oscillator frequency [kHz] (§2.3.3.2).

cubesat_specs.standards.RTC_MAX_CURRENT_MA: float = 10.0

Maximum RTC circuit current draw [mA] (§2.3.3.3).

cubesat_specs.standards.DEPLOYABLE_WAIT_MINUTES: int = 30

Minimum wait time before deploying booms/antennas/panels after deployment-switch activation [minutes] (§2.4.4).

cubesat_specs.standards.RF_SILENCE_MINUTES: int = 45

Minimum wait time before first RF transmission after on-orbit deployment [minutes] (§2.4.5).

cubesat_specs.standards.BATTERY_FAA_GUIDELINE_WH: float = 100.0

FAA carry-on lithium-ion battery limit used as guideline [Wh] (§2.1.5). This is a recommendation, not a hard CDS requirement.

cubesat_specs.standards.REENTRY_ENERGY_MAX_J: float = 15.0

Maximum re-entry kinetic energy per component [J] (§2.4.3.1).

cubesat_specs.standards.PYROTECHNICS_STANDARD: str = 'AFSPCMAN 91-710 Vol. 3'

Pyrotechnics and propulsion systems shall conform to this standard.

class cubesat_specs.standards.CDSConstraints(rail_min_width_mm=8.5, rail_surface_roughness_max_um=1.6, rail_edge_radius_min_mm=1.0, rail_end_contact_area_min_mm=(6.5, 6.5), rail_contact_pct_min=75.0, max_protrusion_mm=6.5, rbf_max_protrusion_mm=6.5, separation_spring_max_force_n=6.7, separation_spring_min_stroke_mm=2.5, outgassing_tml_max_pct=1.0, outgassing_cvcm_max_pct=0.1, magnetic_field_max_gauss=0.5, min_deployment_switches=1, rf_inhibit_count=3, deployable_inhibit_count=3, propulsion_inhibit_count=3, rtc_max_freq_khz=320.0, rtc_max_current_ma=10.0, deployable_wait_minutes=30, rf_silence_minutes=45, battery_faa_guideline_wh=100.0, reentry_energy_max_j=15.0)[source]

Bases: object

All CDS Rev 14.1 constraints collected in a single object.

This is a convenience wrapper that mirrors the module-level constants.

Parameters:
  • rail_min_width_mm (float)

  • rail_surface_roughness_max_um (float)

  • rail_edge_radius_min_mm (float)

  • rail_end_contact_area_min_mm (Tuple[float, float])

  • rail_contact_pct_min (float)

  • max_protrusion_mm (float)

  • rbf_max_protrusion_mm (float)

  • separation_spring_max_force_n (float)

  • separation_spring_min_stroke_mm (float)

  • outgassing_tml_max_pct (float)

  • outgassing_cvcm_max_pct (float)

  • magnetic_field_max_gauss (float)

  • min_deployment_switches (int)

  • rf_inhibit_count (int)

  • deployable_inhibit_count (int)

  • propulsion_inhibit_count (int)

  • rtc_max_freq_khz (float)

  • rtc_max_current_ma (float)

  • deployable_wait_minutes (int)

  • rf_silence_minutes (int)

  • battery_faa_guideline_wh (float)

  • reentry_energy_max_j (float)

rail_min_width_mm: float = 8.5
rail_surface_roughness_max_um: float = 1.6
rail_edge_radius_min_mm: float = 1.0
rail_end_contact_area_min_mm: Tuple[float, float] = (6.5, 6.5)
rail_contact_pct_min: float = 75.0
max_protrusion_mm: float = 6.5
rbf_max_protrusion_mm: float = 6.5
separation_spring_max_force_n: float = 6.7
separation_spring_min_stroke_mm: float = 2.5
outgassing_tml_max_pct: float = 1.0
outgassing_cvcm_max_pct: float = 0.1
magnetic_field_max_gauss: float = 0.5
min_deployment_switches: int = 1
rf_inhibit_count: int = 3
deployable_inhibit_count: int = 3
propulsion_inhibit_count: int = 3
rtc_max_freq_khz: float = 320.0
rtc_max_current_ma: float = 10.0
deployable_wait_minutes: int = 30
rf_silence_minutes: int = 45
battery_faa_guideline_wh: float = 100.0
reentry_energy_max_j: float = 15.0
cubesat_specs.standards.CDS = CDSConstraints(rail_min_width_mm=8.5, rail_surface_roughness_max_um=1.6, rail_edge_radius_min_mm=1.0, rail_end_contact_area_min_mm=(6.5, 6.5), rail_contact_pct_min=75.0, max_protrusion_mm=6.5, rbf_max_protrusion_mm=6.5, separation_spring_max_force_n=6.7, separation_spring_min_stroke_mm=2.5, outgassing_tml_max_pct=1.0, outgassing_cvcm_max_pct=0.1, magnetic_field_max_gauss=0.5, min_deployment_switches=1, rf_inhibit_count=3, deployable_inhibit_count=3, propulsion_inhibit_count=3, rtc_max_freq_khz=320.0, rtc_max_current_ma=10.0, deployable_wait_minutes=30, rf_silence_minutes=45, battery_faa_guideline_wh=100.0, reentry_energy_max_j=15.0)

Singleton instance of all CDS Rev 14.1 constraints.

cubesat_specs.standards.PQ_PYROTECHNICS_ALLOWED: bool = False

Pyrotechnics shall not be allowed on board.

Type:

PQ-Gen-02

cubesat_specs.standards.PQ_OUTGASSING_TML_MAX_PCT: float = 1.0

Maximum Total Mass Loss [%] (per ECSS-Q-70-02C).

Type:

PQ-Gen-04

cubesat_specs.standards.PQ_OUTGASSING_CVCM_MAX_PCT: float = 0.1

Maximum Collected Volatile Condensable Material [%].

Type:

PQ-Gen-04

cubesat_specs.standards.PQ_COMPONENT_ENVELOPE_MM: float = 7.0

Maximum protrusion for components [mm].

Type:

PQ-Mech-08

cubesat_specs.standards.PQ_DEPLOYABLE_ENVELOPE_MM: float = 10.0

Maximum protrusion for deployables (requires waiver) [mm].

Type:

PQ-Mech-08

cubesat_specs.standards.PQ_RAIL_CLAMP_WIDTH_MM: float = 2.0

Rail clamping width on each side of sliding backplate [mm].

Type:

PQ-Mech-07

cubesat_specs.standards.PQ_MIN_CONTACT_SURFACE_MM: float = 21.5

Minimum contact surface from both sides on Z+ axis [mm].

Type:

PQ-Mech-10

cubesat_specs.standards.PQ_MIN_KILL_SWITCHES: int = 2

Minimum number of kill switches.

Type:

PQ-Mech-12

cubesat_specs.standards.PQ_BACKPLATE_THICKNESS_MM: float = 1.6

Sliding backplate thickness [mm] (Table 1, all sizes).

cubesat_specs.standards.PQ_BACKPLATE_DIMENSIONS: Dict[str, Tuple[float, float, float]] = {'1p': (58.0, 64.0, 1.6), '2p': (58.0, 128.0, 1.6), '3p': (58.0, 192.0, 1.6)}

Sliding backplate (X × Z × thickness) per form factor [mm] (Table 1).

cubesat_specs.standards.PQ_MASS_PER_UNIT_KG: float = 0.25

Maximum mass per 1P unit [kg].

Type:

PQ-Mass-01

cubesat_specs.standards.PQ_CG_MAX_OFFSET_CM: float = 1.0

Max CG offset from geometric centre [cm] (all axes).

Type:

PQ-Mass-04

Recommended baseplate materials.

Type:

PQ-Mat-02

cubesat_specs.standards.PQ_HARD_ANODIZE_REQUIRED: bool = True

Metallic deployer-contact surfaces shall be hard anodized.

Type:

PQ-Mat-03

class cubesat_specs.standards.PQSConstraints(pyrotechnics_allowed=False, outgassing_tml_max_pct=1.0, outgassing_cvcm_max_pct=0.1, component_envelope_mm=7.0, deployable_envelope_mm=10.0, rail_clamp_width_mm=2.0, min_contact_surface_mm=21.5, min_kill_switches=2, backplate_thickness_mm=1.6, mass_per_unit_kg=0.25, cg_max_offset_cm=1.0, hard_anodize_required=True)[source]

Bases: object

All PocketQube Standard Issue 1 constraints collected in a single object.

Parameters:
  • pyrotechnics_allowed (bool)

  • outgassing_tml_max_pct (float)

  • outgassing_cvcm_max_pct (float)

  • component_envelope_mm (float)

  • deployable_envelope_mm (float)

  • rail_clamp_width_mm (float)

  • min_contact_surface_mm (float)

  • min_kill_switches (int)

  • backplate_thickness_mm (float)

  • mass_per_unit_kg (float)

  • cg_max_offset_cm (float)

  • hard_anodize_required (bool)

pyrotechnics_allowed: bool = False
outgassing_tml_max_pct: float = 1.0
outgassing_cvcm_max_pct: float = 0.1
component_envelope_mm: float = 7.0
deployable_envelope_mm: float = 10.0
rail_clamp_width_mm: float = 2.0
min_contact_surface_mm: float = 21.5
min_kill_switches: int = 2
backplate_thickness_mm: float = 1.6
mass_per_unit_kg: float = 0.25
cg_max_offset_cm: float = 1.0
hard_anodize_required: bool = True
cubesat_specs.standards.PQS = PQSConstraints(pyrotechnics_allowed=False, outgassing_tml_max_pct=1.0, outgassing_cvcm_max_pct=0.1, component_envelope_mm=7.0, deployable_envelope_mm=10.0, rail_clamp_width_mm=2.0, min_contact_surface_mm=21.5, min_kill_switches=2, backplate_thickness_mm=1.6, mass_per_unit_kg=0.25, cg_max_offset_cm=1.0, hard_anodize_required=True)

Singleton instance of all PocketQube Standard Issue 1 constraints.