[modules] nav_catapult: set delay in seconds

untested, but should close #188
This commit is contained in:
Felix Ruess
2013-02-08 20:51:43 +01:00
parent bd6d79e3de
commit ac4470c4d0
7 changed files with 52 additions and 40 deletions
+4 -4
View File
@@ -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>
+3 -3
View File
@@ -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>
+4 -4
View File
@@ -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>
+15 -1
View File
@@ -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"/>
+5 -5
View File
@@ -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>
+19 -21
View File
@@ -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;
}
+2 -2
View File
@@ -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;