mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-21 11:54:15 +01:00
Merge remote-tracking branch 'origin/rel-12.10.2' into next
This commit is contained in:
commit
79f95983da
13
HISTORY.txt
13
HISTORY.txt
@ -1,5 +1,18 @@
|
|||||||
Short summary of changes. For a complete list see the git log.
|
Short summary of changes. For a complete list see the git log.
|
||||||
|
|
||||||
|
2012-11-11
|
||||||
|
Added support for Mode 3 and Mode 4 to the TX Configuration Wizard.
|
||||||
|
Few minor bugfixes.
|
||||||
|
|
||||||
|
--- RELEASE-12.10.1 ---
|
||||||
|
|
||||||
|
2012-10-26
|
||||||
|
Temporary disabled AutoTune GCS GUI. It was listed as an experimental
|
||||||
|
feature in the previous release, there were however a few cases where
|
||||||
|
it did not behave as expected.
|
||||||
|
|
||||||
|
--- RELEASE-12.10 ---
|
||||||
|
|
||||||
2012-10-06
|
2012-10-06
|
||||||
Receiver port can now be configured as PPM *and* PWM inputs.
|
Receiver port can now be configured as PPM *and* PWM inputs.
|
||||||
Pin 1 is PPM, other pins are PWM inputs.
|
Pin 1 is PPM, other pins are PWM inputs.
|
||||||
|
@ -86,6 +86,10 @@ static void settingsUpdatedCb(UAVObjEvent * objEv);
|
|||||||
|
|
||||||
static float accelKi = 0;
|
static float accelKi = 0;
|
||||||
static float accelKp = 0;
|
static float accelKp = 0;
|
||||||
|
static float accel_alpha = 0;
|
||||||
|
static bool accel_filter_enabled = false;
|
||||||
|
static float accels_filtered[3];
|
||||||
|
static float grot_filtered[3];
|
||||||
static float yawBiasRate = 0;
|
static float yawBiasRate = 0;
|
||||||
static float gyroGain = 0.42;
|
static float gyroGain = 0.42;
|
||||||
static int16_t accelbias[3];
|
static int16_t accelbias[3];
|
||||||
@ -215,18 +219,22 @@ static void AttitudeTask(void *parameters)
|
|||||||
accelKp = 1;
|
accelKp = 1;
|
||||||
accelKi = 0.9;
|
accelKi = 0.9;
|
||||||
yawBiasRate = 0.23;
|
yawBiasRate = 0.23;
|
||||||
|
accel_filter_enabled = false;
|
||||||
init = 0;
|
init = 0;
|
||||||
}
|
}
|
||||||
else if (zero_during_arming && (flightStatus.Armed == FLIGHTSTATUS_ARMED_ARMING)) {
|
else if (zero_during_arming && (flightStatus.Armed == FLIGHTSTATUS_ARMED_ARMING)) {
|
||||||
accelKp = 1;
|
accelKp = 1;
|
||||||
accelKi = 0.9;
|
accelKi = 0.9;
|
||||||
yawBiasRate = 0.23;
|
yawBiasRate = 0.23;
|
||||||
|
accel_filter_enabled = false;
|
||||||
init = 0;
|
init = 0;
|
||||||
} else if (init == 0) {
|
} else if (init == 0) {
|
||||||
// Reload settings (all the rates)
|
// Reload settings (all the rates)
|
||||||
AttitudeSettingsAccelKiGet(&accelKi);
|
AttitudeSettingsAccelKiGet(&accelKi);
|
||||||
AttitudeSettingsAccelKpGet(&accelKp);
|
AttitudeSettingsAccelKpGet(&accelKp);
|
||||||
AttitudeSettingsYawBiasRateGet(&yawBiasRate);
|
AttitudeSettingsYawBiasRateGet(&yawBiasRate);
|
||||||
|
if (accel_alpha > 0.0f)
|
||||||
|
accel_filter_enabled = true;
|
||||||
init = 1;
|
init = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -429,6 +437,19 @@ static int32_t updateSensorsCC3D(AccelsData * accelsData, GyrosData * gyrosData)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void apply_accel_filter(const float *raw, float *filtered)
|
||||||
|
{
|
||||||
|
if (accel_filter_enabled) {
|
||||||
|
filtered[0] = filtered[0] * accel_alpha + raw[0] * (1 - accel_alpha);
|
||||||
|
filtered[1] = filtered[1] * accel_alpha + raw[1] * (1 - accel_alpha);
|
||||||
|
filtered[2] = filtered[2] * accel_alpha + raw[2] * (1 - accel_alpha);
|
||||||
|
} else {
|
||||||
|
filtered[0] = raw[0];
|
||||||
|
filtered[1] = raw[1];
|
||||||
|
filtered[2] = raw[2];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void updateAttitude(AccelsData * accelsData, GyrosData * gyrosData)
|
static void updateAttitude(AccelsData * accelsData, GyrosData * gyrosData)
|
||||||
{
|
{
|
||||||
float dT;
|
float dT;
|
||||||
@ -444,21 +465,38 @@ static void updateAttitude(AccelsData * accelsData, GyrosData * gyrosData)
|
|||||||
|
|
||||||
float grot[3];
|
float grot[3];
|
||||||
float accel_err[3];
|
float accel_err[3];
|
||||||
|
|
||||||
|
// Apply smoothing to accel values, to reduce vibration noise before main calculations.
|
||||||
|
apply_accel_filter(accels, accels_filtered);
|
||||||
|
|
||||||
// Rotate gravity to body frame and cross with accels
|
// Rotate gravity unit vector to body frame, filter and cross with accels
|
||||||
grot[0] = -(2 * (q[1] * q[3] - q[0] * q[2]));
|
grot[0] = -(2 * (q[1] * q[3] - q[0] * q[2]));
|
||||||
grot[1] = -(2 * (q[2] * q[3] + q[0] * q[1]));
|
grot[1] = -(2 * (q[2] * q[3] + q[0] * q[1]));
|
||||||
grot[2] = -(q[0] * q[0] - q[1]*q[1] - q[2]*q[2] + q[3]*q[3]);
|
grot[2] = -(q[0] * q[0] - q[1]*q[1] - q[2]*q[2] + q[3]*q[3]);
|
||||||
CrossProduct((const float *) accels, (const float *) grot, accel_err);
|
|
||||||
|
apply_accel_filter(grot, grot_filtered);
|
||||||
|
|
||||||
|
CrossProduct((const float *)accels_filtered, (const float *)grot_filtered, accel_err);
|
||||||
|
|
||||||
// Account for accel magnitude
|
// Account for accel magnitude
|
||||||
float accel_mag = sqrtf(accels[0]*accels[0] + accels[1]*accels[1] + accels[2]*accels[2]);
|
float accel_mag = sqrtf(accels_filtered[0]*accels_filtered[0] + accels_filtered[1]*accels_filtered[1] + accels_filtered[2]*accels_filtered[2]);
|
||||||
if(accel_mag < 1.0e-3f)
|
if (accel_mag < 1.0e-3f)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
accel_err[0] /= accel_mag;
|
// Account for filtered gravity vector magnitude
|
||||||
accel_err[1] /= accel_mag;
|
float grot_mag;
|
||||||
accel_err[2] /= accel_mag;
|
|
||||||
|
if (accel_filter_enabled)
|
||||||
|
grot_mag = sqrtf(grot_filtered[0]*grot_filtered[0] + grot_filtered[1]*grot_filtered[1] + grot_filtered[2]*grot_filtered[2]);
|
||||||
|
else
|
||||||
|
grot_mag = 1.0f;
|
||||||
|
|
||||||
|
if (grot_mag < 1.0e-3f)
|
||||||
|
return;
|
||||||
|
|
||||||
|
accel_err[0] /= (accel_mag*grot_mag);
|
||||||
|
accel_err[1] /= (accel_mag*grot_mag);
|
||||||
|
accel_err[2] /= (accel_mag*grot_mag);
|
||||||
|
|
||||||
// Accumulate integral of error. Scale here so that units are (deg/s) but Ki has units of s
|
// Accumulate integral of error. Scale here so that units are (deg/s) but Ki has units of s
|
||||||
gyro_correct_int[0] += accel_err[0] * accelKi;
|
gyro_correct_int[0] += accel_err[0] * accelKi;
|
||||||
@ -530,6 +568,16 @@ static void settingsUpdatedCb(UAVObjEvent * objEv) {
|
|||||||
accelKi = attitudeSettings.AccelKi;
|
accelKi = attitudeSettings.AccelKi;
|
||||||
yawBiasRate = attitudeSettings.YawBiasRate;
|
yawBiasRate = attitudeSettings.YawBiasRate;
|
||||||
gyroGain = attitudeSettings.GyroGain;
|
gyroGain = attitudeSettings.GyroGain;
|
||||||
|
|
||||||
|
// Calculate accel filter alpha, in the same way as for gyro data in stabilization module.
|
||||||
|
const float fakeDt = 0.0025;
|
||||||
|
if (attitudeSettings.AccelTau < 0.0001) {
|
||||||
|
accel_alpha = 0; // not trusting this to resolve to 0
|
||||||
|
accel_filter_enabled = false;
|
||||||
|
} else {
|
||||||
|
accel_alpha = expf(-fakeDt / attitudeSettings.AccelTau);
|
||||||
|
accel_filter_enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
zero_during_arming = attitudeSettings.ZeroDuringArming == ATTITUDESETTINGS_ZERODURINGARMING_TRUE;
|
zero_during_arming = attitudeSettings.ZeroDuringArming == ATTITUDESETTINGS_ZERODURINGARMING_TRUE;
|
||||||
bias_correct_gyro = attitudeSettings.BiasCorrectGyro == ATTITUDESETTINGS_BIASCORRECTGYRO_TRUE;
|
bias_correct_gyro = attitudeSettings.BiasCorrectGyro == ATTITUDESETTINGS_BIASCORRECTGYRO_TRUE;
|
||||||
|
@ -38,8 +38,7 @@ HEADERS += configplugin.h \
|
|||||||
configrevowidget.h \
|
configrevowidget.h \
|
||||||
config_global.h \
|
config_global.h \
|
||||||
mixercurve.h \
|
mixercurve.h \
|
||||||
dblspindelegate.h \
|
dblspindelegate.h
|
||||||
configautotunewidget.h
|
|
||||||
SOURCES += configplugin.cpp \
|
SOURCES += configplugin.cpp \
|
||||||
configgadgetconfiguration.cpp \
|
configgadgetconfiguration.cpp \
|
||||||
configgadgetwidget.cpp \
|
configgadgetwidget.cpp \
|
||||||
@ -72,8 +71,7 @@ SOURCES += configplugin.cpp \
|
|||||||
outputchannelform.cpp \
|
outputchannelform.cpp \
|
||||||
cfg_vehicletypes/vehicleconfig.cpp \
|
cfg_vehicletypes/vehicleconfig.cpp \
|
||||||
mixercurve.cpp \
|
mixercurve.cpp \
|
||||||
dblspindelegate.cpp \
|
dblspindelegate.cpp
|
||||||
configautotunewidget.cpp
|
|
||||||
FORMS += airframe.ui \
|
FORMS += airframe.ui \
|
||||||
cc_hw_settings.ui \
|
cc_hw_settings.ui \
|
||||||
pro_hw_settings.ui \
|
pro_hw_settings.ui \
|
||||||
@ -90,13 +88,5 @@ FORMS += airframe.ui \
|
|||||||
revosensors.ui \
|
revosensors.ui \
|
||||||
txpid.ui \
|
txpid.ui \
|
||||||
pipxtreme.ui \
|
pipxtreme.ui \
|
||||||
mixercurve.ui \
|
mixercurve.ui
|
||||||
autotune.ui
|
|
||||||
RESOURCES += configgadget.qrc
|
RESOURCES += configgadget.qrc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@
|
|||||||
#include "configinputwidget.h"
|
#include "configinputwidget.h"
|
||||||
#include "configoutputwidget.h"
|
#include "configoutputwidget.h"
|
||||||
#include "configstabilizationwidget.h"
|
#include "configstabilizationwidget.h"
|
||||||
#include "configautotunewidget.h"
|
|
||||||
#include "configcamerastabilizationwidget.h"
|
#include "configcamerastabilizationwidget.h"
|
||||||
#include "configtxpidwidget.h"
|
#include "configtxpidwidget.h"
|
||||||
#include "config_pro_hw_widget.h"
|
#include "config_pro_hw_widget.h"
|
||||||
@ -103,12 +102,6 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent)
|
|||||||
qwd = new ConfigStabilizationWidget(this);
|
qwd = new ConfigStabilizationWidget(this);
|
||||||
ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, *icon, QString("Stabilization"));
|
ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, *icon, QString("Stabilization"));
|
||||||
|
|
||||||
icon = new QIcon();
|
|
||||||
icon->addFile(":/configgadget/images/autotune_normal.png", QSize(), QIcon::Normal, QIcon::Off);
|
|
||||||
icon->addFile(":/configgadget/images/autotune_selected.png", QSize(), QIcon::Selected, QIcon::Off);
|
|
||||||
qwd = new ConfigAutotuneWidget(this);
|
|
||||||
ftw->insertTab(ConfigGadgetWidget::autotune, qwd, *icon, QString("Autotune"));
|
|
||||||
|
|
||||||
icon = new QIcon();
|
icon = new QIcon();
|
||||||
icon->addFile(":/configgadget/images/camstab_normal.png", QSize(), QIcon::Normal, QIcon::Off);
|
icon->addFile(":/configgadget/images/camstab_normal.png", QSize(), QIcon::Normal, QIcon::Off);
|
||||||
icon->addFile(":/configgadget/images/camstab_selected.png", QSize(), QIcon::Selected, QIcon::Off);
|
icon->addFile(":/configgadget/images/camstab_selected.png", QSize(), QIcon::Selected, QIcon::Off);
|
||||||
|
@ -48,7 +48,7 @@ class ConfigGadgetWidget: public QWidget
|
|||||||
public:
|
public:
|
||||||
ConfigGadgetWidget(QWidget *parent = 0);
|
ConfigGadgetWidget(QWidget *parent = 0);
|
||||||
~ConfigGadgetWidget();
|
~ConfigGadgetWidget();
|
||||||
enum widgetTabs {hardware=0, aircraft, input, output, sensors, stabilization, camerastabilization, txpid, pipxtreme, autotune};
|
enum widgetTabs {hardware=0, aircraft, input, output, sensors, stabilization, camerastabilization, txpid, pipxtreme};
|
||||||
void startInputWizard();
|
void startInputWizard();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
@ -158,9 +158,9 @@ bool deviceWidget::populateBoardStructuredDescription(QByteArray desc)
|
|||||||
{
|
{
|
||||||
myDevice->lblGitTag->setText(onBoardDescription.gitHash);
|
myDevice->lblGitTag->setText(onBoardDescription.gitHash);
|
||||||
myDevice->lblBuildDate->setText(onBoardDescription.gitDate.insert(4,"-").insert(7,"-"));
|
myDevice->lblBuildDate->setText(onBoardDescription.gitDate.insert(4,"-").insert(7,"-"));
|
||||||
if (onBoardDescription.gitTag.compare("master") == 0)
|
if(onBoardDescription.gitTag.startsWith("RELEASE",Qt::CaseSensitive))
|
||||||
{
|
{
|
||||||
myDevice->lblDescription->setText(QString("Firmware tag: ")+onBoardDescription.gitTag);
|
myDevice->lblDescription->setText(onBoardDescription.gitTag);
|
||||||
QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg"));
|
QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg"));
|
||||||
myDevice->lblCertified->setPixmap(pix);
|
myDevice->lblCertified->setPixmap(pix);
|
||||||
myDevice->lblCertified->setToolTip(tr("Tagged officially released firmware build"));
|
myDevice->lblCertified->setToolTip(tr("Tagged officially released firmware build"));
|
||||||
@ -188,7 +188,7 @@ bool deviceWidget::populateLoadedStructuredDescription(QByteArray desc)
|
|||||||
{
|
{
|
||||||
myDevice->lblGitTagL->setText(LoadedDescription.gitHash);
|
myDevice->lblGitTagL->setText(LoadedDescription.gitHash);
|
||||||
myDevice->lblBuildDateL->setText( LoadedDescription.gitDate.insert(4,"-").insert(7,"-"));
|
myDevice->lblBuildDateL->setText( LoadedDescription.gitDate.insert(4,"-").insert(7,"-"));
|
||||||
if (LoadedDescription.gitTag.compare("master") == 0)
|
if(LoadedDescription.gitTag.startsWith("RELEASE",Qt::CaseSensitive))
|
||||||
{
|
{
|
||||||
myDevice->lblDescritpionL->setText(LoadedDescription.gitTag);
|
myDevice->lblDescritpionL->setText(LoadedDescription.gitTag);
|
||||||
myDevice->description->setText(LoadedDescription.gitTag);
|
myDevice->description->setText(LoadedDescription.gitTag);
|
||||||
@ -302,7 +302,7 @@ void deviceWidget::loadFirmware()
|
|||||||
myDevice->statusLabel->setText(tr("The board has newer firmware than loaded. Are you sure you want to update?"));
|
myDevice->statusLabel->setText(tr("The board has newer firmware than loaded. Are you sure you want to update?"));
|
||||||
px.load(QString(":/uploader/images/warning.svg"));
|
px.load(QString(":/uploader/images/warning.svg"));
|
||||||
}
|
}
|
||||||
else if (LoadedDescription.gitTag.compare("master"))
|
else if(!LoadedDescription.gitTag.startsWith("RELEASE",Qt::CaseSensitive))
|
||||||
{
|
{
|
||||||
myDevice->statusLabel->setText(tr("The loaded firmware is untagged or custom build. Update only if it was received from a trusted source (official website or your own build)"));
|
myDevice->statusLabel->setText(tr("The loaded firmware is untagged or custom build. Update only if it was received from a trusted source (official website or your own build)"));
|
||||||
px.load(QString(":/uploader/images/warning.svg"));
|
px.load(QString(":/uploader/images/warning.svg"));
|
||||||
|
@ -103,7 +103,7 @@ void runningDeviceWidget::populate()
|
|||||||
deviceDescriptorStruct devDesc;
|
deviceDescriptorStruct devDesc;
|
||||||
if(UAVObjectUtilManager::descriptionToStructure(description,devDesc))
|
if(UAVObjectUtilManager::descriptionToStructure(description,devDesc))
|
||||||
{
|
{
|
||||||
if (devDesc.gitTag.compare("master") == 0)
|
if(devDesc.gitTag.startsWith("RELEASE",Qt::CaseSensitive))
|
||||||
{
|
{
|
||||||
myDevice->lblFWTag->setText(QString("Firmware tag: ")+devDesc.gitTag);
|
myDevice->lblFWTag->setText(QString("Firmware tag: ")+devDesc.gitTag);
|
||||||
QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg"));
|
QPixmap pix = QPixmap(QString(":uploader/images/application-certificate.svg"));
|
||||||
|
@ -167,7 +167,7 @@ class Repo:
|
|||||||
print "hash: ", self.hash()
|
print "hash: ", self.hash()
|
||||||
print "short hash: ", self.hash(8)
|
print "short hash: ", self.hash(8)
|
||||||
print "branch: ", self.branch()
|
print "branch: ", self.branch()
|
||||||
print "commit tag: ", self.tag()
|
print "commit tag: ", self.tag('')
|
||||||
print "dirty: ", self.dirty('yes', 'no')
|
print "dirty: ", self.dirty('yes', 'no')
|
||||||
|
|
||||||
def file_from_template(tpl_name, out_name, dict):
|
def file_from_template(tpl_name, out_name, dict):
|
||||||
@ -324,6 +324,12 @@ variable substitution and writes the result into output file. Output
|
|||||||
file will be overwritten only if its content differs from expected.
|
file will be overwritten only if its content differs from expected.
|
||||||
Otherwise it will not be touched, so make utility will not remake
|
Otherwise it will not be touched, so make utility will not remake
|
||||||
dependent targets.
|
dependent targets.
|
||||||
|
|
||||||
|
Optional positional arguments may be used to add more dictionary
|
||||||
|
strings for replacement. Each argument has the form:
|
||||||
|
VARIABLE=replacement
|
||||||
|
and each ${VARIABLE} reference will be replaced with replacement
|
||||||
|
string given.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Parse command line.
|
# Parse command line.
|
||||||
@ -359,8 +365,6 @@ dependent targets.
|
|||||||
parser.add_option('--uavodir', default = "",
|
parser.add_option('--uavodir', default = "",
|
||||||
help='uav object definition directory');
|
help='uav object definition directory');
|
||||||
(args, positional_args) = parser.parse_args()
|
(args, positional_args) = parser.parse_args()
|
||||||
if len(positional_args) != 0:
|
|
||||||
parser.error("incorrect number of arguments, try --help for help")
|
|
||||||
|
|
||||||
# Process arguments. No advanced error handling is here.
|
# Process arguments. No advanced error handling is here.
|
||||||
# Any error will raise an exception and terminate process
|
# Any error will raise an exception and terminate process
|
||||||
@ -373,6 +377,7 @@ dependent targets.
|
|||||||
ORIGIN = r.origin(),
|
ORIGIN = r.origin(),
|
||||||
HASH = r.hash(),
|
HASH = r.hash(),
|
||||||
HASH8 = r.hash(8),
|
HASH8 = r.hash(8),
|
||||||
|
TAG = r.tag(''),
|
||||||
TAG_OR_BRANCH = r.tag(r.branch('unreleased')),
|
TAG_OR_BRANCH = r.tag(r.branch('unreleased')),
|
||||||
TAG_OR_HASH8 = r.tag(r.hash(8, 'untagged')),
|
TAG_OR_HASH8 = r.tag(r.hash(8, 'untagged')),
|
||||||
DIRTY = r.dirty(),
|
DIRTY = r.dirty(),
|
||||||
@ -387,6 +392,12 @@ dependent targets.
|
|||||||
UAVOSHA1 = GetHashofDirs(args.uavodir,verbose=0,raw=0),
|
UAVOSHA1 = GetHashofDirs(args.uavodir,verbose=0,raw=0),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Process positional arguments in the form of:
|
||||||
|
# VAR1=str1 VAR2="string 2"
|
||||||
|
for var in positional_args:
|
||||||
|
(key, value) = var.split('=', 1)
|
||||||
|
dictionary[key] = value
|
||||||
|
|
||||||
if args.info:
|
if args.info:
|
||||||
r.info()
|
r.info()
|
||||||
|
|
||||||
|
@ -14,7 +14,13 @@ ROOT_DIR := $(realpath $(WHEREAMI)/../)
|
|||||||
# Set up some macros
|
# Set up some macros
|
||||||
BUILD_DIR := $(ROOT_DIR)/build
|
BUILD_DIR := $(ROOT_DIR)/build
|
||||||
VERSION_CMD := python $(ROOT_DIR)/make/scripts/version-info.py --path="$(ROOT_DIR)"
|
VERSION_CMD := python $(ROOT_DIR)/make/scripts/version-info.py --path="$(ROOT_DIR)"
|
||||||
|
# If there is a tag, use it for label instead of date-hash string
|
||||||
|
PACKAGE_TAG := $(shell $(VERSION_CMD) --format=\$${TAG})
|
||||||
|
ifneq ($(PACKAGE_TAG),)
|
||||||
|
PACKAGE_LBL := $(shell $(VERSION_CMD) --format=\$${TAG}\$${DIRTY})
|
||||||
|
else
|
||||||
PACKAGE_LBL := $(shell $(VERSION_CMD) --format=\$${DATE}-\$${TAG_OR_HASH8}\$${DIRTY})
|
PACKAGE_LBL := $(shell $(VERSION_CMD) --format=\$${DATE}-\$${TAG_OR_HASH8}\$${DIRTY})
|
||||||
|
endif
|
||||||
PACKAGE_DIR := $(BUILD_DIR)/package-$(PACKAGE_LBL)
|
PACKAGE_DIR := $(BUILD_DIR)/package-$(PACKAGE_LBL)
|
||||||
FW_DIR := $(PACKAGE_DIR)/firmware-$(PACKAGE_LBL)
|
FW_DIR := $(PACKAGE_DIR)/firmware-$(PACKAGE_LBL)
|
||||||
BL_DIR := $(FW_DIR)/bootloaders
|
BL_DIR := $(FW_DIR)/bootloaders
|
||||||
@ -152,4 +158,5 @@ opfw_resource:
|
|||||||
$(V1) echo '$(OPFW_CONTENTS)' > $(BUILD_DIR)/ground/$@/opfw_resource.qrc
|
$(V1) echo '$(OPFW_CONTENTS)' > $(BUILD_DIR)/ground/$@/opfw_resource.qrc
|
||||||
$(V1) $(foreach fw_targ, $(FW_TARGETS), mkdir -p $(BUILD_DIR)/ground/$@/build/$(fw_targ);)
|
$(V1) $(foreach fw_targ, $(FW_TARGETS), mkdir -p $(BUILD_DIR)/ground/$@/build/$(fw_targ);)
|
||||||
$(V1)$(foreach fw_targ, $(FW_TARGETS), cp $(BUILD_DIR)/$(fw_targ)/$(fw_targ).opfw $(BUILD_DIR)/ground/$@/build/$(fw_targ)/;)
|
$(V1)$(foreach fw_targ, $(FW_TARGETS), cp $(BUILD_DIR)/$(fw_targ)/$(fw_targ).opfw $(BUILD_DIR)/ground/$@/build/$(fw_targ)/;)
|
||||||
|
|
||||||
include $(WHEREAMI)/Makefile.$(PLATFORM)
|
include $(WHEREAMI)/Makefile.$(PLATFORM)
|
||||||
|
@ -11,7 +11,7 @@ NSIS_HEADER := $(BUILD_DIR)/ground/openpilotgcs/openpilotgcs.nsh
|
|||||||
|
|
||||||
win_package: gcs package_flight
|
win_package: gcs package_flight
|
||||||
$(V1) mkdir -p "$(dir $(NSIS_HEADER))"
|
$(V1) mkdir -p "$(dir $(NSIS_HEADER))"
|
||||||
$(VERSION_CMD) --template="$(NSIS_TEMPLATE)" --outfile="$(NSIS_HEADER)"
|
$(VERSION_CMD) --template="$(NSIS_TEMPLATE)" --outfile="$(NSIS_HEADER)" PACKAGE_LBL="$(PACKAGE_LBL)"
|
||||||
$(V1) echo "Building Windows installer, please wait..."
|
$(V1) echo "Building Windows installer, please wait..."
|
||||||
$(V1) echo "If you have a script error in line 1 - use Unicode NSIS 2.46+"
|
$(V1) echo "If you have a script error in line 1 - use Unicode NSIS 2.46+"
|
||||||
$(V1) echo " http://www.scratchpaper.com"
|
$(V1) echo " http://www.scratchpaper.com"
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
VIAddVersionKey "Comments" "${INSTALLER_NAME}. ${BUILD_DESCRIPTION}"
|
VIAddVersionKey "Comments" "${INSTALLER_NAME}. ${BUILD_DESCRIPTION}"
|
||||||
VIAddVersionKey "CompanyName" "The OpenPilot Team, http://www.openpilot.org"
|
VIAddVersionKey "CompanyName" "The OpenPilot Team, http://www.openpilot.org"
|
||||||
VIAddVersionKey "LegalTrademarks" "${PRODUCT_NAME} is a trademark of The OpenPilot Team"
|
VIAddVersionKey "LegalTrademarks" "${PRODUCT_NAME} is a trademark of The OpenPilot Team"
|
||||||
VIAddVersionKey "LegalCopyright" "© 2010-2011 The OpenPilot Team"
|
VIAddVersionKey "LegalCopyright" "© 2010-2012 The OpenPilot Team"
|
||||||
VIAddVersionKey "FileDescription" "${INSTALLER_NAME}"
|
VIAddVersionKey "FileDescription" "${INSTALLER_NAME}"
|
||||||
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
; Some names, paths and constants
|
; Some names, paths and constants
|
||||||
!define PACKAGE_LBL "${DATE}-${TAG_OR_HASH8}${DIRTY}"
|
!define PACKAGE_LBL "${PACKAGE_LBL}"
|
||||||
!define PACKAGE_DIR "..\..\build\package-$${PACKAGE_LBL}"
|
!define PACKAGE_DIR "..\..\build\package-$${PACKAGE_LBL}"
|
||||||
!define OUT_FILE "OpenPilot-$${PACKAGE_LBL}-install.exe"
|
!define OUT_FILE "OpenPilot-$${PACKAGE_LBL}-install.exe"
|
||||||
!define FIRMWARE_DIR "firmware-$${PACKAGE_LBL}"
|
!define FIRMWARE_DIR "firmware-$${PACKAGE_LBL}"
|
||||||
@ -20,4 +20,4 @@
|
|||||||
; Installer version info
|
; Installer version info
|
||||||
!define PRODUCT_VERSION "0.0.0.0"
|
!define PRODUCT_VERSION "0.0.0.0"
|
||||||
!define FILE_VERSION "${TAG_OR_BRANCH}:${HASH8}${DIRTY} ${DATETIME}"
|
!define FILE_VERSION "${TAG_OR_BRANCH}:${HASH8}${DIRTY} ${DATETIME}"
|
||||||
!define BUILD_DESCRIPTION "${TAG_OR_BRANCH}:${HASH8}${DIRTY} built using ${ORIGIN} as origin, committed ${DATETIME} as ${HASH}"
|
!define BUILD_DESCRIPTION "${PACKAGE_LBL} built using ${ORIGIN} as origin, committed ${DATETIME} as ${HASH}"
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
<field name="GyroGain" units="(rad/s)/lsb" type="float" elements="1" defaultvalue="0.42"/>
|
<field name="GyroGain" units="(rad/s)/lsb" type="float" elements="1" defaultvalue="0.42"/>
|
||||||
<field name="AccelKp" units="channel" type="float" elements="1" defaultvalue="0.05"/>
|
<field name="AccelKp" units="channel" type="float" elements="1" defaultvalue="0.05"/>
|
||||||
<field name="AccelKi" units="channel" type="float" elements="1" defaultvalue="0.0001"/>
|
<field name="AccelKi" units="channel" type="float" elements="1" defaultvalue="0.0001"/>
|
||||||
|
<field name="AccelTau" units="" type="float" elements="1" defaultvalue="0"/>
|
||||||
<field name="YawBiasRate" units="channel" type="float" elements="1" defaultvalue="0.000001"/>
|
<field name="YawBiasRate" units="channel" type="float" elements="1" defaultvalue="0.000001"/>
|
||||||
<field name="ZeroDuringArming" units="channel" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>
|
<field name="ZeroDuringArming" units="channel" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>
|
||||||
<field name="BiasCorrectGyro" units="channel" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>
|
<field name="BiasCorrectGyro" units="channel" type="enum" elements="1" options="FALSE,TRUE" defaultvalue="TRUE"/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user