Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
aka big fat attempt to finally clean up the callbacks, threads, io and other stuff 1) Two sample configuration files: * hexarotor Lia with GX3 * hexarotor Lia with Aspirin 2) Clean up in the rotorcraft_rt.makefile 3) Aspirin and MS5611 SPI drivers are now compatible with ChibiOS 4) Improved default chibios telemetry (more information) 5) Cleaned up drivers (ADC, SPI, I2C, UART) 6) Cleaned up board config files 7) Cleaned up error logging for uart (GPS/Telemetry threads) 8) Improved thread structure in main_chibios.c
- Loading branch information
Showing
32 changed files
with
1,631 additions
and
248 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,216 @@ | ||
<!DOCTYPE airframe SYSTEM "../airframe.dtd"> | ||
|
||
<!-- an example of hexarotor airframe for ChibiOS/RT Paparazzi | ||
* Autopilot: Lia 1.1 | ||
* IMU: Aspirin 2.2 | ||
* Actuators: PWM motor controllers | ||
* GPS: Ublox | ||
* RC: Turnigy 9XR PPM radio | ||
modified by: AggieAir, A Remote Sensing Unmanned Aerial System for Scientific Applications | ||
Utah State University, http://aggieair.usu.edu/ | ||
2013 | ||
--> | ||
|
||
<airframe name="Hexarotor Lia TEST RT"> | ||
|
||
<firmware name="rotorcraft_rt"> | ||
<target name="ap" board="lia_1.1_chibios"> | ||
<subsystem name="radio_control" type="ppm"> | ||
<configure name="RADIO_CONTROL_PPM_PIN" value="UART1_RX"/> | ||
</subsystem> | ||
<configure name="FLASH_MODE" value="JTAG"/> | ||
</target> | ||
|
||
<subsystem name="motor_mixing"/> | ||
<subsystem name="actuators" type="pwm"> | ||
<define name="SERVO_HZ" value="500"/> | ||
</subsystem> | ||
|
||
<subsystem name="telemetry" type="transparent"/> | ||
<subsystem name="imu" type="aspirin_v2.2"/> | ||
<subsystem name="gps" type="ublox"> | ||
<configure name="GPS_PORT" value="UART5"/> | ||
<configure name="GPS_BAUD" value="B115200"/> | ||
</subsystem> | ||
<subsystem name="stabilization" type="int_quat"/> | ||
<subsystem name="ahrs" type="int_cmpl_quat"> | ||
<define name="AHRS_GRAVITY_HEURISTIC_FACTOR" value="30"/> | ||
</subsystem> | ||
<subsystem name="ins"/> | ||
</firmware> | ||
|
||
<modules main_freq="500"> | ||
</modules> | ||
|
||
<servos driver="Pwm"> | ||
<servo name="FRONT_RIGHT" no="0" min="1000" neutral="1100" max="1900"/> | ||
<servo name="CENTER_RIGHT" no="1" min="1000" neutral="1100" max="1900"/> | ||
<servo name="BACK_RIGHT" no="2" min="1000" neutral="1100" max="1900"/> | ||
<servo name="BACK_LEFT" no="3" min="1000" neutral="1100" max="1900"/> | ||
<servo name="CENTER_LEFT" no="4" min="1000" neutral="1100" max="1900"/> | ||
<servo name="FRONT_LEFT" no="5" min="1000" neutral="1100" max="1900"/> | ||
</servos> | ||
|
||
<commands> | ||
<axis name="ROLL" failsafe_value="0"/> | ||
<axis name="PITCH" failsafe_value="0"/> | ||
<axis name="YAW" failsafe_value="0"/> | ||
<axis name="THRUST" failsafe_value="0"/> | ||
</commands> | ||
|
||
<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="6"/> | ||
<define name="SCALE" value="256"/> | ||
<!-- Time-cross, front right CW, front left CCW --> | ||
<define name="ROLL_COEF" value="{ -128, -256, -128, 128, 256, 128 }"/> | ||
<define name="PITCH_COEF" value="{ 256, 0, -256, -256, 0, 256 }"/> | ||
<define name="YAW_COEF" value="{ -128, 128, -128, 128, -128, 128 }"/> | ||
<define name="THRUST_COEF" value="{ 256, 256, 256, 256, 256, 256 }"/> | ||
</section> | ||
|
||
<command_laws> | ||
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/> | ||
<set servo="FRONT_RIGHT" value="motor_mixing.commands[SERVO_FRONT_RIGHT]"/> | ||
<set servo="CENTER_RIGHT" value="motor_mixing.commands[SERVO_CENTER_RIGHT]"/> | ||
<set servo="BACK_RIGHT" value="motor_mixing.commands[SERVO_BACK_RIGHT]"/> | ||
<set servo="BACK_LEFT" value="motor_mixing.commands[SERVO_BACK_LEFT]"/> | ||
<set servo="CENTER_LEFT" value="motor_mixing.commands[SERVO_CENTER_LEFT]"/> | ||
<set servo="FRONT_LEFT" value="motor_mixing.commands[SERVO_FRONT_LEFT]"/> | ||
</command_laws> | ||
|
||
<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"/> | ||
|
||
<define name="ACCEL_X_NEUTRAL" value="11"/> | ||
<define name="ACCEL_Y_NEUTRAL" value="11"/> | ||
<define name="ACCEL_Z_NEUTRAL" value="-25"/> | ||
|
||
<!-- replace this with your own calibration --> | ||
<define name="MAG_X_NEUTRAL" value="-179"/> | ||
<define name="MAG_Y_NEUTRAL" value="-21"/> | ||
<define name="MAG_Z_NEUTRAL" value="79"/> | ||
<define name="MAG_X_SENS" value="4.17334785618" integer="16"/> | ||
<define name="MAG_Y_SENS" value="3.98885954135" integer="16"/> | ||
<define name="MAG_Z_SENS" value="4.40442339014" integer="16"/> | ||
</section> | ||
|
||
<section name="AHRS" prefix="AHRS_"> | ||
<define name="H_X" value="0.3770441"/> | ||
<define name="H_Y" value="0.0193986"/> | ||
<define name="H_Z" value="0.9259921"/> | ||
</section> | ||
|
||
<section name="INS" prefix="INS_"> | ||
</section> | ||
|
||
<section name="STABILIZATION_RATE" prefix="STABILIZATION_RATE_"> | ||
<!-- setpoints --> | ||
<define name="SP_MAX_P" value="10000"/> | ||
<define name="SP_MAX_Q" value="10000"/> | ||
<define name="SP_MAX_R" value="10000"/> | ||
<define name="DEADBAND_P" value="20"/> | ||
<define name="DEADBAND_Q" value="20"/> | ||
<define name="DEADBAND_R" value="200"/> | ||
<define name="REF_TAU" value="4"/> | ||
|
||
<!-- feedback --> | ||
<define name="GAIN_P" value="400"/> | ||
<define name="GAIN_Q" value="400"/> | ||
<define name="GAIN_R" value="350"/> | ||
|
||
<define name="IGAIN_P" value="75"/> | ||
<define name="IGAIN_Q" value="75"/> | ||
<define name="IGAIN_R" value="50"/> | ||
|
||
<!-- feedforward --> | ||
<define name="DDGAIN_P" value="300"/> | ||
<define name="DDGAIN_Q" value="300"/> | ||
<define name="DDGAIN_R" value="300"/> | ||
</section> | ||
|
||
<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.)"/> | ||
|
||
<!-- Competition Gains --> | ||
<define name="PHI_PGAIN" value="1800"/> | ||
<define name="PHI_DGAIN" value="900"/> | ||
<define name="PHI_IGAIN" value="2"/> | ||
|
||
<define name="THETA_PGAIN" value="1800"/> | ||
<define name="THETA_DGAIN" value="900"/> | ||
<define name="THETA_IGAIN" value="2"/> | ||
|
||
<define name="PSI_PGAIN" value="3000"/> | ||
<define name="PSI_DGAIN" value="3400"/> | ||
<define name="PSI_IGAIN" value="10"/> | ||
|
||
<!-- feedforward --> | ||
<define name="PHI_DDGAIN" value="20"/> | ||
<define name="THETA_DDGAIN" value="20"/> | ||
<define name="PSI_DDGAIN" value="10"/> | ||
</section> | ||
|
||
<section name="GUIDANCE_V" prefix="GUIDANCE_V_"> | ||
<define name="MIN_ERR_Z" value="POS_BFP_OF_REAL(-10.)"/> | ||
<define name="MAX_ERR_Z" value="POS_BFP_OF_REAL( 10.)"/> | ||
<define name="MIN_ERR_ZD" value="SPEED_BFP_OF_REAL(-10.)"/> | ||
<define name="MAX_ERR_ZD" value="SPEED_BFP_OF_REAL( 10.)"/> | ||
<define name="MAX_SUM_ERR" value="2000000"/> | ||
<define name="HOVER_KP" value="150"/> | ||
<define name="HOVER_KD" value="80"/> | ||
<define name="HOVER_KI" value="20"/> | ||
<define name="NOMINAL_HOVER_THROTTLE" value="0.5"/> | ||
<define name="ADAPT_THROTTLE_ENABLED" value="TRUE"/> | ||
</section> | ||
|
||
<section name="GUIDANCE_H" prefix="GUIDANCE_H_"> | ||
<define name="MAX_BANK" value="20" unit="deg"/> | ||
<define name="USE_SPEED_REF" value="TRUE"/> | ||
<define name="PGAIN" value="50"/> | ||
<define name="DGAIN" value="100"/> | ||
<define name="AGAIN" value="100"/> | ||
<define name="IGAIN" value="20"/> | ||
</section> | ||
|
||
<section name="AUTOPILOT"> | ||
<define name="MODE_MANUAL" value="AP_MODE_ATTITUDE_DIRECT"/> | ||
<define name="MODE_AUTO1" value="AP_MODE_ATTITUDE_Z_HOLD"/> | ||
<define name="MODE_AUTO2" value="AP_MODE_NAV"/> | ||
</section> | ||
|
||
<section name="BAT"> | ||
<define name="CATASTROPHIC_BAT_LEVEL" value="13.6" unit="V"/> | ||
<define name="CRITIC_BAT_LEVEL" value="13.8" unit="V"/> | ||
<define name="LOW_BAT_LEVEL" value="14.0" unit="V"/> | ||
<define name="MAX_BAT_LEVEL" value="17.0" unit="V"/> | ||
</section> | ||
|
||
</airframe> |
Oops, something went wrong.