ModelSpace
All Classes Namespaces Functions Variables Enumerations Pages
RangeAzElSensorModel.h
1/******************************************************************************
2* Copyright (c) ATTX LLC 2024. All Rights Reserved.
3*
4* This software and associated documentation (the "Software") are the
5* proprietary and confidential information of ATTX, LLC. The Software is
6* furnished under a license agreement between ATTX and the user organization
7* and may be used or copied only in accordance with the terms of the agreement.
8* Refer to 'license/attx_license.adoc' for standard license terms.
9*
10* EXPORT CONTROL NOTICE: THIS SOFTWARE MAY INCLUDE CONTENT CONTROLLED UNDER THE
11* INTERNATIONAL TRAFFIC IN ARMS REGULATIONS (ITAR) OR THE EXPORT ADMINISTRATION
12* REGULATIONS (EAR99). No part of the Software may be used, reproduced, or
13* transmitted in any form or by any means, for any purpose, without the express
14* written permission of ATTX, LLC.
15******************************************************************************/
16/*
17Point mass gravity model header file
18
19Author: Alex Reynolds
20*/
21
22#ifndef MODELS_STATES_RANGE_AZ_EL_SENSOR_MODEL_H
23#define MODELS_STATES_RANGE_AZ_EL_SENSOR_MODEL_H
24
25#include "core/macros.h"
26#include "utils/unitutils.h"
27#include "simulation/Model.h"
28#include "six_dof_dynamics/Frame.hpp"
29#include "six_dof_dynamics/Node.hpp"
30#include "utils/frameutils.hpp"
31
32namespace modelspace {
33
34 /**
35 * @brief Range, azimuth, and elevation sensor model
36 *
37 * This model is a simple range, range rate, azimuth, and
38 * elevation sensor model. It uses the relative position
39 * and interial velocity between two frames to compute the
40 * listed parameters.
41 *
42 * Parameters are defined as follows:
43 * AZIMUTH is defined relative to the +Y vector
44 * ELEVATION is defined relative to the X-Y plane
45 * This makes the model follow the behavior exhibited by a ground station
46 * in the ENU frame.
47 *
48 * This model does not care about frame particulars. It will
49 * give you answers relative to the frame you've provided.
50 */
51 class RangeAzElSensorModel : public Model {
52 public:
53 // Model params
54 // NAME TYPE DEFAULT VALUE
56 /** This is the elevation mask value, in radians, for the sensor. Default is zero degrees*/
57 SIGNAL(elevation_mask_rad, double, 0.0)
58 /** This is the low-end azimuth mask value, in radians, for the sensor. Default is no mask*/
59 SIGNAL(azimuth_mask_low, double, -clockwerk::TWO_PI)
60 /** This is the high-end azimuth mask value, in radians, for the sensor. Default is no mask*/
61 SIGNAL(azimuth_mask_high, double, clockwerk::TWO_PI)
63
64 // Model inputs
65 // NAME TYPE DEFAULT VALUE
67 /** The position of the object body in given reference frame */
69 /** The inertial velocity of the object relative to the reference frame origin,
70 * reepresented in reference frame coordinates*/
73
74 // Model outputs
75 // NAME TYPE DEFAULT VALUE
77 /** This is the range of the input object to the frame. Will be zero if masked.*/
78 SIGNAL(range, double, 0.0)
79 /** This is the range rate of the input object to the frame. Will be zero if masked.*/
80 SIGNAL(range_rate, double, 0.0)
81 /** This is the azimuth of the object wrt the frame x vector, in radians. Will be zero if masked */
82 SIGNAL(azimuth, double, 0.0)
83 /** This is the elevation of the object wrt the frame x-y plane, in radians. Will be zero if masked. */
84 SIGNAL(elevation, double, 0.0)
85 /** This is the mask flag for the ground station. True for masked, False for visible */
86 SIGNAL(masked, bool, true)
88
89 // Model-specific implementations of startup and derivative
90 RangeAzElSensorModel();
91 RangeAzElSensorModel(Model &pnt, const std::string &m_name="range_az_el");
92 RangeAzElSensorModel(SimulationExecutive &e, const std::string &m_name="range_az_el");
93 RangeAzElSensorModel(Model &pnt, int schedule_slot, const std::string &m_name="range_az_el");
94 RangeAzElSensorModel(SimulationExecutive &e, int schedule_slot, const std::string &m_name="range_az_el");
95 ~RangeAzElSensorModel() {}
96
97 protected:
98 int execute();
99 };
100
101}
102
103#endif
Base model class for derived implementation.
Definition Model.h:56
Range, azimuth, and elevation sensor model.
Definition RangeAzElSensorModel.h:51
int execute()
Function to execute the task. All math and calculations should be here.
Definition RangeAzElSensorModel.cpp:35
Implementation of the executive class for simulation.
Definition SimulationExecutive.h:63
#define SIGNAL(NAME, TYPE, INITIAL_VALUE)
Definition macros.h:87
#define START_PARAMS
Definition macros.h:96
#define CartesianVector3D
Definition macros.h:54
#define END_OUTPUTS
Definition macros.h:90
#define END_PARAMS
Definition macros.h:98
#define START_OUTPUTS
Definition macros.h:88
#define END_INPUTS
Definition macros.h:94
#define START_INPUTS
Definition macros.h:92
Class to propagate CR3BP dynamics in characteristic units.
Definition ConfigurationWriter.cpp:18
clockwerk::DataIO< clockwerk::CartesianVector< double, 3 > > pos_obj__ref
Definition RangeAzElSensorModel.h:68
clockwerk::DataIO< clockwerk::CartesianVector< double, 3 > > vel_obj__ref
Definition RangeAzElSensorModel.h:71
clockwerk::DataIO< double > elevation
Definition RangeAzElSensorModel.h:84
clockwerk::DataIO< double > azimuth
Definition RangeAzElSensorModel.h:82
clockwerk::DataIO< double > range_rate
Definition RangeAzElSensorModel.h:80
clockwerk::DataIO< double > range
Definition RangeAzElSensorModel.h:78
clockwerk::DataIO< bool > masked
Definition RangeAzElSensorModel.h:86
clockwerk::DataIO< double > elevation_mask_rad
Definition RangeAzElSensorModel.h:57
clockwerk::DataIO< double > azimuth_mask_low
Definition RangeAzElSensorModel.h:59
clockwerk::DataIO< double > azimuth_mask_high
Definition RangeAzElSensorModel.h:61