Merge remote-tracking branch 'upstream/master' into ros

This commit is contained in:
Thomas Gubler 2015-01-08 17:08:30 +01:00
commit fb151a855f
61 changed files with 147 additions and 99 deletions

View File

@ -7,4 +7,4 @@
sh /etc/init.d/rc.fw_defaults
set HIL yes
set MIXER FMU_AERT
set MIXER AERT

View File

@ -24,7 +24,7 @@ then
param set MC_YAWRATE_D 0.0
fi
set MIXER FMU_quad_w
set MIXER quad_w
set PWM_OUT 1234
set PWM_MIN 1200

View File

@ -27,7 +27,7 @@ then
param set BAT_C_SCALING 0.0124
fi
set MIXER FMU_quad_w
set MIXER quad_w
set PWM_OUT 1234

View File

@ -26,7 +26,7 @@ then
param set BAT_N_CELLS 4
fi
set MIXER FMU_quad_w
set MIXER quad_w
set PWM_MIN 1210
set PWM_MAX 2100

View File

@ -25,7 +25,7 @@ then
param set MC_YAWRATE_D 0.0
fi
set MIXER FMU_quad_w
set MIXER quad_w
set PWM_OUTPUTS 1234
set PWM_MIN 1200

View File

@ -7,6 +7,6 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_quad_x
set MIXER quad_x
set HIL yes

View File

@ -7,6 +7,6 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_quad_+
set MIXER quad_+
set HIL yes
set HIL yes

View File

@ -9,4 +9,4 @@ sh /etc/init.d/rc.fw_defaults
set HIL yes
set MIXER FMU_AERT
set MIXER AERT

View File

@ -35,4 +35,4 @@ fi
set HIL yes
# Set the AERT mixer for HIL (even if the malolo is a flying wing)
set MIXER FMU_AERT
set MIXER AERT

View File

@ -7,7 +7,7 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_hexa_cox
set MIXER hexa_cox
# Need to set all 8 channels
set PWM_OUT 12345678

View File

@ -7,6 +7,6 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_octo_cox
set MIXER octo_cox
set PWM_OUT 12345678

View File

@ -7,7 +7,7 @@
sh /etc/init.d/rc.vtol_defaults
set MIXER FMU_caipirinha_vtol
set MIXER caipirinha_vtol
set PWM_OUT 12
set PWM_MAX 2000

View File

@ -0,0 +1,14 @@
#!nsh
#
# Generic configuration file for BirdsEyeView Aerobotics FireFly6
#
# Roman Bapst <romanbapst@yahoo.de>
#
sh /etc/init.d/rc.vtol_defaults
set MIXER firefly6
set PWM_OUT 12345678
param set VT_MOT_COUNT 6
param set VT_IDLE_PWM_MC 1080

View File

@ -2,4 +2,4 @@
sh /etc/init.d/rc.fw_defaults
set MIXER FMU_AERT
set MIXER AERT

View File

@ -2,4 +2,4 @@
sh /etc/init.d/rc.fw_defaults
set MIXER FMU_AET
set MIXER AET

View File

@ -2,7 +2,7 @@
sh /etc/init.d/rc.fw_defaults
set MIXER FMU_Q
set MIXER Q
# Provide ESC a constant 1000 us pulse while disarmed
set PWM_OUT 4
set PWM_DISARMED 1000

View File

@ -28,4 +28,4 @@ then
param set FW_R_RMAX 0
fi
set MIXER FMU_X5
set MIXER X5

View File

@ -7,4 +7,4 @@
sh /etc/init.d/rc.fw_defaults
set MIXER FMU_FX79
set MIXER FX79

View File

@ -31,4 +31,4 @@ then
param set FW_R_RMAX 0
fi
set MIXER FMU_Q
set MIXER Q

View File

@ -7,6 +7,6 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_quad_x
set MIXER quad_x
set PWM_OUT 1234

View File

@ -7,6 +7,6 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_quad_+
set MIXER quad_+
set PWM_OUT 1234

View File

@ -7,7 +7,7 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_hexa_x
set MIXER hexa_x
# Need to set all 8 channels
set PWM_OUT 12345678

View File

