11 #include <px4_ros2/third_party/nlohmann/json_fwd.hpp>
12 #include <rclcpp/rclcpp.hpp>
31 const nlohmann::json& json()
const {
return *_data; }
33 bool contains(
const std::string& key)
const;
36 T at(
const std::string& key)
const;
46 std::shared_ptr<nlohmann::json> _data;
49 enum class MissionFrame {
54 static inline std::string missionFrameStr(MissionFrame frame)
57 case MissionFrame::Global:
65 explicit Waypoint(Eigen::Vector3d a_coordinate, MissionFrame a_frame = MissionFrame::Global)
66 : coordinate(std::move(a_coordinate)), frame(a_frame)
70 Eigen::Vector3d coordinate;
72 MissionFrame frame{MissionFrame::Global};
74 friend void from_json(
const nlohmann::json& j,
Waypoint& o);
75 friend void to_json(nlohmann::json& j,
const Waypoint& o);
78 enum class NavigationItemType {
90 std::variant<Waypoint> data;
99 : name(std::move(a_name)), arguments(std::move(a_arguments))
108 friend void from_json(
const nlohmann::json& j,
ActionItem& o);
109 friend void to_json(nlohmann::json& j,
const ActionItem& o);
112 using MissionItem = std::variant<NavigationItem, ActionItem>;
154 : _mission_defaults(mission_defaults), _mission_items(std::move(mission_items))
160 const std::vector<MissionItem>& items()
const {
return _mission_items; }
162 bool indexValid(
int index)
const
164 return index >= 0 && index < static_cast<int>(_mission_items.size());
167 friend void from_json(
const nlohmann::json& j,
Mission& o);
168 friend void to_json(nlohmann::json& j,
const Mission& o);
170 std::string checksum()
const;
174 std::vector<MissionItem> _mission_items;
183 MissionFileMonitor(std::shared_ptr<rclcpp::Node> node, std::filesystem::path filename,
184 std::function<
void(std::shared_ptr<Mission>)> on_mission_update);
191 std::shared_ptr<rclcpp::Node> _node;
192 const std::filesystem::path _filename;
193 const std::function<void(std::shared_ptr<Mission>)> _on_mission_update;
196 rclcpp::TimerBase::SharedPtr _update_timer;
Arguments passed to an action from the mission JSON definition.
Definition: mission.hpp:25
bool resuming() const
Check if the action is being resumed.
File monitor to load a mission from a JSON file.
Definition: mission.hpp:181
Mission definition.
Definition: mission.hpp:149
Definition: mission.hpp:96
Definition: mission.hpp:136
Definition: mission.hpp:82
Definition: mission.hpp:114
std::optional< float > max_heading_rate
[rad/s]
Definition: mission.hpp:117
std::optional< float > vertical_velocity
[m/s]
Definition: mission.hpp:116
std::optional< float > horizontal_velocity
[m/s]
Definition: mission.hpp:115
Definition: mission.hpp:63