paparazzi-devel
[Top][All Lists]
Advanced

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

Re: [Paparazzi-devel] radio control


From: David Conger
Subject: Re: [Paparazzi-devel] radio control
Date: Mon, 08 Nov 2010 18:16:44 -0800

In case it is helpful to see an answer here's more details: 
Aircraft: Multiplex Merlin 
Autopilot: Tiny13
4 servos (2x Aileron, Elev, Rudder) . Turnigy micro digital servos: 
http://hobbycity.com/hobbyking/store/uh_viewItem.asp?idProduct=8511
Rx: Berg4L modified to output PPM to the autopilot
All servos connected to the autopilot (ppm, 5v, gnd)
ArduIMU v2 with SDC, SCL, GND, 5V connected to Autopilot and attached (double 
sided tape) to the bottom of the Tiny13
MultiPlex power pack for motor and prop
10A ESC (it was smaller in size than the 18A one that came from 
Multiplex)..only GND and PPM connected to the Tiny13

image/jpg

image/jpg

image/jpg


My airframe file looks like: 
<!DOCTYPE airframe SYSTEM "airframe.dtd">

<!-- Merlin, Himax HC2212-1180
     Tiny 1.1
     ArduIMU Sensor
     XBee modem
     LEA 5H GPS
-->

<airframe name="Merlin 1">

  <firmware  name="fixedwing">
        <target name="sim"      board="pc">
                <define name="AGR_CLIMB"/>
                <define name="LOITER_TRIM"/>
                <define name="ALT_KALMAN"/>
                <define name="WIND_INFO"/>
                <define name="WIND_INFO_RET"/>
        </target>

        <target name="ap"       board="tiny_1.1">
                <define name="AGR_CLIMB"/>
                <define name="LOITER_TRIM"/>
                <define name="ALT_KALMAN"/>
                <define name="WIND_INFO"/>
                <define name="WIND_INFO_RET"/>
                <define name="USE_I2C0"/>
        </target>

        <subsystem name="radio_control" type="ppm"/>
        <subsystem name="telemetry"     type="transparent"/>
        <subsystem name="control"/>
        <subsystem name="gps"           type="ublox_lea5h"/>
        <subsystem name="navigation"/>
        <subsystem name="i2c"/>
  </firmware>

  <firmware name="setup">
        <target name="tunnel"           board="tiny_1.1"/>
        <target name="usb_tunnel_0"     board="tiny_1.1"/>
        <target name="usb_tunnel_1"     board="tiny_1.1"/>
        <target name="setup_actuators"  board="tiny_1.1"/>
  </firmware>

  <modules>
        <load name="ins_arduimu.xml"/>
  </modules>

<!-- commands section -->
  <servos>
    <servo name="AILERON_RIGHT" no="3" min="1900" neutral="1500" max="1100"/>
    <servo name="AILERON_LEFT"  no="6" min="1900" neutral="1500" max="1100"/>
    <servo name="ELEVATOR"      no="2" min="1100" neutral="1500" max="1900"/>
    <servo name="MOTOR"         no="1" min="1000" neutral="1000" max="2000"/>
    <servo name="RUDDER"        no="0" min="1000" neutral="1000" max="2000"/>
  </servos>

  <commands>
    <axis name="THROTTLE"  failsafe_value="0"/>
    <axis name="ROLL"      failsafe_value="0"/>
    <axis name="PITCH"     failsafe_value="0"/>
  </commands>

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

  <section name="MIXER">
    <define name="AILERON_DIFF" value="0.8"/>
  </section>

  <command_laws>
    <set servo="MOTOR" value="@THROTTLE"/>
    <set servo="ELEVATOR" value="@PITCH"/>
    <let var="roll" value="@ROLL"/>
    <set servo="AILERON_LEFT" value="($roll > 0 ? 1 : AILERON_DIFF) * $roll"/>
    <set servo="AILERON_RIGHT" value="($roll > 0 ? AILERON_DIFF : 1) * $roll"/>
  </command_laws>

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

  <!--<section name="adc" prefix="ADC_CHANNEL_">
    <define name="IR1" value="ADC_1"/>
    <define name="IR2" value="ADC_2"/>
    <define name="IR_TOP" value="ADC_0"/>
    <define name="IR_NB_SAMPLES" value="16"/>
  </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="BAT">
    <define name="MILLIAMP_AT_FULL_THROTTLE" value="20000"/>
    <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
    <define name="CRITIC_BAT_LEVEL" value="10.3" unit="V"/>
  </section>
 
  <section name="MISC">
    <define name="MINIMUM_AIRSPEED" value="10." unit="m/s"/>
    <define name="NOMINAL_AIRSPEED" value="12." unit="m/s"/>
    <define name="MAXIMUM_AIRSPEED" value="18." unit="m/s"/>
    <define name="CARROT" value="5." unit="s"/>
    <define name="KILL_MODE_DISTANCE" value="(1.5*MAX_DIST_FROM_HOME)"/>
    <define name="CONTROL_RATE" value="60" unit="Hz"/>
<!--    <define name="XBEE_INIT" value="&quot;ATPL2\rATRN1\rATTT80\r&quot;"/> 
-->
<!--    <define name="NO_XBEE_API_INIT" value="TRUE"/> -->
    <define name="ALT_KALMAN_ENABLED" value="FALSE"/>

    <define name="TRIGGER_DELAY" value="1."/>
    <define name="DEFAULT_CIRCLE_RADIUS" value="120."/>
  </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.06"/>
    <!-- outer loop saturation -->
    <define name="ALTITUDE_MAX_CLIMB" value="2."/>

    <!-- auto throttle inner loop -->
    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.45"/>
    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.25"/>
    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="0.85"/>
    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1000"/>
    <define name="AUTO_THROTTLE_DASH_TRIM" value="-1200"/>
    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.2" 
