Skip to content

Commit 111db29

Browse files
fix equation related to cantilever
1 parent 4f2ccdb commit 111db29

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/dynamics/attitude/attitude_with_cantilever_vibration.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ AttitudeWithCantileverVibration::AttitudeWithCantileverVibration(
3232
double spring_coefficient = pow(intrinsic_angular_velocity_cantilever_rad_s, 2.0);
3333
attitude_ode_.SetSpringCoefficient(spring_coefficient);
3434
attitude_ode_.SetInverseInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_));
35+
attitude_ode_.SetInverseTotalInertiaTensor(CalcInverseMatrix(inertia_tensor_kgm2_ + inertia_tensor_cantilever_kgm2));
3536
math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever =
36-
CalcInverseMatrix(inertia_tensor_kgm2_ - inertia_tensor_cantilever_kgm2) * inertia_tensor_kgm2_;
37+
attitude_ode_.GetInverseInertiaTensor() * (inertia_tensor_kgm2_ + inertia_tensor_cantilever_kgm2);
3738
attitude_ode_.SetInverseEquivalentInertiaTensorCantilever(inverse_equivalent_inertia_tensor_cantilever);
3839
attitude_ode_.SetTorque_b_Nm(torque_b_Nm_);
3940
attitude_ode_.SetAngularMomentumReactionWheel_b_Nms(angular_momentum_reaction_wheel_b_Nms_);

src/dynamics/attitude/ode_attitude_with_cantilever_vibration.hpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ class AttitudeWithCantileverVibrationOde : public numerical_integration::Interfa
9090
(attenuation_coefficient_ * omega_cantilever_rad_s + spring_coefficient_ * euler_angle_cantilever_rad)) -
9191
inverse_inertia_tensor_ * net_torque_b_Nm;
9292

93-
math::Vector<3> rhs = inverse_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2);
93+
math::Vector<3> rhs =
94+
inverse_total_inertia_tensor_ * (net_torque_b_Nm - inertia_tensor_cantilever_kgm2_ * angular_accelaration_cantilever_rad_s2);
9495

9596
for (size_t i = 0; i < 3; ++i) {
9697
output[i] = rhs[i];
@@ -152,6 +153,11 @@ class AttitudeWithCantileverVibrationOde : public numerical_integration::Interfa
152153
* @brief Get inverse of inertia tensor of the cantilever
153154
*/
154155
inline math::Matrix<3, 3> GetInverseEquivalentInertiaTensorCantilever() { return inverse_equivalent_inertia_tensor_cantilever_; }
156+
/**
157+
* @fn GetInverseTotalInertiaTensor
158+
* @brief Get inverse of total inertia tensor
159+
*/
160+
inline math::Matrix<3, 3> GetInverseTotalInertiaTensor() { return inverse_total_inertia_tensor_; }
155161

156162
// Setter
157163
/**
@@ -209,6 +215,13 @@ class AttitudeWithCantileverVibrationOde : public numerical_integration::Interfa
209215
inline void SetInverseEquivalentInertiaTensorCantilever(const math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever) {
210216
inverse_equivalent_inertia_tensor_cantilever_ = inverse_equivalent_inertia_tensor_cantilever;
211217
}
218+
/**
219+
* @fn SetInverseTotalInertiaTensor
220+
* @brief Set inverse of total inertia tensor
221+
*/
222+
inline void SetInverseTotalInertiaTensor(const math::Matrix<3, 3> inverse_total_inertia_tensor) {
223+
inverse_total_inertia_tensor_ = inverse_total_inertia_tensor;
224+
}
212225

213226
protected:
214227
double attenuation_coefficient_ = 0.0; //!< Attenuation coefficient
@@ -220,6 +233,7 @@ class AttitudeWithCantileverVibrationOde : public numerical_integration::Interfa
220233
math::Matrix<3, 3> previous_inertia_tensor_kgm2_{0.0}; //!< Previous inertia tensor [kgm2]
221234
math::Matrix<3, 3> inertia_tensor_cantilever_kgm2_{0.0}; //!< Inertia tensor of the cantilever [kgm2]
222235
math::Matrix<3, 3> inverse_equivalent_inertia_tensor_cantilever_{0.0}; //!< Inverse of inertia tensor of the cantilever
236+
math::Matrix<3, 3> inverse_total_inertia_tensor_{0.0}; //!< Inverse of total inertia tensor
223237
};
224238

225239
} // namespace s2e::dynamics::attitude

0 commit comments

Comments
 (0)