@@ -26,6 +26,7 @@ enum class AttitudeControlMode {
26
26
kVelocityDirectionPointing , // !< Spacecraft velocity direction pointing
27
27
kGroundSpeedDirectionPointing , // !< Ground speed direction pointing
28
28
kOrbitNormalPointing , // !< Orbit normal direction pointing
29
+ kEarthSurfacePointing , // !< Earth surface pointing
29
30
kNoControl , // No Control
30
31
};
31
32
@@ -52,14 +53,16 @@ class ControlledAttitude : public Attitude {
52
53
* @param [in] main_target_direction_b: Main target direction on the body fixed frame
53
54
* @param [in] sub_target_direction_b: Sun target direction on the body fixed frame
54
55
* @param [in] inertia_tensor_kgm2: Inertia tensor of the spacecraft [kg m^2]
56
+ * @param [in] target_earth_surface_position: Target position on the Earth surface for Earth surface pointing mode
55
57
* @param [in] local_celestial_information: Local celestial information
56
58
* @param [in] orbit: Orbit
57
59
* @param [in] simulation_object_name: Simulation object name for Monte-Carlo simulation
58
60
*/
59
61
ControlledAttitude (const AttitudeControlMode main_mode, const AttitudeControlMode sub_mode, const math::Quaternion quaternion_i2b,
60
62
const math::Vector<3 > main_target_direction_b, const math::Vector<3 > sub_target_direction_b,
61
- const math::Matrix<3 , 3 >& inertia_tensor_kgm2, const environment::LocalCelestialInformation* local_celestial_information,
62
- const orbit::Orbit* orbit, const std::string& simulation_object_name = " attitude" );
63
+ const math::Matrix<3 , 3 >& inertia_tensor_kgm2, const geodesy::GeodeticPosition target_earth_surface_position,
64
+ const environment::LocalCelestialInformation* local_celestial_information, const orbit::Orbit* orbit,
65
+ const std::string& simulation_object_name = " attitude" );
63
66
/* *
64
67
* @fn ~ControlledAttitude
65
68
* @brief Destructor
@@ -101,13 +104,14 @@ class ControlledAttitude : public Attitude {
101
104
virtual void Propagate (const double end_time_s);
102
105
103
106
private:
104
- AttitudeControlMode main_mode_; // !< Main control mode
105
- AttitudeControlMode sub_mode_; // !< Sub control mode
106
- math::Vector<3 > main_target_direction_b_; // !< Main target direction on the body fixed frame
107
- math::Vector<3 > sub_target_direction_b_; // !< Sub target direction on tge body fixed frame
108
- double previous_calc_time_s_ = -1.0 ; // !< Previous time of velocity calculation [sec]
109
- math::Quaternion previous_quaternion_i2b_; // !< Previous quaternion
110
- math::Vector<3 > previous_omega_b_rad_s_; // !< Previous angular velocity [rad/s]
107
+ AttitudeControlMode main_mode_; // !< Main control mode
108
+ AttitudeControlMode sub_mode_; // !< Sub control mode
109
+ math::Vector<3 > main_target_direction_b_; // !< Main target direction on the body fixed frame
110
+ math::Vector<3 > sub_target_direction_b_; // !< Sub target direction on tge body fixed frame
111
+ double previous_calc_time_s_ = -1.0 ; // !< Previous time of velocity calculation [sec]
112
+ math::Quaternion previous_quaternion_i2b_; // !< Previous quaternion
113
+ math::Vector<3 > previous_omega_b_rad_s_; // !< Previous angular velocity [rad/s]
114
+ geodesy::GeodeticPosition target_earth_surface_position_; // !< Target position on the Earth surface
111
115
112
116
const double kMinDirectionAngle_rad = 30.0 * math::deg_to_rad; // !< Minimum angle b/w main and sub direction
113
117
// TODO Change with ini file
0 commit comments