unit="%/(m/s)"/>
    <define name="AUTO_THROTTLE_PGAIN" value="-0.023"/>
    <define name="AUTO_THROTTLE_IGAIN" value="0.1"/>
    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05"/>

    <!-- auto pitch inner loop -->
    <define name="AUTO_PITCH_PGAIN" value="-0.06"/>
    <define name="AUTO_PITCH_IGAIN" value="0.08"/>
    <define name="AUTO_PITCH_MAX_PITCH" value="0.35"/>
    <define name="AUTO_PITCH_MIN_PITCH" value="-0.35"/>

   <define name="THROTTLE_SLEW" value="0.1"/>

  </section>


  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
    <define name="COURSE_PGAIN" value="-1.0"/>
    <define name="ROLL_MAX_SETPOINT" value="0.60" unit="radians"/>
    <define name="PITCH_MAX_SETPOINT" value="0.5" unit="radians"/>
    <define name="PITCH_MIN_SETPOINT" value="-0.5" unit="radians"/>

    <define name="ROLL_PGAIN" value="6000."/>
    <define name="AILERON_OF_THROTTLE" value="0.0"/>
    <define name="PITCH_PGAIN" value="-9000."/>
    <define name="PITCH_DGAIN" value="1.5"/>

    <define name="ELEVATOR_OF_ROLL" value="1500"/>
    
    <!--define name="ROLL_ATTITUDE_GAIN" value="-5900"/>
    <define name="ROLL_RATE_GAIN" value="-2900"/-->
 </section>

  <section name="NAV">
    <define name="NAV_PITCH" value="0."/>
    <define name="NAV_GLIDE_PITCH_TRIM" value="0"/>
  </section>

  <section name="AGGRESSIVE" prefix="AGR_">
    <define name="BLEND_START" value="50"/><!-- Altitude Error to Initiate 
Aggressive Climb CANNOT BE ZERO!!-->
    <define name="BLEND_END" value="15"/><!-- Altitude Error to Blend 
Aggressive to Regular Climb Modes  CANNOT BE ZERO!!-->
    <define name="CLIMB_THROTTLE" value="0.9"/><!-- Gaz for Aggressive Climb -->
    <define name="CLIMB_PITCH" value="0.35"/><!-- Pitch for Aggressive Climb -->
    <define name="DESCENT_THROTTLE" value="0.05"/><!-- Gaz for Aggressive 
Decent -->
    <define name="DESCENT_PITCH" value="-0.35"/><!-- 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="DELAY_WITHOUT_GPS" value="2" unit="s"/>
    <define name="DEFAULT_THROTTLE" value="0.3" unit="%"/>
    <define name="DEFAULT_ROLL" value="0.17" unit="rad"/>
    <define name="DEFAULT_PITCH" value="0.08" unit="rad"/>
    <define name="HOME_RADIUS" value="100" unit="m"/>
  </section>

</airframe>

I'm using the settings file: conf/settings/tuning_ins.xml
I'm using the radio file: conf/radios/T7cap.xml

I'm not sure if I forgot anything but the radio is the same as used with a TWOG 
and Booz without issue. The biggest problem is an inability to get the mode 
switched using the transmitter. 

Regards,
David Conger

On Nov 8, 2010, at 4:54 PM, David Conger wrote:

> Hello,
> 
> I have a very strange issue. With a TWOG and my T7CAP everything was just 
> fine. The 3-pos switch worked well. With Booz it works well. Flying is just 
> fine. 
> 
> The problem is the same everything (Berg4L receiver, same config) but with a 
> Tiny13 it doesn't work. By "doesn't work" I mean the 3-pos switch has no 
> effect. Also the autopilot acts strangely.  I powered it on without the T7CAP 
> on and the autpilot acted as if it was in AUTO2 as expected. What doesn't 
> work is powering on the T7CAP I expect full MANUAL mode. That didn't happen. 
> On powering up the T7CAP some of the controls (i.e. right aileron) was no 
> responding to the Tx. The 3-pos switch had no effect. Very odd.
> 
> I read about ppm being modified. Could this be related? 
> 
> -David Conger
> 
> On Oct 19, 2010, at 9:25 AM, Gautier Httenberger wrote:
> 
>> Hi all,
>> 
>> I have made some changes in the RC mechanism. It is now using something 
>> really close to what exist on rotorcraft for fixed wing. The idea is to 
>> merge the two in a near future.
>> 
>> What is available on FW are:
>> <subsystem name="radio_control" type="ppm"/>  (regular ppm decoding, working 
>> with tiny/twog, need to be tested on lisa)
>> <subsystem name="radio_control" type="datalink"/>  (rc is coming from the 
>> datalink, the ground part need a bit more work to be user friendly...)
>> 
>> The old files for decoding ppm frames will be deleted soon.
>> 
>> Please report any troubles with this need radio control system.
>> 
>> Gautier
>> 
>> _______________________________________________
>> Paparazzi-devel mailing list
>> address@hidden
>> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel
> 
> 
> _______________________________________________
> Paparazzi-devel mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/paparazzi-devel


reply via email to

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