@ -7,7 +7,7 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_hexa_+
set MIXER hexa_+
# Need to set all 8 channels
set PWM_OUT 12345678

View File

@ -7,6 +7,6 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_octo_x
set MIXER octo_x
set PWM_OUT 12345678

View File

@ -7,6 +7,6 @@
sh /etc/init.d/rc.mc_defaults
set MIXER FMU_octo_+
set MIXER octo_+
set PWM_OUT 12345678

View File

@ -13,5 +13,3 @@ ekf_att_pos_estimator start
#
fw_att_control start
fw_pos_control_l1 start
bottle_drop start

View File

@ -3,20 +3,34 @@
# Script to configure control interface
#
set SDCARD_MIXERS_PATH /fs/microsd/etc/mixers
if [ $MIXER != none -a $MIXER != skip ]
then
#
# Load mixer
# Load main mixer
#
#Use the mixer file from the SD-card if it exists
if [ -f /fs/microsd/etc/mixers/$MIXER.mix ]
if [ $MIXER_AUX == none ]
then
set MIXER_FILE /fs/microsd/etc/mixers/$MIXER.mix
else
set MIXER_FILE /etc/mixers/$MIXER.mix
set MIXER_AUX $MIXER.aux
fi
# Use the mixer file from the SD-card if it exists
if [ -f $SDCARD_MIXERS_PATH/$MIXER.main.mix ]
then
set MIXER_FILE $SDCARD_MIXERS_PATH/$MIXER.main.mix
# Try out the old convention, for backward compatibility
else
if [ -f $SDCARD_MIXERS_PATH/$MIXER.mix ]
then
set MIXER_FILE $SDCARD_MIXERS_PATH/$MIXER.mix
else
set MIXER_FILE /etc/mixers/$MIXER.main.mix
fi
fi
if [ $OUTPUT_MODE == mkblctrl ]
then
set OUTPUT_DEV /dev/mkblctrl
@ -28,7 +42,7 @@ then
then
set OUTPUT_DEV /dev/uavcan/esc
fi
if mixer load $OUTPUT_DEV $MIXER_FILE
then
echo "[i] Mixer: $MIXER_FILE"
@ -57,7 +71,7 @@ then
then
pwm rate -c $PWM_OUT -r $PWM_RATE
fi
#
# Set disarmed, min and max PWM values
#
@ -80,3 +94,34 @@ then
pwm failsafe -d $OUTPUT_DEV $FAILSAFE
fi
fi
# check if should load secondary mixer
if [ $MIXER_AUX != none ]
then
#
# Load aux mixer
#
set MIXER_AUX_FILE none
if [ -f $SDCARD_MIXERS_PATH/$MIXER_AUX.mix ]
then
set MIXER_AUX_FILE $SDCARD_MIXERS_PATH/$MIXER_AUX.mix
else
if [ -f /etc/mixers/$MIXER_AUX.mix ]
then
set MIXER_AUX_FILE /etc/mixers/$MIXER_AUX.mix
fi
fi
if [ $MIXER_AUX_FILE != none -a $FMU_MODE == pwm ]
then
if fmu mode_pwm
then
mixer load /dev/pwm_output1 $MIXER_AUX_FILE
else
tone_alarm $TUNE_ERR
fi
fi
fi

View File

