mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-28 17:54:15 +01:00
OP-1848 altvari0
1. build fixes 2. Updated ui to use updated uavo names in altitude settings that align to the naming in vtol settings 3. Moved call the thrust altvario to pre application of PIDs for 3d axes to allow for later coupling.
This commit is contained in:
parent
d469a754bf
commit
0d77cd95d9
@ -105,6 +105,24 @@ static void stabilizationOuterloopTask()
|
|||||||
int t;
|
int t;
|
||||||
float dT = PIOS_DELTATIME_GetAverageSeconds(&timeval);
|
float dT = PIOS_DELTATIME_GetAverageSeconds(&timeval);
|
||||||
|
|
||||||
|
bool reinit = (StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST] != previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST]);
|
||||||
|
previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST] = StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST];
|
||||||
|
switch (StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST]) {
|
||||||
|
#ifdef REVOLUTION
|
||||||
|
case STABILIZATIONSTATUS_OUTERLOOP_ALTITUDE:
|
||||||
|
rateDesiredAxis[STABILIZATIONSTATUS_OUTERLOOP_THRUST] = stabilizationAltitudeHold(stabilizationDesiredAxis[STABILIZATIONSTATUS_OUTERLOOP_THRUST], ALTITUDEHOLD, reinit);
|
||||||
|
break;
|
||||||
|
case STABILIZATIONSTATUS_OUTERLOOP_ALTITUDEVARIO:
|
||||||
|
rateDesiredAxis[STABILIZATIONSTATUS_OUTERLOOP_THRUST] = stabilizationAltitudeHold(stabilizationDesiredAxis[STABILIZATIONSTATUS_OUTERLOOP_THRUST], ALTITUDEVARIO, reinit);
|
||||||
|
break;
|
||||||
|
#endif /* REVOLUTION */
|
||||||
|
case STABILIZATIONSTATUS_OUTERLOOP_DIRECT:
|
||||||
|
default:
|
||||||
|
rateDesiredAxis[STABILIZATIONSTATUS_OUTERLOOP_THRUST] = stabilizationDesiredAxis[STABILIZATIONSTATUS_OUTERLOOP_THRUST];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
float local_error[3];
|
float local_error[3];
|
||||||
{
|
{
|
||||||
#if defined(PIOS_QUATERNION_STABILIZATION)
|
#if defined(PIOS_QUATERNION_STABILIZATION)
|
||||||
@ -148,11 +166,12 @@ static void stabilizationOuterloopTask()
|
|||||||
}
|
}
|
||||||
#endif /* if defined(PIOS_QUATERNION_STABILIZATION) */
|
#endif /* if defined(PIOS_QUATERNION_STABILIZATION) */
|
||||||
}
|
}
|
||||||
for (t = 0; t < AXES; t++) {
|
|
||||||
bool reinit = (StabilizationStatusOuterLoopToArray(enabled)[t] != previous_mode[t]);
|
|
||||||
|
for (t = STABILIZATIONSTATUS_OUTERLOOP_ROLL; t < STABILIZATIONSTATUS_OUTERLOOP_THRUST; t++) {
|
||||||
|
reinit = (StabilizationStatusOuterLoopToArray(enabled)[t] != previous_mode[t]);
|
||||||
previous_mode[t] = StabilizationStatusOuterLoopToArray(enabled)[t];
|
previous_mode[t] = StabilizationStatusOuterLoopToArray(enabled)[t];
|
||||||
|
|
||||||
if (t < STABILIZATIONSTATUS_OUTERLOOP_THRUST) {
|
|
||||||
if (reinit) {
|
if (reinit) {
|
||||||
stabSettings.outerPids[t].iAccumulator = 0;
|
stabSettings.outerPids[t].iAccumulator = 0;
|
||||||
}
|
}
|
||||||
@ -200,7 +219,7 @@ static void stabilizationOuterloopTask()
|
|||||||
// so for now I'm not taking these into account
|
// so for now I'm not taking these into account
|
||||||
// while working with this, it occurred to me that Attitude mode,
|
// while working with this, it occurred to me that Attitude mode,
|
||||||
// set up with maxangle=190 would be similar to Ratt, and it is.
|
// set up with maxangle=190 would be similar to Ratt, and it is.
|
||||||
#define STICK_VALUE_AT_MODE_TRANSITION 0.618033989f
|
#define STICK_VALUE_AT_MODE_TRANSITION 0.618033989f
|
||||||
|
|
||||||
// the following assumes the transition would otherwise be at 0.618033989f
|
// the following assumes the transition would otherwise be at 0.618033989f
|
||||||
// and THAT assumes that Att ramps up to max roll rate
|
// and THAT assumes that Att ramps up to max roll rate
|
||||||
@ -244,22 +263,6 @@ static void stabilizationOuterloopTask()
|
|||||||
rateDesiredAxis[t] = stabilizationDesiredAxis[t];
|
rateDesiredAxis[t] = stabilizationDesiredAxis[t];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
switch (StabilizationStatusOuterLoopToArray(enabled)[t]) {
|
|
||||||
#ifdef REVOLUTION
|
|
||||||
case STABILIZATIONSTATUS_OUTERLOOP_ALTITUDE:
|
|
||||||
rateDesiredAxis[t] = stabilizationAltitudeHold(stabilizationDesiredAxis[t], ALTITUDEHOLD, reinit);
|
|
||||||
break;
|
|
||||||
case STABILIZATIONSTATUS_OUTERLOOP_ALTITUDEVARIO:
|
|
||||||
rateDesiredAxis[t] = stabilizationAltitudeHold(stabilizationDesiredAxis[t], ALTITUDEVARIO, reinit);
|
|
||||||
break;
|
|
||||||
#endif /* REVOLUTION */
|
|
||||||
case STABILIZATIONSTATUS_OUTERLOOP_DIRECT:
|
|
||||||
default:
|
|
||||||
rateDesiredAxis[t] = stabilizationDesiredAxis[t];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RateDesiredSet(&rateDesired);
|
RateDesiredSet(&rateDesired);
|
||||||
|
@ -24,6 +24,9 @@ endif
|
|||||||
include ../board-info.mk
|
include ../board-info.mk
|
||||||
include $(ROOT_DIR)/make/firmware-defs.mk
|
include $(ROOT_DIR)/make/firmware-defs.mk
|
||||||
|
|
||||||
|
# REVO C++ support
|
||||||
|
USE_CXX = YES
|
||||||
|
|
||||||
# ARM DSP library
|
# ARM DSP library
|
||||||
USE_DSP_LIB ?= NO
|
USE_DSP_LIB ?= NO
|
||||||
|
|
||||||
@ -70,7 +73,7 @@ ifndef TESTAPP
|
|||||||
## Application Core
|
## Application Core
|
||||||
SRC += ../pios_usb_board_data.c
|
SRC += ../pios_usb_board_data.c
|
||||||
SRC += $(OPMODULEDIR)/System/systemmod.c
|
SRC += $(OPMODULEDIR)/System/systemmod.c
|
||||||
SRC += $(OPSYSTEM)/discoveryf4bare.c
|
CPPSRC += $(OPSYSTEM)/discoveryf4bare.cpp
|
||||||
SRC += $(OPSYSTEM)/pios_board.c
|
SRC += $(OPSYSTEM)/pios_board.c
|
||||||
SRC += $(FLIGHTLIB)/alarms.c
|
SRC += $(FLIGHTLIB)/alarms.c
|
||||||
SRC += $(OPUAVTALK)/uavtalk.c
|
SRC += $(OPUAVTALK)/uavtalk.c
|
||||||
@ -91,6 +94,7 @@ ifndef TESTAPP
|
|||||||
SRC += $(FLIGHTLIB)/insgps13state.c
|
SRC += $(FLIGHTLIB)/insgps13state.c
|
||||||
SRC += $(FLIGHTLIB)/auxmagsupport.c
|
SRC += $(FLIGHTLIB)/auxmagsupport.c
|
||||||
SRC += $(FLIGHTLIB)/lednotification.c
|
SRC += $(FLIGHTLIB)/lednotification.c
|
||||||
|
CPPSRC += $(FLIGHTLIB)/mini_cpp.cpp
|
||||||
|
|
||||||
## UAVObjects
|
## UAVObjects
|
||||||
include ./UAVObjects.inc
|
include ./UAVObjects.inc
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
#include "inc/openpilot.h"
|
#include "inc/openpilot.h"
|
||||||
#include <uavobjectsinit.h>
|
#include <uavobjectsinit.h>
|
||||||
|
|
||||||
@ -74,6 +74,7 @@ static void initTask(void *parameters);
|
|||||||
|
|
||||||
/* Prototype of generated InitModules() function */
|
/* Prototype of generated InitModules() function */
|
||||||
extern void InitModules(void);
|
extern void InitModules(void);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OpenPilot Main function:
|
* OpenPilot Main function:
|
@ -24,6 +24,9 @@ endif
|
|||||||
include ../board-info.mk
|
include ../board-info.mk
|
||||||
include $(ROOT_DIR)/make/firmware-defs.mk
|
include $(ROOT_DIR)/make/firmware-defs.mk
|
||||||
|
|
||||||
|
# REVO C++ support
|
||||||
|
USE_CXX = YES
|
||||||
|
|
||||||
# ARM DSP library
|
# ARM DSP library
|
||||||
USE_DSP_LIB ?= NO
|
USE_DSP_LIB ?= NO
|
||||||
|
|
||||||
@ -65,7 +68,7 @@ ifndef TESTAPP
|
|||||||
## Application Core
|
## Application Core
|
||||||
SRC += ../pios_usb_board_data.c
|
SRC += ../pios_usb_board_data.c
|
||||||
SRC += $(OPMODULEDIR)/System/systemmod.c
|
SRC += $(OPMODULEDIR)/System/systemmod.c
|
||||||
SRC += $(OPSYSTEM)/revolution.c
|
CPPSRC += $(OPSYSTEM)/revolution.cpp
|
||||||
SRC += $(OPSYSTEM)/pios_board.c
|
SRC += $(OPSYSTEM)/pios_board.c
|
||||||
SRC += $(FLIGHTLIB)/alarms.c
|
SRC += $(FLIGHTLIB)/alarms.c
|
||||||
SRC += $(OPUAVTALK)/uavtalk.c
|
SRC += $(OPUAVTALK)/uavtalk.c
|
||||||
@ -84,6 +87,8 @@ ifndef TESTAPP
|
|||||||
SRC += $(FLIGHTLIB)/WorldMagModel.c
|
SRC += $(FLIGHTLIB)/WorldMagModel.c
|
||||||
SRC += $(FLIGHTLIB)/insgps13state.c
|
SRC += $(FLIGHTLIB)/insgps13state.c
|
||||||
SRC += $(FLIGHTLIB)/auxmagsupport.c
|
SRC += $(FLIGHTLIB)/auxmagsupport.c
|
||||||
|
CPPSRC += $(FLIGHTLIB)/mini_cpp.cpp
|
||||||
|
|
||||||
|
|
||||||
## UAVObjects
|
## UAVObjects
|
||||||
include ./UAVObjects.inc
|
include ./UAVObjects.inc
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
#include "inc/openpilot.h"
|
#include "inc/openpilot.h"
|
||||||
#include <uavobjectsinit.h>
|
#include <uavobjectsinit.h>
|
||||||
|
|
||||||
@ -73,6 +74,7 @@ static void initTask(void *parameters);
|
|||||||
|
|
||||||
/* Prototype of generated InitModules() function */
|
/* Prototype of generated InitModules() function */
|
||||||
extern void InitModules(void);
|
extern void InitModules(void);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OpenPilot Main function:
|
* OpenPilot Main function:
|
@ -25209,8 +25209,7 @@ border-radius: 5;</string>
|
|||||||
<property name="objrelation" stdset="0">
|
<property name="objrelation" stdset="0">
|
||||||
<stringlist>
|
<stringlist>
|
||||||
<string>objname:AltitudeHoldSettings</string>
|
<string>objname:AltitudeHoldSettings</string>
|
||||||
<string>fieldname:AltitudePI</string>
|
<string>fieldname:VerticalPosP</string>
|
||||||
<string>element:Kp</string>
|
|
||||||
<string>scale:0.01</string>
|
<string>scale:0.01</string>
|
||||||
<string>haslimits:yes</string>
|
<string>haslimits:yes</string>
|
||||||
<string>buttongroup:98,10</string>
|
<string>buttongroup:98,10</string>
|
||||||
@ -25294,7 +25293,7 @@ border-radius: 5;</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="1">
|
<item row="3" column="1">
|
||||||
<widget class="QSlider" name="AltKdSlider">
|
<widget class="QSlider" name="VelKiSlider">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>How fast the vehicle should adjust its neutral throttle estimation. Altitude assumes that when engaged the throttle is in the range required to hover. If the throttle is a lot higher or lower, it needs to adjust this &quot;throttle trim&quot; Higher values make it do this adjustment faster, but this could lead to ugly oscillations. Leave at default unless you know what you are doing.</p></body></html></string>
|
<string><html><head/><body><p>How fast the vehicle should adjust its neutral throttle estimation. Altitude assumes that when engaged the throttle is in the range required to hover. If the throttle is a lot higher or lower, it needs to adjust this &quot;throttle trim&quot; Higher values make it do this adjustment faster, but this could lead to ugly oscillations. Leave at default unless you know what you are doing.</p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
@ -25313,7 +25312,7 @@ border-radius: 5;</string>
|
|||||||
<property name="objrelation" stdset="0">
|
<property name="objrelation" stdset="0">
|
||||||
<stringlist>
|
<stringlist>
|
||||||
<string>objname:AltitudeHoldSettings</string>
|
<string>objname:AltitudeHoldSettings</string>
|
||||||
<string>fieldname:VelocityPI</string>
|
<string>fieldname:VerticalVelPID</string>
|
||||||
<string>element:Ki</string>
|
<string>element:Ki</string>
|
||||||
<string>scale:0.00001</string>
|
<string>scale:0.00001</string>
|
||||||
<string>haslimits:yes</string>
|
<string>haslimits:yes</string>
|
||||||
@ -25323,7 +25322,7 @@ border-radius: 5;</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="2">
|
<item row="2" column="2">
|
||||||
<widget class="QSpinBox" name="AltKi">
|
<widget class="QSpinBox" name="VelKp">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@ -25370,7 +25369,7 @@ border-radius: 5;</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="3" column="2">
|
<item row="3" column="2">
|
||||||
<widget class="QSpinBox" name="AltKd">
|
<widget class="QSpinBox" name="VelKi">
|
||||||
<property name="sizePolicy">
|
<property name="sizePolicy">
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
@ -25434,10 +25433,9 @@ border-radius: 5;</string>
|
|||||||
<enum>QSlider::TicksBelow</enum>
|
<enum>QSlider::TicksBelow</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="objrelation" stdset="0">
|
<property name="objrelation" stdset="0">
|
||||||
<stringlist>
|
<stringlist notr="true">
|
||||||
<string>objname:AltitudeHoldSettings</string>
|
<string>objname:AltitudeHoldSettings</string>
|
||||||
<string>fieldname:AltitudePI</string>
|
<string>fieldname:VerticalPosP</string>
|
||||||
<string>element:Kp</string>
|
|
||||||
<string>scale:0.01</string>
|
<string>scale:0.01</string>
|
||||||
<string>haslimits:yes</string>
|
<string>haslimits:yes</string>
|
||||||
<string>buttongroup:98</string>
|
<string>buttongroup:98</string>
|
||||||
@ -25446,7 +25444,7 @@ border-radius: 5;</string>
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QSlider" name="AltKiSlider">
|
<widget class="QSlider" name="VelKpSlider">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string><html><head/><body><p>How much the vehicle should throttle up or down to compensate or achieve a certain vertical speed. Higher values lead to more aggressive throttle changes and could lead to oscillations. This is the most likely candidate to change depending on the crafts engine thrust. Heavy craft with weak engines might require higher values.</p></body></html></string>
|
<string><html><head/><body><p>How much the vehicle should throttle up or down to compensate or achieve a certain vertical speed. Higher values lead to more aggressive throttle changes and could lead to oscillations. This is the most likely candidate to change depending on the crafts engine thrust. Heavy craft with weak engines might require higher values.</p></body></html></string>
|
||||||
</property>
|
</property>
|
||||||
@ -25465,7 +25463,7 @@ border-radius: 5;</string>
|
|||||||
<property name="objrelation" stdset="0">
|
<property name="objrelation" stdset="0">
|
||||||
<stringlist>
|
<stringlist>
|
||||||
<string>objname:AltitudeHoldSettings</string>
|
<string>objname:AltitudeHoldSettings</string>
|
||||||
<string>fieldname:VelocityPI</string>
|
<string>fieldname:VerticalVelPID</string>
|
||||||
<string>element:Kp</string>
|
<string>element:Kp</string>
|
||||||
<string>scale:0.01</string>
|
<string>scale:0.01</string>
|
||||||
<string>haslimits:yes</string>
|
<string>haslimits:yes</string>
|
||||||
@ -27173,10 +27171,10 @@ Useful if you have accidentally changed some settings.</string>
|
|||||||
<tabstop>pushButton_7</tabstop>
|
<tabstop>pushButton_7</tabstop>
|
||||||
<tabstop>AltKpSlider</tabstop>
|
<tabstop>AltKpSlider</tabstop>
|
||||||
<tabstop>AltKp</tabstop>
|
<tabstop>AltKp</tabstop>
|
||||||
<tabstop>AltKiSlider</tabstop>
|
<tabstop>VelKpSlider</tabstop>
|
||||||
<tabstop>AltKi</tabstop>
|
<tabstop>VelKp</tabstop>
|
||||||
<tabstop>AltKdSlider</tabstop>
|
<tabstop>VelKiSlider</tabstop>
|
||||||
<tabstop>AltKd</tabstop>
|
<tabstop>VelKi</tabstop>
|
||||||
<tabstop>pushButton_8</tabstop>
|
<tabstop>pushButton_8</tabstop>
|
||||||
<tabstop>AltThrExpSlider_2</tabstop>
|
<tabstop>AltThrExpSlider_2</tabstop>
|
||||||
<tabstop>AltThrExp_2</tabstop>
|
<tabstop>AltThrExp_2</tabstop>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user