Merge pull request #592 from westphae/master

WebUI and dependency changes.
pull/598/head
cyoung 2017-05-09 10:28:14 -04:00 zatwierdzone przez GitHub
commit 7933b70821
3 zmienionych plików z 19 dodań i 43 usunięć

Wyświetl plik

@ -294,7 +294,7 @@ func sensorAttitudeSender() {
}
}
func makeSensorRotationMatrix(g [3]float64) *[3][3]float64 {
func makeSensorRotationMatrix(g [3]float64) (rotmat *[3][3]float64) {
f := globalSettings.IMUMapping
if globalSettings.IMUMapping[0] == 0 { // if unset, default to some standard orientation
globalSettings.IMUMapping[0] = -1 // +2 for RY836AI
@ -302,44 +302,19 @@ func makeSensorRotationMatrix(g [3]float64) *[3][3]float64 {
saveSettings()
}
var x, y, z [3]float64
// This is the "forward direction" chosen during the orientation process.
var x *[3]float64 = new([3]float64)
if f[0] < 0 {
x[-f[0]-1] = -1
} else {
x[+f[0]-1] = +1
}
// This is the "up direction" chosen during the orientation process.
if f[1] < 0 {
z[-f[1]-1] = -1
} else {
z[+f[1]-1] = +1
}
if math.Abs(z[0]*g[0]+z[1]*g[1]+z[2]*g[2]-1) > 0.1 {
log.Println("AHRS Warning: sensor is not nearly level with chosen up direction")
}
z = g
// Normalize the gravity vector to be 1 G.
gg := math.Sqrt(z[0]*z[0] + z[1]*z[1] + z[2]*z[2])
z[0] /= gg
z[1] /= gg
z[2] /= gg
z, _ := ahrs.MakeUnitVector(g)
// Remove the projection on the measured gravity vector from x so it's orthogonal to z.
dp := x[0]*z[0] + x[1]*z[1] + x[2]*z[2]
x[0] = x[0] - dp*z[0]
x[1] = x[1] - dp*z[1]
x[2] = x[2] - dp*z[2]
// Specify the "left wing" direction for a right-handed coordinate system using the cross product.
y[0] = z[1]*x[2] - z[2]*x[1]
y[1] = z[2]*x[0] - z[0]*x[2]
y[2] = z[0]*x[1] - z[1]*x[0]
return &[3][3]float64{x, y, z}
rotmat, _ = ahrs.MakeHardSoftRotationMatrix(*z, *x, [3]float64{0, 0, 1}, [3]float64{1, 0, 0})
return rotmat
}
// This is used in the orientation process where the user specifies the forward and up directions.

Wyświetl plik

@ -20,7 +20,8 @@
<strong class="col-xs-6 text-center">Track:</strong>
</div>
<div class="row">
<span class="col-xs-6 text-center">{{gps_lat}}, {{gps_lon}} &plusmn; {{gps_accuracy}} m <br> {{gps_alt}} &plusmn; {{gps_vert_accuracy}} ft @ {{gps_vert_speed}} ft/min</span>
<span class="col-xs-6 text-center">{{gps_lat}}, {{gps_lon}} &plusmn; {{gps_horizontal_accuracy}} m <br>
{{gps_alt}} &plusmn; {{gps_vertical_accuracy}} ft @ {{gps_vert_speed}} ft/min</span>
<span class="col-xs-6 text-center">{{gps_track}}&deg; @ {{gps_speed}} KTS</span>
</div>
</div>

Wyświetl plik

@ -138,26 +138,26 @@ function GPSCtrl($rootScope, $scope, $state, $http, $interval) {
$scope.press_time = Date.parse(situation.BaroLastMeasurementTime);
$scope.gps_time = Date.parse(situation.GPSLastGPSTimeStratuxTime);
if ($scope.gps_time - $scope.press_time < 1000) {
$scope.ahrs_alt = Math.round(situation.BaroPressureAltitude);
$scope.ahrs_alt = Math.round(situation.BaroPressureAltitude.toFixed(0));
} else {
$scope.ahrs_alt = "---";
}
$scope.ahrs_heading = Math.round(situation.AHRSGyroHeading);
$scope.ahrs_heading = Math.round(situation.AHRSGyroHeading.toFixed(0));
// pitch and roll are in degrees
$scope.ahrs_pitch = Math.round(situation.AHRSPitch*10)/10;
$scope.ahrs_roll = Math.round(situation.AHRSRoll*10)/10;
$scope.ahrs_slip_skid = Math.round(situation.AHRSSlipSkid*10)/10;
ahrs.update($scope.ahrs_pitch, $scope.ahrs_roll, $scope.ahrs_heading, $scope.ahrs_slip_skid);
$scope.ahrs_pitch = situation.AHRSPitch.toFixed(1);
$scope.ahrs_roll = situation.AHRSRoll.toFixed(1);
$scope.ahrs_slip_skid = situation.AHRSSlipSkid.toFixed(1);
ahrs.update(situation.AHRSPitch, situation.AHRSRoll, situation.AHRSGyroHeading, situation.AHRSSlipSkid);
$scope.ahrs_heading_mag = Math.round(situation.AHRSMagHeading);
$scope.ahrs_gload = Math.round(situation.AHRSGLoad*100)/100;
gMeter.update($scope.ahrs_gload);
$scope.ahrs_heading_mag = situation.AHRSMagHeading.toFixed(0);
$scope.ahrs_gload = situation.AHRSGLoad.toFixed(2);
gMeter.update(situation.AHRSGLoad);
if (situation.AHRSTurnRate> 0.25) {
$scope.ahrs_turn_rate = Math.round(360/situation.AHRSTurnRate/60*10)/10; // minutes/turn
if (situation.AHRSTurnRate> 0.6031) {
$scope.ahrs_turn_rate = (6/situation.AHRSTurnRate).toFixed(1); // minutes/turn
} else {
$scope.ahrs_turn_rate = '---'
$scope.ahrs_turn_rate = '\u221e';
}
if (situation.AHRSStatus & 0x01) {
statusGPS.classList.remove("off");