SatelliteCameraViewer.SatelliteCamera package

Camera

class SatelliteCameraViewer.SatelliteCamera.SatelliteCamera[source]

Bases: object

Attributes:
attitude

attitude

bcc

bcc

cam_attitude

cam_attitude

camera

camera

cx

cx

cy

cy

focal_length_mm

focal_length_mm

nx

nx

ny

ny

obs_time

obs_time

sat_attitude

sat_attitude

sat_orbit

sat_orbit

sat_quat_body_to_eci

sat_quat_body_to_eci

sensor_size_x_mm

sensor_size_x_mm

sensor_size_y_mm

sensor_size_y_mm

tle

tle

Methods

BrownConradyCoeffs

BrownConradyCoeffs.py

CameraAttitude

CameraAttitude

CameraFOV

CameraFOV.py

CameraIntrinsics

CameraIntrinsics.py

SatelliteOrbit

SatelliteOrbit

datetime(year, month, day[, hour[, minute[, ...)

The year, month and day arguments are required.

SatelliteCamera

Attributes:
attitude

attitude

bcc

bcc

cam_attitude

cam_attitude

camera

camera

cx

cx

cy

cy

focal_length_mm

focal_length_mm

nx

nx

ny

ny

obs_time

obs_time

sat_attitude

sat_attitude

sat_orbit

sat_orbit

sat_quat_body_to_eci

sat_quat_body_to_eci

sensor_size_x_mm

sensor_size_x_mm

sensor_size_y_mm

sensor_size_y_mm

tle

tle

Methods

BrownConradyCoeffs

BrownConradyCoeffs.py

CameraAttitude

CameraAttitude

CameraFOV

CameraFOV.py

CameraIntrinsics

CameraIntrinsics.py

SatelliteOrbit

SatelliteOrbit

datetime(year, month, day[, hour[, minute[, ...)

The year, month and day arguments are required.

class Attitude

Bases: object

pitch_deg: float = 0.0
roll_deg: float = 0.0
yaw_deg: float = 0.0
class BrownConradyCoeffs(k1: float = 0.0, k2: float = 0.0, p1: float = 0.0, p2: float = 0.0, k3: float = 0.0, k4: float = 0.0, k5: float = 0.0, k6: float = 0.0, cx: float = 0.0, cy: float = 0.0)

Bases: object

Stores Brown-Conrady lens distortion coefficients. Ref: https://docs.nvidia.com/vpi/2.0/algo_ldc.html

Methods

cx: float = 0.0
cy: float = 0.0
k1: float = 0.0
k2: float = 0.0
k3: float = 0.0
k4: float = 0.0
k5: float = 0.0
k6: float = 0.0
p1: float = 0.0
p2: float = 0.0
to_array()

Returns coefficients as an OpenCV-compatible array [k1, k2, p1, p2, k3].

class CameraAttitude(sat_quat_body_to_eci: Quaternion = None, sat_attitude: Attitude = None, cam_attitude: Attitude = None)

Bases: object

Full attitude model: - Satellite orientation in ECI (as quaternion or yaw/pitch/roll) - Camera mounting offsets (yaw/pitch/roll) - Produces final camera->ECI quaternion

Attributes:
cam_attitude
quat_cam_to_eci

quat_cam_to_eci

sat_attitude
sat_quat_body_to_eci

Methods

cam_attitude: Attitude = None
cam_to_eci()
property quat_cam_to_eci
classmethod quaternion_nadir_pointing(r_eci_km)

Compute camera->ECI quaternion for nadir pointing. r_eci_km: satellite position in ECI (km), shape (3,)

Returns: quaternion [w, x, y, z]

classmethod quaternion_pointing_ground(lat_deg, lon_deg, obs_time, r_sat_gcrs_km)

Compute camera->ECI quaternion that points +Z_cam at a ground location. lat_deg, lon_deg: ground target in degrees r_sat_gcrs_km: satellite position in GCRS (km)

classmethod quaternion_pointing_radec(ra_deg, dec_deg, obs_time)

Compute camera->ECI quaternion that points +Z_cam at a given RA/Dec target.

classmethod quaternion_velocity_pointing(r_eci_km, v_eci_km_s)

Compute camera->ECI quaternion for velocity-vector pointing. r_eci_km: satellite position in ECI (km) v_eci_km_s: satellite velocity in ECI (km/s)

Returns: quaternion [w, x, y, z]

classmethod quaternion_wxyz(qw: float = 1.0, qx: float = 0.0, qy: float = 0.0, qz: float = 0.0) Quaternion

quaternion

sat_attitude: Attitude = None
sat_quat_body_to_eci: Quaternion = None
classmethod teme_to_gcrs_vector(r_teme_km, obs_time)

Convert a TEME position vector to GCRS (ECI) using Astropy. r_teme_km: (3,) km vector Returns: (3,) km vector in GCRS

class CameraFOV

Bases: object

Methods

classmethod camera_fov_angular_width_height(camera: CameraIntrinsics, attitude: CameraAttitude, obs_time: datetime)

Compute: - Angular width and height of the camera FOV - Approximate solid angle (steradians) using a spherical polygon area

classmethod camera_fov_border_vectors(camera: CameraIntrinsics, attitude: CameraAttitude, obs_time: datetime, border_step=50)

Sample the full border of the camera sensor and return a list of 3D GCRS unit vectors representing the FOV boundary.

border_step = number of samples per edge (higher for ultra-wide lenses)

classmethod camera_fov_convex_hull(camera: CameraIntrinsics, attitude: CameraAttitude, obs_time: datetime, border_step: int = 100)

Sample the border of the sensor and compute a convex hull on the sphere. Returns: - hull_coords: SkyCoord of hull vertices (in order) - hull: ConvexHull object in 3D unit-vector space

classmethod camera_fov_healpix_mask(camera: CameraIntrinsics, attitude: CameraAttitude, obs_time: datetime, nside=64)

Return HEALPix pixel indices inside the camera FOV. Uses 3D spherical polygon for robustness.

classmethod camera_fov_radec_box(camera: CameraIntrinsics, attitude: CameraAttitude, obs_time: datetime)

Compute RA/Dec for the four corners of the camera sensor. Returns a dict with RA/Dec for each corner and a SkyCoord polygon.

classmethod camera_fov_solid_angle(camera: CameraIntrinsics, attitude: CameraAttitude, obs_time: datetime)

Compute the solid angle of the camera FOV in steradians using a robust 3D spherical polygon method.

class CameraIntrinsics

Bases: object

Attributes:
aspect_ratio

aspect_ratio

bcc
cx
cy
pixel_size_x_mm

pixel_size_x_mm

pixel_size_y_mm

pixel_size_y_mm

sensor_to_lens_mm

Methods

property aspect_ratio
bcc: BrownConradyCoeffs = None
cx: float = None
cy: float = None
focal_length_mm: float
nx: int
ny: int
property pixel_size_x_mm
property pixel_size_y_mm
pixel_to_radec(px: float, py: float, attitude: CameraAttitude, obs_time: datetime)

Convert a pixel coordinate to RA/Dec using: - Correct camera geometry - Correct camera -> ECI rotation - Correct TEME -> GCRS conversion

pixel_to_radec_and_vector(px: float, py: float, attitude: CameraAttitude, obs_time: datetime, sat_orbit: SatelliteOrbit = None)

Convert a pixel coordinate to RA/Dec and return satellite vector

radec_to_pixel(ra_deg: float, dec_deg: float, attitude: CameraAttitude, obs_time: datetime)

Convert an RA/Dec (ICRS) direction into pixel coordinates (px, py) using the camera’s orientation quaternion (w, x, y, z).

Raises CameraIntrinsicsError if the direction is outside the camera FOV.

sensor_size_x_mm: float
sensor_size_y_mm: float
sensor_to_lens_mm: float = None
sensor_to_radec()
class Quaternion(qw: float = 1.0, qx: float = 0.0, qy: float = 0.0, qz: float = 0.0)

Bases: object

A satellite quaternion body (or attitude quaternion) is a 4-component mathematical tool q = [q0,q1,q2,q3] or q = [s,v] used to represent the 3D orientation (attitude) of a satellite’s body-fixed frame relative to a reference frame. https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation

Attributes:
w
wxyz
x
y
z
qw: float = 1.0
qx: float = 0.0
qy: float = 0.0
qz: float = 0.0
property w
property wxyz
property x
property y
property z
class SatelliteOrbit

Bases: object

Attributes:
tle

Methods

eci_position_vector(obs_time: datetime)

Returns ECI (Earth-Centered Inertial) position (km) at UTC time obs_time.

eci_velocity_vector(obs_time: datetime)

Returns ECI (Earth-Centered Inertial) velocity (km/s) at UTC time obs_time.

tle: list = None
adjust_by_seconds(delta: int)[source]

accelerate time

property attitude
property bcc
property cam_attitude
property camera
camera_fov_angular_width_height()[source]
camera_fov_border_vectors()[source]
camera_fov_convex_hull()[source]
camera_fov_healpix_mask()[source]
camera_fov_radec_box()[source]
camera_fov_solid_angle()[source]
choose_attitude()[source]
property cx
property cy
datetime(year, month, day, hour, minute, second)[source]

Observation time - fixed

eci_position_vector()[source]
eci_velocity_vector()[source]
property focal_length_mm
now()[source]

Observation time - updating to time now

property nx
property ny
property obs_time
pixel_to_radec()[source]
pixel_to_radec_and_vector()[source]
radec_to_pixel()[source]
reload()[source]
property sat_attitude
property sat_orbit
property sat_quat_body_to_eci
property sensor_size_x_mm
property sensor_size_y_mm
sensor_to_radec()[source]
property tle
exception SatelliteCameraViewer.SatelliteCamera.SatelliteCameraError[source]

Bases: Exception

Submodules