ModelSpace
Documentation for ModelSpace models and classes.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
/******************************************************************************
* Copyright (c) ATTX LLC 2024. All Rights Reserved.
*
* This software and associated documentation (the "Software") are the 
* proprietary and confidential information of ATTX, LLC. 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, LLC.
******************************************************************************/
/*
Frams state sensor model header file

Author: Alex Reynolds
*/
/*
Metadata for MS GUI:
imdata = {"exclude" : True}
*/

#ifndef MODELS_STATES_LVC_STATE_SENSOR_MODEL_H
#define MODELS_STATES_LVC_STATE_SENSOR_MODEL_H

#include "simulation/Model.h"
#include "core/CartesianVector.hpp"
#include "frames/frameutils.h"

namespace modelspace {

    /**
     * @brief   LVC State Sensor Model
     * 
     * This model senses the LVC position of a chaser spacecraft relative
     * to a target spacecraft. The LVC frame defined for the purposes
     * of this model is a simplistic one based on the Dr. Schaub 
     * curvilinear relative state model, with axes as follows:
     * 
     * +Z axis directed toward the center of the Earth and defined as R_target - R_chaser
     * +Y axis perpendicular to the orbit plane with direction opposite angular momentum
     * +X axis in the direction of orbit travel and defined as R_target*theta, where 
     *         theta is the angular separation between spacecraft
    */
    MODEL(LvcStateSensorModel)
    public:
        // Model params
        //         NAME                     TYPE                    DEFAULT VALUE
        START_PARAMS

        END_PARAMS

        // Model inputs
        //         NAME                     TYPE                    DEFAULT VALUE
        START_INPUTS
            /** The position of the target spacecraft in a planet-centered inertial frame */
            SIGNAL(pos_tgt_planet__inertial,CartesianVector3,      CartesianVector3({0.0, 0.0, 0.0}))
            /** The velocity of the target spacecraft in a planet-centered inertial frame */
            SIGNAL(vel_tgt_planet__inertial,CartesianVector3,      CartesianVector3({0.0, 0.0, 0.0}))
            /** The position of the chaser spacecraft in a planet-centered inertial frame */
            SIGNAL(pos_chaser_planet__inertial,CartesianVector3,   CartesianVector3({0.0, 0.0, 0.0}))
        END_INPUTS

        // Model outputs
        //         NAME                     TYPE                    DEFAULT VALUE
        START_OUTPUTS
            /** The LVLH frame produced by this model */
            SIGNAL(pos_chaser_tgt_lvc,      CartesianVector3,      CartesianVector3({0.0, 0.0, 0.0}))
        END_OUTPUTS

    protected:
        int16 execute() override;
    };

}

#endif