gps image-time attitude 拟合精度
This commit is contained in:
@@ -18,7 +18,7 @@ func (atts Attitudes) Save(attFile string) error {
|
||||
defer f.Close()
|
||||
|
||||
for _, att := range atts.Atts {
|
||||
content := fmt.Sprintf("%.8f %.8f %.8f %.8f %.8f\n", att.UTCTimestampSec, att.Q0, att.Q1, att.Q2, att.Q3)
|
||||
content := fmt.Sprintf("%.6f %.8f %.8f %.8f %.8f\n", att.UTCTimestampSec, att.Q0, att.Q1, att.Q2, att.Q3)
|
||||
f.WriteString(content)
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ func ExtractAttitude(aps []*AuxPlatform) *Attitudes {
|
||||
sec, microsec = ap.UTCTimeSec, ap.Microsecond
|
||||
att := Attitude{
|
||||
UTCTimestampSec: float64(sec) + float64(ReferenceTime2000) +
|
||||
float64((microsec))/1e6,
|
||||
float64(transfromGPSandAttMicrosec(microsec))/1e6,
|
||||
Q0: ap.QuatAttstarQ0,
|
||||
Q1: ap.QuatAttstarQ1,
|
||||
Q2: ap.QuatAttstarQ2,
|
||||
|
||||
@@ -48,6 +48,7 @@ func ExtractAux(auxfile string) ([]*AuxFrameHead, []*AuxFocalBox, []*AuxPlatform
|
||||
// 长光卫星姿态和GPS数据更新频率为 4 次/秒
|
||||
func transfromGPSandAttMicrosec(microsec uint32) uint32 {
|
||||
unit := uint32(250000)
|
||||
// return microsec
|
||||
|
||||
microsec = (microsec / unit) * unit
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ func (g GPSs) Save(gpsFile string) error {
|
||||
defer f.Close()
|
||||
|
||||
for _, gps := range g.GPSs {
|
||||
content := fmt.Sprintf("%.8f %.8f %.8f %.8f %.8f %.8f %.8f\n",
|
||||
content := fmt.Sprintf("%.6f %.8f %.8f %.8f %.8f %.8f %.8f\n",
|
||||
gps.UTCTimestampSec,
|
||||
gps.X84, gps.Y84, gps.Z84,
|
||||
gps.Vx84, gps.Vy84, gps.Vz84)
|
||||
@@ -37,9 +37,9 @@ func (g GPSs) Lagrange(t float64) *GPS {
|
||||
var gps_sample []*GPS
|
||||
var idx int
|
||||
|
||||
if t < g.GPSs[0].UTCTimestampSec {
|
||||
if t-g.GPSs[0].UTCTimestampSec < 1e-7 {
|
||||
return g.GPSs[0]
|
||||
} else if t > g.GPSs[len(g.GPSs)-1].UTCTimestampSec {
|
||||
} else if t-g.GPSs[len(g.GPSs)-1].UTCTimestampSec > -1e-7 {
|
||||
return g.GPSs[len(g.GPSs)-1]
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ func StoreGPS(aps []*AuxPlatform, gpsFile string) (*GPSs, error) {
|
||||
interGPS.GPSs = append(interGPS.GPSs, gpss.Lagrange(t))
|
||||
}
|
||||
|
||||
return gpss, interGPS.Save(gpsFile)
|
||||
return gpss, gpss.Save(gpsFile)
|
||||
}
|
||||
|
||||
func ExtractGPS(aps []*AuxPlatform) *GPSs {
|
||||
|
||||
@@ -53,12 +53,15 @@ func (it *ImageTime) Interp(imgrow int, cross int) (float64, float64) {
|
||||
return t, dt
|
||||
}
|
||||
|
||||
func (it *ImageTime) Print(n int, cross int) {
|
||||
f, _ := os.Create("log/image_time.txt")
|
||||
func (it *ImageTime) Store(imgtimeFile string) error {
|
||||
f, err := os.Create(imgtimeFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
for i := 0; i < n; i++ {
|
||||
t, dt := it.Interp(i, cross)
|
||||
s := fmt.Sprintf("%d %f %f\n", i, t, dt)
|
||||
for _, a := range it.auxT {
|
||||
s := fmt.Sprintf("%.6f\t%d\n", a.Tutc, a.Row)
|
||||
f.WriteString(s)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user