Merge branch 'beta' into stable

This commit is contained in:
Lorenz Meier
2015-08-01 09:26:23 +02:00
25 changed files with 152 additions and 370 deletions
+1
View File
@@ -48,3 +48,4 @@ unittests/build
.vagrant
*.pretty
xcode
ROMFS/*/*/rc.autostart
@@ -1,6 +1,6 @@
#!nsh
#
# @name Team Blacksheep Discovery Quadcopter
# @name Team Blacksheep Discovery
#
# @type Quadrotor Wide
#
@@ -1,8 +1,6 @@
#!nsh
#
# @name Team Blacksheep Discovery Long Range Quadcopter
#
# Setup: 15 x 5" Props, 6S 4000mAh TBS LiPo, TBS 30A ESCs, TBS 400kV Motors
# @name Team Blacksheep Discovery Endurance
#
# @type Quadrotor Wide
#
+37
View File
@@ -0,0 +1,37 @@
#!nsh
#
# @name 3DR Iris Quadrotor
#
# @type Quadrotor Wide
#
# @maintainer Anton Babushkin <anton@px4.io>
#
sh /etc/init.d/rc.mc_defaults
if [ $AUTOCNF == yes ]
then
# TODO tune roll/pitch separately
param set MC_ROLL_P 7.0
param set MC_ROLLRATE_P 0.13
param set MC_ROLLRATE_I 0.05
param set MC_ROLLRATE_D 0.004
param set MC_PITCH_P 7.0
param set MC_PITCHRATE_P 0.13
param set MC_PITCHRATE_I 0.05
param set MC_PITCHRATE_D 0.004
param set MC_YAW_P 2.5
param set MC_YAWRATE_P 0.25
param set MC_YAWRATE_I 0.25
param set MC_YAWRATE_D 0.0
param set BAT_V_SCALING 0.00989
param set BAT_C_SCALING 0.0124
fi
set MIXER quad_x
set PWM_OUT 1234
set PWM_MIN 1100
set PWM_MAX 1950
+1 -1
View File
@@ -4,7 +4,7 @@
#
# @type Hexarotor Coaxial
#
# Lorenz Meier <lorenz@px4.io>
# @maintainer Lorenz Meier <lorenz@px4.io>
#
sh /etc/init.d/rc.mc_defaults
@@ -2,8 +2,6 @@
#
# @name Duorotor Tailsitter
#
# Generic configuration file for a tailsitter with motors in tandem configuration.
#
# @type VTOL Tailsitter
#
# @maintainer Roman Bapst <roman@px4.io>
@@ -2,8 +2,6 @@
#
# @name Quadrotor X Tailsitter
#
# Generic configuration file for a tailsitter with motors in X configuration.
#
# @type VTOL Tailsitter
#
# @maintainer Roman Bapst <roman@px4.io>
@@ -2,8 +2,6 @@
#
# @name Quadrotor + Tailsitter
#
# Generic configuration file for a tailsitter with motors in X configuration.
#
# @type VTOL Tailsitter
#
# @maintainer Roman Bapst <roman@px4.io>
+1 -3
View File
@@ -1,8 +1,6 @@
#!nsh
#
# @name Generic Tricopter Y Geometry
#
# Yaw Servo +Output ==> +Yaw Vehicle Rotation
# @name Generic Tricopter Y+ Geometry
#
# @type Tricopter Y+
#
+1 -3
View File
@@ -1,8 +1,6 @@
#!nsh
#
# @name Generic Tricopter Y Geometry
#
# Yaw Servo +Output ==> -Yaw Vehicle Rotation
# @name Generic Tricopter Y- Geometry
#
# @type Tricopter Y-
#
@@ -1,6 +1,6 @@
#!nsh
#
# @name Skywalker (3DR or Generic)
# @name Skywalker (3DR Aero)
#
# @type Standard Plane
#
+1 -2
View File
@@ -1,7 +1,6 @@
#!nsh
#
# @name Hobbyking Micro Integrated PCB Quadcopter
# with SimonK ESC firmware and Mystery A1510 motors
# @name Hobbyking Micro PCB
#
# @type Quadrotor x
#
@@ -4,10 +4,7 @@
#
# @type Rover
#
# loading default values for the axialracing ax10
#
#load some defaults e.g. PWM values
sh /etc/init.d/rc.axialracing_ax10_defaults
#choose a mixer, for rover control we need a plain passthrough to the servos
-318
View File
@@ -1,318 +0,0 @@
#
# SYS_AUTOSTART = 0 means no autostart (default)
#
# AUTOSTART PARTITION:
# 0 .. 999 Reserved (historical)
# 1000 .. 1999 Simulation setups
# 2000 .. 2999 Standard planes
# 3000 .. 3999 Flying wing
# 4000 .. 4999 Quad X
# 5000 .. 5999 Quad +
# 6000 .. 6999 Hexa X
# 7000 .. 7999 Hexa +
# 8000 .. 8999 Octo X
# 9000 .. 9999 Octo +
# 10000 .. 10999 Wide arm / H frame
# 11000 .. 11999 Hexa Cox
# 12000 .. 12999 Octo Cox
# 13000 .. 13999 VTOL
# 14000 .. 14999 Tri Y
#
# Simulation
#
if param compare SYS_AUTOSTART 901
then
sh /etc/init.d/901_bottle_drop_test.hil
set MODE custom
fi
if param compare SYS_AUTOSTART 1000
then
sh /etc/init.d/1000_rc_fw_easystar.hil
fi
if param compare SYS_AUTOSTART 1001
then
sh /etc/init.d/1001_rc_quad_x.hil
fi
if param compare SYS_AUTOSTART 1003
then
sh /etc/init.d/1003_rc_quad_+.hil
fi
if param compare SYS_AUTOSTART 1004
then
sh /etc/init.d/1004_rc_fw_Rascal110.hil
fi
if param compare SYS_AUTOSTART 1005
then
sh /etc/init.d/1005_rc_fw_Malolo1.hil
fi
#
# Plane
#
if param compare SYS_AUTOSTART 2100 100
then
sh /etc/init.d/2100_mpx_easystar
set MODE custom
fi
if param compare SYS_AUTOSTART 2101 101
then
sh /etc/init.d/2101_fw_AERT
set MODE custom
fi
if param compare SYS_AUTOSTART 2102 102
then
sh /etc/init.d/2102_3dr_skywalker
set MODE custom
fi
if param compare SYS_AUTOSTART 2103 103
then
sh /etc/init.d/2103_skyhunter_1800
set MODE custom
fi
if param compare SYS_AUTOSTART 2104
then
sh /etc/init.d/2104_fw_AETR
set MODE custom
fi
#
# Flying wing
#
if param compare SYS_AUTOSTART 3030 30
then
sh /etc/init.d/3030_io_camflyer
fi
if param compare SYS_AUTOSTART 3031 31
then
sh /etc/init.d/3031_phantom
fi
if param compare SYS_AUTOSTART 3032 32
then
sh /etc/init.d/3032_skywalker_x5
fi
if param compare SYS_AUTOSTART 3033 33
then
sh /etc/init.d/3033_wingwing
fi
if param compare SYS_AUTOSTART 3034 34
then
sh /etc/init.d/3034_fx79
fi
if param compare SYS_AUTOSTART 3035 35
then
sh /etc/init.d/3035_viper
fi
if param compare SYS_AUTOSTART 3100
then
sh /etc/init.d/3100_tbs_caipirinha
fi
#
# Quad X
#
if param compare SYS_AUTOSTART 4001
then
sh /etc/init.d/4001_quad_x
fi
#
# ARDrone
#
if param compare SYS_AUTOSTART 4008 8
then
sh /etc/init.d/4008_ardrone
fi
if param compare SYS_AUTOSTART 4010 10
then
sh /etc/init.d/4010_dji_f330
fi
if param compare SYS_AUTOSTART 4011 11
then
sh /etc/init.d/4011_dji_f450
fi
if param compare SYS_AUTOSTART 4012
then
sh /etc/init.d/4012_quad_x_can
fi
if param compare SYS_AUTOSTART 4020
then
sh /etc/init.d/4020_hk_micro_pcb
fi
#
# Quad +
#
if param compare SYS_AUTOSTART 5001
then
sh /etc/init.d/5001_quad_+
fi
#
# Hexa X
#
if param compare SYS_AUTOSTART 6001
then
sh /etc/init.d/6001_hexa_x
fi
#
# Hexa +
#
if param compare SYS_AUTOSTART 7001
then
sh /etc/init.d/7001_hexa_+
fi
#
# Octo X
#
if param compare SYS_AUTOSTART 8001
then
sh /etc/init.d/8001_octo_x
fi
#
# Octo +
#
if param compare SYS_AUTOSTART 9001
then
sh /etc/init.d/9001_octo_+
fi
#
# Wide arm / H frame
#
if param compare SYS_AUTOSTART 10015 15
then
sh /etc/init.d/10015_tbs_discovery
fi
if param compare SYS_AUTOSTART 10016 16
then
sh /etc/init.d/10016_3dr_iris
fi
if param compare SYS_AUTOSTART 10017
then
sh /etc/init.d/10017_steadidrone_qu4d
fi
if param compare SYS_AUTOSTART 10018 18
then
sh /etc/init.d/10018_tbs_endurance
fi
if param compare SYS_AUTOSTART 10019
then
sh /etc/init.d/10019_sk450_deadcat
fi
#
# Hexa Coaxial
#
if param compare SYS_AUTOSTART 11001
then
sh /etc/init.d/11001_hexa_cox
fi
#
# Octo Coaxial
#
if param compare SYS_AUTOSTART 12001
then
sh /etc/init.d/12001_octo_cox
fi
# 13000 is historically reserved for the quadshot
#
# VTOL Caipririnha (Tailsitter)
#
if param compare SYS_AUTOSTART 13001
then
sh /etc/init.d/13001_caipirinha_vtol
fi
#
# VTOL BirdsEyeView FireFly x6 (Tilt-Rotor)
#
if param compare SYS_AUTOSTART 13002
then
sh /etc/init.d/13002_firefly6
fi
#
# Tailsitter with 4 motors in x config
#
if param compare SYS_AUTOSTART 13003
then
sh /etc/init.d/13003_quad_tailsitter
fi
#
# Tailsitter with 4 motors in + config
#
if param compare SYS_AUTOSTART 13004
then
sh /etc/init.d/13004_quad+_tailsitter
fi
#
# TriCopter Y Yaw+
#
if param compare SYS_AUTOSTART 14001
then
sh /etc/init.d/14001_tri_y_yaw+
fi
#
# TriCopter Y Yaw-
#
if param compare SYS_AUTOSTART 14002
then
sh /etc/init.d/14002_tri_y_yaw-
fi
#
# Ground Rover AxialRacing AX10
#
if param compare SYS_AUTOSTART 50001
then
sh /etc/init.d/50001_axialracing_ax10
fi
+2 -2
View File
@@ -457,13 +457,13 @@ then
if [ $TTYS1_BUSY == yes ]
then
# Start MAVLink on ttyS0, because FMU ttyS1 pins configured as something else
set MAVLINK_F "-r 5000 -d /dev/ttyS0"
set MAVLINK_F "-r 1200 -d /dev/ttyS0"
# Exit from nsh to free port for mavlink
set EXIT_ON_END yes
else
# Start MAVLink on default port: ttyS1
set MAVLINK_F "-r 5000"
set MAVLINK_F "-r 1200"
fi
fi
@@ -18,11 +18,11 @@ S: 1 0 10000 10000 0 -10000 10000
S: 1 1 -10000 -10000 0 -10000 10000
# mixer for canard surface
M: 2
M: 1
O: 10000 10000 0 -10000 10000
S: 1 1 -10000 -10000 0 -10000 10000
# mixer for rudder
M: 2
M: 1
O: 10000 10000 0 -10000 10000
S: 1 2 -10000 -10000 0 -10000 10000
-13
View File
@@ -1,13 +0,0 @@
<?xml version='1.0' encoding='UTF-8'?>
<airframes>
<version>1</version>
<airframe_group name="StandardPlane" image="AirframeStandardPlane.png">
<airframe name="Multiplex Easystar 1/2" id="2100"/>
<airframe name="Generic AERT" id="2101"/>
</airframe_group>
<airframe_group name="QuadRotorX" image="AirframeQuadRotorX.png">
<airframe name="Generic 10 inch Quad" id="4001"/>
<airframe name="DJI F330 8 inch Quad" id="4010"/>
<airframe name="DJI F450 10 inch Quad" id="4011"/>
</airframe_group>
</airframes>
+1 -1
View File
@@ -1 +1 @@
__all__ = ["srcscanner", "srcparser", "xmlout", "dokuwikiout", "dokuwikirpc"]
__all__ = ["srcscanner", "srcparser", "xmlout", "rcout"]
+54
View File
@@ -0,0 +1,54 @@
from xml.sax.saxutils import escape
import codecs
class RCOutput():
def __init__(self, groups, board):
result = ( "#\n"
"#\n"
"# THIS FILE IS AUTO-GENERATED. DO NOT EDIT!\n"
"#\n"
"#\n"
"# SYS_AUTOSTART = 0 means no autostart (default)\n"
"#\n"
"# AUTOSTART PARTITION:\n"
"# 0 .. 999 Reserved (historical)\n"
"# 1000 .. 1999 Simulation setups\n"
"# 2000 .. 2999 Standard planes\n"
"# 3000 .. 3999 Flying wing\n"
"# 4000 .. 4999 Quadrotor x\n"
"# 5000 .. 5999 Quadrotor +\n"
"# 6000 .. 6999 Hexarotor x\n"
"# 7000 .. 7999 Hexarotor +\n"
"# 8000 .. 8999 Octorotor x\n"
"# 9000 .. 9999 Octorotor +\n"
"# 10000 .. 10999 Quadrotor Wide arm / H frame\n"
"# 11000 .. 11999 Hexa Cox\n"
"# 12000 .. 12999 Octo Cox\n"
"# 13000 .. 13999 VTOL\n"
"# 14000 .. 14999 Tri Y\n"
"\n")
for group in groups:
result += "# GROUP: %s\n\n" % group.GetName()
for param in group.GetParams():
path = param.GetPath().rsplit('/', 1)[1]
id_val = param.GetId()
name = param.GetFieldValue("short_desc")
long_desc = param.GetFieldValue("long_desc")
result += "#\n"
result += "# %s\n" % param.GetName()
result += "if param compare SYS_AUTOSTART %s\n" % id_val
result += "then\n"
result += "\tsh /etc/init.d/%s\n" % path
result += "fi\n"
#if long_desc is not None:
# result += "# %s\n" % long_desc
result += "\n"
result += "\n"
self.output = result;
def Save(self, filename):
with codecs.open(filename, 'w', 'utf-8') as f:
f.write(self.output)
+6 -2
View File
@@ -46,14 +46,18 @@ class Parameter(object):
# all others == 0 (sorted alphabetically)
}
def __init__(self, name, airframe_type, airframe_id, maintainer):
def __init__(self, path, name, airframe_type, airframe_id, maintainer):
self.fields = {}
self.outputs = {}
self.path = path
self.name = name
self.type = airframe_type
self.id = airframe_id
self.maintainer = maintainer
def GetPath(self):
return self.path
def GetName(self):
return self.name
@@ -259,7 +263,7 @@ class SourceParser(object):
return False
# We already know this is an airframe config, so add it
param = Parameter(airframe_name, airframe_type, airframe_id, maintainer)
param = Parameter(path, airframe_name, airframe_type, airframe_id, maintainer)
# Done with file, store
for tag in tags:
+7 -5
View File
@@ -35,20 +35,22 @@ class XMLOutput():
xml_group.attrib["image"] = "AirframeQuadRotorX.png"
elif (group.GetName() == "Quadrotor +"):
xml_group.attrib["image"] = "AirframeQuadRotorPlus.png"
elif (group.GetName() == "Hexa x"):
elif (group.GetName() == "Hexarotor x"):
xml_group.attrib["image"] = "AirframeHexaRotorX.png"
elif (group.GetName() == "Hexa +"):
elif (group.GetName() == "Hexarotor +"):
xml_group.attrib["image"] = "AirframeHexaRotorPlus.png"
elif (group.GetName() == "Octo +"):
elif (group.GetName() == "Octorotor +"):
xml_group.attrib["image"] = "AirframeOctoRotorPlus.png"
elif (group.GetName() == "Octo X"):
elif (group.GetName() == "Octorotor x"):
xml_group.attrib["image"] = "AirframeOctoRotorX.png"
elif (group.GetName() == "Quadrotor Wide"):
xml_group.attrib["image"] = "AirframeQuadRotorH.png"
elif (group.GetName() == "Quadrotor H"):
xml_group.attrib["image"] = "AirframeQuadRotorH.png"
elif (group.GetName() == "Simulation"):
xml_group.attrib["image"] = "AirframeSimulation.png"
else:
xml_group.attrib["image"] = "AirframeStandardPlane.png"
xml_group.attrib["image"] = ""
for param in group.GetParams():
if (last_param_name == param.GetName() and not board_specific_param_set) or last_param_name != param.GetName():
xml_param = ET.SubElement(xml_group, "airframe")
+12 -2
View File
@@ -46,7 +46,7 @@ from __future__ import print_function
import sys
import os
import argparse
from px4airframes import srcscanner, srcparser, xmlout
from px4airframes import srcscanner, srcparser, xmlout, rcout
def main():
# Parse command line arguments
@@ -61,6 +61,11 @@ def main():
metavar="FILENAME",
help="Create XML file"
" (default FILENAME: airframes.xml)")
parser.add_argument("-s", "--start-script",
nargs='?',
const="rc.autostart",
metavar="FILENAME",
help="Create start script file")
parser.add_argument("-b", "--board",
nargs='?',
const="",
@@ -69,7 +74,7 @@ def main():
args = parser.parse_args()
# Check for valid command
if not (args.xml):
if not (args.xml) and not (args.start_script):
print("Error: You need to specify at least one output method!\n")
parser.print_usage()
sys.exit(1)
@@ -93,6 +98,11 @@ def main():
out = xmlout.XMLOutput(param_groups, args.board)
out.Save(args.xml)
if args.start_script:
print("Creating start script " + args.start_script)
out = rcout.RCOutput(param_groups, args.board)
out.Save(args.start_script)
print("All done!")
+7
View File
@@ -350,6 +350,9 @@ ROMFS_OBJ = $(ROMFS_CSRC:.c=.o)
LIBS += $(ROMFS_OBJ)
LINK_DEPS += $(ROMFS_OBJ)
# Add autostart script
ROMFS_AUTOSTART = $(PX4_BASE)/Tools/px_process_airframes.py
# Remove all comments from startup and mixer files
ROMFS_PRUNER = $(PX4_BASE)/Tools/px_romfs_pruner.py
@@ -372,6 +375,10 @@ ifneq ($(ROMFS_EXTRA_FILES),)
$(Q) $(MKDIR) -p $(ROMFS_SCRATCH)/extras
$(Q) $(COPY) $(ROMFS_EXTRA_FILES) $(ROMFS_SCRATCH)/extras
endif
$(Q) $(PYTHON) -u $(ROMFS_AUTOSTART) -a $(ROMFS_ROOT)/init.d -s $(ROMFS_SCRATCH)/init.d/rc.autostart
# Execute in standard dir as well
# so developers notice the generated file
$(Q) $(PYTHON) -u $(ROMFS_AUTOSTART) -a $(ROMFS_ROOT)/init.d -s $(ROMFS_ROOT)/init.d/rc.autostart
$(Q) $(PYTHON) -u $(ROMFS_PRUNER) --folder $(ROMFS_SCRATCH)
EXTRA_CLEANS += $(ROMGS_OBJ) $(ROMFS_IMG)
@@ -559,6 +559,7 @@ int do_level_calibration(int mavlink_fd) {
const unsigned cal_time = 5;
const unsigned cal_hz = 100;
const unsigned settle_time = 30;
bool success = false;
int att_sub = orb_subscribe(ORB_ID(vehicle_attitude));
struct vehicle_attitude_s att;
memset(&att, 0, sizeof(att));
@@ -597,7 +598,15 @@ int do_level_calibration(int mavlink_fd) {
start = hrt_absolute_time();
// average attitude for 5 seconds
while(hrt_elapsed_time(&start) < cal_time * 1000000) {
poll(&fds[0], (sizeof(fds) / sizeof(fds[0])), 100);
int pollret = poll(&fds[0], (sizeof(fds) / sizeof(fds[0])), 100);
if (pollret <= 0) {
// attitude estimator is not running
mavlink_and_console_log_critical(mavlink_fd, "attitude estimator not running - check system boot");
mavlink_and_console_log_critical(mavlink_fd, CAL_QGC_FAILED_MSG, "level");
goto out;
}
orb_copy(ORB_ID(vehicle_attitude), att_sub, &att);
roll_mean += att.roll;
pitch_mean += att.pitch;
@@ -606,7 +615,6 @@ int do_level_calibration(int mavlink_fd) {
mavlink_and_console_log_info(mavlink_fd, CAL_QGC_PROGRESS_MSG, 100);
bool success = false;
if (counter > (cal_time * cal_hz / 2 )) {
roll_mean /= counter;
pitch_mean /= counter;
+6
View File
@@ -1232,6 +1232,7 @@ Mavlink::update_rate_mult()
float const_rate = 0.0f;
float rate = 0.0f;
/* scale down rates if their theoretical bandwidth is exceeding the link bandwidth */
MavlinkStream *stream;
LL_FOREACH(_streams, stream) {
if (stream->const_rate()) {
@@ -1244,6 +1245,11 @@ Mavlink::update_rate_mult()
/* don't scale up rates, only scale down if needed */
_rate_mult = fminf(1.0f, ((float)_datarate - const_rate) / rate);
/* scale down if we have a TX err rate suggesting link congestion */
if (_rate_txerr > 0.0f) {
_rate_mult = (_rate_tx) / (_rate_tx + _rate_txerr);
}
}
int