lee_position_controller.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015 Fadri Furrer, ASL, ETH Zurich, Switzerland
3  * Copyright 2015 Michael Burri, ASL, ETH Zurich, Switzerland
4  * Copyright 2015 Mina Kamel, ASL, ETH Zurich, Switzerland
5  * Copyright 2015 Janosch Nikolic, ASL, ETH Zurich, Switzerland
6  * Copyright 2015 Markus Achtelik, ASL, ETH Zurich, Switzerland
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13 
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #ifndef ROTORS_CONTROL_LEE_POSITION_CONTROLLER_H
22 #define ROTORS_CONTROL_LEE_POSITION_CONTROLLER_H
23 
24 #include <mav_msgs/conversions.h>
26 
27 #include "rotors_control/common.h"
29 
30 namespace rotors_control {
31 
32 // Default values for the lee position controller and the Asctec Firefly.
33 static const Eigen::Vector3d kDefaultPositionGain = Eigen::Vector3d(6, 6, 6);
34 static const Eigen::Vector3d kDefaultVelocityGain = Eigen::Vector3d(4.7, 4.7, 4.7);
35 static const Eigen::Vector3d kDefaultAttitudeGain = Eigen::Vector3d(3, 3, 0.035);
36 static const Eigen::Vector3d kDefaultAngularRateGain = Eigen::Vector3d(0.52, 0.52, 0.025);
37 
39  public:
40  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
42  : position_gain_(kDefaultPositionGain),
43  velocity_gain_(kDefaultVelocityGain),
44  attitude_gain_(kDefaultAttitudeGain),
45  angular_rate_gain_(kDefaultAngularRateGain) {
47  }
48 
49  Eigen::Matrix4Xd allocation_matrix_;
50  Eigen::Vector3d position_gain_;
51  Eigen::Vector3d velocity_gain_;
52  Eigen::Vector3d attitude_gain_;
53  Eigen::Vector3d angular_rate_gain_;
55 };
56 
58  public:
61  void InitializeParameters();
62  void CalculateRotorVelocities(Eigen::VectorXd* rotor_velocities) const;
63 
64  void SetOdometry(const EigenOdometry& odometry);
65  void SetTrajectoryPoint(
66  const mav_msgs::EigenTrajectoryPoint& command_trajectory);
67 
70 
71  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
72  private:
75 
76  Eigen::Vector3d normalized_attitude_gain_;
79 
82 
83  void ComputeDesiredAngularAcc(const Eigen::Vector3d& acceleration,
84  Eigen::Vector3d* angular_acceleration) const;
85  void ComputeDesiredAcceleration(Eigen::Vector3d* acceleration) const;
86 };
87 }
88 
89 #endif // ROTORS_CONTROL_LEE_POSITION_CONTROLLER_H
mav_msgs::EigenTrajectoryPoint command_trajectory_
static const Eigen::Vector3d kDefaultPositionGain
static const Eigen::Vector3d kDefaultAngularRateGain
static const Eigen::Vector3d kDefaultVelocityGain
static const Eigen::Vector3d kDefaultAttitudeGain
EIGEN_MAKE_ALIGNED_OPERATOR_NEW LeePositionControllerParameters()
void calculateAllocationMatrix(const RotorConfiguration &rotor_configuration, Eigen::Matrix4Xd *allocation_matrix)
Definition: common.h:79
LeePositionControllerParameters controller_parameters_


rotors_control
Author(s): Fadri Furrer, Michael Burri, Mina Kamel, Janosch Nikolic, Markus Achtelik
autogenerated on Mon Feb 28 2022 23:38:55