mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-25 23:46:04 +08:00
[modules] nav_catapult: set delay in seconds
untested, but should close #188
This commit is contained in:
@@ -115,10 +115,10 @@
|
||||
</section>
|
||||
|
||||
<section name="CATAPULT" prefix="NAV_CATAPULT_" >
|
||||
<define name="MOTOR_DELAY" value="45" />
|
||||
<define name="HEADING_DELAY" value="(60*3)" />
|
||||
<define name="ACCELERATION_THRESHOLD" value="1.75" />
|
||||
<define name="INITIAL_PITCH" value="(15.0/57.0)" />
|
||||
<define name="MOTOR_DELAY" value="0.75" unit="seconds"/>
|
||||
<define name="HEADING_DELAY" value="3.0" unit="seconds"/>
|
||||
<define name="ACCELERATION_THRESHOLD" value="1.75"/>
|
||||
<define name="INITIAL_PITCH" value="15" unit="deg"/>
|
||||
<define name="INITIAL_THROTTLE" value="1.0" />
|
||||
</section>
|
||||
|
||||
|
||||
@@ -172,10 +172,10 @@
|
||||
</section>
|
||||
|
||||
<section name="CATAPULT" prefix="NAV_CATAPULT_">
|
||||
<define name="MOTOR_DELAY" value="45"/>
|
||||
<define name="HEADING_DELAY" value="(60*3)"/>
|
||||
<define name="MOTOR_DELAY" value="0.75" unit="seconds"/>
|
||||
<define name="HEADING_DELAY" value="3.0" unit="seconds"/>
|
||||
<define name="ACCELERATION_THRESHOLD" value="1.75"/>
|
||||
<define name="INITIAL_PITCH" value="(15.0/57.0)"/>
|
||||
<define name="INITIAL_PITCH" value="15.0" unit="deg"/>
|
||||
<define name="INITIAL_THROTTLE" value="1.0"/>
|
||||
</section>
|
||||
|
||||
|
||||
@@ -116,10 +116,10 @@
|
||||
</section>
|
||||
|
||||
<section name="CATAPULT" prefix="NAV_CATAPULT_" >
|
||||
<define name="MOTOR_DELAY" value="45" />
|
||||
<define name="HEADING_DELAY" value="(60*3)" />
|
||||
<define name="ACCELERATION_THRESHOLD" value="1.75" />
|
||||
<define name="INITIAL_PITCH" value="(15.0/57.0)" />
|
||||
<define name="MOTOR_DELAY" value="0.75" unit="seconds"/>
|
||||
<define name="HEADING_DELAY" value="3.0" unit="seconds"/>
|
||||
<define name="ACCELERATION_THRESHOLD" value="1.75"/>
|
||||
<define name="INITIAL_PITCH" value="15" unit="deg"/>
|
||||
<define name="INITIAL_THROTTLE" value="1.0" />
|
||||
</section>
|
||||
|
||||
|
||||
@@ -2,7 +2,21 @@
|
||||
|
||||
<module name="nav">
|
||||
<doc>
|
||||
<description>Catapult</description>
|
||||
<description>
|
||||
Catapult.
|
||||
A catapult launch timing system.
|
||||
- Phase 1: Zero Roll, Climb Pitch, Zero Throttle
|
||||
- Phase 2: After detecting the Start Acceleration\n
|
||||
Zero Roll, Climb Pitch, Full Throttle
|
||||
- Phase 3: After getting the GPS heading (time based)\n
|
||||
Place climb 300m in front of us\n
|
||||
GoTo(climb)\n
|
||||
</description>
|
||||
<define name="NAV_CATAPULT_ACCELERATION_THRESHOLD" value="1.5" description="acceleration threshold in multiples of g"/>
|
||||
<define name="NAV_CATAPULT_MOTOR_DELAY" value="0.75" description="delay until motor is turned on in seconds"/>
|
||||
<define name="NAV_CATAPULT_HEADING_DELAY" value="3.0" description="delay until heading is unlocked in seconds"/>
|
||||
<define name="NAV_CATAPULT_INITAL_PITCH" value="0.175" description="inital pitch in radians (default 10deg)"/>
|
||||
<define name="NAV_CATAPULT_INITIAL_THROTTLE" value="1.0" description="initial throttle (0.0 to 1.0)"/>
|
||||
</doc>
|
||||
<header>
|
||||
<file name="nav_catapult.h"/>
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
<settings>
|
||||
<dl_settings name="control">
|
||||
<dl_settings name="catapult">
|
||||
<dl_setting max="250" min="1" step="1" module="nav/nav_catapult" var="nav_catapult_motor_delay" shortname="Motor Delay" param="NAV_CATAPULT_MOTOR_DELAY" unit="step" />
|
||||
<dl_setting max="3.0" min="-3.0" step="0.1" var="nav_catapult_acceleration_threshold" shortname="G-Threshold" param="NAV_CATAPULT_ACCELERATION_THRESHOLD" unit="g" />
|
||||
<dl_setting max="600" min="15" step="15" var="nav_catapult_heading_delay" shortname="Heading-Delay" param="NAV_CATAPULT_HEADING_DELAY" unit="step" />
|
||||
<dl_setting max="1.0" min="-0.5" step="0.01" var="nav_catapult_initial_pitch" shortname="TO Pitch" param="NAV_CATAPULT_INITIAL_PITCH" unit="rad" />
|
||||
<dl_setting max="1.0" min="0.0" step="0.01" var="nav_catapult_initial_throttle" shortname="TO Gas" param="NAV_CATAPULT_INITIAL_THROTTLE" unit="percent" />
|
||||
<dl_setting max="5.0" min="0.05" step="0.05" module="nav/nav_catapult" var="nav_catapult_motor_delay" shortname="Motor Delay" param="NAV_CATAPULT_MOTOR_DELAY" unit="seconds"/>
|
||||
<dl_setting max="3.0" min="-3.0" step="0.1" var="nav_catapult_acceleration_threshold" shortname="G-Threshold" param="NAV_CATAPULT_ACCELERATION_THRESHOLD" unit="g"/>
|
||||
<dl_setting max="10." min="0.25" step="0.05" var="nav_catapult_heading_delay" shortname="Heading-Delay" param="NAV_CATAPULT_HEADING_DELAY" unit="seconds"/>
|
||||
<dl_setting max="40" min="-20" step="0.5" var="nav_catapult_initial_pitch" shortname="TO Pitch" param="NAV_CATAPULT_INITIAL_PITCH" unit="rad" alt_unit="deg"/>
|
||||
<dl_setting max="1.0" min="0.0" step="0.01" var="nav_catapult_initial_throttle" shortname="TO Gas" param="NAV_CATAPULT_INITIAL_THROTTLE" unit="percent"/>
|
||||
</dl_settings>
|
||||
</dl_settings>
|
||||
</settings>
|
||||
|
||||
@@ -26,13 +26,13 @@
|
||||
* @brief catapult launch timing system
|
||||
*
|
||||
*
|
||||
* Phase 1: -Zero Roll, Climb Pitch, Zero Throttle
|
||||
* Phase 2: After Feeling the Start Acceleration
|
||||
* -Zero Roll, Climb Pitch, Full Throttle
|
||||
* Phase 3: After feeling the GPS heading (time based)
|
||||
* -Place climb 300m in front of us
|
||||
* -GoTo(climb)
|
||||
*/
|
||||
* - Phase 1: Zero Roll, Climb Pitch, Zero Throttle
|
||||
* - Phase 2: After detecting the Start Acceleration\n
|
||||
* Zero Roll, Climb Pitch, Full Throttle
|
||||
* - Phase 3: After getting the GPS heading (time based)\n
|
||||
* Place climb 300m in front of us\n
|
||||
* GoTo(climb)
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -60,22 +60,22 @@ static bool_t nav_catapult_armed = FALSE;
|
||||
static uint16_t nav_catapult_launch = 0;
|
||||
|
||||
#ifndef NAV_CATAPULT_ACCELERATION_THRESHOLD
|
||||
#define NAV_CATAPULT_ACCELERATION_THRESHOLD 1.5;
|
||||
#define NAV_CATAPULT_ACCELERATION_THRESHOLD 1.5
|
||||
#endif
|
||||
|
||||
float nav_catapult_acceleration_threshold = NAV_CATAPULT_ACCELERATION_THRESHOLD;
|
||||
|
||||
#ifndef NAV_CATAPULT_MOTOR_DELAY
|
||||
#define NAV_CATAPULT_MOTOR_DELAY 45 // Main Control Loops
|
||||
#define NAV_CATAPULT_MOTOR_DELAY 0.75 // seconds
|
||||
#endif
|
||||
|
||||
int nav_catapult_motor_delay = NAV_CATAPULT_MOTOR_DELAY;
|
||||
float nav_catapult_motor_delay = NAV_CATAPULT_MOTOR_DELAY;
|
||||
|
||||
#ifndef NAV_CATAPULT_HEADING_DELAY
|
||||
#define NAV_CATAPULT_HEADING_DELAY 180
|
||||
#define NAV_CATAPULT_HEADING_DELAY 3.0 // seconds
|
||||
#endif
|
||||
|
||||
int nav_catapult_heading_delay = NAV_CATAPULT_HEADING_DELAY;
|
||||
float nav_catapult_heading_delay = NAV_CATAPULT_HEADING_DELAY;
|
||||
|
||||
#ifndef NAV_CATAPULT_INITIAL_PITCH
|
||||
#define NAV_CATAPULT_INITIAL_PITCH RadOfDeg(10)
|
||||
@@ -102,8 +102,9 @@ void nav_catapult_highrate_module(void)
|
||||
// Only run when
|
||||
if (nav_catapult_armed)
|
||||
{
|
||||
if (nav_catapult_launch < nav_catapult_heading_delay)
|
||||
nav_catapult_launch ++;
|
||||
if (nav_catapult_launch < nav_catapult_heading_delay * NAV_CATAPULT_HIGHRATE_MODULE_FREQ) {
|
||||
nav_catapult_launch++;
|
||||
}
|
||||
|
||||
// Launch detection Filter
|
||||
if (nav_catapult_launch < 5)
|
||||
@@ -121,7 +122,7 @@ void nav_catapult_highrate_module(void)
|
||||
}
|
||||
}
|
||||
// Launch was detected: Motor Delay Counter
|
||||
else if (nav_catapult_launch == nav_catapult_motor_delay)
|
||||
else if (nav_catapult_launch >= nav_catapult_motor_delay * NAV_CATAPULT_HIGHRATE_MODULE_FREQ)
|
||||
{
|
||||
// Turn on Motor
|
||||
NavVerticalThrottleMode(9600*(nav_catapult_initial_throttle));
|
||||
@@ -155,14 +156,13 @@ bool_t nav_catapult(uint8_t _to, uint8_t _climb)
|
||||
nav_catapult_armed = 1;
|
||||
|
||||
// No Roll, Climb Pitch, No motor Phase
|
||||
if (nav_catapult_launch <= nav_catapult_motor_delay)
|
||||
if (nav_catapult_launch <= nav_catapult_motor_delay * NAV_CATAPULT_HIGHRATE_MODULE_FREQ)
|
||||
{
|
||||
NavAttitude(RadOfDeg(0));
|
||||
NavVerticalAutoThrottleMode(nav_catapult_initial_pitch);
|
||||
NavVerticalThrottleMode(9600*(0));
|
||||
|
||||
|
||||
|
||||
// Store take-off waypoint
|
||||
WaypointX(_to) = GetPosX();
|
||||
WaypointY(_to) = GetPosY();
|
||||
@@ -173,7 +173,7 @@ bool_t nav_catapult(uint8_t _to, uint8_t _climb)
|
||||
|
||||
}
|
||||
// No Roll, Climb Pitch, Full Power
|
||||
else if (nav_catapult_launch < nav_catapult_heading_delay)
|
||||
else if (nav_catapult_launch < nav_catapult_heading_delay * NAV_CATAPULT_HIGHRATE_MODULE_FREQ)
|
||||
{
|
||||
NavAttitude(RadOfDeg(0));
|
||||
NavVerticalAutoThrottleMode(nav_catapult_initial_pitch);
|
||||
@@ -205,7 +205,7 @@ bool_t nav_catapult(uint8_t _to, uint8_t _climb)
|
||||
|
||||
return TRUE;
|
||||
|
||||
} // end of gls()
|
||||
}
|
||||
|
||||
bool_t nav_select_touch_down(uint8_t _td)
|
||||
{
|
||||
@@ -215,5 +215,3 @@ bool_t nav_select_touch_down(uint8_t _td)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -32,9 +32,9 @@
|
||||
#include "std.h"
|
||||
#include "paparazzi.h"
|
||||
|
||||
extern int nav_catapult_motor_delay;
|
||||
extern float nav_catapult_motor_delay;
|
||||
extern float nav_catapult_acceleration_threshold;
|
||||
extern int nav_catapult_heading_delay;
|
||||
extern float nav_catapult_heading_delay;
|
||||
extern float nav_catapult_initial_pitch;
|
||||
extern float nav_catapult_initial_throttle;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user