diff --git a/conf/airframes/examples/microjet.xml b/conf/airframes/examples/microjet.xml index 617f047077..f8897780c2 100644 --- a/conf/airframes/examples/microjet.xml +++ b/conf/airframes/examples/microjet.xml @@ -198,6 +198,7 @@ + diff --git a/conf/firmwares/subsystems/fixedwing/navigation_extra.makefile b/conf/firmwares/subsystems/fixedwing/navigation_extra.makefile index 49fe8c8682..f8a2d463fb 100644 --- a/conf/firmwares/subsystems/fixedwing/navigation_extra.makefile +++ b/conf/firmwares/subsystems/fixedwing/navigation_extra.makefile @@ -11,5 +11,3 @@ $(TARGET).srcs += $(SRC_SUBSYSTEMS)/navigation/common_flight_plan.c $(TARGET).srcs += $(SRC_SUBSYSTEMS)/navigation/traffic_info.c $(TARGET).srcs += $(SRC_SUBSYSTEMS)/navigation/nav_survey_rectangle.c -$(TARGET).srcs += $(SRC_SUBSYSTEMS)/navigation/OSAMNav.c - diff --git a/conf/flight_plans/nav_modules.xml b/conf/flight_plans/nav_modules.xml index 07fffc18d6..c1920b1e1d 100644 --- a/conf/flight_plans/nav_modules.xml +++ b/conf/flight_plans/nav_modules.xml @@ -72,6 +72,7 @@ + @@ -80,7 +81,7 @@ - + @@ -90,6 +91,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/conf/modules/nav_osam.xml b/conf/modules/nav_osam.xml new file mode 100644 index 0000000000..752be49aa3 --- /dev/null +++ b/conf/modules/nav_osam.xml @@ -0,0 +1,20 @@ + + + + + + OSAM collection of advanced navigation routines. + -Flower + -Bungee take-off + -Polygon survey + -Vertical raster + -Skid landing + + +
+ +
+ + + +
diff --git a/sw/airborne/subsystems/navigation/OSAMNav.c b/sw/airborne/modules/nav/nav_osam.c similarity index 96% rename from sw/airborne/subsystems/navigation/OSAMNav.c rename to sw/airborne/modules/nav/nav_osam.c index 3705f8a79e..f276f05002 100644 --- a/sw/airborne/subsystems/navigation/OSAMNav.c +++ b/sw/airborne/modules/nav/nav_osam.c @@ -20,11 +20,11 @@ */ /** - * @file subsystems/navigation/OSAMNav.c + * @file modules/nav/nav_osam.c * */ -#include "subsystems/navigation/OSAMNav.h" +#include "modules/nav/nav_osam.h" #include "subsystems/nav.h" #include "state.h" @@ -63,7 +63,7 @@ static uint8_t Edge; #define LINE_STOP_FUNCTION {} #endif -bool_t InitializeFlower(uint8_t CenterWP, uint8_t EdgeWP) +bool_t flower_start(uint8_t CenterWP, uint8_t EdgeWP) { Center = CenterWP; Edge = EdgeWP; @@ -93,7 +93,7 @@ bool_t InitializeFlower(uint8_t CenterWP, uint8_t EdgeWP) return FALSE; } -bool_t FlowerNav(void) +bool_t flower_run(void) { TransCurrentX = stateGetPositionEnu_f()->x - WaypointX(Center); TransCurrentY = stateGetPositionEnu_f()->y - WaypointY(Center); @@ -203,7 +203,7 @@ static float BungeeAlt; static float TDistance; static uint8_t BungeeWaypoint; -bool_t InitializeBungeeTakeoff(uint8_t BungeeWP) +bool_t bungee_takeoff_start(uint8_t BungeeWP) { float ThrottleB; @@ -257,7 +257,7 @@ bool_t InitializeBungeeTakeoff(uint8_t BungeeWP) return FALSE; } -bool_t BungeeTakeoff(void) +bool_t bungee_takeoff_run(void) { //Translate current position so Throttle point is (0,0) float Currentx = stateGetPositionEnu_f()->x-throttlePx; @@ -375,7 +375,7 @@ static float MaxY; uint16_t PolySurveySweepNum; uint16_t PolySurveySweepBackNum; -bool_t InitializePolygonSurvey(uint8_t EntryWP, uint8_t Size, float sw, float Orientation) +bool_t osam_poly_survey_start(uint8_t EntryWP, uint8_t Size, float sw, float Orientation) { SmallestCorner.x = 0; SmallestCorner.y = 0; @@ -571,7 +571,7 @@ bool_t InitializePolygonSurvey(uint8_t EntryWP, uint8_t Size, float sw, float Or return FALSE; } -bool_t PolygonSurvey(void) +bool_t osam_poly_survey_run(void) { struct Point2D C; struct Point2D ToP; @@ -768,12 +768,12 @@ bool_t PolygonSurvey(void) enum line_status { LR12, LQC21, LTC2, LQC22, LR21, LQC12, LTC1, LQC11 }; static enum line_status line_status; -bool_t InitializeVerticalRaster( void ) { +bool_t vertical_raster_start( void ) { line_status = LR12; return FALSE; } -bool_t VerticalRaster(uint8_t l1, uint8_t l2, float radius, float AltSweep) { +bool_t vertical_raster_run(uint8_t l1, uint8_t l2, float radius, float AltSweep) { radius = fabs(radius); float alt = waypoints[l1].a; waypoints[l2].a = alt; @@ -914,7 +914,7 @@ static float ApproachQDR; static float FinalLandAltitude; static uint8_t FinalLandCount; -bool_t InitializeSkidLanding(uint8_t AFWP, uint8_t TDWP, float radius) +bool_t skid_landing_start(uint8_t AFWP, uint8_t TDWP, float radius) { AFWaypoint = AFWP; TDWaypoint = TDWP; @@ -953,7 +953,7 @@ bool_t InitializeSkidLanding(uint8_t AFWP, uint8_t TDWP, float radius) return FALSE; } -bool_t SkidLanding(void) +bool_t skid_landing_run(void) { switch(CLandingStatus) { @@ -1029,7 +1029,7 @@ static struct Point2D FLTOWP; static float FLQDR; static float FLRadius; -bool_t FlightLine(uint8_t From_WP, uint8_t To_WP, float radius, float Space_Before, float Space_After) +bool_t osam_flight_line_run(uint8_t From_WP, uint8_t To_WP, float radius, float Space_Before, float Space_After) { struct Point2D V; struct Point2D P; @@ -1136,11 +1136,11 @@ bool_t FlightLine(uint8_t From_WP, uint8_t To_WP, float radius, float Space_Befo static uint8_t FLBlockCount = 0; -bool_t FlightLineBlock(uint8_t First_WP, uint8_t Last_WP, float radius, float Space_Before, float Space_After) +bool_t osam_flight_line_block_run(uint8_t First_WP, uint8_t Last_WP, float radius, float Space_Before, float Space_After) { if(First_WP < Last_WP) { - FlightLine(First_WP+FLBlockCount, First_WP+FLBlockCount+1, radius, Space_Before, Space_After); + osam_flight_line_run(First_WP+FLBlockCount, First_WP+FLBlockCount+1, radius, Space_Before, Space_After); if(CFLStatus == FLInitialize) { @@ -1154,7 +1154,7 @@ bool_t FlightLineBlock(uint8_t First_WP, uint8_t Last_WP, float radius, float Sp } else { - FlightLine(First_WP-FLBlockCount, First_WP-FLBlockCount-1, radius, Space_Before, Space_After); + osam_flight_line_run(First_WP-FLBlockCount, First_WP-FLBlockCount-1, radius, Space_Before, Space_After); if(CFLStatus == FLInitialize) { diff --git a/sw/airborne/subsystems/navigation/OSAMNav.h b/sw/airborne/modules/nav/nav_osam.h similarity index 64% rename from sw/airborne/subsystems/navigation/OSAMNav.h rename to sw/airborne/modules/nav/nav_osam.h index c40ae6ccfa..1f1b800a89 100644 --- a/sw/airborne/subsystems/navigation/OSAMNav.h +++ b/sw/airborne/modules/nav/nav_osam.h @@ -20,7 +20,7 @@ */ /** - * @file subsystems/navigation/OSAMNav.h + * @file modules/nav/nav_osam.h * */ @@ -33,29 +33,29 @@ struct Point2D {float x; float y;}; struct Line {float m;float b;float x;}; -extern bool_t FlowerNav(void); -extern bool_t InitializeFlower(uint8_t CenterWP, uint8_t EdgeWP); +extern bool_t flower_run(void); +extern bool_t flower_start(uint8_t CenterWP, uint8_t EdgeWP); -extern bool_t InitializeBungeeTakeoff(uint8_t BungeeWP); -extern bool_t BungeeTakeoff(void); +extern bool_t bungee_takeoff_start(uint8_t BungeeWP); +extern bool_t bungee_takeoff_run(void); -extern bool_t InitializeSkidLanding(uint8_t AFWP, uint8_t TDWP, float radius); -extern bool_t SkidLanding(void); +extern bool_t skid_landing_start(uint8_t AFWP, uint8_t TDWP, float radius); +extern bool_t skid_landing_run(void); #define PolygonSize 10 #define MaxFloat 1000000000 #define MinFloat -1000000000 -extern bool_t InitializePolygonSurvey(uint8_t FirstWP, uint8_t Size, float Sweep, float Orientation); -extern bool_t PolygonSurvey(void); +extern bool_t osam_poly_survey_start(uint8_t FirstWP, uint8_t Size, float Sweep, float Orientation); +extern bool_t osam_poly_survey_run(void); extern uint16_t PolySurveySweepNum; extern uint16_t PolySurveySweepBackNum; -extern bool_t InitializeVerticalRaster( void ); -extern bool_t VerticalRaster(uint8_t wp1, uint8_t wp2, float radius, float AltSweep); +extern bool_t vertical_raster_start( void ); +extern bool_t vertical_raster_run(uint8_t wp1, uint8_t wp2, float radius, float AltSweep); -extern bool_t FlightLine(uint8_t From_WP, uint8_t To_WP, float radius, float Space_Before, float Space_After); -extern bool_t FlightLineBlock(uint8_t First_WP, uint8_t Last_WP, float radius, float Space_Before, float Space_After); +extern bool_t osam_flight_line_run(uint8_t From_WP, uint8_t To_WP, float radius, float Space_Before, float Space_After); +extern bool_t osam_flight_line_block_run(uint8_t First_WP, uint8_t Last_WP, float radius, float Space_Before, float Space_After); void TranslateAndRotateFromWorld(struct Point2D *p, float Zrot, float transX, float transY); void RotateAndTranslateToWorld(struct Point2D *p, float Zrot, float transX, float transY);