paparazzi-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Paparazzi-devel] PPM Encoder and Lisa/L


From: Jochen Rieger
Subject: Re: [Paparazzi-devel] PPM Encoder and Lisa/L
Date: Fri, 18 Nov 2011 14:43:56 +0100

Ah okay thanks, the warning is gone.


The whole  airframe file:

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

<!--
    Lisa + Aspirin + XBee
-->

<airframe name="Yapa v1">

  <servos>
    <servo name="THROTTLE" no="2" min="1000" neutral="1000" max="2000"/>
    <servo name="AILERON_LEFT" no="0" min="1000" neutral="1500" max="2000"/>
    <servo name="AILERON_RIGHT" no="5" min="2000" neutral="1500" max="1000"/>
    <servo name="ELEVATOR" no="1" min="2000" neutral="1500" max="1000"/>
    <servo name="RUDDER" no="3" min="1100" neutral="1500" max="1900"/>
  </servos>

  <commands>
    <axis name="THROTTLE" failsafe_value="0"/>
    <axis name="ROLL" failsafe_value="0"/>
    <axis name="PITCH" failsafe_value="0"/>
    <axis name="YAW"      failsafe_value="0"/>
    <axis name="BRAKE" failsafe_value="9600"/>    <!-- both elerons up as butterfly brake ? -->
  </commands>

  <rc_commands>
    <set command="THROTTLE" value="@THROTTLE"/>
    <set command="ROLL" value="@ROLL"/>
    <set command="PITCH" value="@PITCH"/>
    <set command="YAW"      value="@YAW"/>
    <set command="BRAKE" value="@YAW"/>
  </rc_commands>

  <command_laws>
    <set servo="AILERON_LEFT" value="@ROLL"/>
    <set servo="AILERON_RIGHT" value="@ROLL"/>
    <set servo="THROTTLE" value="@THROTTLE"/>
    <set servo="ELEVATOR" value="@PITCH"/>
  </command_laws>

  <!-- Local magnetic field -->
  <section name="AHRS" prefix="AHRS_" >
    <define name="H_X" value="0.51562740288882" />
    <define name="H_Y" value="-0.05707735220832" />
    <define name="H_Z" value="0.85490967783446" />
  </section>

  <section name="IMU" prefix="IMU_">
    <!-- Calibration Neutral -->
    <define name="GYRO_P_NEUTRAL" value="0"/>
    <define name="GYRO_Q_NEUTRAL" value="0"/>
    <define name="GYRO_R_NEUTRAL" value="0"/>

    <!-- SENS = 14.375 LSB/(deg/sec) * 57.6 deg/rad = 828 LSB/rad/sec / 12bit FRAC: 4096 / 828 -->
    <define name="GYRO_P_SENS" value="4.947" integer="16"/>
    <define name="GYRO_Q_SENS" value="4.947" integer="16"/>
    <define name="GYRO_R_SENS" value="4.947" integer="16"/>

    <define name="GYRO_P_Q" value="0."/>
    <define name="GYRO_P_R" value="0"/>
    <define name="GYRO_Q_P" value="0."/>
    <define name="GYRO_Q_R" value="0."/>
    <define name="GYRO_R_P" value="0."/>
    <define name="GYRO_R_Q" value="0."/>

    <define name="GYRO_P_SIGN" value="1"/>
    <define name="GYRO_Q_SIGN" value="1"/>
    <define name="GYRO_R_SIGN" value="1"/>

    <define name="ACCEL_X_NEUTRAL" value="-14"/>
    <define name="ACCEL_Y_NEUTRAL" value="0"/>
    <define name="ACCEL_Z_NEUTRAL" value="0"/>

    <!-- SENS = 256 LSB/g @ 2.5V [X&Y: 265 LSB/g @ 3.3V] / 9.81 ms2/g = 26.095 LSB/ms2 / 10bit FRAC: 1024 / 26.095 for z and 1024 / 27.01 for X&Y -->
    <define name="ACCEL_X_SENS" value="37.9" integer="16"/>
    <define name="ACCEL_Y_SENS" value="37.9" integer="16"/>
    <define name="ACCEL_Z_SENS" value="39.24" integer="16"/>

    <define name="ACCEL_X_SIGN" value="1"/>
    <define name="ACCEL_Y_SIGN" value="1"/>
    <define name="ACCEL_Z_SIGN" value="1"/>

    <define name="MAG_X_NEUTRAL" value="0"/>
    <define name="MAG_Y_NEUTRAL" value="0"/>
    <define name="MAG_Z_NEUTRAL" value="0"/>

    <define name="MAG_X_SENS" value="1" integer="16"/>
    <define name="MAG_Y_SENS" value="1" integer="16"/>
    <define name="MAG_Z_SENS" value="1" integer="16"/>

    <define name="MAG_X_SIGN" value="1"/>
    <define name="MAG_Y_SIGN" value="1"/>
    <define name="MAG_Z_SIGN" value="1"/>

    <define name="BODY_TO_IMU_PHI" value="0"/>
    <define name="BODY_TO_IMU_THETA" value="0"/>
    <define name="BODY_TO_IMU_PSI" value="0"/>
  </section>

  <section name="INS" prefix="INS_">
    <define name="ROLL_NEUTRAL_DEFAULT" value="0" unit="deg"/>
    <define name="PITCH_NEUTRAL_DEFAULT" value="0" unit="deg"/>
  </section>

  <section name="AUTO1" prefix="AUTO1_">
    <define name="MAX_ROLL" value="0.7"/>
    <define name="MAX_PITCH" value="0.7"/>
  </section>

  <section name="BAT">
    <define name="MilliAmpereOfAdc(adc)" value="((adc) - 505) * 124.0f"/>

    <define name="LOW_BAT_LEVEL" value="10.5" unit="V"/>
    <define name="CRITIC_BAT_LEVEL" value="10" unit="V"/>
    <define name="CATASTROPHIC_BAT_LEVEL" value="9.1" unit="V"/>
  </section>

  <section name="MISC">
    <define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
    <define name="CARROT" value="5." unit="s"/>
    <define name="CONTROL_RATE" value="60" unit="Hz"/>
    <define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<!--    <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
    <define name="ALT_KALMAN_ENABLED" value="TRUE"/>

    <define name="DEFAULT_CIRCLE_RADIUS" value="80."/>

    <define name="GLIDE_AIRSPEED" value="10"/>
    <define name="GLIDE_VSPEED" value="3."/>
    <define name="GLIDE_PITCH" value="45" unit="deg"/>
  </section>

  <section name="VERTICAL CONTROL" prefix="V_CTL_">
    <define name="POWER_CTL_BAT_NOMINAL" value="11.1" unit="volt"/>
    <!-- outer loop proportional gain -->
    <define name="ALTITUDE_PGAIN" value="-0.03"/>
    <!-- outer loop saturation -->
    <define name="ALTITUDE_MAX_CLIMB" value="2."/>

    <!-- auto throttle inner loop -->
    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.32"/>
    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.65"/>
    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1500"/>
    <define name="AUTO_THROTTLE_DASH_TRIM" value="-4000"/>
    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.15" unit="%/(m/s)"/>
    <define name="AUTO_THROTTLE_PGAIN" value="-0.01"/>
    <define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>

    <define name="THROTTLE_SLEW_LIMITER" value="2" unit="s"/>
  </section>

  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
    <define name="COURSE_PGAIN" value="-1.20000004768"/>
    <define name="COURSE_DGAIN" value="0.3"/>
    <define name="COURSE_PRE_BANK_CORRECTION" value="0.2"/>

    <define name="ROLL_MAX_SETPOINT" value="0.75" unit="radians"/>
    <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
    <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>

    <define name="PITCH_PGAIN" value="-12000."/>
    <define name="PITCH_DGAIN" value="1.5"/>

    <define name="ELEVATOR_OF_ROLL" value="1000."/>

    <define name="ROLL_SLEW" value="1."/>

    <define name="ROLL_ATTITUDE_GAIN" value="-7500"/>
    <define name="ROLL_RATE_GAIN" value="0."/>
  </section>

  <section name="AGGRESSIVE" prefix="AGR_">
    <define name="BLEND_START" value="20"/><!-- Altitude Error to Initiate Aggressive Climb CANNOT BE ZERO!!-->
    <define name="BLEND_END" value="10"/><!-- Altitude Error to Blend Aggressive to Regular Climb Modes  CANNOT BE ZERO!!-->
    <define name="CLIMB_THROTTLE" value="1.00"/><!-- Gaz for Aggressive Climb -->
    <define name="CLIMB_PITCH" value="0.3"/><!-- Pitch for Aggressive Climb -->
    <define name="DESCENT_THROTTLE" value="0.1"/><!-- Gaz for Aggressive Decent -->
    <define name="DESCENT_PITCH" value="-0.25"/><!-- Pitch for Aggressive Decent -->
    <define name="CLIMB_NAV_RATIO" value="0.8"/><!-- Percent Navigation for Altitude Error Equal to Start Altitude -->
    <define name="DESCENT_NAV_RATIO" value="1.0"/>
  </section>

  <section name="FAILSAFE" prefix="FAILSAFE_">
    <define name="DEFAULT_THROTTLE" value="0.35" unit="%"/>
    <define name="DEFAULT_ROLL" value="0.17" unit="rad"/>
    <define name="DEFAULT_PITCH" value="0.08" unit="rad"/>

    <define name="HOME_RADIUS" value="DEFAULT_CIRCLE_RADIUS" unit="m"/>
    <define name="KILL_MODE_DISTANCE" value="(MAX_DIST_FROM_HOME*1.5)"/>
    <define name="DELAY_WITHOUT_GPS" value="3" unit="s"/>
  </section>

  <section name="DIGITAL_CAMERA" prefix="DC_">
    <define name="AUTOSHOOT_QUARTERSEC_PERIOD" value="6" unit="quarter_second"/>
    <define name="AUTOSHOOT_METER_GRID" value="50" unit="meter"/>
  </section>


  <modules>
