![]() |
WarpTwin
Documentation for WarpTwin models and classes.
|
/******************************************************************************
* Copyright (c) ATTX INC 2025. All Rights Reserved.
*
* This software and associated documentation (the "Software") are the
* proprietary and confidential information of ATTX, INC. The Software is
* furnished under a license agreement between ATTX and the user organization
* and may be used or copied only in accordance with the terms of the agreement.
* Refer to 'license/attx_license.adoc' for standard license terms.
*
* EXPORT CONTROL NOTICE: THIS SOFTWARE MAY INCLUDE CONTENT CONTROLLED UNDER THE
* INTERNATIONAL TRAFFIC IN ARMS REGULATIONS (ITAR) OR THE EXPORT ADMINISTRATION
* REGULATIONS (EAR99). No part of the Software may be used, reproduced, or
* transmitted in any form or by any means, for any purpose, without the express
* written permission of ATTX, INC.
******************************************************************************/
/*
Flat plate drag model header file
Author: Alex Reynolds
*/
/*
Metadata for MS GUI:
imdata = {"exclude" : True}
*/
#ifndef MODELS_SENSORS_EARTH_OBSERVATION_MODEL_H
#define MODELS_SENSORS_EARTH_OBSERVATION_MODEL_H
#include "simulation/Model.h"
#include "models/states/GroundStationModel.h"
namespace warptwin {
/**
* @brief Simple Earth Observation Model
*
* This model defines a simple Earth Observation configuration with revisit
* counts, range, and observation times.
*/
MODEL(EarthObservationModel)
public:
// Model params
// NAME TYPE DEFAULT VALUE
START_PARAMS
/** The maximum angle off nadir the spacecraft is allowed to look for a valid pass, in radians */
SIGNAL(off_nadir_mask_rad, double, 1.0)
/** The frame of the spacecraft object that the ground station will sense*/
SIGNAL(spacecraft_frame, Frame*, nullptr)
/** The planet rotating frame to which the ground station is attached. Note that
* the planet rotating frame must be a child of the associated planet inertial
* frame, which is also used in this model. */
SIGNAL(planet_rotating_frame, Frame*, nullptr)
/** This is the detic latitude of the target site, in radians */
SIGNAL(target_lat_rad, double, 0.0)
/** The longitude of the target site, in radians */
SIGNAL(target_lon_rad, double, 0.0)
END_PARAMS
// Model inputs
// NAME TYPE DEFAULT VALUE
START_INPUTS
END_INPUTS
// Model outputs
// NAME TYPE DEFAULT VALUE
START_OUTPUTS
/** The total amount of time, in seconds, that the site has been observable */
SIGNAL(obs_time_s, double, 0.0)
/** The total number of visits by the spacecraft to the site */
SIGNAL(total_visits, int, 0)
/** This is the range of the spacecraft to the target */
SIGNAL(range, double, 0.0)
/** This is the range rate of the spacecraft wrt the target*/
SIGNAL(range_rate, double, 0.0)
/** This is the look angle of the spacecraft wrt the target site, in radians */
SIGNAL(look_angle, double, 0.0)
/** This flag indicates whether the targeted ground site is visible or not. 1 = visible */
SIGNAL(visible, bool, true)
END_OUTPUTS
protected:
int16 start() override;
int16 execute() override;
GroundStationModel _gs;
bool _seen_last_step;
};
}
#endif