paparazzi-devel
[Top][All Lists]
Advanced

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

Re: [Paparazzi-devel] radio control


From: Gareth Roberts
Subject: Re: [Paparazzi-devel] radio control
Date: Thu, 11 Nov 2010 15:49:51 -0000
User-agent: Opera Mail/10.63 (Linux)

No problem, I learnt the hard way! We tend to use ESC's with built-in BECs nowadays, it doesn't take up any extra space.
The exact way I do it is

Servos ===5V/GND/SIG====|=== SIG/GND =>|
BEC |=== +5v/GND =======|              | Tiny
    |=== Throttle SIG/GND ============>|

I do it in the adapters between the servos and the molex connectors.
I did once try running the entire 5V bus off a BEC. Magic smoke appeared, so don't do that unless your idea of fun is de-soldering those charming power modules.

If anyone else sees this type of reset problem, it's probably that you are overloading the 5V reg. Because the 5V reg supplies the 3.3V reg, the 3.3 line drops too low and the whole lot switches off. When the board resets, the servo's are uncommanded, which means the 5V reg recovers and the tiny comes back up again.

All you see from the GCS is a brief loss of communication and an autopilot which appears to have forgotten what it was doing.

The RX is fine, I leave that on the reg along with the XBee, it simplifies the wiring and they are fairly static loads so if it works on the ground, it should be fine. It may be that you were marginal already, and the IMU pushed your power requirements over the edge.

This comes up every few months on the mailing list - if you are working with something bigger than a FunJet, that isn't using micro-servos, or has 4 or more servos which could be loaded simultaneously you should considered using a BEC to power your servos.

Another thing I learnt was to always command all servos simultaneously during ground testing (I used to check elevators and aerolons together but not at the same time as the rudder). If you are MODE2, it's both sticks to the bottom left.
In-flight resets suck, as David has found!

--G

On Thu, 11 Nov 2010 15:02:47 -0000, David <address@hidden> wrote:

This is very good information. Thank you very much. I was powering everything 4 servos, XBee XSC, IMU and Rx from the autopilot to save room.

I will add a CC BEC for the 4 servos and Rx immediately.

David

On Nov 11, 2010, at 6:33 AM, Gareth Roberts <address@hidden> wrote:

As Mark says it possible that the increase in control from ArduPilot could be causing overdraw from the servos?
Are you running the servos from a separate supply, not the 5V reg?
We had a similar case where a reboot would occur only when all servos were concurrently activated - which we didn't normally do during preflights! We ended up just rewiring so they drew from the BEC, and tied the grounds together.
After that everything was happy.

--G


On Thu, 11 Nov 2010 14:06:42 -0000, <address@hidden> wrote:

Hi David,


I have not flown in windy conditions. Only with a light breeze.


The normal behavior in the case of loss of GPS is for the autopilot to
use the failsafe roll, pitch and throttle settings defined in the
airframe file.  The resetting of the flight plan back to "Geo Init"
indicates that there was a power failure and the autopilot restarted.
This would cause the ArduIMU to re-calibrate itself in-flight (if the
ENABLE_AIR_START setting was set to the default value of 0 in the
ArduIMU configuration) resulting most likely in erratic behaviour.


Some food for thought.


Cheers,Mark