@ -116,6 +116,7 @@ then
set HIL no
set VEHICLE_TYPE none
set MIXER none
set MIXER_AUX none
set OUTPUT_MODE none
set PWM_OUT none
set PWM_RATE none
@ -481,7 +482,7 @@ then
if [ $MIXER == none ]
then
# Set default mixer for fixed wing if not defined
set MIXER FMU_AERT
set MIXER AERT
fi
if [ $MAV_TYPE == none ]
@ -517,27 +518,27 @@ then
if [ $MAV_TYPE == none ]
then
# Use mixer to detect vehicle type
if [ $MIXER == FMU_quad_x -o $MIXER == FMU_quad_+ ]
if [ $MIXER == quad_x -o $MIXER == quad_+ ]
then
set MAV_TYPE 2
fi
if [ $MIXER == FMU_quad_w ]
if [ $MIXER == quad_w ]
then
set MAV_TYPE 2
fi
if [ $MIXER == FMU_hexa_x -o $MIXER == FMU_hexa_+ ]
if [ $MIXER == hexa_x -o $MIXER == hexa_+ ]
then
set MAV_TYPE 13
fi
if [ $MIXER == FMU_hexa_cox ]
if [ $MIXER == hexa_cox ]
then
set MAV_TYPE 13
fi
if [ $MIXER == FMU_octo_x -o $MIXER == FMU_octo_+ ]
if [ $MIXER == octo_x -o $MIXER == octo_+ ]
then
set MAV_TYPE 14
fi
if [ $MIXER == FMU_octo_cox ]
if [ $MIXER == octo_cox ]
then
set MAV_TYPE 14
fi
@ -576,10 +577,14 @@ then
if [ $MAV_TYPE == none ]
then
# Use mixer to detect vehicle type
if [ $MIXER == FMU_caipirinha_vtol ]
if [ $MIXER == caipirinha_vtol ]
then
set MAV_TYPE 19
fi
if [ $MIXER == firefly6_rotors ]
then
set MAV_TYPE 21
fi
fi
# Still no MAV_TYPE found

View File

@ -0,0 +1,10 @@
# mixer for the FireFly6 elevons
M: 2
O: 10000 10000 0 -10000 10000
S: 1 0 7500 7500 0 -10000 10000
S: 1 1 8000 8000 0 -10000 10000
M: 2
O: 10000 10000 0 -10000 10000
S: 1 0 7500 7500 0 -10000 10000
S: 1 1 -8000 -8000 0 -10000 10000

View File

@ -0,0 +1,4 @@
# FireFly6 mixer for PX4FMU
#
#===========================
R: 6c 10000 10000 10000 0

View File

@ -128,7 +128,7 @@ private:
orb_advert_t _outputs_pub;
actuator_armed_s _armed;
unsigned _num_outputs;
bool _primary_pwm_device;
int _class_instance;
volatile bool _task_should_exit;
bool _servo_armed;
@ -141,6 +141,7 @@ private:
int _control_subs[NUM_ACTUATOR_CONTROL_GROUPS];
actuator_controls_s _controls[NUM_ACTUATOR_CONTROL_GROUPS];
orb_id_t _control_topics[NUM_ACTUATOR_CONTROL_GROUPS];
orb_id_t _actuator_output_topic;
pollfd _poll_fds[NUM_ACTUATOR_CONTROL_GROUPS];
unsigned _poll_fds_num;
@ -247,7 +248,7 @@ PX4FMU::PX4FMU() :
_outputs_pub(-1),
_armed{},
_num_outputs(0),
_primary_pwm_device(false),
_class_instance(0),
_task_should_exit(false),
_servo_armed(false),
_pwm_on(false),
@ -255,6 +256,7 @@ PX4FMU::PX4FMU() :
_groups_required(0),
_groups_subscribed(0),
_control_subs{-1},
_actuator_output_topic(nullptr),
_poll_fds_num(0),
_pwm_limit{},
_failsafe_pwm{0},
@ -300,8 +302,7 @@ PX4FMU::~PX4FMU()
}
/* clean up the alternate device node */
if (_primary_pwm_device)
unregister_driver(PWM_OUTPUT_DEVICE_PATH);
unregister_class_devname(PWM_OUTPUT_DEVICE_PATH, _class_instance);
g_fmu = nullptr;
}
@ -320,13 +321,14 @@ PX4FMU::init()
return ret;
/* try to claim the generic PWM output device node as well - it's OK if we fail at this */
ret = register_driver(PWM_OUTPUT_DEVICE_PATH, &fops, 0666, (void *)this);
_class_instance = register_class_devname(PWM_OUTPUT_DEVICE_PATH);
if (ret == OK) {
if (_class_instance == CLASS_DEVICE_PRIMARY) {
log("default PWM output device");
_primary_pwm_device = true;
}
_actuator_output_topic = ORB_ID_DOUBLE(actuator_outputs_, _class_instance);
/* reset GPIOs */
gpio_reset();
@ -677,10 +679,10 @@ PX4FMU::task_main()
/* publish mixed control outputs */
if (_outputs_pub < 0) {
_outputs_pub = orb_advertise(_primary_pwm_device ? ORB_ID_VEHICLE_CONTROLS : ORB_ID(actuator_outputs_1), &outputs);
_outputs_pub = orb_advertise(_actuator_output_topic, &outputs);
} else {
orb_publish(_primary_pwm_device ? ORB_ID_VEHICLE_CONTROLS : ORB_ID(actuator_outputs_1), _outputs_pub, &outputs);
orb_publish(_actuator_output_topic, _outputs_pub, &outputs);
}
}
}

