8 #include <px4_msgs/msg/fixed_wing_lateral_setpoint.hpp>
9 #include <px4_msgs/msg/fixed_wing_longitudinal_setpoint.hpp>
10 #include <px4_msgs/msg/lateral_control_configuration.hpp>
11 #include <px4_msgs/msg/longitudinal_control_configuration.hpp>
12 #include <Eigen/Eigen>
15 #include <px4_ros2/common/setpoint_base.hpp>
16 #include <px4_ros2/common/exception.hpp>
24 struct FwLateralLongitudinalSetpoint;
25 struct FwControlConfiguration;
83 float altitude_amsl_sp,
float course_sp,
84 std::optional<float> equivalent_airspeed_sp = {},
85 std::optional<float> lateral_acceleration_sp = {});
95 float height_rate_sp,
float course_sp,
96 std::optional<float> equivalent_airspeed_sp = {},
97 std::optional<float> lateral_acceleration_sp = {});
99 float desiredUpdateRateHz()
override {
return 30.f;}
102 rclcpp::Node & _node;
103 rclcpp::Publisher<px4_msgs::msg::FixedWingLateralSetpoint>::SharedPtr
105 rclcpp::Publisher<px4_msgs::msg::FixedWingLongitudinalSetpoint>::SharedPtr
106 _fw_longitudinal_sp_pub;
108 rclcpp::Publisher<px4_msgs::msg::LateralControlConfiguration>::SharedPtr
109 _lateral_control_configuration_pub;
110 rclcpp::Publisher<px4_msgs::msg::LongitudinalControlConfiguration>::SharedPtr
111 _longitudinal_control_configuration_pub;
116 std::optional<float> course;
117 std::optional<float> airspeed_direction;
118 std::optional<float> lateral_acceleration;
119 std::optional<float> altitude_msl;
120 std::optional<float> height_rate;
121 std::optional<float> equivalent_airspeed;
122 std::optional<float> throttle_direct;
132 airspeed_direction = airspeed_direction_sp;
138 lateral_acceleration = lateral_acceleration_sp;
144 altitude_msl = altitude_sp;
150 height_rate = height_rate_sp;
156 equivalent_airspeed = equivalent_airspeed_sp;
163 throttle_direct = throttle_direct_sp;
170 std::optional<float> min_pitch;
171 std::optional<float> max_pitch;
172 std::optional<float> min_throttle;
173 std::optional<float> max_throttle;
174 std::optional<float> max_lateral_acceleration;
175 std::optional<float> target_climb_rate;
176 std::optional<float> target_sink_rate;
177 std::optional<float> speed_weight;
182 min_pitch = min_pitch_sp;
183 max_pitch = max_pitch_sp;
191 min_throttle = min_throttle_sp;
192 max_throttle = max_throttle_sp;
200 max_lateral_acceleration = max_lateral_acceleration_sp;
207 target_sink_rate = target_sink_rate_sp;
214 target_climb_rate = target_climb_rate_sp;
225 if (speed_weight_sp < 0.0 || speed_weight_sp > 2.0) {
226 throw Exception(
"Speed weight must be between 0 and 2.");
228 speed_weight = speed_weight_sp;
Definition: context.hpp:20
Definition: exception.hpp:16
Setpoint type for fixedwing control.
Definition: lateral_longitudinal.hpp:31
void updateWithAltitude(float altitude_amsl_sp, float course_sp, std::optional< float > equivalent_airspeed_sp={}, std::optional< float > lateral_acceleration_sp={})
Update the setpoint with simplest set of inputs: Altitude and Course. Lateral acceleration setpoints ...
void update(const FwLateralLongitudinalSetpoint &setpoint)
Update the setpoint with full flexibility by passing a FwLateralLongitudinalSetpoint.
void update(const FwLateralLongitudinalSetpoint &setpoint, const FwControlConfiguration &config)
Update the setpoint with full flexibility by passing a FwLateralLongitudinalSetpoint and FwControlCon...
void updateWithHeightRate(float height_rate_sp, float course_sp, std::optional< float > equivalent_airspeed_sp={}, std::optional< float > lateral_acceleration_sp={})
Update the setpoint with simplest set of inputs: Height rate and Course. Lateral acceleration setpoin...
Definition: setpoint_base.hpp:21
Definition: lateral_longitudinal.hpp:169
FwControlConfiguration & withSpeedWeight(float speed_weight_sp)
Configure the speed weight for TECS (Total Energy Control System). For more information on TECS,...
Definition: lateral_longitudinal.hpp:223
Definition: lateral_longitudinal.hpp:115
Definition: setpoint_base.hpp:26