<!--
    <load name="light.xml">
      <define name="LIGHT_LED_STROBE" value="3"/>
      <define name="LIGHT_LED_NAV" value="2"/>
      <define name="STROBE_LIGHT_MODE_DEFAULT" value="6"/>
      <define name="NAV_LIGHT_MODE_DEFAULT" value="4"/>
    </load>
    -->
    <!--    <load name="digital_cam_i2c.xml"/>  -->

 <!--    <load name="ins_ppzuavimu.xml" /> -->

<!--
    <load name="digital_cam.xml" >
      <define name="DC_SHUTTER_LED" value="3"/>
    </load>
    -->
  </modules>

  <firmware name="fixedwing">

    <target name="ap" board="lisa_l_1.1"> <!-- board="tiny_2.11"> -->
      <define name="STRONG_WIND"/>
      <define name="WIND_INFO"/>
      <define name="WIND_INFO_RET"/>

      <configure name="PERIODIC_FREQUENCY" value="120"/>
      <configure name="AHRS_PROPAGATE_FREQUENCY" value="100"/>
      <configure name="AHRS_CORRECT_FREQUENCY" value="100"/>
      <define name="AHRS_TRIGGERED_ATTITUDE_LOOP" />

      <configure name="AHRS_ALIGNER_LED" value="3"/>
      <configure name="CPU_LED" value="3"/>
    </target>
    <target name="sim" board="pc"/>

    <define name="AGR_CLIMB"/>
    <define name="LOITER_TRIM"/>
    <define name="ALT_KALMAN"/>

    <!-- Sensors -->
    <!--
    <subsystem name="ahrs" type="int_cmpl_quat">
      <define name="AHRS_GRAVITY_UPDATE_COORDINATED_TURN" />
    </subsystem>
    <subsystem name="imu" type="aspirin_i2c"/>
    -->
    <subsystem name="imu" type="aspirin"/>
    <subsystem name="ahrs" type="float_dcm">
