From e44bd318ae137f51b24f1113030aa15244a7708e Mon Sep 17 00:00:00 2001 From: nuknal Date: Tue, 10 Sep 2024 15:17:59 +0800 Subject: [PATCH] * --- config/config.yaml | 1 + pkg/calculator/camera.go | 2 +- pkg/config/config.go | 2 ++ pkg/producer/rpc.go | 2 +- pkg/producer/rpc_helper.go | 2 +- 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index 9c757be..c2f4a09 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -23,6 +23,7 @@ rpc: grid_size: 3 altitude_layer: 5 altitude_range: 1000 + method: 2 # 1-最小二乘法 2-NelderMead dem: dem_1km: "dem/gdlebm.tif" \ No newline at end of file diff --git a/pkg/calculator/camera.go b/pkg/calculator/camera.go index 371962b..6d2ed54 100644 --- a/pkg/calculator/camera.go +++ b/pkg/calculator/camera.go @@ -16,7 +16,7 @@ const ( MSSPixels = float64(payload.MSS_PIXEL_WIDTH) MSSCellSize = 12.8 // µm CameraRoll = -0.010 // 相机与卫星本体X轴的安装角度, degree FIXME: 安装矩阵应该由卫星方提供 - CameraPitch = 0.183 // 相机与卫星本体Y轴的安装角度, degree + CameraPitch = 0.213 // 相机与卫星本体Y轴的安装角度, degree CameraYaw = 0.012 // 相机与卫星本体Z轴的安装角度, degree ) diff --git a/pkg/config/config.go b/pkg/config/config.go index 1e190f2..28dca94 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -57,6 +57,7 @@ type RPCConfig struct { GridSize int `yaml:"grid_size" mapstructure:"grid_size"` AltitudeRange int `yaml:"altitude_range" mapstructure:"altitude_range"` AltitudeLayer int `yaml:"altitude_layer" mapstructure:"altitude_layer"` + Method int `yaml:"method" mapstructure:"method"` } var GCONFIG Config @@ -105,6 +106,7 @@ func init() { GridSize: 3, AltitudeRange: 1000, AltitudeLayer: 5, + Method: 2, }, } } diff --git a/pkg/producer/rpc.go b/pkg/producer/rpc.go index 7e39267..d4d1f80 100644 --- a/pkg/producer/rpc.go +++ b/pkg/producer/rpc.go @@ -161,7 +161,7 @@ func (rpc *RPC) RPC() error { rowVec, colVec, latVec, lonVec, heightVec) // 设计矩阵 B = [ 20个分子系数 19个分母系数 ] W = 权矩阵 R = 观测结果 - method := SolveMethodNelderMead + method := SolveMethod(config.GCONFIG.RPC.Method) // x = (B^T * W^2 * B)^-1 * (B^T * W^2 * R), 其中 x = [a1..a20 b2..b20]^T // 行参数 diff --git a/pkg/producer/rpc_helper.go b/pkg/producer/rpc_helper.go index 77ab8f8..693a915 100644 --- a/pkg/producer/rpc_helper.go +++ b/pkg/producer/rpc_helper.go @@ -18,8 +18,8 @@ type SolveMethod int const ( SolveMethodOptimize SolveMethod = iota - SolveMethodNelderMead SolveMethodLeastSquare + SolveMethodNelderMead ) const epsilon = 1e-4