Skip to content

Commit

Permalink
Merge remote-tracking branch 'paparazzi/master' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
flixr committed May 22, 2011
2 parents 4519a59 + 64fde73 commit a22ff3b
Show file tree
Hide file tree
Showing 12 changed files with 193 additions and 63 deletions.
31 changes: 31 additions & 0 deletions conf/airframes/esden/calib/aspirin_jtm.xml
@@ -0,0 +1,31 @@
<airframe>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="-33"/>
<define name="GYRO_Q_NEUTRAL" value="-10"/>
<define name="GYRO_R_NEUTRAL" value="-25"/>
<define name="GYRO_P_SENS" value="4.412" integer="16"/>
<define name="GYRO_Q_SENS" value="4.412" integer="16"/>
<define name="GYRO_R_SENS" value="4.412" integer="16"/>
<define name="GYRO_PQ_SENS" value="0.0" integer="16"/>
<define name="GYRO_PR_SENS" value="0.0" integer="16"/>
<define name="GYRO_QR_SENS" value="0.0" integer="16"/>

<define name="ACCEL_X_NEUTRAL" value="2"/>
<define name="ACCEL_Y_NEUTRAL" value="-2"/>
<define name="ACCEL_Z_NEUTRAL" value="-36"/>
<define name="ACCEL_X_SENS" value="37.9432590968" integer="16"/>
<define name="ACCEL_Y_SENS" value="38.1066818314" integer="16"/>
<define name="ACCEL_Z_SENS" value="39.5573406045" integer="16"/>

<define name="MAG_X_NEUTRAL" value="-87"/>
<define name="MAG_Y_NEUTRAL" value="52"/>
<define name="MAG_Z_NEUTRAL" value="204"/>
<define name="MAG_X_SENS" value="3.34721858441" integer="16"/>
<define name="MAG_Y_SENS" value="3.63594259705" integer="16"/>
<define name="MAG_Z_SENS" value="3.77850742818" integer="16"/>
<define name="MAG_XY_SENS" value="0.0" integer="16"/>
<define name="MAG_XZ_SENS" value="0.0" integer="16"/>
<define name="MAG_YZ_SENS" value="0.0" integer="16"/>

</section>
</airframe>
59 changes: 23 additions & 36 deletions conf/airframes/esden/jt_lisam.xml
Expand Up @@ -7,8 +7,8 @@
<servo name="A2" no="1" min="1000" neutral="1000" max="2000"/>
<servo name="B1" no="2" min="1000" neutral="1000" max="2000"/>
<servo name="B2" no="3" min="1000" neutral="1000" max="2000"/>
<servo name="AILEVON_LEFT" no="4" min="1000" neutral="1500" max="2000"/>
<servo name="AILEVON_RIGHT" no="5" min="1000" neutral="1500" max="2000"/>
<servo name="AILEVON_LEFT" no="4" min="2000" neutral="1500" max="1000"/>
<servo name="AILEVON_RIGHT" no="5" min="2000" neutral="1500" max="1000"/>
</servos>

<commands>
Expand All @@ -17,22 +17,12 @@
<axis name="YAW" failsafe_value="0"/>
<axis name="THRUST" failsafe_value="0"/>
</commands>

<!--
<command_laws>
<let var="aildderon" value="@ROLL * AILEVON_AILERON_RATE"/>
<let var="elevator" value="@PITCH * AILEVON_ELEVATOR_RATE"/>
<set servo="MOTOR" value="@THROTTLE"/>
<set servo="AILEVON_LEFT" value="$elevator + $aileron"/>
<set servo="AILEVON_RIGHT" value="$elevator - $aileron"/>
<set servo="FRONT" value="0"/>
<set servo="BACK" value="1"/>
<set servo="LEFT" value="2"/>
<set servo="RIGHT" value="3"/>

<command_laws>
<set servo="AILEVON_LEFT" value="@YAW"/>
<set servo="AILEVON_RIGHT" value="@YAW"/>
</command_laws>
-->


