paparazzi-devel
[Top][All Lists]
Advanced

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

Re: [Paparazzi-devel] Airframefile for a boat


From: Jorn Anke
Subject: Re: [Paparazzi-devel] Airframefile for a boat
Date: Fri, 13 Feb 2015 23:10:15 +0100

I am truly grateful for both answers,

However, and as a matter of fact, it was at least 25 years since the last time I made anything useful in software programming ;-)

So, unless there already exist a sample "boat/rover firmware specific main-file", for me, the simplest solution would probably be to "set all altitude gains to zero". I guess this would mean to modify the following part of the airframefile?

Can you please suggest which parameters to change, and to which values?

Cheers,

Jorn
__________________________________________________________
<section name="VERTICAL CONTROL" prefix="V_CTL_">
    <define name="POWER_CTL_BAT_NOMINAL" value="11.0" unit="volt"/>
    <!-- outer loop -->
    <define name="ALTITUDE_PGAIN" value="0.075" unit="(m/s)/m"/>
    <define name="ALTITUDE_MAX_CLIMB" value="4." unit="m/s"/>
    <!-- auto throttle inner loop -->
    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.5" unit="%"/>
    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.2" unit="%"/>
    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="1.0" unit="%"/>
    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1500" unit="pprz_t"/>
    <define name="AUTO_THROTTLE_DASH_TRIM" value="-1000" unit="pprz_t"/>
    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.1" unit="%/(m/s)"/>
    <define name="AUTO_THROTTLE_PGAIN" value="0.02" unit="%/(m/s)"/>
    <define name="AUTO_THROTTLE_IGAIN" value="0.03"/>
    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05" unit="rad/(m/s)"/>
    <define name="AUTO_PITCH_PGAIN" value="0.125"/>
    <define name="AUTO_PITCH_IGAIN" value="0.025"/>
    <define name="AUTO_PITCH_MAX_PITCH" value="25" unit="deg"/>
    <define name="AUTO_PITCH_MIN_PITCH" value="-25" unit="deg"/>
    <define name="THROTTLE_SLEW" value="1.0"/>
  </section>

  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
    <define name="COURSE_PGAIN" value="1.0"/>
    <define name="COURSE_DGAIN" value="0.4"/>
    <define name="ROLL_MAX_SETPOINT" value="35" unit="deg"/>
    <define name="PITCH_MAX_SETPOINT" value="25" unit="deg"/>
    <define name="PITCH_MIN_SETPOINT" value="-25" unit="deg"/>
    <define name="PITCH_PGAIN" value="20000."/>
    <define name="PITCH_DGAIN" value="1.5"/>
    <define name="ELEVATOR_OF_ROLL" value="2500"/>
    <define name="ROLL_ATTITUDE_GAIN" value="7400"/>
    <define name="ROLL_RATE_GAIN" value="200"/>
  </section>




Date: Tue, 10 Feb 2015 13:23:55 +0100
From: address@hidden
To: address@hidden
Subject: Re: [Paparazzi-devel] Airframefile for a boat

I think it might be nicer/easier to write a boat/rover firmware specific main that only calls what is really needed and write a simpler horizontal control loop for that.
Some years ago I did that for my skid-steer amphibious car, worked really well (apart from the crappy motors that thing had)...

On Sat, Feb 7, 2015 at 9:28 PM, Christophe De Wagter <address@hidden> wrote:
Although not specifically designed for this, it is absolutely possible to guide a boat with standard paparazzi fixedwing code.

If you set all altitude gains to zero, you end up with just the cruise throttle which you set as required (can be changed from the "flight"plan)

Depending on which board you use, you might want to disable the imu (e.g.), although if your boat does not roll too much it might not even matter a lot.

There is no option (yet) to disable attitude control by default, but if you only have a p-gain and no IMU, then the attitude loop will simply pass through the guidance commands.


-Christophe 

On Fri, Feb 6, 2015 at 11:34 PM, Jorn Anke <address@hidden> wrote:
I want to try to have paparazzi (a Lisa/M) to control a RC-boat.

My idea is to modify a airframefile for a EZStar for the purpose, since the EZStar is originally controlled by throttle/rudder/elevator only.

The current airframefile is found below. I have tried to remove the settings related to roll and pitch control, but then the setup will not compile.

Any suggestions for how to get paparazzi to use a fixed throttle level set in a airframefile -or to use a throttle level set directly from the tx? (I am not even sure it is possible to make paparazzi "forget" everything about roll and pitch control).

Jorn

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

<!-- this is a boat! based on a EZStar
  * Autopilot:   Lisa/M 2.0         http://wiki.paparazziuav.org/wiki/Lisa/M_v20
  * IMU:         Aspirin 2.1        http://wiki.paparazziuav.org/wiki/AspirinIMU
  * GPS:         Ublox                http://wiki.paparazziuav.org/wiki/Subsystem/gps
  * RC:          any PPM system     http://wiki.paparazziuav.org/wiki/Subsystem/radio_control#PPM
  * Modem        XBee in transparent mode at 57600 baud
-->

