|
From: | hendrixgr . |
Subject: | Re: [Paparazzi-devel] nav_catapult module problem |
Date: | Fri, 25 Mar 2016 22:39:19 +0200 |
Cheers, Felix@dewagter who wrote the catapult module can probably comment on this.Hi,it looks to me like the catapult was always meant to be used with an exception...On Fri, Mar 25, 2016 at 3:37 PM, Gautier Hattenberger <address@hidden> wrote:Hi,
Thanks for reporting this. I don't think this code is used a lot since not everybody have a catapult...
Could you make an issue or even a pull request for this on github ?
Thanks
Gautier
Le 24/03/2016 00:37, hendrixgr . a écrit :
Here is the complete function code:V5.8 stable the throttle get stack at 100% no matter what block i select later on, not to mention that that it does not return FALSE like it should (i may be wrong about that)Hi.I use a modified version of the nav_catapult module because if i use the one included in
which in turn requires an exception like this one:Here are the modifications i did in order to make it work (flight tested), i first commented out those 3 lines
<block name="Holding point">
<exception cond="GetPosAlt() > ground_alt+50" deroute="standby"/>
<set value="0" var="kill_throttle"/>
<call fun="nav_catapult_setup()"/>
<call fun="nav_catapult_run(WP_HOME, WP_BASELEG)"/>
<deroute block="standby"/>
</block>
//NavVerticalAltitudeMode(alt, 0); // vertical mode (follow glideslope)
//NavVerticalAutoThrottleMode(0); // throttle mode
//NavGotoWaypoint(_climb); // horizontal mode (stay on localiser)
and then added the below 2 lines:
nav_catapult_armed = 0;
return FALSE;
bool_t nav_catapult_run(uint8_t _to, uint8_t _climb)
{
//float alt = WaypointAlt(_climb);
nav_catapult_armed = 1;
// No Roll, Climb Pitch, No motor Phase
if (nav_catapult_launch <= nav_catapult_motor_delay * NAV_CATAPULT_HIGHRATE_MODULE_FREQ) {
NavAttitude(RadOfDeg(0));
NavVerticalAutoThrottleMode(nav_catapult_initial_pitch);
NavVerticalThrottleMode(9600 * (0));
nav_catapult_x = stateGetPositionEnu_f()->x;
nav_catapult_y = stateGetPositionEnu_f()->y;
// Store take-off waypoint
WaypointX(_to) = nav_catapult_x;
WaypointY(_to) = nav_catapult_y;
WaypointAlt(_to) = stateGetPositionUtm_f()->alt;
}
// No Roll, Climb Pitch, Full Power
else if (nav_catapult_launch < nav_catapult_heading_delay * NAV_CATAPULT_HIGHRATE_MODULE_FREQ) {
NavAttitude(RadOfDeg(0));
NavVerticalAutoThrottleMode(nav_catapult_initial_pitch);
NavVerticalThrottleMode(9600 * (nav_catapult_initial_throttle));
}
// Normal Climb: Heading Locked by Waypoint Target
else if (nav_catapult_launch == 0xffff) {
//NavVerticalAltitudeMode(alt, 0); // vertical mode (follow glideslope)
//NavVerticalAutoThrottleMode(0); // throttle mode
//NavGotoWaypoint(_climb); // horizontal mode (stay on localiser)
nav_catapult_armed = 0;
return FALSE;
} else {
// Store Heading, move Climb
nav_catapult_launch = 0xffff;
float dir_x = stateGetPositionEnu_f()->x - nav_catapult_x;
float dir_y = stateGetPositionEnu_f()->y - nav_catapult_y;
float dir_L = sqrt(dir_x * dir_x + dir_y * dir_y);
WaypointX(_climb) = nav_catapult_x + (dir_x / dir_L) * 300;
WaypointY(_climb) = nav_catapult_y + (dir_y / dir_L) * 300;
DownlinkSendWp(&(DefaultChannel).trans_tx, &(DefaultDevice).device, _climb);
}
return TRUE;
}
_______________________________________________ Paparazzi-devel mailing list address@hidden https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
_______________________________________________
Paparazzi-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
_______________________________________________
Paparazzi-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/paparazzi-devel
[Prev in Thread] | Current Thread | [Next in Thread] |