<!-- for the sim -->
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
Expand All @@ -41,8 +31,8 @@


<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="1150"/>
<define name="MAX_MOTOR" value="2000"/>
<define name="MIN_MOTOR" value="1100"/>
<define name="MAX_MOTOR" value="1850"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
Expand All @@ -54,7 +44,7 @@
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>

<include href="conf/airframes/esden/calib/aspirin_012.xml"/>
<include href="conf/airframes/esden/calib/aspirin_jtm.xml"/>

<section name="IMU" prefix="IMU_">

Expand Down Expand Up @@ -99,30 +89,30 @@

<!-- reference -->
<define name="REF_OMEGA_P" value="RadOfDeg(600)"/>
<define name="REF_ZETA_P" value="0.85"/>
<define name="REF_ZETA_P" value="0.90"/>
<define name="REF_MAX_P" value="RadOfDeg(400.)"/>
<define name="REF_MAX_PDOT" value="RadOfDeg(8000.)"/>

<define name="REF_OMEGA_Q" value="RadOfDeg(600)"/>
<define name="REF_ZETA_Q" value="0.85"/>
<define name="REF_MAX_Q" value="RadOfDeg(400.)"/>
<define name="REF_OMEGA_Q" value="RadOfDeg(800)"/>
<define name="REF_ZETA_Q" value="0.90"/>
<define name="REF_MAX_Q" value="RadOfDeg(500.)"/>
<define name="REF_MAX_QDOT" value="RadOfDeg(8000.)"/>

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

<!-- feedback -->
<define name="PHI_PGAIN" value="-1900"/>
<define name="PHI_DGAIN" value="-380"/>
<define name="PHI_IGAIN" value="-200"/>
<define name="PHI_PGAIN" value="-750"/>
<define name="PHI_DGAIN" value="-370"/>
<define name="PHI_IGAIN" value="-100"/>

<define name="THETA_PGAIN" value="-1900"/>
<define name="THETA_DGAIN" value="-380"/>
<define name="THETA_IGAIN" value="-200"/>
<define name="THETA_PGAIN" value="-800"/>
<define name="THETA_DGAIN" value="-240"/>
<define name="THETA_IGAIN" value="-100"/>

<define name="PSI_PGAIN" value="-2000"/>
<define name="PSI_PGAIN" value="-6000"/>
<define name="PSI_DGAIN" value="-400"/>
<define name="PSI_IGAIN" value="-10"/>

Expand Down Expand Up @@ -167,10 +157,6 @@
<define name="IGAIN" value="-0"/>
</section>

<section name="MISC">
<define name="FACE_REINJ_1" value="1024"/>
</section>

<section name="SIMULATOR" prefix="NPS_">
<define name="ACTUATOR_NAMES" value="{&quot;front_motor&quot;, &quot;back_motor&quot;, &quot;right_motor&quot;, &quot;left_motor&quot;}"/>
<define name="INITIAL_CONDITITONS" value="&quot;reset00&quot;"/>
Expand All @@ -190,6 +176,7 @@
<subsystem name="actuators" type="pwm_supervision"/>
<subsystem name="telemetry" type="transparent"/>
<define name="SERVO_HZ" value="400"/>
<define name="SERVO_HZ_SECONDARY" value="40"/>
<define name="RADIO_MODE" value="RADIO_AUX2"/>
<define name="RADIO_KILL_SWITCH" value="RADIO_GEAR"/>
<define name="RADIO_CONTROL_SPEKTRUM_SIGNS" value="\{1,1,-1,1,-1,-1,-1,1,1,1,1,1\}"/>
Expand Down
4 changes: 1 addition & 3 deletions conf/airframes/esden/lisa_asctec.xml
Expand Up @@ -180,11 +180,9 @@
<define name="SENSORS_PARAMS" value="&quot;nps_sensors_params_booz2_a1.h&quot;"/>
</section>

