*
This commit is contained in:
@@ -23,6 +23,7 @@ rpc:
|
|||||||
grid_size: 3
|
grid_size: 3
|
||||||
altitude_layer: 5
|
altitude_layer: 5
|
||||||
altitude_range: 1000
|
altitude_range: 1000
|
||||||
|
method: 2 # 1-最小二乘法 2-NelderMead
|
||||||
|
|
||||||
dem:
|
dem:
|
||||||
dem_1km: "dem/gdlebm.tif"
|
dem_1km: "dem/gdlebm.tif"
|
||||||
@@ -16,7 +16,7 @@ const (
|
|||||||
MSSPixels = float64(payload.MSS_PIXEL_WIDTH)
|
MSSPixels = float64(payload.MSS_PIXEL_WIDTH)
|
||||||
MSSCellSize = 12.8 // µm
|
MSSCellSize = 12.8 // µm
|
||||||
CameraRoll = -0.010 // 相机与卫星本体X轴的安装角度, degree FIXME: 安装矩阵应该由卫星方提供
|
CameraRoll = -0.010 // 相机与卫星本体X轴的安装角度, degree FIXME: 安装矩阵应该由卫星方提供
|
||||||
CameraPitch = 0.183 // 相机与卫星本体Y轴的安装角度, degree
|
CameraPitch = 0.213 // 相机与卫星本体Y轴的安装角度, degree
|
||||||
CameraYaw = 0.012 // 相机与卫星本体Z轴的安装角度, degree
|
CameraYaw = 0.012 // 相机与卫星本体Z轴的安装角度, degree
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ type RPCConfig struct {
|
|||||||
GridSize int `yaml:"grid_size" mapstructure:"grid_size"`
|
GridSize int `yaml:"grid_size" mapstructure:"grid_size"`
|
||||||
AltitudeRange int `yaml:"altitude_range" mapstructure:"altitude_range"`
|
AltitudeRange int `yaml:"altitude_range" mapstructure:"altitude_range"`
|
||||||
AltitudeLayer int `yaml:"altitude_layer" mapstructure:"altitude_layer"`
|
AltitudeLayer int `yaml:"altitude_layer" mapstructure:"altitude_layer"`
|
||||||
|
Method int `yaml:"method" mapstructure:"method"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var GCONFIG Config
|
var GCONFIG Config
|
||||||
@@ -105,6 +106,7 @@ func init() {
|
|||||||
GridSize: 3,
|
GridSize: 3,
|
||||||
AltitudeRange: 1000,
|
AltitudeRange: 1000,
|
||||||
AltitudeLayer: 5,
|
AltitudeLayer: 5,
|
||||||
|
Method: 2,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ func (rpc *RPC) RPC() error {
|
|||||||
rowVec, colVec, latVec, lonVec, heightVec)
|
rowVec, colVec, latVec, lonVec, heightVec)
|
||||||
|
|
||||||
// 设计矩阵 B = [ 20个分子系数 19个分母系数 ] W = 权矩阵 R = 观测结果
|
// 设计矩阵 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
|
// x = (B^T * W^2 * B)^-1 * (B^T * W^2 * R), 其中 x = [a1..a20 b2..b20]^T
|
||||||
// 行参数
|
// 行参数
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ type SolveMethod int
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
SolveMethodOptimize SolveMethod = iota
|
SolveMethodOptimize SolveMethod = iota
|
||||||
SolveMethodNelderMead
|
|
||||||
SolveMethodLeastSquare
|
SolveMethodLeastSquare
|
||||||
|
SolveMethodNelderMead
|
||||||
)
|
)
|
||||||
|
|
||||||
const epsilon = 1e-4
|
const epsilon = 1e-4
|
||||||
|
|||||||
Reference in New Issue
Block a user