Explorer/PPRZ

From PaparazziUAV
Jump to navigation Jump to search

Explorer

Explorer/PPRZ/Configuration
Explorer/PPRZ/Tunning

airframe file:

<!DOCTYPE airframe SYSTEM "../../airframe.dtd">

<airframe name="Quadricopter XP">

 <description>
   * Autopilot:   Tawaki/ Apogee
   * Actuators:   4 in 1 Holybro BLHELI ESC
   * Telemetry:   XBee and Wifibroadcast (compagnon board)
   * GPS:         ublox M8P (optional DGPS) or Datalink
   * RC:          FrSky XM+ or Datalink

   IMU Apogee :    
     - MPU6050 (acc+gyro), 
     - MPU9150 (acc+gyro+mag) = MPU6050 + AK8975

   MAG Apogee (AK8975 on I2C1) or on external GPS board (LIS3MDL on I2C1) or Datalink

   BARO Apogee (MPL3115A2 on I2C1)

 </description>

 <firmware name="rotorcraft">

   <configure name="PERIODIC_FREQUENCY" value="1000"/>
   <configure name="AHRS_PROPAGATE_FREQUENCY" value="$(PERIODIC_FREQUENCY)"/>
   <configure name="KILL_AS_FAILSAFE" value="1"/>
 
   <!-- OPTION 1A & 1B -->
   <target name="ap" board="apogee_1.0_chibios"/>
   <!-- OPTION 1C -->
   <!--
   <target name="nps" board="pc"/>
   -->

 </firmware>

 <!-- apogee_1.0_chibios -->
 <!-- OPTION 1A -->
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_board_apogee_mpu9150.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_imu_apogee_mpu9150.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_common_target_flying.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_target_apogee.xml"/>
 <!-- OPTION 1B -->
 <!--
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_board_apogee_lis3mdl.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_imu_apogee_lis3mdl.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_common_target_flying.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_target_apogee.xml"/>
 -->
 <!-- OPTION 1C -->
 <!--
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_board_tawaki.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_board_apogee_mpu9150.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_board_apogee_lis3mdl.xml"/> 
 -->

 <!-- tawaki_1.0 & apogee_1.0_chibios -->
 <!-- OPTION 2A -->
 <!-- include href="conf/airframes/ENAC/quadrotor/xp/xp_option_indoor.xml"/-->
 <!-- OPTION 2B -->
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_outdoor.xml"/>

 <!-- OPTION 2C -->
 <!--
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_option_target_nps.xml"/>
 -->

 <!-- All targets -->
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_common_stab_rate.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_common_stab_attitude.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_common_guidance.xml"/>
 <include href="conf/airframes/ENAC/quadrotor/xp/xp_common_modules.xml"/>

</airframe>

flght_plan file:

<!DOCTYPE flight_plan SYSTEM "../flight_plan.dtd">

<flight_plan alt="148" ground_alt="146" lat0="43.5640917" lon0="1.4829201" max_dist_from_home="20" name="Rotorcraft Optitrack (ENAC)" security_height="0.3">
  <header>

</header>
  <waypoints>
    <waypoint name="HOME" x="0.0" y="0.0"/>
    <waypoint name="GOAL" x="2.0" y="2.0"/>
    <waypoint name="STDBY" x="-0.7" y="-0.8"/>
    <waypoint name="TD" x="0.8" y="-1.7"/>
    <waypoint name="S1" x="2.1" y="2.8"/>
    <waypoint name="S2" x="2.0" y="-3.0"/>
    <waypoint name="S3" x="-2.1" y="-3.1"/>
    <waypoint name="S4" x="-2.2" y="2.8"/>
    <waypoint name="_N1" x="4.5" y="5.2"/>
    <waypoint name="_N2" x="4.5" y="-5.2"/>
    <waypoint name="_N3" x="-4.5" y="-5.2"/>
    <waypoint name="_N4" x="-4.5" y="5.2"/>
  </waypoints>
  <sectors>
    <sector color="red" name="Net">
      <corner name="_N1"/>
      <corner name="_N2"/>
      <corner name="_N3"/>
      <corner name="_N4"/>
    </sector>
    <sector color="green" name="Survey" type="dynamic">
      <corner name="S1"/>
      <corner name="S2"/>
      <corner name="S3"/>
      <corner name="S4"/>
    </sector>
  </sectors>
  <modules>
    <module name="nav" type="survey_rectangle_rotorcraft"/>
  </modules>
  <blocks>
    <block name="Wait GPS">
      <call_once fun="NavKillThrottle()"/>
      <while cond="!GpsFixValid()"/>
    </block>
    <block name="Holding point">
      <call_once fun="NavKillThrottle()"/>
      <attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
    </block>
    <block name="Start Engine">
      <call_once fun="NavResurrect()"/>
      <attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
    </block>
    <block name="Takeoff" strip_button="Takeoff" strip_icon="takeoff.png">
      <exception cond="stateGetPositionEnu_f()->z > 1.0" deroute="Standby"/>
      <call_once fun="NavSetWaypointHere(WP_STDBY)"/>
      <stay climb="nav_climb_vspeed" vmode="climb" wp="STDBY"/>
    </block>
    <block name="Standby" strip_button="Standby" strip_icon="home.png">
      <call_once fun="nav_set_heading_deg(0)"/>
      <stay wp="STDBY"/>
    </block>
    <block name="START" strip_button="Go" strip_icon="lookfore.png">
      <call_once fun="NavSetWaypointHere(WP_GOAL)"/>
    </block>
    <block name="StayGoal">
      <stay wp="GOAL"/>
    </block>
    <block group="extra_pattern" name="Survey S1-S2 Sweep NS SET" strip_button="SvySweep-NS" strip_icon="survey_rect_ns.png">
      <call_once fun="nav_survey_rectangle_rotorcraft_setup(WP_S1, WP_S3, 1, NS)"/>
      <deroute block="Survey RECTANGLE RUN"/>
    </block>
    <block group="extra_pattern" name="Survey S1-S2 Sweep WE SET" strip_button="SvySweep-WE" strip_icon="survey_rect_we.png">
      <call_once fun="nav_survey_rectangle_rotorcraft_setup(WP_S1, WP_S3, 1, WE)"/>
      <deroute block="Survey RECTANGLE RUN"/>
    </block>
    <block group="extra_pattern" name="Survey RECTANGLE RUN" strip_button="SvySweep CONT" strip_icon="survey_rect_run.png">
      <exception cond="rectangle_survey_sweep_num == 1" deroute="Standby"/>
      <call fun="nav_survey_rectangle_rotorcraft_run(WP_S1, WP_S3)"/>
    </block>
    <block name="land here" strip_button="Land Here" strip_icon="land-right.png">
      <call_once fun="NavSetWaypointHere(WP_TD)"/>
    </block>
    <block name="land">
      <go wp="TD"/>
    </block>
    <block name="flare">
      <exception cond="!nav_is_in_flight()" deroute="KILL_LANDED"/>
      <stay climb="nav_descend_vspeed" vmode="climb" wp="TD"/>
    </block>
    <block name="KILL_LANDED">
      <call_once fun="NavKillThrottle()"/>
      <attitude pitch="0" roll="0" throttle="0" until="FALSE" vmode="throttle"/>
    </block>
  </blocks>
</flight_plan>