Autostart: use MIXER instead of FRAME_GEOMETRY

This commit is contained in:
Anton Babushkin
2014-01-15 00:02:57 +01:00
parent d1b2186806
commit a8d362de13
18 changed files with 195 additions and 182 deletions
@@ -25,6 +25,7 @@ then
fi fi
set VEHICLE_TYPE mc set VEHICLE_TYPE mc
set FRAME_GEOMETRY quad_w set MIXER FMU_quad_w
set PWM_OUTPUTS 1234
set PWM_RATE 400 set PWM_RATE 400
+2 -2
View File
@@ -44,10 +44,10 @@ then
fi fi
set VEHICLE_TYPE mc set VEHICLE_TYPE mc
set FRAME_GEOMETRY quad_w set MIXER FMU_quad_w
set PWM_OUTPUTS 1234
set PWM_RATE 400 set PWM_RATE 400
set PWM_DISARMED 900 set PWM_DISARMED 900
set PWM_MIN 1000 set PWM_MIN 1000
set PWM_MAX 2000 set PWM_MAX 2000
@@ -43,4 +43,4 @@ fi
set HIL yes set HIL yes
set VEHICLE_TYPE mc set VEHICLE_TYPE mc
set FRAME_GEOMETRY quad_x set MIXER FMU_quad_x
@@ -43,4 +43,4 @@ fi
set HIL yes set HIL yes
set VEHICLE_TYPE mc set VEHICLE_TYPE mc
set FRAME_GEOMETRY quad_+ set MIXER FMU_quad_+
+1 -1
View File
@@ -36,4 +36,4 @@ then
fi fi
set VEHICLE_TYPE fw set VEHICLE_TYPE fw
set FRAME_GEOMETRY RET set MIXER FMU_RET
+1 -1
View File
@@ -41,4 +41,4 @@ then
fi fi
set VEHICLE_TYPE fw set VEHICLE_TYPE fw
set FRAME_GEOMETRY Q set MIXER FMU_Q
+1 -1
View File
@@ -11,4 +11,4 @@ then
fi fi
set VEHICLE_TYPE fw set VEHICLE_TYPE fw
set FRAME_GEOMETRY Q set MIXER FMU_Q
+1 -1
View File
@@ -40,4 +40,4 @@ then
fi fi
set VEHICLE_TYPE fw set VEHICLE_TYPE fw
set FRAME_GEOMETRY Q set MIXER FMU_Q
+1 -1
View File
@@ -40,4 +40,4 @@ then
fi fi
set VEHICLE_TYPE fw set VEHICLE_TYPE fw
set FRAME_GEOMETRY Q set MIXER FMU_FX79
+2 -2
View File
@@ -41,10 +41,10 @@ then
fi fi
set VEHICLE_TYPE mc set VEHICLE_TYPE mc
set FRAME_GEOMETRY quad_x set MIXER FMU_quad_x
set PWM_OUTPUTS 1234
set PWM_RATE 400 set PWM_RATE 400
# DJI ESC range # DJI ESC range
set PWM_DISARMED 900 set PWM_DISARMED 900
set PWM_MIN 1200 set PWM_MIN 1200
+2 -2
View File
@@ -27,10 +27,10 @@ then
fi fi
set VEHICLE_TYPE mc set VEHICLE_TYPE mc
set FRAME_GEOMETRY quad_x set MIXER FMU_quad_x
set PWM_OUTPUTS 1234
set PWM_RATE 400 set PWM_RATE 400
# DJI ESC range # DJI ESC range
set PWM_DISARMED 900 set PWM_DISARMED 900
set PWM_MIN 1200 set PWM_MIN 1200
+2 -1
View File
@@ -27,6 +27,7 @@ then
fi fi
set VEHICLE_TYPE mc set VEHICLE_TYPE mc
set FRAME_GEOMETRY quad_x set MIXER FMU_quad_x
set PWM_OUTPUTS 1234
set PWM_RATE 400 set PWM_RATE 400
@@ -1,34 +0,0 @@
#!nsh
#
# Script to configure fixedwing control interface
#
#
# Force some key parameters to sane values
# MAV_TYPE 1 = fixed wing
#
param set MAV_TYPE 1
#
# Load mixer
#
echo "[init] Frame geometry: $FRAME_GEOMETRY"
set MIXERSD /fs/microsd/etc/mixers/FMU_$FRAME_GEOMETRY.mix
#Use the mixer file from the sd-card if it exists
if [ -f $MIXERSD ]
then
set MIXER $MIXERSD
else
set MIXER /etc/mixers/FMU_$FRAME_GEOMETRY.mix
fi
if mixer load /dev/pwm_output $MIXER
then
echo "[init] Mixer loaded: $MIXER"
else
echo "[init] Error loading mixer: $MIXER"
tone_alarm $TUNE_OUT_ERROR
fi
+72
View File
@@ -0,0 +1,72 @@
#!nsh
#
# Script to configure control interface
#
if [ $MIXER != none ]
then
#
# Load mixer
#
set MIXERSD /fs/microsd/etc/mixers/$MIXER.mix
#Use the mixer file from the SD-card if it exists
if [ -f $MIXERSD ]
then
set MIXER_FILE $MIXERSD
else
set MIXER_FILE /etc/mixers/$MIXER.mix
fi
if [ $OUTPUT_MODE == mkblctrl ]
then
set OUTPUT_DEV /dev/mkblctrl
else
set OUTPUT_DEV /dev/pwm_output
fi
if mixer load $OUTPUT_DEV $MIXER_FILE
then
echo "[init] Mixer loaded: $MIXER_FILE"
else
echo "[init] Error loading mixer: $MIXER_FILE"
tone_alarm $TUNE_OUT_ERROR
fi
else
echo "[init] Mixer not defined
tone_alarm $TUNE_OUT_ERROR
fi
if [ $OUTPUT_MODE == fmu -o $OUTPUT_MODE == io ]
then
if [ $PWM_OUTPUTS != none ]
then
#
# Set PWM output frequency
#
if [ $PWM_RATE != none ]
then
echo "[init] Set PWM rate: $PWM_RATE"
pwm rate -c $PWM_OUTPUTS -r $PWM_RATE
fi
#
# Set disarmed, min and max PWM values
#
if [ $PWM_DISARMED != none ]
then
echo "[init] Set PWM disarmed: $PWM_DISARMED"
pwm disarmed -c $PWM_OUTPUTS -p $PWM_DISARMED
fi
if [ $PWM_MIN != none ]
then
echo "[init] Set PWM min: $PWM_MIN"
pwm min -c $PWM_OUTPUTS -p $PWM_MIN
fi
if [ $PWM_MAX != none ]
then
echo "[init] Set PWM max: $PWM_MAX"
pwm max -c $PWM_OUTPUTS -p $PWM_MAX
fi
fi
fi
+6 -4
View File
@@ -9,11 +9,13 @@
px4io recovery px4io recovery
# #
# Adjust px4io topic limiting # Adjust PX4IO update rate limit
# #
set PX4IO_LIMIT 400
if hw_ver compare PX4FMU_V1 if hw_ver compare PX4FMU_V1
then then
px4io limit 200 set PX4IO_LIMIT 200
else
px4io limit 400
fi fi
echo "[init] Set PX4IO update rate limit: $PX4IO_LIMIT Hz"
px4io limit $PX4IO_LIMIT
@@ -1,77 +0,0 @@
#!nsh
#
# Script to configure multicopter control interface
#
if [ $FRAME_GEOMETRY == quad_x -o $FRAME_GEOMETRY == quad_+ ]
then
set OUTPUTS 1234
param set MAV_TYPE 2
fi
if [ $FRAME_GEOMETRY == quad_w -o $FRAME_GEOMETRY == quad_v ]
then
set OUTPUTS 1234
param set MAV_TYPE 2
fi
if [ $FRAME_GEOMETRY == hex_x -o $FRAME_GEOMETRY == hex_+ ]
then
set OUTPUTS 123456
param set MAV_TYPE 13
fi
if [ $FRAME_GEOMETRY == octo_x -o $FRAME_GEOMETRY == octo_+ ]
then
set OUTPUTS 12345678
param set MAV_TYPE 14
fi
#
# Load mixer
#
echo "[init] Frame geometry: $FRAME_GEOMETRY"
set MIXER /etc/mixers/FMU_$FRAME_GEOMETRY.mix
if [ $OUTPUT_MODE == mkblctrl ]
then
set OUTPUT_DEV /dev/mkblctrl
else
set OUTPUT_DEV /dev/pwm_output
fi
if mixer load $OUTPUT_DEV $MIXER
then
echo "[init] Mixer loaded: $MIXER"
else
echo "[init] Error loading mixer: $MIXER"
tone_alarm $TUNE_OUT_ERROR
fi
if [ $OUTPUT_MODE == fmu -o $OUTPUT_MODE == io ]
then
#
# Set PWM output frequency
#
if [ $PWM_RATE != none ]
then
echo "[init] Set PWM rate: $PWM_RATE"
pwm rate -c $OUTPUTS -r $PWM_RATE
fi
#
# Set disarmed, min and max PWM values
#
if [ $PWM_DISARMED != none ]
then
echo "[init] Set PWM disarmed: $PWM_DISARMED"
pwm disarmed -c $OUTPUTS -p $PWM_DISARMED
fi
if [ $PWM_MIN != none ]
then
echo "[init] Set PWM min: $PWM_MIN"
pwm min -c $OUTPUTS -p $PWM_MIN
fi
if [ $PWM_MAX != none ]
then
echo "[init] Set PWM max: $PWM_MAX"
pwm max -c $OUTPUTS -p $PWM_MAX
fi
fi
+12 -9
View File
@@ -10,39 +10,42 @@
ms5611 start ms5611 start
adc start adc start
# mag might be external # Mag might be external
if hmc5883 start if hmc5883 start
then then
echo "using HMC5883" echo "[init] Using HMC5883"
fi fi
if mpu6000 start if mpu6000 start
then then
echo "using MPU6000" echo "[init] Using MPU6000"
fi fi
if l3gd20 start if l3gd20 start
then then
echo "using L3GD20(H)" echo "[init] Using L3GD20(H)"
fi fi
if lsm303d start if hw_ver compare PX4FMU_V2
then then
echo "using LSM303D" if lsm303d start
then
echo "[init] Using LSM303D"
fi
fi fi
# Start airspeed sensors # Start airspeed sensors
if meas_airspeed start if meas_airspeed start
then then
echo "using MEAS airspeed sensor" echo "[init] Using MEAS airspeed sensor"
else else
if ets_airspeed start if ets_airspeed start
then then
echo "using ETS airspeed sensor (bus 3)" echo "[init] Using ETS airspeed sensor (bus 3)"
else else
if ets_airspeed start -b 1 if ets_airspeed start -b 1
then then
echo "Using ETS airspeed sensor (bus 1)" echo "[init] Using ETS airspeed sensor (bus 1)"
fi fi
fi fi
fi fi
+85 -40
View File
@@ -14,6 +14,7 @@ set CONFIG_FILE /fs/microsd/etc/config.txt
set EXTRAS_FILE /fs/microsd/etc/extras.txt set EXTRAS_FILE /fs/microsd/etc/extras.txt
set TUNE_OUT_ERROR ML<<CP4CP4CP4CP4CP4 set TUNE_OUT_ERROR ML<<CP4CP4CP4CP4CP4
# #
# Try to mount the microSD card. # Try to mount the microSD card.
# #
@@ -73,25 +74,21 @@ then
# #
# Load parameters # Load parameters
# #
if mtd start set PARAM_FILE /fs/microsd/params
if hw_ver compare PX4FMU_V2
then then
param select /fs/mtd_params if mtd start
if param load /fs/mtd_params
then then
else set PARAM_FILE /fs/mtd_params
echo "FAILED LOADING PARAMS"
fi fi
fi
param select $PARAM_FILE
if param load
then
echo "[init] Parameters loaded: $PARAM_FILE"
else else
param select /fs/microsd/params echo "[init] ERROR: Parameters loading failed: $PARAM_FILE"
if [ -f /fs/microsd/params ]
then
if param load /fs/microsd/params
then
echo "Parameters loaded"
else
echo "Parameter file corrupt - ignoring"
fi
fi
fi fi
# #
@@ -103,6 +100,7 @@ then
else else
if blinkm start if blinkm start
then then
echo "[init] Using blinkm"
blinkm systemstate blinkm systemstate
fi fi
fi fi
@@ -112,15 +110,17 @@ then
# #
set HIL no set HIL no
set VEHICLE_TYPE none set VEHICLE_TYPE none
set FRAME_GEOMETRY none set MIXER none
set USE_IO yes set USE_IO yes
set OUTPUT_MODE none set OUTPUT_MODE none
set PWM_OUTPUTS none
set PWM_RATE none set PWM_RATE none
set PWM_DISARMED none set PWM_DISARMED none
set PWM_MIN none set PWM_MIN none
set PWM_MAX none set PWM_MAX none
set MKBLCTRL_MODE none set MKBLCTRL_MODE none
set FMU_MODE pwm set FMU_MODE pwm
set MAV_TYPE none
# #
# Set DO_AUTOCONFIG flag to use it in AUTOSTART scripts # Set DO_AUTOCONFIG flag to use it in AUTOSTART scripts
@@ -183,7 +183,7 @@ then
set IO_PRESENT yes set IO_PRESENT yes
else else
echo "[init] PX4IO CRC failure" echo "[init] PX4IO CRC failure, trying to update"
echo "PX4IO CRC failure" >> $LOG_FILE echo "PX4IO CRC failure" >> $LOG_FILE
tone_alarm MLL32CP8MB tone_alarm MLL32CP8MB
@@ -193,17 +193,17 @@ then
usleep 500000 usleep 500000
if px4io checkcrc $IO_FILE if px4io checkcrc $IO_FILE
then then
echo "[init] PX4IO CRC OK after updating" echo "[init] PX4IO CRC OK, update successful"
echo "PX4IO CRC OK after updating" >> $LOG_FILE echo "PX4IO CRC OK after updating" >> $LOG_FILE
tone_alarm MLL8CDE tone_alarm MLL8CDE
set IO_PRESENT yes set IO_PRESENT yes
else else
echo "[init] PX4IO update failed" echo "[init] ERROR: PX4IO update failed"
echo "PX4IO update failed" >> $LOG_FILE echo "PX4IO update failed" >> $LOG_FILE
fi fi
else else
echo "[init] PX4IO update failed" echo "[init] ERROR: PX4IO update failed"
echo "PX4IO update failed" >> $LOG_FILE echo "PX4IO update failed" >> $LOG_FILE
fi fi
fi fi
@@ -220,16 +220,27 @@ then
# #
if [ $OUTPUT_MODE == none ] if [ $OUTPUT_MODE == none ]
then then
if [ $IO_PRESENT == yes ] if [ $USE_IO == yes ]
then then
# If PX4IO present, use it as primary PWM output by default
set OUTPUT_MODE io set OUTPUT_MODE io
else else
# Else use PX4FMU PWM output
set OUTPUT_MODE fmu set OUTPUT_MODE fmu
fi fi
fi fi
if [ $OUTPUT_MODE == io -a $IO_PRESENT != yes ]
then
# Need IO for output but it not present, disable output
set OUTPUT_MODE none
echo "[init] ERROR: PX4IO not found, disabling output"
# Avoid using ttyS0 for MAVLink on FMUv1
if hw_ver compare PX4FMU_V1
then
set FMU_MODE serial
fi
fi
if [ $HIL == yes ] if [ $HIL == yes ]
then then
set OUTPUT_MODE hil set OUTPUT_MODE hil
@@ -256,7 +267,7 @@ then
echo "[init] PX4IO started" echo "[init] PX4IO started"
sh /etc/init.d/rc.io sh /etc/init.d/rc.io
else else
echo "[init] PX4IO start error" echo "[init] ERROR: PX4IO start failed"
tone_alarm $TUNE_OUT_ERROR tone_alarm $TUNE_OUT_ERROR
fi fi
fi fi
@@ -267,7 +278,7 @@ then
then then
echo "[init] FMU mode_$FMU_MODE started" echo "[init] FMU mode_$FMU_MODE started"
else else
echo "[init] FMU mode_$FMU_MODE start error" echo "[init] ERROR: FMU mode_$FMU_MODE start failed"
tone_alarm $TUNE_OUT_ERROR tone_alarm $TUNE_OUT_ERROR
fi fi
@@ -300,7 +311,7 @@ then
then then
echo "[init] MKBLCTRL started" echo "[init] MKBLCTRL started"
else else
echo "[init] MKBLCTRL start error" echo "[init] ERROR: MKBLCTRL start failed"
tone_alarm $TUNE_OUT_ERROR tone_alarm $TUNE_OUT_ERROR
fi fi
@@ -312,7 +323,7 @@ then
then then
echo "[init] HIL output started" echo "[init] HIL output started"
else else
echo "[init] HIL output error" echo "[init] ERROR: HIL output start failed"
tone_alarm $TUNE_OUT_ERROR tone_alarm $TUNE_OUT_ERROR
fi fi
fi fi
@@ -329,7 +340,7 @@ then
echo "[init] PX4IO started" echo "[init] PX4IO started"
sh /etc/init.d/rc.io sh /etc/init.d/rc.io
else else
echo "[init] PX4IO start error" echo "[init] ERROR: PX4IO start failed"
tone_alarm $TUNE_OUT_ERROR tone_alarm $TUNE_OUT_ERROR
fi fi
fi fi
@@ -340,13 +351,17 @@ then
then then
echo "[init] FMU mode_$FMU_MODE started" echo "[init] FMU mode_$FMU_MODE started"
else else
echo "[init] FMU mode_$FMU_MODE start error" echo "[init] ERROR: FMU mode_$FMU_MODE start failed"
tone_alarm $TUNE_OUT_ERROR tone_alarm $TUNE_OUT_ERROR
fi fi
if hw_ver compare PX4FMU_V1 if hw_ver compare PX4FMU_V1
then then
if [ $FMU_MODE == pwm -o $FMU_MODE == gpio -o $FMU_MODE == pwm_gpio ] if [ $FMU_MODE == pwm -o $FMU_MODE == gpio ]
then
set TTYS1_BUSY yes
fi
if [ $FMU_MODE == pwm_gpio ]
then then
set TTYS1_BUSY yes set TTYS1_BUSY yes
fi fi
@@ -401,14 +416,22 @@ then
then then
echo "[init] Vehicle type: FIXED WING" echo "[init] Vehicle type: FIXED WING"
if [ $FRAME_GEOMETRY == none ] if [ $MIXER == none ]
then then
# Set default frame geometry for fixed wing # Set default mixer for fixed wing if not defined
set FRAME_GEOMETRY AERT set MIXER FMU_AERT
fi fi
if [ $MAV_TYPE == none ]
then
# Use MAV_TYPE = 1 (fixed wing) if not defined
set MAV_TYPE 1
fi
param set MAV_TYPE $MAV_TYPE
# Load mixer and configure outputs # Load mixer and configure outputs
sh /etc/init.d/rc.fw_interface sh /etc/init.d/rc.interface
# Start standard fixedwing apps # Start standard fixedwing apps
sh /etc/init.d/rc.fw_apps sh /etc/init.d/rc.fw_apps
@@ -421,14 +444,36 @@ then
then then
echo "[init] Vehicle type: MULTICOPTER" echo "[init] Vehicle type: MULTICOPTER"
if [ $FRAME_GEOMETRY == none ] if [ $MIXER == none ]
then then
# Set default frame geometry for multicopter # Set default mixer for multicopter if not defined
set FRAME_GEOMETRY quad_x set MIXER quad_x
fi fi
if [ $MAV_TYPE == none ]
then
# Use MAV_TYPE = 2 (quadcopter) if not defined
set MAV_TYPE 2
# Use mixer to detect vehicle type
if [ $MIXER == FMU_hex_x -o $MIXER == FMU_hex_+ ]
then
param set MAV_TYPE 13
fi
if [ $MIXER == FMU_octo_x -o $MIXER == FMU_octo_+ ]
then
param set MAV_TYPE 14
fi
if [ $MIXER == FMU_octo_cox ]
then
param set MAV_TYPE 14
fi
fi
param set MAV_TYPE $MAV_TYPE
# Load mixer and configure outputs # Load mixer and configure outputs
sh /etc/init.d/rc.mc_interface sh /etc/init.d/rc.interface
# Start standard multicopter apps # Start standard multicopter apps
sh /etc/init.d/rc.mc_apps sh /etc/init.d/rc.mc_apps
@@ -441,8 +486,8 @@ then
then then
echo "[init] Vehicle type: GENERIC" echo "[init] Vehicle type: GENERIC"
attitude_estimator_ekf start # Load mixer and configure outputs
position_estimator_inav start sh /etc/init.d/rc.interface
fi fi
# Start any custom addons # Start any custom addons