35inline Eigen::Vector3d proNav(
double nav_gain,
const Eigen::Vector3d& velocity,
36 const Eigen::Vector3d& los,
const Eigen::Vector3d& los_rate,
37 double min_velocity = 15.0) {
38 const double v = std::max(velocity.norm(), min_velocity);
39 return -nav_gain * v * (los.normalized().cross(los_rate));
51inline double altitudeHold(
const Eigen::Vector3d& velocity,
double gain = 4.0) {
52 return -velocity.z() * gain;
70inline Eigen::Vector3d slidingModeRobustifying(
const Eigen::Vector3d& los,
71 const Eigen::Vector3d& los_rate,
double abias_max,
72 double boundary_layer = 1e-3) {
73 const Eigen::Vector3d s = los.normalized().cross(los_rate);
74 return -abias_max * (s / std::max(s.norm(), boundary_layer));