8 #include <px4_ros2/mission/actions/action.hpp>
9 #include <px4_ros2/mission/mission_executor.hpp>
10 #include <px4_ros2/components/mode.hpp>
11 #include <px4_ros2/vehicle_state/land_detected.hpp>
12 #include <rclcpp/rclcpp.hpp>
15 namespace px4_ros2::default_actions
28 ~
Rtl()
override =
default;
29 std::string name()
const override {
return "rtl";}
33 const std::shared_ptr<ActionHandler> & handler,
const ActionArguments & arguments,
34 const std::function<
void()> & on_completed)
override
36 handler->runMode(ModeBase::kModeIDRtl, on_completed);
47 ~
Land()
override =
default;
48 std::string name()
const override {
return "land";}
52 const std::shared_ptr<ActionHandler> & handler,
const ActionArguments & arguments,
53 const std::function<
void()> & on_completed)
override
55 handler->runMode(ModeBase::kModeIDLand, on_completed);
67 std::string name()
const override {
return "takeoff";}
70 const std::shared_ptr<ActionHandler> & handler,
const ActionArguments & arguments,
71 const std::function<
void()> & on_completed)
override
74 if (arguments.contains(
"altitude")) {
75 altitude = arguments.at<
float>(
"altitude");
77 handler->runModeTakeoff(altitude, NAN, on_completed);
92 ~
Hold()
override =
default;
93 std::string name()
const override {
return "hold";}
98 const std::shared_ptr<ActionHandler> & handler,
const ActionArguments & arguments,
99 const std::function<
void()> & on_completed)
override
101 float duration_s = 1.0f;
102 if (arguments.contains(
"duration")) {
103 duration_s = arguments.at<
float>(
"duration");
105 handler->runMode(ModeBase::kModeIDLoiter, [] {});
106 _timer = _node.create_wall_timer(
107 std::chrono::duration<float>(duration_s), [
this, on_completed] {
119 rclcpp::Node & _node;
120 std::shared_ptr<rclcpp::TimerBase> _timer;
130 explicit OnResume(
ModeBase & mode, std::shared_ptr<LandDetected> land_detected)
131 : _node(mode.node()), _landed(std::move(land_detected))
136 std::string name()
const override {
return "onResume";}
139 const std::shared_ptr<ActionHandler> & handler,
const ActionArguments & arguments,
140 const std::function<
void()> & on_completed)
override;
143 void resumeFromUnexpectedLanding(
144 const std::shared_ptr<ActionHandler> & handler,
145 const std::function<
void()> & on_completed,
int current_mission_index);
146 void navigateToPreviousWaypoint(
147 const std::shared_ptr<ActionHandler> & handler,
148 const std::function<
void()> & on_completed,
int current_mission_index);
150 rclcpp::Node & _node;
151 std::shared_ptr<LandDetected> _landed;
162 std::string name()
const override {
return "onFailure";}
165 const std::shared_ptr<ActionHandler> & handler,
const ActionArguments & arguments,
166 const std::function<
void()> & on_completed)
override;
177 std::string name()
const override {
return "changeSettings";}
182 const std::shared_ptr<ActionHandler> & handler,
const ActionArguments & arguments,
183 const std::function<
void()> & on_completed)
override;
188 std::unique_ptr<ActionStateKeeper> _state;
Arguments passed to an action from the mission JSON definition.
Definition: mission.hpp:29
Interface class for an action.
Definition: action.hpp:26
Base class for a mode.
Definition: mode.hpp:71
Action to change mission settings (e.g. velocity)
Definition: default_actions.hpp:174
void deactivate() override
bool shouldStopAtWaypoint(const ActionArguments &arguments) override
Definition: default_actions.hpp:179
Default action to trigger the Hold (Loiter) mode.
Definition: default_actions.hpp:86
bool shouldStopAtWaypoint(const ActionArguments &arguments) override
Definition: default_actions.hpp:95
void deactivate() override
Definition: default_actions.hpp:113
Default action to trigger the Land mode.
Definition: default_actions.hpp:45
bool shouldStopAtWaypoint(const ActionArguments &arguments) override
Definition: default_actions.hpp:50
Default action to handle failures.
Definition: default_actions.hpp:159
Default action to resume missions.
Definition: default_actions.hpp:128
Default action to trigger the RTL mode.
Definition: default_actions.hpp:26
bool shouldStopAtWaypoint(const ActionArguments &arguments) override
Definition: default_actions.hpp:31
Default action to trigger the Takeoff mode.
Definition: default_actions.hpp:64