<airframe name="my_lisa_m2_boat">

  <firmware name="fixedwing">
    <target name="ap"             board="lisa_m_2.0">
      <!-- higher frequency for aspirin imu, ouputs data at 100Hz -->
      <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"/>
    </target>

    <target name="sim"             board="pc"/>

    <define name="USE_MAGNETOMETER" value="FALSE"/>

    <subsystem name="radio_control" type="ppm"/>
    <subsystem name="telemetry" type="transparent"/>
    <subsystem name="control"/>
    <subsystem name="imu" type="aspirin_v2.1"/>
    <subsystem name="ahrs" type="float_dcm"/>
    <subsystem name="gps" type="ublox"/>
    <subsystem name="navigation"/>
    <subsystem name="ins" type="alt_float"/>
  </firmware>

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

  <!-- commands section -->
  <servos>
    <servo name="THROTTLE"      no="7" min="1120" neutral="1120" max="1920"/>
    <servo name="ELEVATOR"      no="3" min="1100" neutral="1515" max="1900"/>
    <servo name="RUDDER"        no="4" min="950" neutral="1440" max="2050"/>
  </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="ROLL"      value="@ROLL"/>
    <set command="PITCH"     value="@PITCH"/>
    <set command="THROTTLE"  value="@THROTTLE"/>
  </rc_commands>

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

  <section name="AUTO1" prefix="AUTO1_">
    <define name="MAX_ROLL" value="50" unit="deg"/>
    <define name="MAX_PITCH" value="40" unit="deg"/>
  </section>

  <section name="IMU" prefix="IMU_">
    <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"/>
  </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" unit="mA"/>
    <define name="CATASTROPHIC_BAT_LEVEL" value="9.0" unit="V"/>
    <define name="CRITIC_BAT_LEVEL" value="9.5" unit="V"/>
    <define name="LOW_BAT_LEVEL" value="10.0" unit="V"/>
    <define name="MAX_BAT_LEVEL" value="12.5" unit="V"/>
  </section>

  <section name="MISC">
    <define name="NOMINAL_AIRSPEED" value="15." unit="m/s"/>
    <define name="CARROT" value="4." unit="s"/>
    <define name="KILL_MODE_DISTANCE" value="(2.0*MAX_DIST_FROM_HOME)"/>
    <define name="DEFAULT_CIRCLE_RADIUS" value="100."/>
  </section>

  <section name="VERTICAL CONTROL" prefix="V_CTL_">
    <define name="POWER_CTL_BAT_NOMINAL" value="11.0" unit="volt"/>
    <!-- outer loop -->
    <define name="ALTITUDE_PGAIN" value="0.075" unit="(m/s)/m"/>
    <define name="ALTITUDE_MAX_CLIMB" value="4." unit="m/s"/>
    <!-- auto throttle inner loop -->
    <define name="AUTO_THROTTLE_NOMINAL_CRUISE_THROTTLE" value="0.5" unit="%"/>
    <define name="AUTO_THROTTLE_MIN_CRUISE_THROTTLE" value="0.2" unit="%"/>
    <define name="AUTO_THROTTLE_MAX_CRUISE_THROTTLE" value="1.0" unit="%"/>
    <define name="AUTO_THROTTLE_LOITER_TRIM" value="1500" unit="pprz_t"/>
    <define name="AUTO_THROTTLE_DASH_TRIM" value="-1000" unit="pprz_t"/>
    <define name="AUTO_THROTTLE_CLIMB_THROTTLE_INCREMENT" value="0.1" unit="%/(m/s)"/>
    <define name="AUTO_THROTTLE_PGAIN" value="0.02" unit="%/(m/s)"/>
    <define name="AUTO_THROTTLE_IGAIN" value="0.03"/>
    <define name="AUTO_THROTTLE_PITCH_OF_VZ_PGAIN" value="0.05" unit="rad/(m/s)"/>
    <define name="AUTO_PITCH_PGAIN" value="0.125"/>
    <define name="AUTO_PITCH_IGAIN" value="0.025"/>
    <define name="AUTO_PITCH_MAX_PITCH" value="25" unit="deg"/>
    <define name="AUTO_PITCH_MIN_PITCH" value="-25" unit="deg"/>
    <define name="THROTTLE_SLEW" value="1.0"/>
  </section>

  <section name="HORIZONTAL CONTROL" prefix="H_CTL_">
    <define name="COURSE_PGAIN" value="1.0"/>
    <define name="COURSE_DGAIN" value="0.4"/>
    <define name="ROLL_MAX_SETPOINT" value="35" unit="deg"/>
    <define name="PITCH_MAX_SETPOINT" value="25" unit="deg"/>
    <define name="PITCH_MIN_SETPOINT" value="-25" unit="deg"/>
    <define name="PITCH_PGAIN" value="20000."/>
    <define name="PITCH_DGAIN" value="1.5"/>
    <define name="ELEVATOR_OF_ROLL" value="2500"/>
    <define name="ROLL_ATTITUDE_GAIN" value="7400"/>
    <define name="ROLL_RATE_GAIN" value="200"/>
  </section>

  <section name="FAILSAFE" prefix="FAILSAFE_">
    <define name="DELAY_WITHOUT_GPS" value="3" unit="s"/>
    <define name="DEFAULT_THROTTLE" value="0.4" unit="%"/>
    <define name="DEFAULT_ROLL" value="15" unit="deg"/>
    <define name="DEFAULT_PITCH" value="0" unit="deg"/>
    <define name="HOME_RADIUS" value="90" unit="m"/>
  </section>

</airframe>

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



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



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