From: address@hidden
[mailto:address@hidden On
Behalf Of David Conger
Sent: Thursday, 11 November 2010 1:02 AM
To: address@hidden
Subject: Re: [Paparazzi-devel] radio control


Hi All, Hi Mark,


Interesting. I am very interested in the conditions you flew in. Calm?
Wind?


I just flew again today. Last night was perfect in zero wind. Today two
snap rolls into steep dives were observed for not apparent reason.
During the flight it also went to Geo-init and seemed to lose GPS signal
mid flight. The spins were during prolonged circles about 30 degrees to
the right. Then a snap to the left and spiral down. From the ground it
appeared the autopilot was not all that able to cope with the gusty
turbulent conditions.


I have logs and really would like to explain what happened. Is there a
graph I can plot from the logs to see the IMU behavior best? I think now
mounting the IMU directly against the u-blox module maybe a bad idea.
The GPS took a long time to get a fix and in flight lost
signal...sending he flight plan to the top in Geo Init ... and holding.


I have confidence this is a tuning or some issue that can be recovered
from. However I may fly only in calm conditions in the future. I do have
an onboard video I will post to YouTube so others can see the spins.
Here is the link: http://www.youtube.com/watch?v=cgOdE9ITyFY


Log of the flight. Take off in Manual. Then a switch to AUTO2 once level
with some altitude. It the plan goes quickly into the right handed
circle and about 1/3 the way around you see it go into a fast spiral to
the Left. I recover and fly a little in AUTO1 then go into AUTO2. It
picks up the circle again and after about 5sec it does the same thing
but I do not recover. The spin was too severe and fast for me to orient
and take control.


The Merlin survived with light damage. It will fly again after some
patches.


After replaying the logs I see the GPS resets and the plane goes to Geo
Init about 3 seconds after I recover from the first spin. The conditions were windy but the airspeed indicator was pretty close in the estimation
this time. Maybe last night with zero wind it had more problems
determining the wind speed? I did notice it still had issues (not as
severe) with displaying the direction the aircraft was pointed but not
as bad as last night.


-David

On Nov 10, 2010, at 12:52 AM, address@hidden wrote:





Hi David,

That's great news and congratulations on your progress.

BTW, I have connected the ArduIMUv2 to my TWOG and put in my Funjet. It
flies great at an airspeed of  ~ 20m/s. I have not yet dared to try it
at 40 m/s!

Also, thanks to the ZHAW students for developing this great addon to the
Paparazzi system and to Reto for his efforts to make the Paparazzi
community aware of it.

Cheers, Mark


From: address@hidden
[mailto:address@hidden On
Behalf Of David Conger
Sent: Wednesday, 10 November 2010 4:46 AM
To: address@hidden
Subject: Re: [Paparazzi-devel] radio control


Hello all,


I have good news. Inexplicably the 3-pos switch started working. The
only think I could remember changing is removing the RUDDER entry in the
airframe file under the servo assignments. I discovered it working at
the flying field. I was going to go into AUTO by powering off the Tx and
MANUAL by powering on the Tx. I actually did this. Then to show my
partner the 3-pos switch was not working I toggled it and noticed it
actually did something. I don't mind happy surprises so I'm not going to
question it. It just works.


Unfortunately in this first flight the aircraft when put in AUTO1 would
sharply dive immediately. I tried at least 5-8 times all with the same
results. It was getting dark but I decided on a second flight. This time
I let the IMU calibrate for at least 30 seconds with the plan
horizontal. I took off and when I went to AUTO1 ... it flew. I dared try
AUTO2 and it worked!!! Stable flight. I couldn't let it fly long as it
was well past sunset and I could not allow it to go very far. However
absolutely AUTO1 and AUTO2 were stable.


Tomorrow we hope to fly some more during daylight but I wanted to just
report this good news.


-David

On Nov 9, 2010, at 4:01 PM, David Conger wrote:






Ah, ok, a bit closer.


This is probably due to my using the tuning_ins.xml file as suggested.
There are no MANUAL, AUTO1, AUTO2 defined in there that I can see.
Similar to BOOZ.


Is there documentation around the settings file? I would be a bit
nervous using the on/off switch on the Tx to control engaging the
autopilot on/off


I don't mind learning but I think this is not an issue with my having
ground connected to the ESC anymore.. :)


Regards,

David

On Nov 8, 2010, at 10:53 PM, Michel GORRAZ wrote:






Hi,
Nothing to do with you R/C issue, sorry, but noticed you've connected
the GND of PPM connector between ESC and Tiny.
You shouldn't do that because if for some reason the GND power cable of
ESC get loose (in flight or test), you will burn your Tiny.
(all motor current will pass thru the small cable, molex connector and
Tiny's PCB...)

@+
Michel

2010/11/9 David Conger <address@hidden>

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



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


_______________________________________________
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


_______________________________________________
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


_______________________________________________
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]