Create a "passive" mode for the autopilot. This is analogous to running the
autopilot with the servos off. In otherwords, the computer goes through the motions of computing the desired behavior (pitch or roll) but doesn't actually drive the outputs. This is potentially useful when implimenting a flight director.
This commit is contained in:
parent
e7ed073c68
commit
bcd9b071c5
2 changed files with 22 additions and 3 deletions
|
@ -79,6 +79,10 @@ FGPIDController::FGPIDController( SGPropertyNode *node ):
|
|||
if ( val != NULL ) {
|
||||
enable_value = val->getStringValue();
|
||||
}
|
||||
SGPropertyNode *pass = child->getChild( "honor-passive" );
|
||||
if ( pass != NULL ) {
|
||||
honor_passive = pass->getBoolValue();
|
||||
}
|
||||
} else if ( cname == "input" ) {
|
||||
SGPropertyNode *prop = child->getChild( "prop" );
|
||||
if ( prop != NULL ) {
|
||||
|
@ -338,9 +342,18 @@ void FGPIDController::update( double dt ) {
|
|||
edf_n_2 = edf_n_1;
|
||||
edf_n_1 = edf_n;
|
||||
|
||||
unsigned int i;
|
||||
for ( i = 0; i < output_list.size(); ++i ) {
|
||||
output_list[i]->setDoubleValue( u_n );
|
||||
// passive_ignore == true means that we go through all the
|
||||
// motions, but drive the outputs. This is analogous to
|
||||
// running the autopilot with the "servos" off. This is
|
||||
// helpful for things like flight directors which position
|
||||
// their vbars from the autopilot computations.
|
||||
if ( passive_mode->getBoolValue() && honor_passive ) {
|
||||
// skip output step
|
||||
} else {
|
||||
unsigned int i;
|
||||
for ( i = 0; i < output_list.size(); ++i ) {
|
||||
output_list[i]->setDoubleValue( u_n );
|
||||
}
|
||||
}
|
||||
} else if ( !enabled ) {
|
||||
ep_n = 0.0;
|
||||
|
|
|
@ -45,6 +45,8 @@ SG_USING_STD(deque);
|
|||
#include <simgear/props/props.hxx>
|
||||
#include <simgear/structure/subsystem_mgr.hxx>
|
||||
|
||||
#include <Main/fg_props.hxx>
|
||||
|
||||
|
||||
/**
|
||||
* Base class for other autopilot components
|
||||
|
@ -57,7 +59,9 @@ protected:
|
|||
string name;
|
||||
|
||||
SGPropertyNode_ptr enable_prop;
|
||||
SGPropertyNode_ptr passive_mode;
|
||||
string enable_value;
|
||||
bool honor_passive;
|
||||
bool enabled;
|
||||
|
||||
SGPropertyNode_ptr input_prop;
|
||||
|
@ -69,7 +73,9 @@ public:
|
|||
|
||||
FGXMLAutoComponent() :
|
||||
enable_prop( NULL ),
|
||||
passive_mode( fgGetNode("/autopilot/settings/passive-mode", true) ),
|
||||
enable_value( "" ),
|
||||
honor_passive( false ),
|
||||
enabled( false ),
|
||||
input_prop( NULL ),
|
||||
r_n_prop( NULL ),
|
||||
|
|
Loading…
Add table
Reference in a new issue