CVS: source/src/Instrumentation gps.cxx, 1.53, 1.54 gps.hxx, 1.20, 1.21
James Turner <[email protected]>
| Newsgroups | gmane.games.flightgear.cvc |
|---|---|
| Message-ID | <[email protected]> |
Update of /var/cvs/FlightGear-0.9/source/src/Instrumentation
In directory baron.flightgear.org:/tmp/cvs-serv11557/src/Instrumentation
Modified Files:
gps.cxx gps.hxx
Log Message:
GPS: add NS and EW velocity computation, which some real-world devices display.
Index: gps.cxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/Instrumentation/gps.cxx,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -r1.53 -r1.54
--- gps.cxx 25 Mar 2010 16:40:52 -0000 1.53
+++ gps.cxx 27 Mar 2010 11:37:06 -0000 1.54
@@ -249,6 +249,8 @@
_trip_odometer_node = _gpsNode->getChild("trip-odometer", 0, true);
_true_bug_error_node = _gpsNode->getChild("true-bug-error-deg", 0, true);
_magnetic_bug_error_node = _gpsNode->getChild("magnetic-bug-error-deg", 0, true);
+ _eastWestVelocity = _gpsNode->getChild("ew-velocity-msec", 0, true);
+ _northSouthVelocity = _gpsNode->getChild("ns-velocity-msec", 0, true);
// waypoints
SGPropertyNode *wp_node = _gpsNode->getChild("wp", 0, true);
@@ -420,6 +422,7 @@
_indicated_pos = SGGeod();
_last_vertical_speed = 0.0;
_last_true_track = 0.0;
+ _lastEWVelocity = _lastNSVelocity = 0.0;
_raim_node->setDoubleValue(0.0);
_indicated_pos = SGGeod();
@@ -431,6 +434,8 @@
_tracking_bug_node->setDoubleValue(0);
_true_bug_error_node->setDoubleValue(0);
_magnetic_bug_error_node->setDoubleValue(0);
+ _northSouthVelocity->setDoubleValue(0.0);
+ _eastWestVelocity->setDoubleValue(0.0);
}
void
@@ -545,9 +550,28 @@
double vertical_speed_mpm = ((_indicated_pos.getElevationM() - _last_pos.getElevationM()) * 60 / dt);
_last_vertical_speed = vertical_speed_mpm * SG_METER_TO_FEET;
- speed_kt = fgGetLowPass(_last_speed_kts, speed_kt, dt/20.0);
+ speed_kt = fgGetLowPass(_last_speed_kts, speed_kt, dt/10.0);
_last_speed_kts = speed_kt;
+ SGGeod g = _indicated_pos;
+ g.setLongitudeDeg(_last_pos.getLongitudeDeg());
+ double northSouthM = SGGeodesy::distanceM(_last_pos, g);
+ northSouthM = copysign(northSouthM, _indicated_pos.getLatitudeDeg() - _last_pos.getLatitudeDeg());
+
+ double nsMSec = fgGetLowPass(_lastNSVelocity, northSouthM / dt, dt/2.0);
+ _lastNSVelocity = nsMSec;
+ _northSouthVelocity->setDoubleValue(nsMSec);
+
+
+ g = _indicated_pos;
+ g.setLatitudeDeg(_last_pos.getLatitudeDeg());
+ double eastWestM = SGGeodesy::distanceM(_last_pos, g);
+ eastWestM = copysign(eastWestM, _indicated_pos.getLongitudeDeg() - _last_pos.getLongitudeDeg());
+
+ double ewMSec = fgGetLowPass(_lastEWVelocity, eastWestM / dt, dt/2.0);
+ _lastEWVelocity = ewMSec;
+ _eastWestVelocity->setDoubleValue(ewMSec);
+
double odometer = _odometer_node->getDoubleValue();
_odometer_node->setDoubleValue(odometer + distance_m * SG_METER_TO_NM);
odometer = _trip_odometer_node->getDoubleValue();
Index: gps.hxx
===================================================================
RCS file: /var/cvs/FlightGear-0.9/source/src/Instrumentation/gps.hxx,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- gps.hxx 25 Mar 2010 16:40:53 -0000 1.20
+++ gps.hxx 27 Mar 2010 11:37:07 -0000 1.21
@@ -333,6 +333,8 @@
SGPropertyNode_ptr _trip_odometer_node;
SGPropertyNode_ptr _true_bug_error_node;
SGPropertyNode_ptr _magnetic_bug_error_node;
+ SGPropertyNode_ptr _eastWestVelocity;
+ SGPropertyNode_ptr _northSouthVelocity;
SGPropertyNode_ptr _ref_navaid_id_node;
SGPropertyNode_ptr _ref_navaid_bearing_node;
@@ -358,6 +360,8 @@
double _last_speed_kts;
double _last_true_track;
double _last_vertical_speed;
+ double _lastEWVelocity;
+ double _lastNSVelocity;
std::string _mode;
GPSListener* _listener;
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev