Merge pull request #306 from paparazzi/actuators

generic and more flexible actuators
This commit is contained in:
Gautier Hattenberger
2012-10-24 01:25:29 -07:00
142 changed files with 1683 additions and 1625 deletions
+1 -2
View File
@@ -106,7 +106,6 @@
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
@@ -265,7 +264,7 @@
<subsystem name="radio_control" type="ppm"/>
<!-- split of ap/fbw specific subsystems for fbw -->
<subsystem name="actuators" type="direct"/>
<subsystem name="actuators" type="pwm"/>
<subsystem name="intermcu" type="uart">
<configure name="INTERMCU_PORT_NR" value="2"/>
</subsystem>
+1 -1
View File
@@ -2,7 +2,7 @@
<airframe name="TwinStarXSens">
<servos>
<servos driver="Ppm">
<servo name="THROTTLE_LEFT" no="1" min="1100" neutral="1100" max="1900"/>
<servo name="THROTTLE_RIGHT" no="0" min="1100" neutral="1100" max="1900"/>
<servo name="AILERON_RIGHT" no="2" min="2300" neutral="1550" max="700"/>
@@ -79,7 +79,6 @@
<section name="MISC">
<define name="NOMINAL_AIRSPEED" value="13." unit="m/s"/>
<define name="CARROT" value="5." unit="s"/>
<define name="CONTROL_RATE" value="60" unit="Hz"/>
<!-- <define name="XBEE_INIT" value="&quot;ATPL2\rATRN5\rATTT80\r&quot;"/>
<define name="NO_XBEE_API_INIT" value="TRUE"/> -->
<define name="ALT_KALMAN_ENABLED" value="TRUE"/>
+45 -45
View File
@@ -1,12 +1,11 @@
<!DOCTYPE airframe SYSTEM "../../airframe.dtd">
<airframe name="Blender">
<modules main_freq="512">
<load name="booz_pwm.xml">
<define name="USE_PWM0"/>
</load>
<load name="booz_drop.xml"/>
<load name="booz_cam.xml"/>
<load name="sonar_maxbotix_booz.xml"/>
<load name="servo_switch.xml"/>
<load name="rotorcraft_cam.xml"/>
<!--load name="sonar_maxbotix_booz.xml"/-->
<!--load name="adc_generic.xml">
<configure name="ADC_CHANNEL_GENERIC1" value="ADC_0"/>
</load-->
@@ -30,21 +29,40 @@
<subsystem name="actuators" type="skiron">
<define name="SKIRON_I2C_SCL_TIME" value="25"/>
</subsystem>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="pwm">
<define name="USE_PWM0"/>
</subsystem>
<subsystem name="imu" type="navgo"/>
<subsystem name="gps" type="ublox">
<configure name="GPS_BAUD" value="B57600"/>
</subsystem>
<subsystem name="stabilization" type="euler"/>
<subsystem name="ahrs" type="int_cmpl_quat"/>
<subsystem name="ins" type="extended"/>
<subsystem name="ins" type="hff"/>
</firmware>
<servos>
<servo name="FRONT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK" no="2" min="0" neutral="0" max="255"/>
<servo name="RIGHT" no="1" min="0" neutral="0" max="255"/>
<servo name="LEFT" no="3" min="0" neutral="0" max="255"/>
<section name="MIXING" prefix="MOTOR_MIXING_">
<define name="TRIM_ROLL" value="-50"/>
<define name="TRIM_PITCH" value="-150"/>
<define name="TRIM_YAW" value="-100"/>
<define name="NB_MOTOR" value="4"/>
<define name="SCALE" value="256"/>
<define name="ROLL_COEF" value="{ 0, -256, 0, 256}"/>
<define name="PITCH_COEF" value="{ 256, 0, -256, 0}"/>
<define name="YAW_COEF" value="{ -256, 256, -256, 256}"/>
<define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/>
</section>
<servos driver="Skiron">
<servo name="FRONT" no="0" min="0" neutral="20" max="255"/>
<servo name="RIGHT" no="1" min="0" neutral="20" max="255"/>
<servo name="BACK" no="2" min="0" neutral="20" max="255"/>
<servo name="LEFT" no="3" min="0" neutral="20" max="255"/>
</servos>
<servos driver="Pwm">
<servo name="DROP" no="0" min="1000" neutral="1500" max="2000"/>
</servos>
<commands>
@@ -54,24 +72,13 @@
<axis name="THRUST" failsafe_value="0"/>
</commands>
<section name="ACTUATORS_SKIRON" prefix="ACTUATORS_SKIRON_">
<define name="NB" value="4"/>
<define name="IDX" value="{ SERVO_FRONT, SERVO_BACK, SERVO_RIGHT, SERVO_LEFT }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="20"/>
<define name="MAX_MOTOR" value="255"/>
<define name="TRIM_A" value="-50"/>
<define name="TRIM_E" value="-150"/>
<define name="TRIM_R" value="-100"/>
<define name="NB_MOTOR" value="4"/>
<define name="SCALE" value="256"/>
<define name="ROLL_COEF" value="{ 0, 0, -256, 256}"/>
<define name="PITCH_COEF" value="{ 256, -256, 0, 0}"/>
<define name="YAW_COEF" value="{ -256, -256, 256, 256}"/>
<define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
@@ -250,25 +257,18 @@
<define name="BOOZ_FMS_TIMEOUT" value="0"/>
</section>
<section name="CAM" prefix="BOOZ_CAM_">
<!--define name="TILT_NEUTRAL" value="1500"/>
<define name="TILT_MIN" value="1060"/>
<define name="TILT_MAX" value="2250"/>
<define name="TILT_ANGLE_MIN" value="-90." unit="deg"/>
<define name="TILT_ANGLE_MAX" value=" 0." unit="deg"/-->
<define name="PAN_NEUTRAL" value="0"/>
<define name="PAN_MIN" value="0"/>
<define name="PAN_MAX" value="25736"/> <!-- 360 deg (2^12) -->
<define name="DEFAULT_MODE" value="BOOZ_CAM_MODE_MANUAL"/>
<section name="CAM" prefix="ROTORCRAFT_CAM_">
<define name="DEFAULT_MODE" value="ROTORCRAFT_CAM_MODE_MANUAL"/>
<define name="ON" value="{}"/>
<define name="OFF" value="{}"/>
<!--define name="SetPwm(_v)" value="Booz2SetPwm1Value(_v)"/-->
</section>
<section name="DROP">
<define name="DROP_SERVO_CLOSED" value="2000"/>
<define name="DROP_SERVO_OPEN" value="1000"/>
<define name="BoozDropPwm(_v)" value="BoozSetPwm0Value(_v)"/>
<section name="SERVO_SWITCH">
<define name="SERVO_SWITCH_SERVO" value="DROP"/>
<define name="SERVO_SWITCH_ON_VALUE" value="SERVO_DROP_MIN"/>
<define name="SERVO_SWITCH_OFF_VALUE" value="SERVO_DROP_MAX"/>
<define name="DropOpen()" value="ServoSwitchOn()"/>
<define name="DropClose()" value="ServoSwitchOff()"/>
</section>
<section name="MISC">
+35 -35
View File
@@ -1,11 +1,8 @@
<airframe name="BOOZ2_G1">
<modules main_freq="512">
<load name="booz_pwm.xml">
<define name="USE_PWM1"/>
</load>
<load name="booz_drop.xml"/>
<load name="booz_cam.xml"/>
<load name="servo_switch.xml"/>
<load name="rotorcraft_cam.xml"/>
<!--load name="sonar_maxbotix_booz.xml"/-->
<!--load name="adc_generic_booz.xml"/-->
<!--load name="sys_mon.xml"/-->
@@ -27,28 +24,29 @@
<subsystem name="radio_control" type="ppm"/>
<subsystem name="telemetry" type="transparent"/>
<subsystem name="actuators" type="asctec"/>
<subsystem name="actuators" type="pwm">
<define name="USE_PWM0"/>
<define name="USE_PWM1"/>
</subsystem>
<subsystem name="imu" type="b2_v1.1"/>
<subsystem name="gps" type="ublox">
<configure name="GPS_BAUD" value="B57600"/>
</subsystem>
<subsystem name="stabilization" type="euler"/>
<subsystem name="ahrs" type="int_cmpl_euler"/>
<subsystem name="ins"/>
<subsystem name="ins" type="hff"/>
</firmware>
<firmware name="booz_test_progs">
<target name="test_telemetry" board="booz_1.0"/>
<target name="test_baro" board="booz_1.0"/>
<target name="test_rc_spektrum" board="booz_1.0"/>
<target name="test_rc_ppm" board="booz_1.0"/>
</firmware>
<servos driver="Asctec">
<servo name="PITCH" no="0" min="-100" neutral="0" max="100"/>
<servo name="ROLL" no="1" min="-100" neutral="0" max="100"/>
<servo name="YAW" no="2" min="-100" neutral="0" max="100"/>
<servo name="THRUST" no="3" min="0" neutral="0" max="200"/>
</servos>
<servos>
<servo name="PITCH" no="0" min="0" neutral="0" max="255"/>
<servo name="ROLL" no="1" min="0" neutral="0" max="255"/>
<servo name="YAW" no="2" min="0" neutral="0" max="255"/>
<servo name="THRUST" no="3" min="0" neutral="0" max="255"/>
<servos driver="Pwm">
<servo name="SWITCH" no="0" min="1060" neutral="1500" max="2120"/>
<servo name="CAM" no="1" min="1000" neutral="1500" max="2300"/>
</servos>
<commands>
@@ -58,12 +56,19 @@
<axis name="THRUST" failsafe_value="0"/>
</commands>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="6"/>
<define name="TRIM_R" value="0"/>
<section name="TRIM">
<define name="TRIM_ROLL" value="0"/>
<define name="TRIM_PITCH" value="6"/>
<define name="TRIM_YAW" value="0"/>
</section>
<command_laws>
<set servo="PITCH" value="@PITCH - TRIM_PITCH"/>
<set servo="ROLL" value="@ROLL - TRIM_ROLL"/>
<set servo="YAW" value="@YAW - TRIM_YAW"/>
<set servo="THRUST" value="@THRUST"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="32238"/>
@@ -208,24 +213,19 @@
<define name="BOOZ_FMS_TIMEOUT" value="0"/>
</section>
<section name="CAM" prefix="BOOZ_CAM_">
<section name="CAM" prefix="ROTORCRAFT_CAM_">
<define name="ON" value="LED_ON(CAM_SWITCH_LED)"/>
<define name="OFF" value="LED_OFF(CAM_SWITCH_LED)"/>
<define name="TILT_NEUTRAL" value="1500"/>
<define name="TILT_MAX" value="1000"/>
<define name="TILT_MIN" value="2300"/>
<define name="TILT_ANGLE_MIN" value="-90." unit="deg"/>
<define name="TILT_ANGLE_MAX" value=" 10." unit="deg"/>
<define name="PAN_NEUTRAL" value="0"/>
<define name="PAN_MIN" value="0"/>
<define name="PAN_MAX" value="25736"/> <!-- 360 deg (2^12) -->
<define name="SetPwm(_v)" value="BoozSetPwm1Value(_v)"/>
<define name="TILT_SERVO" value="CAM"/>
<define name="TILT_ANGLE_MAX" value="-90." unit="deg"/>
<define name="TILT_ANGLE_MIN" value=" 10." unit="deg"/>
</section>
<section name="DROP">
<define name="DROP_SERVO_CLOSED" value="2120"/>
<define name="DROP_SERVO_OPEN" value="1060"/>
<!--define name="BoozDropPwm(_v)" value="BoozSetPwm0Value(_v)"/-->
<section name="SERVO_SWITCH">
<define name="SERVO_SWITCH_ON_VALUE" value="SERVO_SWITCH_MIN"/>
<define name="SERVO_SWITCH_OFF_VALUE" value="SERVO_SWITCH_MAX"/>
<define name="DropOpen()" value="ServoSwitchOn()"/>
<define name="DropClose()" value="ServoSwitchOff()"/>
</section>
<section name="MISC">
@@ -24,6 +24,7 @@
<subsystem name="telemetry" type="xbee_api">
<configure name="MODEM_BAUD" value="B38400"/>
</subsystem>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="mkk"/>
<subsystem name="imu" type="aspirin_v1.5"/>
<subsystem name="gps" type="ublox">
@@ -70,11 +71,16 @@
</firmware>
-->
<servos>
<servo name="FRONT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK" no="1" min="0" neutral="0" max="255"/>
<servo name="RIGHT" no="2" min="0" neutral="0" max="255"/>
<servo name="LEFT" no="3" min="0" neutral="0" max="255"/>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<servos driver="Mkk">
<servo name="FRONT" no="0" min="0" neutral="2" max="210"/>
<servo name="BACK" no="1" min="0" neutral="2" max="210"/>
<servo name="RIGHT" no="2" min="0" neutral="2" max="210"/>
<servo name="LEFT" no="3" min="0" neutral="2" max="210"/>
</servos>
<commands>
@@ -84,17 +90,10 @@
<axis name="THRUST" failsafe_value="0"/>
</commands>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="2"/>
<define name="MAX_MOTOR" value="210"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<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"/>
<define name="ROLL_COEF" value="{ 0, 0, -256, 256 }"/>
@@ -103,6 +102,14 @@
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="32581"/>
<define name="GYRO_Q_NEUTRAL" value="32008"/>
@@ -23,6 +23,7 @@
<subsystem name="radio_control" type="ppm"/>
</target>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="mkk"/>
<subsystem name="telemetry" type="transparent"/>
<subsystem name="imu" type="b2_v1.2"/>
@@ -70,11 +71,16 @@
</firmware>
-->
<servos>
<servo name="FRONT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK" no="1" min="0" neutral="0" max="255"/>
<servo name="RIGHT" no="2" min="0" neutral="0" max="255"/>
<servo name="LEFT" no="3" min="0" neutral="0" max="255"/>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<servos driver="Mkk">
<servo name="FRONT" no="0" min="0" neutral="2" max="210"/>
<servo name="BACK" no="1" min="0" neutral="2" max="210"/>
<servo name="RIGHT" no="2" min="0" neutral="2" max="210"/>
<servo name="LEFT" no="3" min="0" neutral="2" max="210"/>
</servos>
<commands>
@@ -84,19 +90,10 @@
<axis name="THRUST" failsafe_value="0"/>
</commands>
<!-- for the sim -->
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="2"/>
<define name="MAX_MOTOR" value="210"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<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"/>
<define name="ROLL_COEF" value="{ 0, 0, -256, 256 }"/>
@@ -105,6 +102,14 @@
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="32581"/>
<define name="GYRO_Q_NEUTRAL" value="32008"/>
+6 -18
View File
@@ -1,21 +1,18 @@
<!-- Paparazzi airframe DTD -->
<!ELEMENT airframe (include|servos|commands|csc_boards|rc_commands|auto_rc_commands|ap_only_commands|command_laws|section|makefile|modules|firmware)*>
<!ELEMENT airframe (include|servos|commands|rc_commands|auto_rc_commands|ap_only_commands|command_laws|section|makefile|modules|firmware)*>
<!ELEMENT include EMPTY>
<!ELEMENT servos (servo)*>
<!ELEMENT commands (axis)*>
<!ELEMENT csc_boards (board)*>
<!ELEMENT board (msg)*>
<!ELEMENT msg (field_map)*>
<!ELEMENT field_map EMPTY>
<!ELEMENT rc_commands (set)*>
<!ELEMENT auto_rc_commands (set)*>
<!ELEMENT ap_only_commands (copy)*>
<!ELEMENT command_laws (let|set|ratelimit)*>
<!ELEMENT command_laws (let|set|call|ratelimit)*>
<!ELEMENT section (define|linear)*>
<!ELEMENT servo EMPTY>
<!ELEMENT axis EMPTY>
<!ELEMENT set EMPTY>
<!ELEMENT call EMPTY>
<!ELEMENT ratelimit EMPTY>
<!ELEMENT copy EMPTY>
<!ELEMENT let EMPTY>
@@ -54,7 +51,6 @@ driver CDATA #IMPLIED>
<!ATTLIST rc_commands>
<!ATTLIST ap_only_commands>
<!ATTLIST command_laws>
<!ATTLIST csc_boards>
<!ATTLIST section
name CDATA #IMPLIED
@@ -67,17 +63,6 @@ min CDATA #REQUIRED
neutral CDATA #REQUIRED
max CDATA #REQUIRED>
<!ATTLIST board
id CDATA #REQUIRED>
<!ATTLIST msg
id CDATA #REQUIRED
type CDATA #REQUIRED>
<!ATTLIST field_map
field CDATA #REQUIRED
servo_id CDATA #REQUIRED>
<!ATTLIST axis
name CDATA #REQUIRED
failsafe_value CDATA #REQUIRED>
@@ -87,6 +72,9 @@ value CDATA #REQUIRED
command CDATA #IMPLIED
servo CDATA #IMPLIED>
<!ATTLIST call
fun CDATA #REQUIRED>
<!ATTLIST copy
command CDATA #REQUIRED>
+25 -16
View File
@@ -1,10 +1,17 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<airframe name="BOOZ2_a1">
<servos>
<servo name="FRONT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK" no="1" min="0" neutral="0" max="255"/>
<servo name="RIGHT" no="2" min="0" neutral="0" max="255"/>
<servo name="LEFT" no="3" min="0" neutral="0" max="255"/>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<servos driver="Mkk">
<servo name="FRONT" no="0" min="0" neutral="2" max="210"/>
<servo name="BACK" no="1" min="0" neutral="2" max="210"/>
<servo name="RIGHT" no="2" min="0" neutral="2" max="210"/>
<servo name="LEFT" no="3" min="0" neutral="2" max="210"/>
</servos>
<commands>
@@ -14,17 +21,10 @@
<axis name="THRUST" failsafe_value="0"/>
</commands>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="2"/>
<define name="MAX_MOTOR" value="210"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<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"/>
<define name="ROLL_COEF" value="{ 0, 0, -256, 256}"/>
@@ -33,6 +33,14 @@
<define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="33924"/>
@@ -199,6 +207,7 @@
</target>
<subsystem name="radio_control" type="ppm"/>
<subsystem name="telemetry" type="transparent"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="mkk"/>
<subsystem name="imu" type="b2_v1.0"/>
<subsystem name="gps" type="ublox"/>
+31 -20
View File
@@ -1,13 +1,20 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!-- this is a custom hexa Lisa/L#3 and mikrokopter controllers -->
<airframe name="booz2_a6">
<servos>
<servo name="BACK_RIGHT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK_LEFT" no="1" min="0" neutral="0" max="255"/>
<servo name="CENTER_RIGHT" no="2" min="0" neutral="0" max="255"/>
<servo name="CENTER_LEFT" no="3" min="0" neutral="0" max="255"/>
<servo name="FRONT_RIGHT" no="4" min="0" neutral="0" max="255"/>
<servo name="FRONT_LEFT" no="5" min="0" neutral="0" max="255"/>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="6"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58, 0x5A, 0X5C }"/>
</section>
<servos driver="Mkk">
<servo name="BACK_RIGHT" no="0" min="0" neutral="2" max="210"/>
<servo name="BACK_LEFT" no="1" min="0" neutral="2" max="210"/>
<servo name="CENTER_RIGHT" no="2" min="0" neutral="2" max="210"/>
<servo name="CENTER_LEFT" no="3" min="0" neutral="2" max="210"/>
<servo name="FRONT_RIGHT" no="4" min="0" neutral="2" max="210"/>
<servo name="FRONT_LEFT" no="5" min="0" neutral="2" max="210"/>
</servos>
<commands>
@@ -17,17 +24,10 @@
<axis name="THRUST" failsafe_value="0"/>
</commands>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="6"/>
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58, 0x5A, 0X5C }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="2"/>
<define name="MAX_MOTOR" value="210"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<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"/>
<define name="ROLL_COEF" value="{ -69, 69, -256, 256, -186, 186 }"/>
@@ -36,6 +36,16 @@
<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="BACK_RIGHT" value="motor_mixing.commands[SERVO_BACK_RIGHT]"/>
<set servo="BACK_LEFT" value="motor_mixing.commands[SERVO_BACK_LEFT]"/>
<set servo="CENTER_RIGHT" value="motor_mixing.commands[SERVO_CENTER_RIGHT]"/>
<set servo="CENTER_LEFT" value="motor_mixing.commands[SERVO_CENTER_LEFT]"/>
<set servo="FRONT_RIGHT" value="motor_mixing.commands[SERVO_FRONT_RIGHT]"/>
<set servo="FRONT_LEFT" value="motor_mixing.commands[SERVO_FRONT_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="31948"/>
@@ -172,6 +182,7 @@
<target name="ap" board="lisa_l_1.0">
<!-- <define name="ACTUATORS_START_DELAY" value="1"/> -->
<subsystem name="radio_control" type="spektrum"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="mkk"/>
</target>
<subsystem name="telemetry" type="transparent"/>
@@ -200,8 +211,8 @@
<target name="test_adxl345" board="lisa_l_1.0"/>
<target name="test_esc_mkk_simple" board="lisa_l_1.0"/>
<target name="test_esc_asctecv1_simple" board="lisa_l_1.0"/>
<target name="test_actuators_mkk" board="lisa_l_1.0"/>
<target name="test_actuators_asctecv1" board="lisa_l_1.0"/>
<!--target name="test_actuators_mkk" board="lisa_l_1.0"/>
<target name="test_actuators_asctecv1" board="lisa_l_1.0"/-->
</firmware>
</airframe>
+23 -14
View File
@@ -1,12 +1,14 @@
<!DOCTYPE airframe SYSTEM "../airframe.dtd">
<!-- this is an asctec frame equiped with Lisa/L#3 and asctec V2 controllers -->
<airframe name="lisa_asctec">
<servos>
<servo name="FRONT" no="0" min="0" neutral="0" max="255"/>
<servo name="BACK" no="1" min="0" neutral="0" max="255"/>
<servo name="LEFT" no="2" min="0" neutral="0" max="255"/>
<servo name="RIGHT" no="3" min="0" neutral="0" max="255"/>
<servos driver="Asctec">
<servo name="FRONT" no="0" min="0" neutral="3" max="200"/>
<servo name="BACK" no="1" min="0" neutral="3" max="200"/>
<servo name="LEFT" no="2" min="0" neutral="3" max="200"/>
<servo name="RIGHT" no="3" min="0" neutral="3" max="200"/>
</servos>
<commands>
@@ -22,13 +24,10 @@
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="3"/>
<define name="MAX_MOTOR" value="200"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<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"/>
<define name="ROLL_COEF" value="{ 0 , 0, 256, -256 }"/>
@@ -37,6 +36,14 @@
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="GYRO_P_NEUTRAL" value="32276"/>
<define name="GYRO_Q_NEUTRAL" value="33987"/>
@@ -183,6 +190,7 @@
<target name="ap" board="lisa_l_1.1">
<!-- <define name="ACTUATORS_START_DELAY" value="1"/> -->
<subsystem name="radio_control" type="spektrum"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="asctec_v2"/>
<subsystem name="telemetry" type="transparent"/>
<define name="RADIO_MODE" value="RADIO_AUX2"/>
@@ -192,6 +200,7 @@
<target name="sim" board="pc">
<subsystem name="fdm" type="jsbsim"/>
<subsystem name="radio_control" type="ppm"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="mkk"/>
</target>
@@ -219,8 +228,8 @@
<target name="test_adxl345" board="lisa_l_1.1"/>
<target name="test_esc_mkk_simple" board="lisa_l_1.1"/>
<target name="test_esc_asctecv1_simple" board="lisa_l_1.1"/>
<target name="test_actuators_mkk" board="lisa_l_1.1"/>
<target name="test_actuators_asctecv1" board="lisa_l_1.1"/>
<!--target name="test_actuators_mkk" board="lisa_l_1.1"/>
<target name="test_actuators_asctecv1" board="lisa_l_1.1"/-->
</firmware>
@@ -25,7 +25,8 @@
<subsystem name="radio_control" type="ppm"/>
</target>
<subsystem name="actuators" type="pwm_supervision">
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="pwm">
<define name="SERVO_HZ" value="400"/>
<define name="USE_SERVOS_7AND8"/>
</subsystem>
@@ -38,11 +39,11 @@
<subsystem name="ins"/>
</firmware>
<servos>
<servo name="FRONT" no="0" min="1000" neutral="1000" max="2000"/>
<servo name="BACK" no="1" min="1000" neutral="1000" max="2000"/>
<servo name="RIGHT" no="2" min="1000" neutral="1000" max="2000"/>
<servo name="LEFT" no="3" min="1000" neutral="1000" max="2000"/>
<servos driver="Pwm">
<servo name="FRONT" no="0" min="1000" neutral="1100" max="1900"/>
<servo name="BACK" no="1" min="1000" neutral="1100" max="1900"/>
<servo name="RIGHT" no="2" min="1000" neutral="1100" max="1900"/>
<servo name="LEFT" no="3" min="1000" neutral="1100" max="1900"/>
</servos>
<commands>
@@ -52,18 +53,10 @@
<axis name="THRUST" failsafe_value="0"/>
</commands>
<command_laws>
<!-- command_laws is needed for pwm_supervision -->
<!-- but can be empty if no additional servos are used -->
</command_laws>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="STOP_MOTOR" value="1000"/>
<define name="MIN_MOTOR" value="1100"/>
<define name="MAX_MOTOR" value="1900"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<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"/>
<!-- front/back turning CW, right/left CCW -->
@@ -73,6 +66,14 @@
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="ACCEL_X_NEUTRAL" value="11"/>
<define name="ACCEL_Y_NEUTRAL" value="11"/>
@@ -25,7 +25,8 @@
<subsystem name="radio_control" type="ppm"/>
</target>
<subsystem name="actuators" type="pwm_supervision">
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="pwm">
<define name="SERVO_HZ" value="400"/>
<define name="USE_SERVOS_7AND8"/>
</subsystem>
@@ -43,11 +44,11 @@
<load name="geo_mag.xml"/>
</modules>
<servos>
<servo name="FRONT" no="0" min="1000" neutral="1000" max="2000"/>
<servo name="BACK" no="1" min="1000" neutral="1000" max="2000"/>
<servo name="RIGHT" no="2" min="1000" neutral="1000" max="2000"/>
<servo name="LEFT" no="3" min="1000" neutral="1000" max="2000"/>
<servos driver="Pwm">
<servo name="FRONT" no="0" min="1000" neutral="1100" max="1900"/>
<servo name="BACK" no="1" min="1000" neutral="1100" max="1900"/>
<servo name="RIGHT" no="2" min="1000" neutral="1100" max="1900"/>
<servo name="LEFT" no="3" min="1000" neutral="1100" max="1900"/>
</servos>
<commands>
@@ -62,13 +63,10 @@
<!-- but can be empty if no additional servos are used -->
</command_laws>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="STOP_MOTOR" value="1000"/>
<define name="MIN_MOTOR" value="1100"/>
<define name="MAX_MOTOR" value="1900"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<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"/>
<!-- front/back turning CW, right/left CCW -->
@@ -78,6 +76,14 @@
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="ACCEL_X_NEUTRAL" value="11"/>
<define name="ACCEL_Y_NEUTRAL" value="11"/>
@@ -20,6 +20,7 @@
<subsystem name="radio_control" type="ppm"/>
<subsystem name="telemetry" type="transparent"/>
<subsystem name="motor_mixing"/>
<subsystem name="actuators" type="mkk"/>
<subsystem name="imu" type="aspirin_v1.5"/>
<subsystem name="gps" type="ublox"/>
@@ -28,6 +29,19 @@
<subsystem name="ins"/>
</firmware>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<!-- FRONT, BACK, RIGHT, LEFT -->
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<servos driver="Mkk">
<servo name="FRONT" no="0" min="0" neutral="2" max="200"/>
<servo name="BACK" no="1" min="0" neutral="2" max="200"/>
<servo name="RIGHT" no="2" min="0" neutral="2" max="200"/>
<servo name="LEFT" no="3" min="0" neutral="2" max="200"/>
</servos>
<commands>
<axis name="ROLL" failsafe_value="0"/>
<axis name="PITCH" failsafe_value="0"/>
@@ -35,18 +49,10 @@
<axis name="THRUST" failsafe_value="0"/>
</commands>
<section name="ACTUATORS_MKK" prefix="ACTUATORS_MKK_">
<define name="NB" value="4"/>
<!-- FRONT, BACK, RIGHT, LEFT -->
<define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
</section>
<section name="SUPERVISION" prefix="SUPERVISION_">
<define name="MIN_MOTOR" value="2"/>
<define name="MAX_MOTOR" value="200"/>
<define name="TRIM_A" value="0"/>
<define name="TRIM_E" value="0"/>
<define name="TRIM_R" value="0"/>
<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"/>
<!-- front/back turning CW, left/right CCW -->
@@ -56,6 +62,14 @@
<define name="THRUST_COEF" value="{ 256, 256, 256, 256 }"/>
</section>
<command_laws>
<call fun="motor_mixing_run(autopilot_motors_on,FALSE,values)"/>
<set servo="FRONT" value="motor_mixing.commands[SERVO_FRONT]"/>
<set servo="BACK" value="motor_mixing.commands[SERVO_BACK]"/>
<set servo="RIGHT" value="motor_mixing.commands[SERVO_RIGHT]"/>
<set servo="LEFT" value="motor_mixing.commands[SERVO_LEFT]"/>
</command_laws>
<section name="IMU" prefix="IMU_">
<define name="ACCEL_X_NEUTRAL" value="11"/>
<define name="ACCEL_Y_NEUTRAL" value="11"/>
+1 -1
View File
@@ -4,7 +4,7 @@
<firmware name="setup">
<target name="tunnel" board="lisa_m_2.0"/>
<target name="setup_actuators" board="lisa_m_2.0"/>
<!--target name="setup_actuators" board="lisa_m_2.0"/-->
</firmware>
<firmware name="lisa_test_progs">
+8
View File
@@ -55,5 +55,13 @@ ifndef SYS_TIME_LED
SYS_TIME_LED = none
endif
#
# you can use different actuators by adding a configure option to your firmware section
# e.g. <configure name="ACTUATORS" value="actuators_ppm/>
#
ifndef ACTUATORS
ACTUATORS = actuators_pwm
endif
+10
View File
@@ -86,6 +86,16 @@ ifndef GPS_BAUD
GPS_BAUD=B38400
endif
#
# default actuator configuration
#
# you can use different actuators by adding a configure option to your firmware section
# e.g. <configure name="ACTUATORS" value="actuators_ppm/>
#
ifndef ACTUATORS
ACTUATORS = actuators_pwm
endif
#
# this is the DRDY pin of a max1168 on a booz IMU
#
+10
View File
@@ -89,6 +89,16 @@ ifndef GPS_BAUD
GPS_BAUD=B38400
endif
#
# default actuator configuration
#
# you can use different actuators by adding a configure option to your firmware section
# e.g. <configure name="ACTUATORS" value="actuators_ppm/>
#
ifndef ACTUATORS
ACTUATORS = actuators_pwm
endif
#
# this is the DRDY pin of a max1168 on a booz IMU
#
+10
View File
@@ -83,6 +83,16 @@ GPS_BAUD=B38400
endif
#
# default actuator configuration
#
# you can use different actuators by adding a configure option to your firmware section
# e.g. <configure name="ACTUATORS" value="actuators_ppm/>
#
ifndef ACTUATORS
ACTUATORS = actuators_pwm
endif
ifndef ADC_IR1
ADC_IR1 = 1
+10
View File
@@ -86,6 +86,16 @@ GPS_BAUD=B38400
endif
#
# default actuator configuration
#
# you can use different actuators by adding a configure option to your firmware section
# e.g. <configure name="ACTUATORS" value="actuators_ppm/>
#
ifndef ACTUATORS
ACTUATORS = actuators_pwm
endif
ifndef ADC_IR1
ADC_IR1 = 1
+1 -10
View File
@@ -34,16 +34,7 @@ endif
ifeq ($(TARGET),$(ACTUATOR_TARGET))
ifeq ($(ACTUATORS),)
ifeq ($(BOARD),lisa_l)
include $(CFG_SHARED)/actuators_direct.makefile
endif
ifeq ($(BOARD),lisa_m)
include $(CFG_SHARED)/actuators_direct.makefile
endif
else
ifneq ($(ACTUATORS),)
include $(CFG_SHARED)/$(ACTUATORS).makefile
endif
+1 -1
View File
@@ -60,7 +60,7 @@ stm_passthrough.srcs += $(SRC_LISA)/lisa_overo_link.c \
stm_passthrough.srcs += math/pprz_trig_int.c
stm_passthrough.srcs += lisa/plug_sys.c
stm_passthrough.srcs += $(SRC_FIRMWARE)/commands.c
stm_passthrough.srcs += subsystems/commands.c
# Radio control
#
+3 -4
View File
@@ -140,7 +140,6 @@ test_servos.srcs = $(COMMON_TEST_SRCS)
test_servos.CFLAGS += -I$(SRC_LISA)
test_servos.LDFLAGS += -lm
test_servos.srcs += $(SRC_LISA)/test_servos.c
test_servos.srcs += subsystems/actuators/actuators_pwm.c
test_servos.srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c
ifeq ($(BOARD), lisa_m)
test_servos.CFLAGS += -DUSE_SERVOS_7AND8
@@ -509,7 +508,7 @@ test_actuators_mkk.CFLAGS += $(COMMON_TELEMETRY_CFLAGS)
test_actuators_mkk.srcs += $(COMMON_TELEMETRY_SRCS)
test_actuators_mkk.srcs += test/test_actuators.c
test_actuators_mkk.srcs += $(SRC_FIRMWARE)/commands.c
test_actuators_mkk.srcs += subsystems/commands.c
test_actuators_mkk.srcs += $(SRC_FIRMWARE)/actuators/actuators_mkk.c
test_actuators_mkk.CFLAGS += -DACTUATORS_MKK_DEVICE=i2c1
test_actuators_mkk.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
@@ -527,7 +526,7 @@ test_actuators_asctecv1.CFLAGS += $(COMMON_TELEMETRY_CFLAGS)
test_actuators_asctecv1.srcs += $(COMMON_TELEMETRY_SRCS)
test_actuators_asctecv1.srcs += test/test_actuators.c
test_actuators_asctecv1.srcs += $(SRC_FIRMWARE)/commands.c
test_actuators_asctecv1.srcs += subsystems/commands.c
test_actuators_asctecv1.CFLAGS += -DACTUATORS_ASCTEC_DEVICE=i2c1
test_actuators_asctecv1.srcs += $(SRC_FIRMWARE)/actuators/actuators_asctec.c
test_actuators_asctecv1.CFLAGS += -DUSE_I2C1
@@ -561,7 +560,7 @@ test_actuators_asctecv1.srcs += mcu_periph/i2c.c $(SRC_ARCH)/mcu_periph/i2c_ar
#test_manual.srcs += $(COMMON_TELEMETRY_SRCS)
#
#test_manual.srcs += test/test_manual.c
#test_manual.srcs += $(SRC_FIRMWARE)/commands.c
#test_manual.srcs += subsystems/commands.c
##test_manual.srcs += subsystems/actuators/actuators_pwm.c
#test_manual.srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c
#
+2 -1
View File
@@ -104,7 +104,8 @@ ifeq ($(TARGET), ap)
include $(CFG_SHARED)/i2c_select.makefile
endif
ap.srcs += $(SRC_FIRMWARE)/commands.c
ap.srcs += subsystems/commands.c
ap.srcs += subsystems/actuators.c
#
# Radio control choice
+3 -3
View File
@@ -84,10 +84,10 @@ ifeq ($(TARGET), setup_actuators)
endif
ifeq ($(BOARD),lisa_l)
include $(CFG_SHARED)/actuators_direct.makefile
include $(CFG_SHARED)/actuators_pwm.makefile
endif
ifeq ($(BOARD),lisa_m)
include $(CFG_SHARED)/actuators_direct.makefile
ifeq ($(BOARD),lisa_m)
include $(CFG_SHARED)/actuators_pwm.makefile
endif
else
@@ -152,7 +152,8 @@ endif
fbw_CFLAGS += -DFBW
fbw_srcs += $(SRC_FIRMWARE)/main_fbw.c
fbw_srcs += subsystems/electrical.c
fbw_srcs += $(SRC_FIXEDWING)/commands.c
fbw_srcs += subsystems/commands.c
fbw_srcs += subsystems/actuators.c
fbw_srcs += $(SRC_FIRMWARE)/fbw_downlink.c
######################################################################
@@ -162,6 +163,7 @@ fbw_srcs += $(SRC_FIRMWARE)/fbw_downlink.c
ap_CFLAGS += -DAP
ap_srcs += $(SRC_FIRMWARE)/main_ap.c
ap_srcs += $(SRC_FIRMWARE)/autopilot.c
ap_srcs += $(SRC_FIRMWARE)/ap_downlink.c
ap_srcs += state.c
@@ -1,36 +0,0 @@
# asctec controllers v2
#
# <section name="SUPERVISION" prefix="SUPERVISION_">
# <define name="MIN_MOTOR" value="2"/>
# <define name="MAX_MOTOR" value="210"/>
# <define name="TRIM_A" value="2"/>
# <define name="TRIM_E" value="-1"/>
# <define name="TRIM_R" value="3"/>
# <define name="NB_MOTOR" value="4"/>
# <define name="SCALE" value="256"/>
# <define name="ROLL_COEF" value="{ 0, 0, -256, 256}"/>
# <define name="PITCH_COEF" value="{ 256, -256, 0, 0}"/>
# <define name="YAW_COEF" value="{-256, -256, 256, 256}"/>
# <define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/>
# </section>
#
#
ap.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
ap.CFLAGS += -DACTUATORS_ASCTEC_V2_PROTOCOL
ap.srcs += $(SRC_FIRMWARE)/actuators/actuators_asctec.c
ifeq ($(ARCH), lpc21)
ap.CFLAGS += -DACTUATORS_ASCTEC_DEVICE=i2c0
ap.CFLAGS += -DUSE_I2C0 -DI2C0_SCLL=150 -DI2C0_SCLH=150 -DI2C0_VIC_SLOT=11
endif
ifeq ($(ARCH), stm32)
ap.CFLAGS += -DACTUATORS_ASCTEC_DEVICE=i2c1
ap.CFLAGS += -DUSE_I2C1
endif
# Simulator
nps.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
nps.srcs += $(SRC_FIRMWARE)/actuators/actuators_asctec.c
nps.CFLAGS += -DUSE_I2C0 -DACTUATORS_ASCTEC_DEVICE=i2c0
@@ -1,5 +0,0 @@
#
# empty dummy actuators for testing
#
ap.srcs += $(SRC_FIRMWARE)/actuators/actuators_dummy.c
@@ -1,3 +0,0 @@
ap.srcs += $(SRC_FIRMWARE)/actuators/actuators_heli.c
ap.srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c
@@ -1,9 +0,0 @@
ap.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
ap.srcs += $(SRC_FIRMWARE)/actuators/actuators_pwm_supervision.c
ap.srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c
# Simulator
nps.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
nps.srcs += $(SRC_FIRMWARE)/actuators/actuators_pwm_supervision.c
nps.srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c
@@ -1,53 +0,0 @@
#
# Skiron Actuators
#
# enable the subsystem for your firmware:
# <firmware name="rotorcraft">
# ...
# <subsystem name="actuators" type="skiron">
# <configure name="SKIRON_I2C_SCL_TIME" value="50"/> <!-- this is optional, 150 is default -->
# </subsystem>
# ...
# </firmware>
#
#
# required xml configuration:
# <section name="ACTUATORS_SKIRON" prefix="ACTUATORS_SKIRON_">
# <define name="NB" value="4"/>
# <define name="IDX" value="{ 0, 1, 2, 3 }"/>
# </section>
#
# <section name="SUPERVISION" prefix="SUPERVISION_">
# <define name="MIN_MOTOR" value="20"/>
# <define name="MAX_MOTOR" value="255"/>
# <define name="TRIM_A" value="0"/>
# <define name="TRIM_E" value="0"/>
# <define name="TRIM_R" value="0"/>
# <define name="NB_MOTOR" value="4"/>
# <define name="SCALE" value="256"/>
# <define name="ROLL_COEF" value="{ 0, 0, -256, 256}"/>
# <define name="PITCH_COEF" value="{ 256, -256, 0, 0}"/>
# <define name="YAW_COEF" value="{ -256, -256, 256, 256}"/>
# <define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/>
# </section>
#
#
# set default i2c timing if not already configured
ifeq ($(SKIRON_I2C_SCL_TIME), )
SKIRON_I2C_SCL_TIME=150
endif
ap.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
ap.srcs += $(SRC_FIRMWARE)/actuators/actuators_skiron.c
ifeq ($(ARCH), lpc21)
ap.CFLAGS += -DACTUATORS_SKIRON_DEVICE=i2c0
ap.CFLAGS += -DUSE_I2C0 -DI2C0_SCLL=$(SKIRON_I2C_SCL_TIME) -DI2C0_SCLH=$(SKIRON_I2C_SCL_TIME) -DI2C0_VIC_SLOT=10
endif
# Simulator
nps.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
nps.srcs += $(SRC_FIRMWARE)/actuators/actuators_skiron.c
nps.CFLAGS += -DUSE_I2C0 -DI2C0_SCLL=$(SKIRON_I2C_SCL_TIME) -DI2C0_SCLH=$(SKIRON_I2C_SCL_TIME) -DI2C0_VIC_SLOT=10 -DACTUATORS_MKK_DEVICE=i2c0
@@ -82,7 +82,8 @@ nps.srcs += $(SRC_FIRMWARE)/telemetry.c \
subsystems/datalink/downlink.c \
$(SRC_ARCH)/ivy_transport.c
nps.srcs += $(SRC_FIRMWARE)/commands.c
nps.srcs += subsystems/actuators.c
nps.srcs += subsystems/commands.c
nps.srcs += $(SRC_FIRMWARE)/datalink.c
@@ -1,4 +1,4 @@
# for Tiny v1.1
$(TARGET).CFLAGS += -DACTUATORS=\"servos_4015_MAT_hw.h\" -DSERVOS_4015_MAT
$(TARGET).srcs += $(SRC_ARCH)/servos_4015_MAT_hw.c actuators.c
$(TARGET).CFLAGS += -DACTUATORS -DSERVOS_4015_MAT
$(TARGET).srcs += $(SRC_ARCH)/subsystems/actuators/servos_4015_MAT_hw.c
@@ -1,4 +1,4 @@
# for Tiny v2 or Twog v1
$(TARGET).CFLAGS += -DACTUATORS=\"servos_4017_hw.h\" -DSERVOS_4017
$(TARGET).srcs += $(SRC_ARCH)/servos_4017_hw.c actuators.c
$(TARGET).CFLAGS += -DACTUATORS -DSERVOS_4017
$(TARGET).srcs += $(SRC_ARCH)/subsystems/actuators/servos_4017_hw.c
@@ -1,5 +1,6 @@
# asctec controllers
ap.srcs += $(SRC_FIRMWARE)/actuators/actuators_asctec.c
$(TARGET).CFLAGS += -DACTUATORS
ap.srcs += subsystems/actuators/actuators_asctec.c
ifeq ($(ARCH), lpc21)
ap.CFLAGS += -DACTUATORS_ASCTEC_DEVICE=i2c0
@@ -13,6 +14,6 @@ endif
# Simulator
nps.srcs += $(SRC_FIRMWARE)/actuators/actuators_asctec.c
nps.srcs += subsystems/actuators/actuators_asctec.c
nps.CFLAGS += -DUSE_I2C0 -DACTUATORS_ASCTEC_DEVICE=i2c0
@@ -0,0 +1,25 @@
# asctec controllers v2
#
# required xml configuration:
#
# servo section with driver="Asctec"
# command_laws section to map motor_mixing commands to servos
#
$(TARGET).CFLAGS += -DACTUATORS
ap.CFLAGS += -DACTUATORS_ASCTEC_V2_PROTOCOL
ap.srcs += subsystems/actuators/actuators_asctec.c
ifeq ($(ARCH), lpc21)
ap.CFLAGS += -DACTUATORS_ASCTEC_DEVICE=i2c0
ap.CFLAGS += -DUSE_I2C0 -DI2C0_SCLL=150 -DI2C0_SCLH=150 -DI2C0_VIC_SLOT=11
endif
ifeq ($(ARCH), stm32)
ap.CFLAGS += -DACTUATORS_ASCTEC_DEVICE=i2c1
ap.CFLAGS += -DUSE_I2C1
endif
# Simulator
nps.srcs += subsystems/actuators/actuators_asctec.c
nps.CFLAGS += -DUSE_I2C0 -DACTUATORS_ASCTEC_DEVICE=i2c0
@@ -1,5 +0,0 @@
$(TARGET).CFLAGS += -DACTUATORS=\"subsystems/actuators/actuators_pwm.h\" -DSERVOS_DIRECT
$(TARGET).srcs += subsystems/actuators/actuators_pwm.c actuators.c
$(TARGET).srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c
@@ -17,24 +17,12 @@
# <define name="ADDR" value="{ 0x52, 0x54, 0x56, 0x58 }"/>
# </section>
#
# <section name="SUPERVISION" prefix="SUPERVISION_">
# <define name="MIN_MOTOR" value="2"/>
# <define name="MAX_MOTOR" value="210"/>
# <define name="TRIM_A" value="2"/>
# <define name="TRIM_E" value="-1"/>
# <define name="TRIM_R" value="3"/>
# <define name="NB_MOTOR" value="4"/>
# <define name="SCALE" value="256"/>
# <define name="ROLL_COEF" value="{ 0, 0, -256, 256}"/>
# <define name="PITCH_COEF" value="{ 256, -256, 0, 0}"/>
# <define name="YAW_COEF" value="{ -256, -256, 256, 256}"/>
# <define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/>
# </section>
#
# servo section with driver="Mkk"
# command_laws section to map motor_mixing commands to servos
#
ap.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
ap.srcs += $(SRC_FIRMWARE)/actuators/actuators_mkk.c
$(TARGET).CFLAGS += -DACTUATORS
ap.srcs += subsystems/actuators/actuators_mkk.c
ifeq ($(ARCH), lpc21)
@@ -52,6 +40,5 @@ ap.CFLAGS += -DUSE_I2C1
endif
# Simulator
nps.srcs += $(SRC_FIRMWARE)/actuators/supervision.c
nps.srcs += $(SRC_FIRMWARE)/actuators/actuators_mkk.c
nps.srcs += subsystems/actuators/actuators_mkk.c
nps.CFLAGS += -DUSE_I2C0 -DACTUATORS_MKK_DEVICE=i2c0
@@ -5,6 +5,6 @@
# The PPM is output on the SERV_CLK pin. The PPM frame rate, pulse width, and number of channels
# can be adjusted in the "servos_ppm_hw.h" file to suit your particular receiver.
$(TARGET).CFLAGS += -DACTUATORS=\"servos_ppm_hw.h\" -DSERVOS_PPM_MAT
$(TARGET).srcs += $(SRC_ARCH)/servos_ppm_hw.c actuators.c
$(TARGET).CFLAGS += -DACTUATORS -DSERVOS_PPM_MAT
$(TARGET).srcs += $(SRC_ARCH)/subsystems/actuators/servos_ppm_hw.c
@@ -0,0 +1,4 @@
$(TARGET).CFLAGS += -DACTUATORS
$(TARGET).srcs += $(SRC_ARCH)/subsystems/actuators/actuators_pwm_arch.c
@@ -0,0 +1,36 @@
#
# Skiron Actuators
#
# enable the subsystem for your firmware:
# <firmware name="rotorcraft">
# ...
# <subsystem name="actuators" type="skiron">
# <configure name="SKIRON_I2C_SCL_TIME" value="50"/> <!-- this is optional, 150 is default -->
# </subsystem>
# ...
# </firmware>
#
#
# required xml configuration:
#
# servo section with driver="Skiron"
# command_laws section to map motor_mixing commands to servos
#
# set default i2c timing if not already configured
ifeq ($(SKIRON_I2C_SCL_TIME), )
SKIRON_I2C_SCL_TIME=150
endif
$(TARGET).CFLAGS += -DACTUATORS
ap.srcs += subsystems/actuators/actuators_skiron.c
ifeq ($(ARCH), lpc21)
ap.CFLAGS += -DACTUATORS_SKIRON_DEVICE=i2c0
ap.CFLAGS += -DUSE_I2C0 -DI2C0_SCLL=$(SKIRON_I2C_SCL_TIME) -DI2C0_SCLH=$(SKIRON_I2C_SCL_TIME) -DI2C0_VIC_SLOT=10
endif
# Simulator
nps.srcs += subsystems/actuators/actuators_skiron.c
nps.CFLAGS += -DUSE_I2C0 -DI2C0_SCLL=$(SKIRON_I2C_SCL_TIME) -DI2C0_SCLH=$(SKIRON_I2C_SCL_TIME) -DI2C0_VIC_SLOT=10 -DACTUATORS_SKIRON_DEVICE=i2c0
@@ -0,0 +1,19 @@
# Motor Mixing
#
# <section name="MIXING" prefix="MOTOR_MIXING_">
# <define name="TRIM_ROLL" value="2"/>
# <define name="TRIM_PITCH" value="-1"/>
# <define name="TRIM_YAW" value="3"/>
# <define name="NB_MOTOR" value="4"/>
# <define name="SCALE" value="256"/>
# <define name="ROLL_COEF" value="{ 0, 0, -256, 256}"/>
# <define name="PITCH_COEF" value="{ 256, -256, 0, 0}"/>
# <define name="YAW_COEF" value="{-256, -256, 256, 256}"/>
# <define name="THRUST_COEF" value="{ 256, 256, 256, 256}"/>
# </section>
#
#
$(TARGET).CFLAGS += -DUSE_MOTOR_MIXING
$(TARGET).srcs += subsystems/actuators/motor_mixing.c
@@ -4,7 +4,7 @@
<axis index="7" name="tilt"/>
</input>
<messages period="0.1">
<message class="datalink" name="BOOZ_CAM_STICK">
<message class="datalink" name="ROTORCRAFT_CAM_STICK">
<field name="tilt" value="-tilt"/>
<field name="pan" value="pan"/>
</message>
+4 -4
View File
@@ -737,7 +737,7 @@
</message>
<message name="ACTUATORS" id="105">
<field name="values" type="uint16[]" unit="none"/>
<field name="values" type="int16[]" unit="none"/>
</message>
<message name="BETH" id="106">
@@ -1394,8 +1394,8 @@
<field name="var" type="float"/>
</message>
<message name="BOOZ2_CAM" id="168">
<field name="tilt" type="int16" unit="us"/>
<message name="ROTORCRAFT_CAM" id="168">
<field name="tilt" type="int16" unit="2^12rad" alt_unit="deg" alt_unit_coef="0.0139882"/>
<field name="pan" type="int16" unit="2^12rad" alt_unit="deg" alt_unit_coef="0.0139882"/>
</message>
@@ -2177,7 +2177,7 @@
<field name="yd" type="float" unit="m"/>
</message>
<message name="BOOZ_CAM_STICK" id="152" link="forwarded">
<message name="ROTORCRAFT_CAM_STICK" id="152" link="forwarded">
<field name="ac_id" type="uint8"/>
<field name="tilt" type="int8"/>
<field name="pan" type="int8"/>
-19
View File
@@ -1,19 +0,0 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="booz_cam" dir="cam_control">
<doc>
<description>Camera control for BOOZ board</description>
</doc>
<!-- depend require="booz_pwm|led" -->
<header>
<file name="booz_cam.h"/>
</header>
<init fun="booz_cam_init()"/>
<periodic fun="booz_cam_periodic()" freq="10."/>
<datalink message="BOOZ_CAM_STICK" fun="BOOZ_CAM_STICK_PARSE(dl_buffer)"/>
<makefile>
<define name="USE_CAM"/>
<file name="booz_cam.c"/>
</makefile>
</module>
-24
View File
@@ -1,24 +0,0 @@
<!DOCTYPE module SYSTEM "module.dtd">
<!--
DROP_SERVO_CLOSED and DROP_SERVO_OPEN can be redefined in airframe file
units: PWM width in us
-->
<module name="drop">
<doc>
<description>Drop control for BOOZ board</description>
<define name="DROP_SERVO_OPEN" value="pwm" description="PWM value when servo is in open position in us (optional)"/>
<define name="DROP_SERVO_CLOSED" value="pwm" description="PWM value when servo is in closed position in us (optional)"/>
</doc>
<!-- depend require="booz_pwm" -->
<header>
<file name="booz_drop.h"/>
</header>
<init fun="booz_drop_init()"/>
<periodic fun="booz_drop_periodic()" freq="10."/>
<makefile>
<define name="USE_DROP"/>
<file name="booz_drop.c"/>
</makefile>
</module>
-22
View File
@@ -1,22 +0,0 @@
<!DOCTYPE module SYSTEM "module.dtd">
<!--
Allow to use PWM output on booz boards
PWM0 is activated by default (PWM5 on lpc21 output)
PWM1 can be activated with USE_PWM1 flag (PWM2 on lpc21 output)
-->
<module name="booz_pwm" dir="core">
<doc>
<description>Allow to use PWM output on booz boards, PWM0 is activated by default (PWM5 on lpc21 output)</description>
<define name="USE_PWM1" description="flag to activate with USE_PWM1 flag (PWM2 on lpc21 output)"/>
</doc>
<header>
<file name="booz_pwm_arch.h"/>
</header>
<init fun="booz_pwm_init_arch()"/>
<makefile target="ap">
<file_arch name="booz_pwm_arch.c"/>
</makefile>
</module>
+33
View File
@@ -0,0 +1,33 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="rotorcraft_cam" dir="cam_control">
<doc>
<description>
Camera control for rotorcraft.
The camera is controled by the heading of the vehicle for pan and can be controlled by a servo for tilt if defined.
</description>
<section name="CAM" prefix="ROTORCRAFT_CAM_">
<define name="DEFAULT_MODE" value="MODE_NONE|MODE_MANUAL|MODE_HEADING|MODE_WP" description="Select default mode (default: MODE_NONE)"/>
<define name="CAM_ON" value="handler" description="Handler to power on the camera ({} to disable)"/>
<define name="CAM_OFF" value="handler" description="Handler to power off the camera ({} to disable)"/>
<define name="TILT_SERVO" value="name" description="Servo name for tilt control (no tilt control if not defined)"/>
<define name="TILT_ANGLE_MIN" value="angle" description="Tilt angle corresponding to the servo min position"/>
<define name="TILT_ANGLE_MAX" value="angle" description="Tilt angle corresponding to the servo max position"/>
<define name="USE_PAN" value="TRUE|FALSE" description="Enable pan control with heading (default: TRUE)"/>
<define name="TRACK_WP" value="WP_XXX" description="Enable waypoint tracking mode on the selected WP (default: enable if waypoint CAM is defined)"/>
<define name="STICK_TILT_INC" value="angle/stick_input" description="Sensitivity of the datalink stick tilt control (default: 10 deg)"/>
<define name="STICK_PAN_INC" value="angle/stick_input" description="Sensitivity of the datalink stick pan control (default: 20 deg)"/>
</section>
</doc>
<header>
<file name="rotorcraft_cam.h"/>
</header>
<init fun="rotorcraft_cam_init()"/>
<periodic fun="rotorcraft_cam_periodic()" freq="10."/>
<datalink message="ROTORCRAFT_CAM_STICK" fun="ROTORCRAFT_CAM_STICK_PARSE(dl_buffer)"/>
<makefile>
<define name="USE_CAM"/>
<file name="rotorcraft_cam.c"/>
</makefile>
</module>
+4 -2
View File
@@ -5,7 +5,7 @@
<description>Servo switch</description>
<define name="SERVO_SWITCH_ON_VALUE" value="pwm" description="servo value in usec"/>
<define name="SERVO_SWITCH_OFF_VALUE" value="pwm" description="servo value in usec"/>
<define name="SERVO_SWITCH_SERVO" value="nb" description="Id of the servo to use"/>
<define name="SERVO_SWITCH_SERVO" value="nb" description="Id of the servo (default: SWITCH)"/>
</doc>
<header>
<file name="servo_switch.h"/>
@@ -19,8 +19,10 @@
<load name="servo_switch.xml">
<define name="SERVO_SWITCH_ON_VALUE" value="2000"/>
<define name="SERVO_SWITCH_OFF_VALUE" value="1000"/>
<define name="SERVO_SWITCH_SERVO" value="SERVO_SWITCH"/>
<define name="SERVO_SWITCH_SERVO" value="SWITCH"/>
</load>
The servo will not exceed the min and max positions defined in the servo section
-->
<file name="servo_switch.c"/>
@@ -2,7 +2,7 @@
<dl_settings>
<dl_settings NAME="CAM">
<dl_setting var="booz_cam_mode" MIN="0" STEP="1" MAX="3" module="cam_control/booz_cam" shortname="mode" values="NONE|MAN|HEADING|WP" handler="SetCamMode">
<dl_setting var="rotorcraft_cam_mode" MIN="0" STEP="1" MAX="3" module="cam_control/rotorcraft_cam" shortname="mode" values="NONE|MAN|HEADING|WP" handler="SetCamMode">
<strip_button name="CN" value="0" group="cam_mode1"/>
<strip_button name="CM" value="1" group="cam_mode1"/>
<strip_button name="CH" value="2" group="cam_mode2"/>
@@ -10,12 +10,12 @@
<key_press key="F1" value="0"/>
<key_press key="F2" value="1"/>
</dl_setting>
<dl_setting var="booz_cam_tilt_pwm" min="1000" step="1" max="2500" shortname="tilt_pwm"/>
<dl_setting var="booz_cam_tilt" min="-90" step="1" max="0" shortname="tilt" alt_unit="deg" alt_unit_coef="0.0139882">
<dl_setting var="rotorcraft_cam_tilt_pwm" min="1000" step="1" max="2500" shortname="tilt_pwm"/>
<dl_setting var="rotorcraft_cam_tilt" min="-90" step="1" max="0" shortname="tilt" alt_unit="deg" alt_unit_coef="0.0139882">
<strip_button name="Look Foreward" icon="lookfore.png" value="0" group="cam_look"/>
<strip_button name="Look Down" icon="lookdown.png" value="-6434" group="cam_look"/>
</dl_setting>
<dl_setting var="booz_cam_pan" MIN="0" STEP="1" MAX="360" shortname="pan" unit="1/2^12r" alt_unit="deg" alt_unit_coef="0.0139882"/>
<dl_setting var="rotorcraft_cam_pan" MIN="0" STEP="1" MAX="360" shortname="pan" unit="1/2^12r" alt_unit="deg" alt_unit_coef="0.0139882"/>
</dl_settings>
</dl_settings>

Some files were not shown because too many files have changed in this diff Show More