Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!-- TILTROTOR FH-AACHEN
- Bachelorarbeit von MERKEL Kevin, 01.03.16 - 01.08.16 -->
- <!DOCTYPE airframe SYSTEM "../airframe.dtd">
- <airframe name="Tiltrotor">
- <!-- FIRMWARE & SUBSYSTEMS -->
- <firmware name="rotorcraft">
- <target name="nps" board="pc">
- <subsystem name="fdm" type="jsbsim"/>
- </target>
- <target name="ap" board="lisa_mx_2.1"/>
- <!-- Lisa M V2.1 is designed for the aspirin_v2.1 -->
- <subsystem name="imu" type="aspirin_v2.1"/>
- <subsystem name="ahrs" type="int_cmpl_euler"/>
- <subsystem name="radio_control" type="ppm">
- <!-- Put the mode on channel AUX1>
- <define name="RADIO_MODE" value="RADIO_AUX1"/-->
- </subsystem>
- <subsystem name="telemetry" type="xbee_api"/>
- <subsystem name="actuators" type="pwm">
- <define name="SERVO_HZ" value="400"/>
- </subsystem>
- <subsystem name="stabilization" type="int_euler"/>
- <subsystem name="ins"/>
- </firmware>
- <!-- SERVOS -->
- <servos driver="Pwm">
- <servo name="FT" no="0" min="1000" neutral="1050" max="2000"/>
- <servo name="FB" no="1" min="1000" neutral="1050" max="2000"/>
- <servo name="BL" no="2" min="1000" neutral="1050" max="2000"/>
- <servo name="BR" no="3" min="1000" neutral="1050" max="2000"/>
- <servo name="ELEVON_LEFT" no="4" min="1000" neutral="1500" max="2000"/>
- <servo name="ELEVON_RIGHT" no="5" min="1000" neutral="1500" max="2000"/>
- <servo name="TILT" no="6" min="1000" neutral="1500" max="2000"/>
- </servos>
- <commands>
- <axis name="PITCH" failsafe_value="0"/>
- <axis name="ROLL" failsafe_value="0"/>
- <axis name="YAW" failsafe_value="0"/>
- <axis name="THRUST" failsafe_value="0"/>
- </commands>
- <command_laws>
- <call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
- <set servo="FT" value="motor_mixing.commands[0]"/>
- <set servo="FB" value="motor_mixing.commands[1]"/>
- <set servo="BL" value="motor_mixing.commands[2]"/>
- <set servo="BR" value="motor_mixing.commands[3]"/>
- <!-- Definition von Variabeln die den Elevons für Hover- oder für Flugphase zugeordnet werden. Muss noch editiert werden! -->
- <let var="hover_left" value="0"/>
- <let var="hover_right" value="0"/>
- <let var="forward_left" value="0"/>
- <let var="forward_right" value="0"/>
- <!-- Wenn der AP_MODE auf AP_MODE_ATTITUDE_DIRECT eingestellt ist, werden die Werte für hover abgerufen, ansonsten die für flight -->
- <set servo="ELEVON_LEFT" value="AP_MODE == AP_MODE_RC_DIRECT ? $hover_left : $forward_left" />
- <set servo="ELEVON_RIGHT" value="AP_MODE == AP_MODE_RC_DIRECT ? $hover_right : $forward_right" />
- </command_laws>
- <!-- MOTOR-MIXING -->
- <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"/>
- <!-- Variabeln der Motormatrizen für die unterschiedlichen Flugmodi
- Hover-Flugmodus: >
- <let var="hover_pitch" value="{ 256, 256, -256, -256 }"/>
- <let var="hover_roll" value="{0, 0, -256, 256 }"/>
- <let var="hover_yaw" value="{ -256, 256, 0, 0 }"/>
- <let var="hover_thrust" value="{ 256, 256, 256, 256 }"/>
- <! Flight-Flugmodus: >
- <let var="flight_pitch" value="{ 0, 0, 0, 0 }"/>
- <let var="flight_roll" value="{ 0, 0, 0, 0 }"/>
- <let var="flight_yaw" value="{ 0, 0, 0, 0 }"/>
- <let var="flight_thrust" value="{ 256, 256, 0, 0 }"/-->
- <define name="PITCH_COEF" value="{ 256, 256, -256, -256 }"/>
- <define name="ROLL_COEF" value="{0, 0, -256, 256 }"/>
- <define name="YAW_COEF" value="{ -256, 256, 0, 0 }"/>
- <define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
- </section>
- <!-- AUTOPILOT -->
- <!-- Für Testzwecke, sollte unbedingt AP_MODE_KILL mit eingebaut werden um die Motoren zu jedem Zeitpunkt abschalten zu können -->
- <section name="AUTOPILOT">
- <define name="MODE_MANUAL" value="AP_MODE_KILL"/>
- <!-- AP_MODE_TRANSITION und AP_MODE_FLIGHT müssen in einem eigenen CTRL File programmiert werden -->
- <define name="MODE_AUTO1" value="AP_MODE_RC_DIRECT"/>
- <define name="MODE_AUTO2" value="AP_MODE_ATTITUDE_DIRECT"/>
- <define name="USE_THROTTLE_FOR_MOTOR_ARMING" value="TRUE"/>
- </section>
- <!--section name="BAT">
- <define name="MIN_BAT_LEVEL" value="10.4" units="V"/>
- <define name="CATASTROPHIC_BAT_LEVEL" value="9.3" unit="V"/>
- </section-->
- <!-- GAIN-SETS -->
- <section name="GUIDANCE_V" prefix="GUIDANCE_V_">
- <define name="HOVER_KP" value="150"/>
- <define name="HOVER_KD" value="80"/>
- <define name="HOVER_KI" value="20"/>
- <!-- optional parameters
- <define name="NOMINAL_HOVER_THROTTLE" value="0.5"/>
- <define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/>
- <define name="REF_MIN_ZD" value="-3.0" unit="m/s"/>
- <define name="REF_MAX_ZD" value="3.0" unit="m/s"/>
- <define name="MAX_RC_CLIMB_SPEED" value="-3.0" unit="m/s"/>
- <define name="MAX_RC_DESCENT_SPEED" value="3.0" unit="m/s"/-->
- </section>
- <section name="GUIDANCE_H" prefix="GUIDANCE_H_">
- <define name="PGAIN" value="50"/>
- <define name="DGAIN" value="100"/>
- <define name="IGAIN" value="20"/>
- <!-- optional parameters
- <define name="AGAIN" value="0"/>
- <define name="VGAIN" value="0"/>
- <define name="MAX_BANK" value="20" unit="deg"/>
- <define name="USE_SPEED_REF" value="TRUE"/>
- <define name="REF_MAX_SPEED" value="5.0" unit="m/s"/>
- <define name="REF_MAX_ACCEL" value="5.66" unit="m/s2"/>
- <define name="REF_OMEGA" value="67" unit="deg"/>
- <define name="REF_ZETA" value="0.85"/>
- <define name="REF_TAU" value="0.5"/>
- <define name="APPROX_FORCE_BY_THRUST" value="FALSE"/-->
- </section>
- <!-- STABILIZATION -->
- <section name="STABILIZATION_ATTITUDE" prefix="STABILIZATION_ATTITUDE_">
- <!-- setpoints -->
- <define name="SP_MAX_PHI" value="45." unit="deg"/>
- <define name="SP_MAX_THETA" value="45." unit="deg"/>
- <define name="SP_MAX_R" value="90." unit="deg/s"/>
- <define name="DEADBAND_A" value="0"/>
- <define name="DEADBAND_E" value="0"/>
- <define name="DEADBAND_R" value="250"/>
- <!-- reference -->
- <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.)"/>
- <!-- feedback -->
- <define name="PHI_PGAIN" value="1000"/>
- <define name="PHI_DGAIN" value="400"/>
- <define name="PHI_IGAIN" value="200"/>
- <define name="THETA_PGAIN" value="1000"/>
- <define name="THETA_DGAIN" value="400"/>
- <define name="THETA_IGAIN" value="200"/>
- <define name="PSI_PGAIN" value="500"/>
- <define name="PSI_DGAIN" value="300"/>
- <define name="PSI_IGAIN" value="10"/>
- <!-- feedforward -->
- <define name="PHI_DDGAIN" value="300"/>
- <define name="THETA_DDGAIN" value="300"/>
- <define name="PSI_DDGAIN" value="300"/>
- </section>
- </airframe>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement