aboutsummaryrefslogtreecommitdiff
path: root/src/modules/navigator/mission.h
diff options
context:
space:
mode:
authorJulian Oes <julian@oes.ch>2014-06-06 17:17:41 +0200
committerJulian Oes <julian@oes.ch>2014-06-06 17:17:41 +0200
commitd78c3a224267f4dbd1fac72e893c81b83b43df9b (patch)
tree017bbbaf5f885fcf375f221127d45123cf0fba3b /src/modules/navigator/mission.h
parent9bfae10b73406ca4f6600a0441c6edf5077f1446 (diff)
downloadpx4-firmware-d78c3a224267f4dbd1fac72e893c81b83b43df9b.tar.gz
px4-firmware-d78c3a224267f4dbd1fac72e893c81b83b43df9b.tar.bz2
px4-firmware-d78c3a224267f4dbd1fac72e893c81b83b43df9b.zip
navigator: new class structure, loiter and mission working
Diffstat (limited to 'src/modules/navigator/mission.h')
-rw-r--r--src/modules/navigator/mission.h46
1 files changed, 7 insertions, 39 deletions
diff --git a/src/modules/navigator/mission.h b/src/modules/navigator/mission.h
index 4d0083d85..ad8cb467c 100644
--- a/src/modules/navigator/mission.h
+++ b/src/modules/navigator/mission.h
@@ -33,7 +33,7 @@
/**
* @file mission.h
*
- * Helper class to access missions
+ * Navigator mode to access missions
*
* @author Julian Oes <julian@oes.ch>
*/
@@ -50,16 +50,19 @@
#include <uORB/uORB.h>
#include <uORB/topics/vehicle_global_position.h>
+#include <uORB/topics/position_setpoint_triplet.h>
#include <uORB/topics/home_position.h>
#include <uORB/topics/vehicle_status.h>
#include <uORB/topics/mission.h>
#include <uORB/topics/mission_result.h>
+#include "navigator_mode.h"
+#include "mission_block.h"
#include "mission_feasibility_checker.h"
class Navigator;
-class Mission : public control::SuperBlock
+class Mission : public NavigatorMode, MissionBlock
{
public:
/**
@@ -82,42 +85,16 @@ public:
*/
virtual bool update(struct position_setpoint_triplet_s *pos_sp_triplet);
-protected:
- /**
- * Check if mission item has been reached
- * @return true if successfully reached
- */
- bool is_mission_item_reached();
- /**
- * Reset all reached flags
- */
- void reset_mission_item_reached();
-
- /**
- * Convert a mission item to a position setpoint
- */
- void mission_item_to_position_setpoint(const struct mission_item_s *item, struct position_setpoint_s *sp);
-
- /**
- * Set a loiter item, if possible reuse the position setpoint, otherwise take the current position
- * @return true if setpoint has changed
- */
- bool set_loiter_item(bool reuse_current_pos_sp, struct position_setpoint_triplet_s *pos_sp_triplet);
-
- class Navigator *_navigator;
-
private:
/**
* Update onboard mission topic
- * @return true if onboard mission has been updated
*/
- bool is_onboard_mission_updated();
+ void update_onboard_mission();
/**
* Update offboard mission topic
- * @return true if offboard mission has been updated
*/
- bool is_offboard_mission_updated();
+ void update_offboard_mission();
/**
* Move on to next mission item or switch to loiter
@@ -179,12 +156,6 @@ private:
*/
void publish_mission_result();
- bool _waypoint_position_reached;
- bool _waypoint_yaw_reached;
- hrt_abstime _time_first_inside_orbit;
-
- bool _first_run;
-
control::BlockParamFloat _param_onboard_enabled;
control::BlockParamFloat _param_loiter_radius;
@@ -194,8 +165,6 @@ private:
int _current_onboard_mission_index;
int _current_offboard_mission_index;
- struct mission_item_s _mission_item;
-
orb_advert_t _mission_result_pub;
struct mission_result_s _mission_result;
@@ -206,7 +175,6 @@ private:
} _mission_type;
MissionFeasibilityChecker missionFeasiblityChecker; /**< class that checks if a mission is feasible */
-
};
#endif