<!--      <define name="USE_MAGNETOMETER" /> -->
    </subsystem>


    <subsystem name="radio_control" type="ppm"/>

    <!-- Communication -->
    <subsystem name="telemetry"           type="transparent">
    <configure name="MODEM_BAUD"          value="B57600"/>
    <configure name="MODEM_PORT"          value="UART3"/>
    </subsystem>

    <!-- Actuators -->
    <subsystem name="control"/>
    <!-- Sensors -->
    <subsystem name="navigation"/>
    <subsystem name="gps"         type="nmea">
    <configure name="GPS_PORT"          value="UART2"/>
    <configure name="GPS_BAUD"          value="B9600"/>
    </subsystem>


</firmware>


</airframe>

-Jochen


2011/11/18 Felix Ruess <address@hidden>
Hi Jochen,

> Hmm ok thanks. Perhaps, can in the airframe file be a mistake?

Could be, but we can hardly tell without knowing your configuration...

> Because while building the software follow warning is shown:
>
> CC /home/amfis/paparazzi/var/Maja/ap/firmwares/fixedwing/main_fbw.o
> firmwares/fixedwing/main_fbw.c: In function 'event_task_fbw':
> firmwares/fixedwing/main_fbw.c:153: warning: array subscript is above array
> bounds

This is unrelated to the ppm input... (well, it will probably still
write values somewhere it shouldn't!)

> <servos>
>     <servo name="THROTTLE" no="3" min="1000" neutral="1000" max="2000"/>
>     <servo name="AILERON_LEFT" no="1" min="1000" neutral="1500" max="2000"/>
>     <servo name="AILERON_RIGHT" no="6" min="2000" neutral="1500"
> max="1000"/>
>     <servo name="ELEVATOR" no="2" min="2000" neutral="1500" max="1000"/>
>     <servo name="RUDDER" no="4" min="1100" neutral="1500" max="1900"/>
>   </servos>

The reason for above error is that you have set one servo no="6".
Since indexing starts at zero, this would be servo number 7 and unless
you added the define USE_SERVOS_7AND8 it won't work!


I'm not sure why in the picture of Lisa/L the servos are counted from
1 up, instead from 0.
Same actually goes for Lisa/M, there the servos in the picture are
counted from 1, while you have to put them in your airframe file
starting with 0...
Looks like an error to me.

Cheers, Felix

_______________________________________________
Paparazzi-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/paparazzi-devel


reply via email to

[Prev in Thread] Current Thread [Next in Thread]