<!-- -->
<modules main_freq="512">
<load name="vehicle_interface_overo_link.xml"/>
<!--load name="vehicle_interface_overo_link.xml"/-->
</modules>
<!-- -->

<firmware name="rotorcraft">
<target name="ap" board="lisa_l_1.1">
Expand Down
74 changes: 74 additions & 0 deletions conf/settings/settings_booz2_jtm.xml
@@ -0,0 +1,74 @@
<!DOCTYPE settings SYSTEM "settings.dtd">

<settings>
<dl_settings>

<dl_settings NAME="Misc">
<dl_setting var="telemetry_mode_Main_DefaultChannel" min="0" step="1" max="11" module="telemetry" shortname="telemetry" values="Default|PPM|Raw|Scaled|AHRS|Rate|Attitude|Vertical|Horizontal|Aligner|HS_att_roll|Tune_hover">
<key_press key="d" value="0"/>
<key_press key="v" value="7"/>
<key_press key="h" value="8"/>
</dl_setting>
<dl_setting var="autopilot_mode_auto2" min="0" step="1" max="12" module="autopilot" shortname="auto2" values="Fail|Kill|Rate|Att|Rate_rcC|Att_rcC|Att_C|Rate_Z|Att_Z|Hover|Hover_C|Hover_Z|Nav"/>
<dl_setting var="kill_throttle" min="0" step="1" max="1" module="autopilot" values="Resurrect|Kill" handler="KillThrottle"/>
<dl_setting var="autopilot_power_switch" min="0" step="1" max="1" module="autopilot" values="OFF|ON" handler="SetPowerSwitch">
<strip_button name="POWER ON" icon="on.png" value="1"/>
<strip_button name="POWER OFF" icon="off.png" value="0"/>
</dl_setting>
<dl_setting var="autopilot_rc" min="0" step="1" max="1" module="autopilot" values="RC OFF|RC ON">
<strip_button name="RC ON" value="1"/>
<strip_button name="RC OFF" value="0"/>
</dl_setting>
</dl_settings>

<dl_settings NAME="Rate Loop">
<dl_setting var="stabilization_rate_gain.p" min="-1000" step="1" max="-1" module="stabilization/stabilization_rate" shortname="gain p"/>
<dl_setting var="stabilization_rate_gain.q" min="-1000" step="1" max="-1" module="stabilization/stabilization_rate" shortname="gain q"/>
<dl_setting var="stabilization_rate_gain.r" min="-1000" step="1" max="-1" module="stabilization/stabilization_rate" shortname="gain r"/>
</dl_settings>


<dl_settings NAME="Att Loop">
<dl_setting var="stabilization_gains.p.x" min="-2000" step="1" max="-1" module="stabilization/stabilization_attitude" shortname="pgain phi" />
<dl_setting var="stabilization_gains.d.x" min="-2000" step="1" max="-1" module="stabilization/stabilization_attitude" shortname="dgain p"/>
<dl_setting var="stabilization_gains.i.x" min="-300" step="1" max="0" module="stabilization/stabilization_attitude" shortname="igain phi" handler="SetKiPhi"/>
<dl_setting var="stabilization_gains.dd.x" min="0" step="1" max="1000" module="stabilization/stabilization_attitude" shortname="ddgain p"/>
<dl_setting var="stabilization_gains.p.y" min="-2000" step="1" max="-1" module="stabilization/stabilization_attitude" shortname="pgain theta"/>
<dl_setting var="stabilization_gains.d.y" min="-2000" step="1" max="-1" module="stabilization/stabilization_attitude" shortname="dgain q"/>
<dl_setting var="stabilization_gains.i.y" min="-300" step="1" max="0" module="stabilization/stabilization_attitude" shortname="igain theta"/>
<dl_setting var="stabilization_gains.dd.y" min="0" step="1" max="500" module="stabilization/stabilization_attitude" shortname="ddgain q"/>
<dl_setting var="stabilization_gains.p.z" min="-4000" step="1" max="-1" module="stabilization/stabilization_attitude" shortname="pgain psi"/>
<dl_setting var="stabilization_gains.d.z" min="-8000" step="1" max="-1" module="stabilization/stabilization_attitude" shortname="dgain r"/>
<dl_setting var="stabilization_gains.i.z" min="-800" step="1" max="0" module="stabilization/stabilization_attitude" shortname="igain psi"/>
<dl_setting var="stabilization_gains.dd.z" min="0" step="1" max="2000" module="stabilization/stabilization_attitude" shortname="ddgain r"/>
</dl_settings>

