26 : initialized_params_(false),
27 controller_active_(false) {
56 assert(rotor_velocities);
62 *rotor_velocities = Eigen::VectorXd::Zero(rotor_velocities->rows());
66 Eigen::Vector3d angular_acceleration;
69 Eigen::Vector4d angular_acceleration_thrust;
70 angular_acceleration_thrust.block<3, 1>(0, 0) = angular_acceleration;
74 *rotor_velocities = rotor_velocities->cwiseMax(Eigen::VectorXd::Zero(rotor_velocities->rows()));
75 *rotor_velocities = rotor_velocities->cwiseSqrt();
91 assert(angular_acceleration);
94 double yaw = atan2(R(1, 0), R(0, 0));
97 Eigen::Matrix3d R_des;
98 R_des = Eigen::AngleAxisd(yaw, Eigen::Vector3d::UnitZ())
103 Eigen::Matrix3d angle_error_matrix = 0.5 * (R_des.transpose() * R - R.transpose() * R_des);
104 Eigen::Vector3d angle_error;
108 Eigen::Vector3d angular_rate_des(Eigen::Vector3d::Zero());
Eigen::Vector3d normalized_attitude_gain_
Eigen::Vector3d normalized_angular_rate_gain_
Eigen::Vector3d angular_velocity
~RollPitchYawrateThrustController()
RollPitchYawrateThrustController()
mav_msgs::EigenRollPitchYawrateThrust roll_pitch_yawrate_thrust_
RotorConfiguration rotor_configuration_
void ComputeDesiredAngularAcc(Eigen::Vector3d *angular_acceleration) const
void vectorFromSkewMatrix(Eigen::Matrix3d &skew_matrix, Eigen::Vector3d *vector)
Eigen::Matrix4Xd allocation_matrix_
void SetOdometry(const EigenOdometry &odometry)
std::vector< Rotor > rotors
Eigen::Quaterniond orientation
Eigen::Vector3d angular_rate_gain_
RollPitchYawrateThrustControllerParameters controller_parameters_
VehicleParameters vehicle_parameters_
void SetRollPitchYawrateThrust(const mav_msgs::EigenRollPitchYawrateThrust &roll_pitch_yawrate_thrust)
void InitializeParameters()
void calculateAllocationMatrix(const RotorConfiguration &rotor_configuration, Eigen::Matrix4Xd *allocation_matrix)
Eigen::MatrixX4d angular_acc_to_rotor_velocities_
void CalculateRotorVelocities(Eigen::VectorXd *rotor_velocities) const
Eigen::Vector3d attitude_gain_