View File

@ -343,7 +343,7 @@ int test_mixer(int argc, char *argv[])
if (argc > 2)
filename = argv[2];
else
filename = "/etc/mixers/FMU_quad_w.mix";
filename = "/etc/mixers/quad_w.main.mix";
load_mixer_file(filename, &buf[0], sizeof(buf));
loaded = strlen(buf);

View File

@ -64,16 +64,13 @@ add_executable(conversion_test conversion_test.cpp ${PX_SRC}/systemcmds/tests/te
add_gtest(conversion_test)
# sbus2_test
# TODO: move to gtest
add_executable(sbus2_test sbus2_test.cpp hrt.cpp)
add_gtest(sbus2_test)
# st24_test
# TODO: move to gtest
add_executable(st24_test st24_test.cpp hrt.cpp ${PX_SRC}/lib/rc/st24.c)
add_gtest(st24_test)
# sf0x_test
# TODO: move to gtest
add_executable(sf0x_test sf0x_test.cpp ${PX_SRC}/drivers/sf0x/sf0x_parser.cpp)
add_gtest(sf0x_test)

View File

@ -4,6 +4,6 @@
#include "gtest/gtest.h"
TEST(ConversionTest, FMU_quad_w) {
TEST(ConversionTest, quad_w_main) {
ASSERT_EQ(test_conv(0, NULL), 0) << "Conversion test failed";
}

View File

@ -6,6 +6,6 @@
TEST(MixerTest, Mixer) {
char* args[] = {"empty", "../ROMFS/px4fmu_common/mixers/IO_pass.mix", "../ROMFS/px4fmu_common/mixers/FMU_quad_w.mix"};
char* args[] = {"empty", "../ROMFS/px4fmu_common/mixers/IO_pass.mix", "../ROMFS/px4fmu_common/mixers/quad_w.main.mix"};
ASSERT_EQ(test_mixer(3, args), 0) << "IO_pass.mix failed";
}

View File

@ -1,19 +1,15 @@
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <systemlib/err.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <drivers/drv_hrt.h>
#include <drivers/sf0x/sf0x_parser.h>
#include <systemlib/err.h>
int main(int argc, char *argv[])
{
warnx("SF0X test started");
int ret = 0;
#include "gtest/gtest.h"
TEST(SF0XTest, SF0X) {
const char LINE_MAX = 20;
char _linebuf[LINE_MAX];
_linebuf[0] = '\0';
@ -60,6 +56,4 @@ int main(int argc, char *argv[])
}
warnx("test finished");
return ret;
}

View File

@ -1,4 +1,3 @@
#include <stdio.h>
#include <unistd.h>
#include <string.h>
@ -7,30 +6,17 @@
#include <rc/st24.h>
#include "../../src/systemcmds/tests/tests.h"
int main(int argc, char *argv[])
{
warnx("ST24 test started");
#include "gtest/gtest.h"
char* defaultfile = "testdata/st24_data.txt";
char* filepath = 0;
if (argc < 2) {
warnx("Too few arguments. Using default file: %s", defaultfile);
filepath = defaultfile;
} else {
filepath = argv[1];
}
TEST(ST24Test, ST24) {
const char* filepath = "testdata/st24_data.txt";
warnx("loading data from: %s", filepath);
FILE *fp;
fp = fopen(filepath, "rt");
if (!fp) {
errx(1, "failed opening file");
}
//ASSERT_TRUE(fp);
float f;
unsigned x;
@ -73,12 +59,5 @@ int main(int argc, char *argv[])
}
}
if (ret == EOF) {
warnx("Test finished, reached end of file");
ret = 0;
} else {
warnx("Test aborted, errno: %d", ret);
}
return ret;
ASSERT_EQ(EOF, ret);
}