<dl_settings NAME="Vert Loop">
<dl_setting var="guidance_v_kp" min="-600" step="1" max="0" module="guidance/guidance_v" shortname="kp"/>
<dl_setting var="guidance_v_kd" min="-600" step="1" max="0" module="guidance/guidance_v" shortname="kd"/>
<dl_setting var="guidance_v_ki" min="-300" step="1" max="0" module="guidance/guidance_v" shortname="ki" handler="SetKi" />
<dl_setting var="guidance_v_z_sp" min="-5" step="0.5" max="3" module="guidance/guidance_v" shortname="sp" unit="2e-8m" alt_unit="m" alt_unit_coef="0.00390625"/>
<dl_setting var="ins_vf_realign" min="0" step="1" max="1" module="subsystems/ins" shortname="vf_realign" values="OFF|ON"/>
</dl_settings>

<dl_settings NAME="Horiz Loop">
<dl_setting var="guidance_h_pos_sp.x" MIN="-10" MAX="10" STEP="1" module="guidance/guidance_h" shortname="sp_x_ned" unit="1/2^8m" alt_unit="m" alt_unit_coef="0.00390625"/>
<dl_setting var="guidance_h_pos_sp.y" MIN="-10" MAX="10" STEP="1" module="guidance/guidance_h" shortname="sp_y_ned" unit="1/2^8m" alt_unit="m" alt_unit_coef="0.00390625"/>
<dl_setting var="guidance_h_psi_sp" MIN="-180" MAX="180" STEP="5" module="guidance/guidance_h" shortname="sp_psi" unit="1/2^20r" alt_unit="deg" alt_unit_coef="0.000054641513360"/>
<dl_setting var="guidance_h_pgain" min="-400" step="1" max="0" module="guidance/guidance_h" shortname="kp"/>
<dl_setting var="guidance_h_dgain" min="-400" step="1" max="0" module="guidance/guidance_h" shortname="kd"/>
<dl_setting var="guidance_h_igain" min="-400" step="1" max="0" module="guidance/guidance_h" shortname="ki" handler="SetKi"/>
<dl_setting var="guidance_h_ngain" min="-400" step="1" max="0" module="guidance/guidance_h" shortname="kn"/>
<dl_setting var="guidance_h_again" min="-400" step="1" max="0" module="guidance/guidance_h" shortname="ka"/>
<dl_setting var="ins_hf_realign" min="0" step="1" max="1" module="subsystems/ins" shortname="hf_realign" values="OFF|ON"/>
</dl_settings>

<dl_settings NAME="NAV">
<dl_setting var="flight_altitude" MIN="0" STEP="0.1" MAX="400" module="navigation" unit="m" handler="SetFlightAltitude"/>
<dl_setting var="nav_heading" MIN="0" STEP="1" MAX="360" module="navigation" unit="1/2^12r" alt_unit="deg" alt_unit_coef="0.0139882"/>
<dl_setting var="nav_radius" MIN="-150" STEP="0.1" MAX="150" module="navigation" unit="m"/>
</dl_settings>


</dl_settings>
</settings>
Expand Up @@ -31,6 +31,10 @@

#include "generated/airframe.h"

#define actuators actuators_pwm_values
#define Actuator(_x) actuators_pwm_values[_x]
#define ActuatorsCommit() do { } while(0);

