[Top][All Lists]

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

Re: [Paparazzi-devel] PPZ quadrotor make me crazy~~

From: Sergey Krukowski
Subject: Re: [Paparazzi-devel] PPZ quadrotor make me crazy~~
Date: Sat, 26 Oct 2013 21:22:16 +0200
User-agent: Opera Mail/11.61 (Win32)

I'll try to answer according my own experience

A. Landing difficulty depends on the mode you fly in. Using one of the modes mode with altitude stabilization and without ground detection can cause difficulties while landing. I prefer myself to use ground detection functionality, which makes landing much easier. Anyway, you are using a kill switch, why not switching the motors just before landing?

B. As far as I understand, the problem in climbing while rolling/pitching is not because of throttle instability, but because of the motor inertia while making pretty high speed angle changes. Not sure if it solvable by any of the setup parameters.

C. Your PSI_PGAIN and PSI_DGAIN are too low, imho. Try to increase them step by step.

Best Regards,

Hello everyone,
I am a Chinese ppz user,Since the last time I lost my ppz quadrotor has
been a month.I fly another ppz quadrotor newly installed this
afternoon,found 3 serious questions:*A*,When the plane landed, have a
serious rebound,make landing very difficult!*B*,The throttle have drift very
serious.In manual mode,Roll/Pitch steering will make the plane climb very
high(This is why I'm the last plane out of control).*C*,When the plane
vertical drop, the course will happen very obvious change.
   Can someone give some guidance? Thanks!

Aircraft configuration:
Lisa m 2.0,Aspirin2.1,F450,2810,1147 in X mode.

Below is my XML:

<airframe name="Quadrotor LisaM_2.0 pwm">

  <firmware name="rotorcraft">
    <target name="ap" board="lisa_m_2.0">
     <subsystem name="radio_control" type="ppm"/>
      <define name="LOITER_TRIM"/>
      <define name="ALT_KALMAN"/>
      <define name="USE_KILL_SWITCH_FOR_MOTOR_ARMING"/>

    <target name="nps" board="pc">
      <subsystem name="fdm" type="jsbsim"/>
      <subsystem name="radio_control" type="ppm"/>

      <subsystem name="motor_mixing"/>
      <subsystem name="actuators" type="pwm">
        <define name="SERVO_HZ" value="400"/>

    <subsystem name="telemetry" type="transparent" />

    <subsystem name="imu" type="aspirin_v2.1"/>

    <subsystem name="gps" type="ublox"/>

    <subsystem name="stabilization" type="int_quat"/>

    <subsystem name="ins"/>


  <servos driver="Pwm">
    <servo name="NE" no="0" min="1000" neutral="1000" max="1900"/>
    <servo name="SE" no="1" min="1000" neutral="1000" max="1900"/>
    <servo name="SW" no="2" min="1000" neutral="1000" max="1900"/>
    <servo name="NW" no="3" min="1000" neutral="1000" max="1900"/>

    <axis name="ROLL"   failsafe_value="0"/>
    <axis name="PITCH"  failsafe_value="0"/>
    <axis name="YAW"    failsafe_value="0"/>
    <axis name="THRUST" failsafe_value="0"/>

  <section name="MIXING" prefix="MOTOR_MIXING_">
    <define name="TRIM_ROLL" value="0"/>
    <define name="TRIM_PITCH" value="0"/>
    <define name="TRIM_YAW" value="0"/>
    <define name="NB_MOTOR" value="4"/>
    <define name="SCALE" value="256"/>
   <define name="ROLL_COEF" value="{ -256, -256,  256,  256 }"/>
    <define name="PITCH_COEF" value="{  256, -256, -256,  256 }"/>
    <define name="YAW_COEF" value="{  -256, 256,  -256, 256 }"/>
    <define name="THRUST_COEF" value="{  256,  256,  256,  256 }"/>

    <call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
    <set servo="NE" value="motor_mixing.commands[SERVO_NE]"/>
    <set servo="SE" value="motor_mixing.commands[SERVO_SE]"/>
    <set servo="SW" value="motor_mixing.commands[SERVO_SW]"/>
    <set servo="NW" value="motor_mixing.commands[SERVO_NW]"/>

  <section name="IMU" prefix="IMU_">
    <define name="ACCEL_X_NEUTRAL" value="11"/>
    <define name="ACCEL_Y_NEUTRAL" value="11"/>
    <define name="ACCEL_Z_NEUTRAL" value="-25"/>

   <define name="MAG_X_NEUTRAL" value="370"/>
    <define name="MAG_Y_NEUTRAL" value="175"/>
    <define name="MAG_Z_NEUTRAL" value="370"/>
    <define name="MAG_X_SENS" value="3.81573853324" integer="16"/>
    <define name="MAG_Y_SENS" value="3.87309255575" integer="16"/>
    <define name="MAG_Z_SENS" value="4.2639500237" integer="16"/>
   <define name="BODY_TO_IMU_PHI" value="0." unit="deg"/>
    <define name="BODY_TO_IMU_THETA" value="0." unit="deg"/>
    <define name="BODY_TO_IMU_PSI" value="0." unit="deg"/>

   <define name="PROPAGATE_FREQUENCY" value="512"/>
    <define name="H_X" value="0.5169001"/>
    <define name="H_Y" value="-0.0596905"/>
    <define name="H_Z" value="0.8539621"/>

  <section name="INS" prefix="INS_">
    <define name="BARO_SENS" value="22.3" integer="16"/>

   <define name="SP_MAX_P" value="10000"/>
    <define name="SP_MAX_Q" value="10000"/>
    <define name="SP_MAX_R" value="10000"/>
    <define name="DEADBAND_P" value="20"/>
    <define name="DEADBAND_Q" value="20"/>
    <define name="DEADBAND_R" value="200"/>
    <define name="REF_TAU" value="4"/>

   <define name="GAIN_P" value="320" />
    <define name="GAIN_Q" value="320" />
    <define name="GAIN_R" value="350" />

    <define name="IGAIN_P" value="300" />
    <define name="IGAIN_Q" value="300" />
    <define name="IGAIN_R" value="300" />

   <define name="DDGAIN_P" value="6" />
    <define name="DDGAIN_Q" value="6" />
    <define name="DDGAIN_R" value="10" />

   <define name="SP_MAX_PHI" value="30." unit="deg"/>
    <define name="SP_MAX_THETA" value="30." unit="deg"/>
    <define name="SP_MAX_R" value="90." unit="deg/s"/>
    <define name="DEADBAND_A" value="10"/>
    <define name="DEADBAND_E" value="10"/>
    <define name="DEADBAND_R" value="300"/>

   <define name="REF_OMEGA_P" value="800" unit="deg/s"/>
    <define name="REF_ZETA_P" value="0.85"/>
    <define name="REF_MAX_P" value="400." unit="deg/s"/>
    <define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>

    <define name="REF_OMEGA_Q" value="800" unit="deg/s"/>
    <define name="REF_ZETA_Q" value="0.85"/>
    <define name="REF_MAX_Q" value="400." unit="deg/s"/>
    <define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>

    <define name="REF_OMEGA_R" value="500" unit="deg/s"/>
    <define name="REF_ZETA_R" value="0.85"/>
    <define name="REF_MAX_R" value="180." unit="deg/s"/>
    <define name="REF_MAX_RDOT" value="RadOfDeg(1800.)"/>

   <define name="PHI_PGAIN" value="1000" />
    <define name="PHI_DGAIN" value="500" />
    <define name="PHI_IGAIN" value="190" />
   <define name="THETA_PGAIN" value="1000" />
    <define name="THETA_DGAIN" value="500" />
    <define name="THETA_IGAIN" value="190" />

    <define name="PSI_PGAIN" value="500" />
    <define name="PSI_DGAIN" value="300" />
    <define name="PSI_IGAIN" value="10" />

   <define name="PHI_DDGAIN" value="400" />
    <define name="THETA_DDGAIN" value="400" />
    <define name="PSI_DDGAIN" value="400" />

  <section name="GUIDANCE_V" prefix="GUIDANCE_V_">
    <define name="MIN_ERR_Z" value="POS_BFP_OF_REAL(-10.)"/>
    <define name="MAX_ERR_Z" value="POS_BFP_OF_REAL( 10.)"/>
    <define name="MIN_ERR_ZD" value="SPEED_BFP_OF_REAL(-10.)"/>
    <define name="MAX_ERR_ZD" value="SPEED_BFP_OF_REAL( 10.)"/>
    <define name="MAX_SUM_ERR" value="2000000"/>
    <define name="HOVER_KP" value="135"/>
    <define name="HOVER_KD" value="100"/>
    <define name="HOVER_KI" value="20"/>
   <define name="RC_CLIMB_COEF" value="163"/>
   <define name="RC_CLIMB_DEAD_BAND" value="160000"/>

  <section name="GUIDANCE_H" prefix="GUIDANCE_H_">
    <define name="MAX_BANK" value="20" unit="deg"/>
    <define name="PGAIN" value="50"/>
    <define name="DGAIN" value="100"/>
    <define name="IGAIN" value="20"/>

  <section name="SIMULATOR" prefix="NPS_">
    <define name="ACTUATOR_NAMES" value="{&quot;ne_motor&quot;,
&quot;se_motor&quot;, &quot;sw_motor&quot;, &quot;nw_motor&quot;}"/>
    <define name="INITIAL_CONDITITONS" value="&quot;reset00&quot;"/>
    <define name="SENSORS_PARAMS"

  <section name="AUTOPILOT">
    <define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/>
    <define name="MODE_AUTO1"  value="AP_MODE_HOVER_Z_HOLD" />

  <section name="BAT">
    <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
    <define name="CRITIC_BAT_LEVEL" value="9.6" unit="V"/>
    <define name="LOW_BAT_LEVEL" value="9.7" unit="V"/>
    <define name="MAX_BAT_LEVEL" value="12.4" unit="V"/>


View this message in context:
Sent from the paparazzi-devel mailing list archive at

Paparazzi-devel mailing list

Erstellt mit Operas revolutionärem E-Mail-Modul:

reply via email to

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