paparazzi-devel
[Top][All Lists]
Advanced

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

[Paparazzi-devel] Roll and Yaw Control


From: Jorge Pantoja
Subject: [Paparazzi-devel] Roll and Yaw Control
Date: Fri, 13 Jul 2012 17:31:08 -0400

Hi everyone,

We are using the following hardware configuration:

Yapa2 + CHIMU + Ublox GPS + 900 MHz Xbees

After mounting the autopilot to the airplane and connected everything we tested the equipment and we noticed that when we "YAWed"  the airplane we had no response from the Rudder. On the other hand, when we "Pitched and Rolled" the airplane we could see that there was a response from the ailerons and elevator. Is this correct? Should or shouldn't we expect a response from the Rudder?

About Roll control, I noticed that in our airframe file we have 2 servos controlling our airplane's roll, but our aircraft only has 1 channel moving the ailerons. Can I leave it this way? Or should I change the airframe file and erase the channel moving the extra aileron?

Here is the airframe file we are using:

<airframe name="Piquero">
 
 
  <servos>
    <servo name="THROTTLE" no="0" min="1000" neutral="1000" max="2000"/>
    <servo name="AILERON_LEFT" no="3" min="1000" neutral="1500" max="2000"/>
    <servo name="AILERON_RIGHT" no="1" min="2000" neutral="1500" max="1000"/>
    <servo name="ELEVATOR" no="2" min="2000" neutral="1500" max="1000"/>
    <servo name="RUDDER" no="6" 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"/> <!-- 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"/>
  </rc_commands>
 
  <section name="SERVO_MIXER_GAINS">
    <define name="AILERON_RATE_UP" value="0.50f"/>
    <define name="AILERON_RATE_DOWN" value="0.25f"/>
 
    <define name="AILERON_RATE_UP_BRAKE" value="0.5f"/>
    <define name="AILERON_RATE_DOWN_BRAKE" value="0.9f"/>
 
    <define name="PITCH_GAIN" value="0.9f"/>
 
    <define name="YAW_THRUST" value="0.0f"/>
    <define name="BRAKE_AILEVON" value="-0.68f"/>
    <define name="BRAKE_PITCH" value="0.0f"/>
    <define name="MAX_BRAKE_RATE" value="150"/>
 
    <define name="LIMIT(X,XL,XH)" value="( ((X)>(XH)) ? (XH) : ( ((X)>(XL)) ? (X) : (XL) ) )"/>
  </section>
 
  <command_laws>
    <!-- Differential Aileron Depending on Brake Value -->
    <set servo="AILERON_LEFT" value="@ROLL"/>
    <set servo="AILERON_RIGHT" value="@ROLL"/>
 
    <!-- Differential Thurst -->
    <set servo="THROTTLE" value="@THROTTLE"/>
 
    <!-- Pitch with Brake-Trim Function -->
    <set servo="ELEVATOR" value="@PITCH"/>
    <set servo="RUDDER" value="@YAW"/>
  </command_laws>
 
  <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"/>
<!-- -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.9" 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="0"/>
 
    <define name="ELEVATOR_OF_ROLL" value="1000."/>
 
    <define name="ROLL_ATTITUDE_GAIN" value="-11500"/>
    <define name="ROLL_RATE_GAIN" value="-600."/>
  </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="ins_chimu_spi.xml" >
<!-- <define name="CHIMU_BIG_ENDIAN" /> -->
</load>
 
  </modules>
 
 
  <firmware name="fixedwing">   
    <target name="ap" board="tiny_2.11">
<!-- tiny_2.11"> -->
      <define name="STRONG_WIND"/>
      <define name="WIND_INFO"/>
      <define name="WIND_INFO_RET"/>
      <define name="LOITER_TRIM"/>
      <define name="ALT_KALMAN"/>
      <define name="TELEMETRY_MODE_FBW" value="1"/>
<!-- <define name="NB_CHANNELS" value="5" /> -->
    </target>
    <target name="sim" board="pc"/>
 
 
    <subsystem name="radio_control" type="ppm"/>
 
    <subsystem name="gps" type="ublox" />
 
    <!-- Communication -->
    <subsystem name="telemetry" type="transparent">
      <configure name="MODEM_BAUD" value="B57600"/> 
   </subsystem>
 
    <!-- Actuators -->
    <subsystem name="control"/>
    <!-- Sensors -->
    <subsystem name="navigation"/>
<!-- <subsystem name="gps" type="ublox"/> -->
 
    <subsystem name="spi_slave_hs"/>
 
  </firmware>
 
</airframe>

I hope you can help us.

Best Regards,

--
Jorge Pantoja
Program Manager/Liaison
Phone: +593-96160076
e-mail: address@hidden
 


reply via email to

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