int32_t actuators_pwm_values[ACTUATORS_PWM_NB];

void actuators_init(void)
Expand All @@ -43,18 +47,27 @@ void actuators_init(void)
#define PWM_OFF 1000

void actuators_set(bool_t motors_on) {
booz2_commands[COMMAND_PITCH] = booz2_commands[COMMAND_PITCH] * PWM_GAIN_SCALE;
booz2_commands[COMMAND_ROLL] = booz2_commands[COMMAND_ROLL] * PWM_GAIN_SCALE;
booz2_commands[COMMAND_YAW] = booz2_commands[COMMAND_YAW] * PWM_GAIN_SCALE;
booz2_commands[COMMAND_THRUST] = (booz2_commands[COMMAND_THRUST] * ((SUPERVISION_MAX_MOTOR - SUPERVISION_MIN_MOTOR) / 200)) + SUPERVISION_MIN_MOTOR;
int32_t pwm_commands[COMMANDS_NB];
int32_t pwm_commands_pprz[COMMANDS_NB];

pwm_commands[COMMAND_PITCH] = booz2_commands[COMMAND_PITCH] * PWM_GAIN_SCALE;
pwm_commands[COMMAND_ROLL] = booz2_commands[COMMAND_ROLL] * PWM_GAIN_SCALE;
pwm_commands[COMMAND_YAW] = booz2_commands[COMMAND_YAW] * PWM_GAIN_SCALE;
pwm_commands[COMMAND_THRUST] = (booz2_commands[COMMAND_THRUST] * ((SUPERVISION_MAX_MOTOR - SUPERVISION_MIN_MOTOR) / 200)) + SUPERVISION_MIN_MOTOR;

pwm_commands_pprz[COMMAND_PITCH] = booz2_commands[COMMAND_PITCH] * (MAX_PPRZ / 100);
pwm_commands_pprz[COMMAND_ROLL] = booz2_commands[COMMAND_ROLL] * (MAX_PPRZ / 100);
pwm_commands_pprz[COMMAND_YAW] = booz2_commands[COMMAND_YAW] * (MAX_PPRZ / 100);

supervision_run(motors_on, FALSE, booz2_commands);
supervision_run(motors_on, FALSE, pwm_commands);

SetActuatorsFromCommands(pwm_commands_pprz);

if (motors_on) {
for (int i = 0; i < SUPERVISION_NB_MOTOR; i++)
actuators_pwm_values[i] = supervision.commands[i];
} else {
for (int i = 0; i < ACTUATORS_PWM_NB; i++)
for (int i = 0; i < SUPERVISION_NB_MOTOR; i++)
actuators_pwm_values[i] = PWM_OFF;
}
actuators_pwm_commit();
Expand Down
Expand Up @@ -95,6 +95,10 @@ void actuators_pwm_arch_init(void) {
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

#ifdef SERVO_HZ_SECONDARY
TIM_TimeBaseStructure.TIM_Period = (ONE_MHZ_CLK / SERVO_HZ_SECONDARY) - 1;
#endif
TIM_TimeBaseInit(PWM_5AND6_TIMER, &TIM_TimeBaseStructure);
#ifdef USE_SERVOS_7AND8
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
Expand Down
Expand Up @@ -38,7 +38,7 @@
extern void actuators_pwm_arch_init(void);
extern void actuators_pwm_commit(void);

#define ChopServo(x,a,b) Chop(x, a, b)
#define ChopServo(_x,_a,_b) Chop(_x, _a, _b)
#define Actuator(_x) actuators_pwm_values[_x]
#define SERVOS_TICS_OF_USEC(_v) (_v)

Expand Down
2 changes: 2 additions & 0 deletions sw/airborne/lisa/lisa_overo_link.h
Expand Up @@ -36,7 +36,9 @@ extern void overo_link_periodic(void);
extern void overo_link_arch_init(void);
extern void overo_link_arch_prepare_next_transfert(void);

#ifndef SITL
#include "lisa_overo_link_arch.h"
#endif

#if 0 /* that doesn't work yet */
#define OveroLinkPeriodic(_timeout_handler) { \
Expand Down
2 changes: 1 addition & 1 deletion sw/airborne/modules/ins/ins_arduimu_basic.c
Expand Up @@ -74,7 +74,7 @@ void ArduIMU_init( void ) {
ins_roll_neutral = INS_ROLL_NEUTRAL_DEFAULT;
ins_pitch_neutral = INS_PITCH_NEUTRAL_DEFAULT;

high_accel_done = FLASE;
high_accel_done = FALSE;
high_accel_flag = FALSE;
}

Expand Down
4 changes: 2 additions & 2 deletions sw/ground_segment/python/joystick/arduino_dangerboard.py
Expand Up @@ -21,8 +21,8 @@


class arduino_dangerboard():
def __init__(self):
self.port = serial.Serial('/dev/ttyUSB0', 115200)
def __init__(self, port='/dev/ttyUSB0'):
self.port = serial.Serial(port, 115200)
self.SLIDER_COUNT = 3
self.sliders = [0] * self.SLIDER_COUNT
self.POT_MIN = 0.0
Expand Down
15 changes: 10 additions & 5 deletions sw/ground_segment/python/joystick/ivydanger.py
Expand Up @@ -20,9 +20,11 @@
# of sliders!)
DEFAULT_SLIDERS = [ ]

DEFAULT_PORT = '/dev/ttyUSB0'

class IvyStick(arduino_dangerboard):
def __init__(self, ac_ids, settings_names):
arduino_dangerboard.__init__(self)
def __init__(self, ac_ids, settings_names, port):
arduino_dangerboard.__init__(self, port)
if (len(settings_names) > self.SLIDER_COUNT):
raise Exception("Number of settings greater than number of sliders")
if (len(ac_ids) < 1):
Expand Down Expand Up @@ -59,16 +61,17 @@ def Usage(scmd):
\t-h | --help print this message
\t-a AC_ID | --ac_id=AC_ID where AC_ID is an aircraft ID to use for settings (multiple IDs may be passed)
\t-s S1:S2:S3 | --sliders=S1:S2:S3 where S1, S2, S3 are the names of the slider settings to send
\t-p PORT | --port=PORT where PORT is the name of the serial port for the slider box
'''
print fmt % lpathitem[-1]

def GetOptions():
# Map dangerboard sliders to these settings from aircraft settings
# file, in that order (dimension of this list needs to match number
# of sliders!)
options = {'ac_id':DEFAULT_AC_IDS, 'sliders':DEFAULT_SLIDERS}
options = {'ac_id':DEFAULT_AC_IDS, 'sliders':DEFAULT_SLIDERS, 'port':DEFAULT_PORT}
try:
optlist, left_args = getopt.getopt(sys.argv[1:],'h:a:s:', ['help', 'ac_id=', 'sliders='])
optlist, left_args = getopt.getopt(sys.argv[1:],'h:a:s:p:', ['help', 'ac_id=', 'sliders=', 'port='])
except getopt.GetoptError:
# print help information and exit:
Usage(sys.argv[0])
Expand All @@ -81,6 +84,8 @@ def GetOptions():
options['ac_id'] = [ int(a) ]
elif o in ("-s", "--sliders"):
options['sliders'] = a.split(':')
elif o in ("-p", "--port"):
options['port'] = a

return options

Expand All @@ -91,7 +96,7 @@ def main():
signal.signal(signal.SIGINT, signal_handler)

options = GetOptions()
ivyStick = IvyStick(options['ac_id'], options['sliders'])
ivyStick = IvyStick(options['ac_id'], options['sliders'], options['port'])
ivyStick.poll()

if __name__ == '__main__':
Expand Down

0 comments on commit a22ff3b

Please sign in to comment.