mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-09 22:49:53 +08:00
[flightplans] tudelft flightplans (#3220)
* 4 different files * Landing based on height
This commit is contained in:
committed by
GitHub
parent
6f3d9f68c2
commit
78c3ff3401
@@ -1,164 +0,0 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">
|
||||
|
||||
<flight_plan alt="60" ground_alt="0" lat0="52.168595" lon0="4.412444" max_dist_from_home="1100" name="Rotating wing Valkenburg" security_height="2">
|
||||
<header/>
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="12.6" y="-48.7"/>
|
||||
<waypoint name="CLIMB" x="62.6" y="-80.4"/>
|
||||
<waypoint name="trans" x="100." y="100."/>
|
||||
<waypoint name="decel" x="100." y="100."/>
|
||||
<waypoint name="end_trans" x="100." y="100."/>
|
||||
<waypoint name="STDBY" lat="52.1682655" lon="4.4135103"/>
|
||||
<waypoint name="p1" lat="52.1684116" lon="4.4149282"/>
|
||||
<waypoint name="p2" lat="52.1675165" lon="4.4147158"/>
|
||||
<waypoint name="p3" lat="52.1688983" lon="4.4139655"/>
|
||||
<waypoint name="p4" lat="52.1687661" lon="4.4133220"/>
|
||||
<waypoint name="circ" lat="52.1684116" lon="4.4149282"/>
|
||||
<waypoint name="TD" lat="52.1681602" lon="4.4127708"/>
|
||||
<waypoint name="APP" lat="52.1679567" lon="4.4136344"/>
|
||||
<waypoint name="FOLLOW" lat="52.16850964562752" lon="4.413635008734417"/>
|
||||
<waypoint lat="52.169189" lon="4.410820" name="C1"/>
|
||||
<waypoint lat="52.168049" lon="4.406923" name="C2"/>
|
||||
<waypoint lat="52.166515" lon="4.408235" name="C3"/>
|
||||
<waypoint lat="52.163255" lon="4.407668" name="C4"/>
|
||||
<waypoint lat="52.161908" lon="4.410082" name="C5"/>
|
||||
<waypoint lat="52.162641" lon="4.416992" name="C6"/>
|
||||
<waypoint lat="52.164861" lon="4.427268" name="C7"/>
|
||||
<waypoint lat="52.170422" lon="4.427511" name="C8"/>
|
||||
<waypoint lat="52.172276" lon="4.424011" name="C9"/>
|
||||
</waypoints>
|
||||
<sectors>
|
||||
<sector color="red" name="Flyzone">
|
||||
<corner name="C1"/>
|
||||
<corner name="C2"/>
|
||||
<corner name="C3"/>
|
||||
<corner name="C4"/>
|
||||
<corner name="C5"/>
|
||||
<corner name="C6"/>
|
||||
<corner name="C7"/>
|
||||
<corner name="C8"/>
|
||||
<corner name="C9"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
<modules>
|
||||
<!--<module name="follow_me"/>-->
|
||||
</modules>
|
||||
<exceptions>
|
||||
<exception cond="Or(!InsideFlyzone(GetPosX(), GetPosY()), GetPosAlt() @GT GetAltRef() + 1500) @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point'))" deroute="Holding point"/>
|
||||
<exception cond="datalink_time @GT 25 @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point')) @AND !(nav_block == IndexOfBlock('Standby'))" deroute="Standby"/>
|
||||
</exceptions>
|
||||
<blocks>
|
||||
<block name="Wait GPS">
|
||||
<set value="false" var="force_forward"/>
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<while cond="!GpsFixValid() || !state.ned_initialized_i"/>
|
||||
</block>
|
||||
<block name="Geo init">
|
||||
<set value="false" var="force_forward"/>
|
||||
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||
<call_once fun="NavSetAltitudeReferenceHere()"/>
|
||||
</block>
|
||||
<block name="Holding point">
|
||||
<set value="false" var="force_forward"/>
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Start Engine">
|
||||
<set value="false" var="force_forward"/>
|
||||
<call_once fun="NavResurrect()"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="stage_time>10" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Takeoff" strip_button="Takeoff" strip_icon="takeoff.png">
|
||||
<set value="false" var="force_forward"/>
|
||||
<exception cond="GetPosAlt() @LT 4.0" deroute="Standby"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_CLIMB)"/>
|
||||
<attitude pitch="0" roll="0" throttle="0.75" until="stage_time>2" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Standby" strip_button="Standby" strip_icon="home.png">
|
||||
<set value="false" var="force_forward"/>
|
||||
<stay wp="STDBY"/>
|
||||
</block>
|
||||
<block name="stay_p1">
|
||||
<set value="false" var="force_forward"/>
|
||||
<stay wp="p1"/>
|
||||
</block>
|
||||
<block name="go_p2">
|
||||
<set value="false" var="force_forward"/>
|
||||
<call_once fun="nav_set_heading_deg(90)"/>
|
||||
<go wp="p2"/>
|
||||
<deroute block="stay_p1"/>
|
||||
</block>
|
||||
<block name="line_p1_p2">
|
||||
<set value="false" var="force_forward"/>
|
||||
<go from="p1" hmode="route" wp="p2"/>
|
||||
<stay wp="p2"/>
|
||||
</block>
|
||||
<block name="line_trans_fwd">
|
||||
<set value="false" var="force_forward"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_p1)"/>
|
||||
<stay wp="end_trans"/>
|
||||
</block>
|
||||
<block name="line_trans_quad">
|
||||
<set value="false" var="force_forward"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_p1)"/>
|
||||
<stay wp="end_trans"/>
|
||||
</block>
|
||||
<block name="route">
|
||||
<set value="false" var="force_forward"/>
|
||||
<go from="p1" hmode="route" wp="p2"/>
|
||||
<go from="p2" hmode="route" wp="p3"/>
|
||||
<go from="p3" hmode="route" wp="p4"/>
|
||||
<go from="p4" hmode="route" wp="p1"/>
|
||||
<deroute block="route"/>
|
||||
</block>
|
||||
<block name="Oval">
|
||||
<set value="false" var="force_forward"/>
|
||||
<oval p1="p1" p2="p2" radius="100"/>
|
||||
</block>
|
||||
<block name="Circle_CW">
|
||||
<set value="false" var="force_forward"/>
|
||||
<circle radius="100" wp="circ"/>
|
||||
</block>
|
||||
<block name="Circle_CCW">
|
||||
<set value="false" var="force_forward"/>
|
||||
<circle radius="-100" wp="circ"/>
|
||||
</block>
|
||||
<block name="Circle_CW_fwd">
|
||||
<set value="true" var="force_forward"/>
|
||||
<circle radius="100" wp="circ"/>
|
||||
</block>
|
||||
<block name="Circle_CCW_fwd">
|
||||
<set value="true" var="force_forward"/>
|
||||
<circle radius="-100" wp="circ"/>
|
||||
</block>
|
||||
<block name="land here" strip_button="Land Here" strip_icon="land-right.png">
|
||||
<set value="false" var="force_forward"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_TD)"/>
|
||||
</block>
|
||||
<block name="land">
|
||||
<set value="false" var="force_forward"/>
|
||||
<go wp="TD"/>
|
||||
</block>
|
||||
<block name="descend">
|
||||
<set value="false" var="force_forward"/>
|
||||
<exception cond="!(GetPosAlt() @LT 12.0)" deroute="flare"/>
|
||||
<stay climb="-1.0" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="flare">
|
||||
<set value="false" var="force_forward"/>
|
||||
<stay climb="-0.5" vmode="climb" wp="TD"/>
|
||||
<exception cond="!(GetPosAlt() @LT 2.0)" deroute="flare_low"/>
|
||||
</block>
|
||||
<block name="flare_low">
|
||||
<set value="false" var="force_forward"/>
|
||||
<!-- <exception cond="NavDetectGround()" deroute="Holding point"/> -->
|
||||
<exception cond="!nav_is_in_flight()" deroute="landed"/>
|
||||
<!-- <call_once fun="NavStartDetectGround()"/> -->
|
||||
<!-- <stay climb="-0.5" vmode="climb" wp="TD"/> -->
|
||||
</block>
|
||||
<block name="landed">
|
||||
<set value="false" var="force_forward"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -0,0 +1,194 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">
|
||||
<flight_plan alt="70" ground_alt="0" alt="119" lat0="52.9262279" lon0="4.4986184" max_dist_from_home="20500" name="Rotating Wing EHR8" security_height="2">
|
||||
<header/>
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="0" y="0"/>
|
||||
<waypoint name="CLIMB" x="300." y="70"/>
|
||||
<waypoint name="trans" x="300." y="100."/>
|
||||
<waypoint name="decel" x="300." y="110."/>
|
||||
<waypoint name="begin_trans" x="300." y="90."/>
|
||||
<waypoint name="end_trans" x="300." y="120."/>
|
||||
<waypoint name="STDBY" x="60" y="20"/>
|
||||
<waypoint name="p1" x="65" y="75"/>
|
||||
<waypoint name="p2" x="200" y="120"/>
|
||||
<waypoint name="p3" x="250" y="-30"/>
|
||||
<waypoint name="p4" x="120" y="-75"/>
|
||||
<waypoint name="circ" x="160" y="25"/>
|
||||
<waypoint name="TD" x="10" y="-1"/>
|
||||
<waypoint name="APP" x="70" y="-25"/>
|
||||
<waypoint name="FOLLOW" x="300" y="80"/>
|
||||
<!-- EHR8 -->
|
||||
<waypoint name="C1" lat="52.96166667" lon="4.740277778"/>
|
||||
<waypoint name="C2" lat="52.86666667" lon="4.716666667"/>
|
||||
<waypoint name="C3" lat="52.78333333" lon="4.683333333"/>
|
||||
<waypoint name="C4" lat="52.75" lon="4.533333333"/>
|
||||
<waypoint name="C5" lat="52.775" lon="4.433333333"/>
|
||||
<waypoint name="C6" lat="52.81666667" lon="4.35"/>
|
||||
<waypoint name="C7" lat="53.08333333" lon="4.35"/>
|
||||
<waypoint name="C8" lat="53.10277778" lon="4.515555556"/>
|
||||
<waypoint name="C9" lat="53.04972222" lon="4.679444444"/>
|
||||
</waypoints>
|
||||
<sectors>
|
||||
<sector color="red" name="Flyzone">
|
||||
<corner name="C1"/>
|
||||
<corner name="C2"/>
|
||||
<corner name="C3"/>
|
||||
<corner name="C4"/>
|
||||
<corner name="C5"/>
|
||||
<corner name="C6"/>
|
||||
<corner name="C7"/>
|
||||
<corner name="C8"/>
|
||||
<corner name="C9"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
<modules>
|
||||
<module name="follow_me">
|
||||
<define name="FOLLOW_ME_MOVING_WPS" value="WP_p1,WP_p2,WP_p3,WP_p4,WP_STDBY,WP_circ,WP_APP"/>
|
||||
</module>
|
||||
</modules>
|
||||
<exceptions>
|
||||
<exception cond="Or(!InsideFlyzone(GetPosX(), GetPosY()), GetPosHeight() @GT 1500) @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point'))" deroute="Holding point"/>
|
||||
<exception cond="datalink_time @GT 25 @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point')) @AND !(nav_block == IndexOfBlock('Standby'))" deroute="Standby"/>
|
||||
</exceptions>
|
||||
<blocks>
|
||||
<block name="Wait GPS">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<while cond="!GpsFixValid() || !state.ned_initialized_i"/>
|
||||
</block>
|
||||
<block name="Geo init">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||
<call_once fun="NavSetAltitudeReferenceHere()"/>
|
||||
</block>
|
||||
<block name="Holding point">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<set var="stabilization_cmd[COMMAND_THRUST_X]" value="0"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Start Engine" strip_button="Start Engines" strip_icon="on.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavResurrect()"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="stage_time>10" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Takeoff" strip_button="Takeoff" strip_icon="takeoff.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="agl_dist_valid @AND (agl_dist_value @GT 1.0)" deroute="Climb"/>
|
||||
<call_once fun="autopilot_set_in_flight(true)"/><!-- this is a hack to solve INDI not being active fast enough -->
|
||||
|
||||
<call_once fun="NavSetWaypointHere(WP_CLIMB)"/>
|
||||
<attitude pitch="0" roll="0" throttle="0.75" until="stage_time>3" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Climb">
|
||||
<exception cond="GetPosHeight() @GT 20.0" deroute="Standby"/>
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="nav_set_heading_current()"/>
|
||||
<stay climb="nav.climb_vspeed" vmode="climb" wp="CLIMB"/>
|
||||
</block>
|
||||
<block name="Standby" strip_button="Standby" strip_icon="home.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="STDBY" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Approach APP">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay alt="WaypointAlt(WP_APP)" pre_call="approach_moving_target_enable(WP_APP)" wp="APP"/>
|
||||
</block>
|
||||
<!-- <block name="follow_module">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay pre_call="follow_me_set_wp(WP_p1, 0)" wp="p1"/>
|
||||
</block> -->
|
||||
<block name="stay_begin-trans">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="begin_trans" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="line_trans_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_begin_trans)"/>
|
||||
<go wp="end_trans"/>
|
||||
<deroute block="end_transition"/>
|
||||
</block>
|
||||
<block name="end_transition">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="end_trans"/>
|
||||
</block>
|
||||
<block name="transition_CW">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<stay wp="end_trans"/>
|
||||
<exception cond="RotWingAutomationReadyForForward()" deroute="Circle_CW_fwd"/>
|
||||
</block>
|
||||
<block name="transition_CCW">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<stay wp="end_trans"/>
|
||||
<exception cond="RotWingAutomationReadyForForward()" deroute="Circle_CCW_fwd"/>
|
||||
</block>
|
||||
<block name="route">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<go from="p1" hmode="route" wp="p2"/>
|
||||
<go from="p2" hmode="route" wp="p3"/>
|
||||
<go from="p3" hmode="route" wp="p4"/>
|
||||
<go from="p4" hmode="route" wp="p1"/>
|
||||
<deroute block="route"/>
|
||||
</block>
|
||||
<block name="small_route" strip_button="Route" strip_icon="path.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<go wp="p2"/>
|
||||
<go wp="p3"/>
|
||||
<go wp="p4"/>
|
||||
<go wp="p1"/>
|
||||
<deroute block="small_route"/>
|
||||
</block>
|
||||
<block name="Circle_CW_fwd" strip_button="CircleRight" strip_icon="circle-right.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="100" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Circle_CCW_fwd" strip_button="CircleLeft" strip_icon="circle-left.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="-100" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="big_Circle_CW_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="150" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="big_Circle_CCW_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="-150" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Transition_quad">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<go wp="STDBY"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="land here" strip_button="Land Here" strip_icon="land-right.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_TD)"/>
|
||||
</block>
|
||||
<block name="land">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<go wp="TD"/>
|
||||
</block>
|
||||
<block name="descend">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="GetPosHeight() @LT 12.0" deroute="flare"/>
|
||||
<stay climb="-1.0" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="flare">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay climb="-0.5" vmode="climb" wp="TD"/>
|
||||
<!--<exception cond="!(GetPosHeight() @LT 2.0)" deroute="flare_low"/>-->
|
||||
<exception cond="agl_dist_valid @AND (agl_dist_value @LT 0.28)" deroute="flare_low"/>
|
||||
</block>
|
||||
<block name="flare_low">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="NavDetectGround()" deroute="Holding point"/>
|
||||
<exception cond="!nav_is_in_flight()" deroute="Holding point"/>
|
||||
<exception cond="ground_detect()" deroute="Holding point"/>
|
||||
<call_once fun="NavStartDetectGround()"/>
|
||||
<stay climb="-0.5" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="landed">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -9,10 +9,10 @@
|
||||
<waypoint name="begin_trans" x="300." y="90."/>
|
||||
<waypoint name="end_trans" x="300." y="120."/>
|
||||
<waypoint name="STDBY" x="60" y="20"/>
|
||||
<waypoint name="p1" x="120" y="-75"/>
|
||||
<waypoint name="p2" x="65" y="75"/>
|
||||
<waypoint name="p3" x="200" y="120"/>
|
||||
<waypoint name="p4" x="250" y="-30"/>
|
||||
<waypoint name="p1" x="65" y="75"/>
|
||||
<waypoint name="p2" x="200" y="120"/>
|
||||
<waypoint name="p3" x="250" y="-30"/>
|
||||
<waypoint name="p4" x="120" y="-75"/>
|
||||
<waypoint name="circ" x="160" y="25"/>
|
||||
<waypoint name="TD" x="10" y="-1"/>
|
||||
<waypoint name="APP" x="70" y="-25"/>
|
||||
@@ -42,12 +42,12 @@
|
||||
</sector>
|
||||
</sectors>
|
||||
<modules>
|
||||
<!-- <module name="follow_me">
|
||||
<define name="FOLLOW_ME_MOVING_WPS" value="WP_p1"/>
|
||||
<!--<module name="follow_me">
|
||||
<define name="FOLLOW_ME_MOVING_WPS" value="WP_p1,WP_p2,WP_p3,WP_p4,WP_STDBY,WP_circ,WP_APP"/>
|
||||
</module> -->
|
||||
</modules>
|
||||
<exceptions>
|
||||
<exception cond="Or(!InsideFlyzone(GetPosX(), GetPosY()), GetPosAlt() @GT GetAltRef() + 1500) @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point'))" deroute="Holding point"/>
|
||||
<exception cond="Or(!InsideFlyzone(GetPosX(), GetPosY()), GetPosHeight() @GT 1500) @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point'))" deroute="Holding point"/>
|
||||
<exception cond="datalink_time @GT 25 @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point')) @AND !(nav_block == IndexOfBlock('Standby'))" deroute="Standby"/>
|
||||
</exceptions>
|
||||
<blocks>
|
||||
@@ -81,7 +81,7 @@
|
||||
<attitude pitch="0" roll="0" throttle="0.75" until="stage_time>3" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Climb">
|
||||
<exception cond="GetPosAlt() @GT 20.0" deroute="Standby"/>
|
||||
<exception cond="GetPosHeight() @GT 20.0" deroute="Standby"/>
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="nav_set_heading_current()"/>
|
||||
<stay climb="nav.climb_vspeed" vmode="climb" wp="CLIMB"/>
|
||||
@@ -169,13 +169,13 @@
|
||||
</block>
|
||||
<block name="descend">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="GetPosAlt() @LT 12.0" deroute="flare"/>
|
||||
<exception cond="GetPosHeight() @LT 12.0" deroute="flare"/>
|
||||
<stay climb="-1.0" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="flare">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay climb="-0.5" vmode="climb" wp="TD"/>
|
||||
<!--<exception cond="!(GetPosAlt() @LT 2.0)" deroute="flare_low"/>-->
|
||||
<!--<exception cond="!(GetPosHeight() @LT 2.0)" deroute="flare_low"/>-->
|
||||
<exception cond="agl_dist_valid @AND (agl_dist_value @LT 0.28)" deroute="flare_low"/>
|
||||
</block>
|
||||
<block name="flare_low">
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">
|
||||
<flight_plan alt="70" ground_alt="0" lat0="53.3988083" lon0="5.2487480" max_dist_from_home="2000" name="Rotating Wing Terschelling" security_height="2">
|
||||
<header/>
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="0" y="0"/>
|
||||
<waypoint name="CLIMB" x="300." y="70"/>
|
||||
<waypoint name="trans" x="300." y="100."/>
|
||||
<waypoint name="decel" x="300." y="110."/>
|
||||
<waypoint name="begin_trans" x="300." y="90."/>
|
||||
<waypoint name="end_trans" x="300." y="120."/>
|
||||
<waypoint name="STDBY" x="-60" y="5"/>
|
||||
<waypoint name="p1" x="-65" y="80"/>
|
||||
<waypoint name="p2" x="-120" y="480"/>
|
||||
<waypoint name="p3" x="-400" y="400"/>
|
||||
<waypoint name="p4" x="-150" y="70"/>
|
||||
<waypoint name="circ" x="160" y="25"/>
|
||||
<waypoint name="TD" x="10" y="-1"/>
|
||||
<waypoint name="APP" x="-200" y="150"/>
|
||||
<waypoint name="FOLLOW" x="300" y="80"/>
|
||||
<!-- Terschelling -->
|
||||
<waypoint lat="53.403590" lon="5.214102" name="C1"/>
|
||||
<waypoint lat="53.399129" lon="5.219031" name="C2"/>
|
||||
<waypoint lat="53.391752" lon="5.234877" name="C3"/>
|
||||
<waypoint lat="53.399786" lon="5.273960" name="C4"/>
|
||||
<waypoint lat="53.416200" lon="5.265441" name="C5"/>
|
||||
<waypoint lat="53.424575" lon="5.252654" name="C6"/>
|
||||
<waypoint lat="53.422246" lon="5.233265" name="C7"/>
|
||||
<waypoint lat="53.418859" lon="5.216361" name="C8"/>
|
||||
<waypoint lat="53.411762" lon="5.208801" name="C9"/>
|
||||
</waypoints>
|
||||
<sectors>
|
||||
<sector color="red" name="Flyzone">
|
||||
<corner name="C1"/>
|
||||
<corner name="C2"/>
|
||||
<corner name="C3"/>
|
||||
<corner name="C4"/>
|
||||
<corner name="C5"/>
|
||||
<corner name="C6"/>
|
||||
<corner name="C7"/>
|
||||
<corner name="C8"/>
|
||||
<corner name="C9"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
<modules>
|
||||
<!--<module name="follow_me">
|
||||
<define name="FOLLOW_ME_MOVING_WPS" value="WP_p1,WP_p2,WP_p3,WP_p4,WP_STDBY,WP_circ,WP_APP"/>
|
||||
</module> -->
|
||||
</modules>
|
||||
<exceptions>
|
||||
<exception cond="Or(!InsideFlyzone(GetPosX(), GetPosY()), GetPosHeight() @GT 1500) @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point'))" deroute="Holding point"/>
|
||||
<exception cond="datalink_time @GT 25 @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point')) @AND !(nav_block == IndexOfBlock('Standby'))" deroute="Standby"/>
|
||||
</exceptions>
|
||||
<blocks>
|
||||
<block name="Wait GPS">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<while cond="!GpsFixValid() || !state.ned_initialized_i"/>
|
||||
</block>
|
||||
<block name="Geo init">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||
<call_once fun="NavSetAltitudeReferenceHere()"/>
|
||||
</block>
|
||||
<block name="Holding point">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<set var="stabilization_cmd[COMMAND_THRUST_X]" value="0"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Start Engine" strip_button="Start Engines" strip_icon="on.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavResurrect()"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="stage_time>10" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Takeoff" strip_button="Takeoff" strip_icon="takeoff.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="agl_dist_valid @AND (agl_dist_value @GT 1.0)" deroute="Climb"/>
|
||||
<call_once fun="autopilot_set_in_flight(true)"/><!-- this is a hack to solve INDI not being active fast enough -->
|
||||
|
||||
<call_once fun="NavSetWaypointHere(WP_CLIMB)"/>
|
||||
<attitude pitch="0" roll="0" throttle="0.75" until="stage_time>3" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Climb">
|
||||
<exception cond="GetPosHeight() @GT 20.0" deroute="Standby"/>
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="nav_set_heading_current()"/>
|
||||
<stay climb="nav.climb_vspeed" vmode="climb" wp="CLIMB"/>
|
||||
</block>
|
||||
<block name="Standby" strip_button="Standby" strip_icon="home.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="STDBY" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Approach APP">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay alt="WaypointAlt(WP_APP)" pre_call="approach_moving_target_enable(WP_APP)" wp="APP"/>
|
||||
</block>
|
||||
<!-- <block name="follow_module">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay pre_call="follow_me_set_wp(WP_p1, 0)" wp="p1"/>
|
||||
</block> -->
|
||||
<block name="stay_begin-trans">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="begin_trans" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="line_trans_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_begin_trans)"/>
|
||||
<go wp="end_trans"/>
|
||||
<deroute block="end_transition"/>
|
||||
</block>
|
||||
<block name="end_transition">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="end_trans"/>
|
||||
</block>
|
||||
<block name="transition_CW">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<stay wp="end_trans"/>
|
||||
<exception cond="RotWingAutomationReadyForForward()" deroute="Circle_CW_fwd"/>
|
||||
</block>
|
||||
<block name="transition_CCW">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<stay wp="end_trans"/>
|
||||
<exception cond="RotWingAutomationReadyForForward()" deroute="Circle_CCW_fwd"/>
|
||||
</block>
|
||||
<block name="route">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<go from="p1" hmode="route" wp="p2"/>
|
||||
<go from="p2" hmode="route" wp="p3"/>
|
||||
<go from="p3" hmode="route" wp="p4"/>
|
||||
<go from="p4" hmode="route" wp="p1"/>
|
||||
<deroute block="route"/>
|
||||
</block>
|
||||
<block name="small_route" strip_button="Route" strip_icon="path.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<go wp="p2"/>
|
||||
<go wp="p3"/>
|
||||
<go wp="p4"/>
|
||||
<go wp="p1"/>
|
||||
<deroute block="small_route"/>
|
||||
</block>
|
||||
<block name="Circle_CW_fwd" strip_button="CircleRight" strip_icon="circle-right.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="100" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Circle_CCW_fwd" strip_button="CircleLeft" strip_icon="circle-left.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="-100" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="big_Circle_CW_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="150" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="big_Circle_CCW_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="-150" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Transition_quad">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<go wp="STDBY"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="land here" strip_button="Land Here" strip_icon="land-right.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_TD)"/>
|
||||
</block>
|
||||
<block name="land">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<go wp="TD"/>
|
||||
</block>
|
||||
<block name="descend">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="GetPosHeight() @LT 12.0" deroute="flare"/>
|
||||
<stay climb="-1.0" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="flare">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay climb="-0.5" vmode="climb" wp="TD"/>
|
||||
<!--<exception cond="!(GetPosHeight() @LT 2.0)" deroute="flare_low"/>-->
|
||||
<exception cond="agl_dist_valid @AND (agl_dist_value @LT 0.28)" deroute="flare_low"/>
|
||||
</block>
|
||||
<block name="flare_low">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="NavDetectGround()" deroute="Holding point"/>
|
||||
<exception cond="!nav_is_in_flight()" deroute="Holding point"/>
|
||||
<exception cond="ground_detect()" deroute="Holding point"/>
|
||||
<call_once fun="NavStartDetectGround()"/>
|
||||
<stay climb="-0.5" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="landed">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
@@ -0,0 +1,186 @@
|
||||
<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">
|
||||
<flight_plan alt="180" ground_alt="60" lat0="52.3931434" lon0="5.9205099" max_dist_from_home="5000" name="Rotating Wing 't Harde" security_height="2">
|
||||
<header/>
|
||||
<waypoints>
|
||||
<waypoint name="HOME" x="0" y="0"/>
|
||||
<waypoint name="CLIMB" x="300." y="70"/>
|
||||
<waypoint name="trans" x="300." y="100."/>
|
||||
<waypoint name="decel" x="300." y="110."/>
|
||||
<waypoint name="begin_trans" x="300." y="90."/>
|
||||
<waypoint name="end_trans" x="300." y="120."/>
|
||||
<waypoint name="STDBY" x="60" y="20"/>
|
||||
<waypoint name="p1" x="65" y="75"/>
|
||||
<waypoint name="p2" x="200" y="120"/>
|
||||
<waypoint name="p3" x="250" y="-30"/>
|
||||
<waypoint name="p4" x="120" y="-75"/>
|
||||
<waypoint name="circ" x="160" y="25"/>
|
||||
<waypoint name="TD" x="10" y="-1"/>
|
||||
<waypoint name="APP" x="70" y="-25"/>
|
||||
<waypoint name="FOLLOW" x="300" y="80"/>
|
||||
<!-- t'Harde -->
|
||||
<waypoint lat="52.4034734" lon="5.9067552" name="C1"/>
|
||||
<waypoint lat="52.3878517" lon="5.9212118" name="C2"/>
|
||||
<waypoint lat="52.4054122" lon="5.9581765" name="C3"/>
|
||||
<waypoint lat="52.4179727" lon="6.0083051" name="C4"/>
|
||||
<waypoint lat="52.4420912" lon="5.9871178" name="C5"/>
|
||||
</waypoints>
|
||||
<sectors>
|
||||
<sector color="red" name="Flyzone">
|
||||
<corner name="C1"/>
|
||||
<corner name="C2"/>
|
||||
<corner name="C3"/>
|
||||
<corner name="C4"/>
|
||||
<corner name="C5"/>
|
||||
</sector>
|
||||
</sectors>
|
||||
<modules>
|
||||
<!--<module name="follow_me">
|
||||
<define name="FOLLOW_ME_MOVING_WPS" value="WP_p1,WP_p2,WP_p3,WP_p4,WP_STDBY,WP_circ,WP_APP"/>
|
||||
</module> -->
|
||||
</modules>
|
||||
<exceptions>
|
||||
<exception cond="Or(!InsideFlyzone(GetPosX(), GetPosY()), GetPosHeight() @GT 1500) @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point'))" deroute="Holding point"/>
|
||||
<exception cond="datalink_time @GT 25 @AND !(nav_block == IndexOfBlock('Wait GPS')) @AND !(nav_block == IndexOfBlock('Geo init')) @AND !(nav_block == IndexOfBlock('Holding point')) @AND !(nav_block == IndexOfBlock('Standby'))" deroute="Standby"/>
|
||||
</exceptions>
|
||||
<blocks>
|
||||
<block name="Wait GPS">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<while cond="!GpsFixValid() || !state.ned_initialized_i"/>
|
||||
</block>
|
||||
<block name="Geo init">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<while cond="LessThan(NavBlockTime(), 10)"/>
|
||||
<call_once fun="NavSetAltitudeReferenceHere()"/>
|
||||
</block>
|
||||
<block name="Holding point">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavKillThrottle()"/>
|
||||
<set var="stabilization_cmd[COMMAND_THRUST_X]" value="0"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Start Engine" strip_button="Start Engines" strip_icon="on.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavResurrect()"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="stage_time>10" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Takeoff" strip_button="Takeoff" strip_icon="takeoff.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="agl_dist_valid @AND (agl_dist_value @GT 1.0)" deroute="Climb"/>
|
||||
<call_once fun="autopilot_set_in_flight(true)"/><!-- this is a hack to solve INDI not being active fast enough -->
|
||||
|
||||
<call_once fun="NavSetWaypointHere(WP_CLIMB)"/>
|
||||
<attitude pitch="0" roll="0" throttle="0.75" until="stage_time>3" vmode="throttle"/>
|
||||
</block>
|
||||
<block name="Climb">
|
||||
<exception cond="GetPosHeight() @GT 20.0" deroute="Standby"/>
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="nav_set_heading_current()"/>
|
||||
<stay climb="nav.climb_vspeed" vmode="climb" wp="CLIMB"/>
|
||||
</block>
|
||||
<block name="Standby" strip_button="Standby" strip_icon="home.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="STDBY" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Approach APP">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay alt="WaypointAlt(WP_APP)" pre_call="approach_moving_target_enable(WP_APP)" wp="APP"/>
|
||||
</block>
|
||||
<!-- <block name="follow_module">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay pre_call="follow_me_set_wp(WP_p1, 0)" wp="p1"/>
|
||||
</block> -->
|
||||
<block name="stay_begin-trans">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="begin_trans" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="line_trans_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_begin_trans)"/>
|
||||
<go wp="end_trans"/>
|
||||
<deroute block="end_transition"/>
|
||||
</block>
|
||||
<block name="end_transition">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay wp="end_trans"/>
|
||||
</block>
|
||||
<block name="transition_CW">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<stay wp="end_trans"/>
|
||||
<exception cond="RotWingAutomationReadyForForward()" deroute="Circle_CW_fwd"/>
|
||||
</block>
|
||||
<block name="transition_CCW">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<stay wp="end_trans"/>
|
||||
<exception cond="RotWingAutomationReadyForForward()" deroute="Circle_CCW_fwd"/>
|
||||
</block>
|
||||
<block name="route">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<go from="p1" hmode="route" wp="p2"/>
|
||||
<go from="p2" hmode="route" wp="p3"/>
|
||||
<go from="p3" hmode="route" wp="p4"/>
|
||||
<go from="p4" hmode="route" wp="p1"/>
|
||||
<deroute block="route"/>
|
||||
</block>
|
||||
<block name="small_route" strip_button="Route" strip_icon="path.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<go wp="p2"/>
|
||||
<go wp="p3"/>
|
||||
<go wp="p4"/>
|
||||
<go wp="p1"/>
|
||||
<deroute block="small_route"/>
|
||||
</block>
|
||||
<block name="Circle_CW_fwd" strip_button="CircleRight" strip_icon="circle-right.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="100" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Circle_CCW_fwd" strip_button="CircleLeft" strip_icon="circle-left.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="-100" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="big_Circle_CW_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="150" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="big_Circle_CCW_fwd">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_EFFICIENT)"/>
|
||||
<circle radius="-150" wp="circ" pre_call="rot_wing_vis_transition(WP_trans, WP_decel, WP_end_trans)"/>
|
||||
</block>
|
||||
<block name="Transition_quad">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HYBRID)"/>
|
||||
<go wp="STDBY"/>
|
||||
<deroute block="Standby"/>
|
||||
</block>
|
||||
<block name="land here" strip_button="Land Here" strip_icon="land-right.png">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<call_once fun="NavSetWaypointHere(WP_TD)"/>
|
||||
</block>
|
||||
<block name="land">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<go wp="TD"/>
|
||||
</block>
|
||||
<block name="descend">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="GetPosHeight() @LT 12.0" deroute="flare"/>
|
||||
<stay climb="-1.0" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="flare">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<stay climb="-0.5" vmode="climb" wp="TD"/>
|
||||
<!--<exception cond="!(GetPosHeight() @LT 2.0)" deroute="flare_low"/>-->
|
||||
<exception cond="agl_dist_valid @AND (agl_dist_value @LT 0.28)" deroute="flare_low"/>
|
||||
</block>
|
||||
<block name="flare_low">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<exception cond="NavDetectGround()" deroute="Holding point"/>
|
||||
<exception cond="!nav_is_in_flight()" deroute="Holding point"/>
|
||||
<exception cond="ground_detect()" deroute="Holding point"/>
|
||||
<call_once fun="NavStartDetectGround()"/>
|
||||
<stay climb="-0.5" vmode="climb" wp="TD"/>
|
||||
</block>
|
||||
<block name="landed">
|
||||
<call_once fun="rotwing_request_configuration(ROTWING_CONFIGURATION_HOVER)"/>
|
||||
<attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
|
||||
</block>
|
||||
</blocks>
|
||||
</flight_plan>
|
||||
Reference in New Issue
Block a user