Skip to content

Commit

Permalink
Config file for project. Also change maneuver frame to RNC
Browse files Browse the repository at this point in the history
  • Loading branch information
ChristopherRabotin committed May 8, 2017
1 parent 67d3cf3 commit 1e1b257
Show file tree
Hide file tree
Showing 4 changed files with 181 additions and 11 deletions.
170 changes: 170 additions & 0 deletions cmd/mission/finalprj/finiteburn.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
[mission]
start = "2016-10-16 16:20:06" # or JDE
end = "2016-10-19 12:00:00" # or JDE
step = "1s" # Must be parsable by golang's ParseDuration

[spacecraft]
name = "TGO"
fuel = 500
dry = 500

[orbit]
body = "Mars"
sma = 55855.7
ecc = 0.8690
inc = 74.0
RAAN = 0.0
argPeri = 0.0
tAnomaly = 180

[error] # To generate datasets only
probability = 0 # i.e. 1% of calls to SetState will have an error
position = 1.0 # sigma for Gaussian
velocity = 0.1 # sigma for Gaussian

[perturbations]
J2 = true
J3 = false
J4 = false
bodies = ["Earth", "Sun", "Venus", "Jupiter"]

[burns.0]
date = "2016-10-19 00:00:00"
R = 0
N = -0.10
C = 0

[burns.1]
date = "2016-10-19 00:00:01"
R = 0
N = -0.15
C = 0

[burns.2]
date = "2016-10-19 00:00:02"
R = 0
N = -0.35
C = 0

[burns.3]
date = "2016-10-19 00:00:03"
R = 0
N = -0.35
C = 0

[burns.4]
date = "2016-10-19 00:00:04"
R = 0
N = -0.35
C = 0

[burns.5]
date = "2016-10-19 00:00:05"
R = 0
N = -0.35
C = 0

[burns.6]
date = "2016-10-19 00:00:06"
R = 0
N = -0.35
C = 0

[burns.7]
date = "2016-10-19 00:00:07"
R = 0
N = -0.35
C = 0

[burns.8]
date = "2016-10-19 00:00:08"
R = 0
N = -0.35
C = 0

[burns.9]
date = "2016-10-19 00:00:09"
R = 0
N = -0.35
C = 0

[burns.10]
date = "2016-10-19 00:00:10"
R = 0
N = -0.35
C = 0

[burns.11]
date = "2016-10-19 00:00:11"
R = 0
N = -0.35
C = 0

[burns.12]
date = "2016-10-19 00:00:12"
R = 0
N = -0.35
C = 0

[burns.13]
date = "2016-10-19 00:00:13"
R = 0
N = -0.35
C = 0

[burns.14]
date = "2016-10-19 00:00:14"
R = 0
N = -0.35
C = 0

[burns.15]
date = "2016-10-19 00:00:15"
R = 0
N = -0.35
C = 0

[burns.16]
date = "2016-10-19 00:00:16"
R = 0
N = -0.35
C = 0

[burns.17]
date = "2016-10-19 00:00:17"
R = 0
N = -0.35
C = 0

[burns.18]
date = "2016-10-19 00:00:18"
R = 0
N = -0.35
C = 0

[burns.19]
date = "2016-10-19 00:00:19"
R = 0
N = -0.35
C = 0

[burns.20]
date = "2016-10-19 00:00:20"
R = 0
N = -0.05
C = 0

[measurements]
enabled = false
output = "output/meas.csv"
stations = ["builtin.DSS34", "Other"]

[station.Other]
name = "Other station"
altitude = 100
elevation = 10
latitude = 0
longitude = 0
range_sigma = 0.1
rate_sigma = 0.1
#planet = "Mars"
4 changes: 2 additions & 2 deletions cmd/mission/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,10 +112,10 @@ func main() {
// Maneuvers
for burnNo := 0; viper.IsSet(fmt.Sprintf("burns.%d", burnNo)); burnNo++ {
burnDT := confReadJDEorTime(fmt.Sprintf("burns.%d.date", burnNo))
V := viper.GetFloat64(fmt.Sprintf("burns.%d.V", burnNo))
R := viper.GetFloat64(fmt.Sprintf("burns.%d.R", burnNo))
N := viper.GetFloat64(fmt.Sprintf("burns.%d.N", burnNo))
C := viper.GetFloat64(fmt.Sprintf("burns.%d.C", burnNo))
sc.Maneuvers[burnDT] = smd.NewManeuver(V, N, C)
sc.Maneuvers[burnDT] = smd.NewManeuver(R, N, C)
if burnDT.After(endDT) || burnDT.Before(startDT) {
log.Printf("[WARNING] burn scheduled out of propagation time")
} else if verbose {
Expand Down
8 changes: 4 additions & 4 deletions mission.go
Original file line number Diff line number Diff line change
Expand Up @@ -308,18 +308,18 @@ func (a *Mission) Func(t float64, f []float64) (fDot []float64) {
tmpOrbit = NewOrbitFromRV(R, V, a.Orbit.Origin)
bodyAcc := -tmpOrbit.Origin.μ / math.Pow(Norm(R), 3)
_, _, i, Ω, _, _, _, _, u := tmpOrbit.Elements()
Δv = Rot313Vec(-u, -i, -Ω, Δv)
// Check if any impulse burn, and execute them if needed.
if maneuver, exists := a.Vehicle.Maneuvers[a.CurrentDT.Truncate(StepSize)]; exists {
if maneuver, exists := a.Vehicle.Maneuvers[a.CurrentDT.Truncate(a.step)]; exists {
if !maneuver.done {
a.Vehicle.logger.Log("level", "info", "subsys", "astro", "date", a.CurrentDT, "thrust", "impulse", "v(km/s)", maneuver.Δv())
Δv[0] += maneuver.V
Δv[0] += maneuver.R
Δv[1] += maneuver.N
Δv[2] += maneuver.C
maneuver.done = true
a.Vehicle.Maneuvers[a.CurrentDT.Truncate(StepSize)] = maneuver
a.Vehicle.Maneuvers[a.CurrentDT.Truncate(a.step)] = maneuver
}
}
Δv = Rot313Vec(-u, -i, -Ω, Δv)
// d\vec{R}/dt
fDot[0] = f[3]
fDot[1] = f[4]
Expand Down
10 changes: 5 additions & 5 deletions prop.go
Original file line number Diff line number Diff line change
Expand Up @@ -500,19 +500,19 @@ func NewHohmannΔv(target Orbit) HohmannΔv {

// Maneuver stores a maneuver in the VNC frame
type Maneuver struct {
V, N, C float64
R, N, C float64
done bool
}

// Δv returns the Δv in km/s
func (m Maneuver) Δv() float64 {
return math.Sqrt(m.V*m.V + m.N*m.N + m.C*m.C)
return math.Sqrt(m.R*m.R + m.N*m.N + m.C*m.C)
}

func (m Maneuver) String() string {
return fmt.Sprintf("burn [%f %f %f] km/s -- executed: %v", m.V, m.N, m.C, m.done)
return fmt.Sprintf("burn [%f %f %f] km/s -- executed: %v", m.R, m.N, m.C, m.done)
}

func NewManeuver(V, N, C float64) Maneuver {
return Maneuver{V, N, C, false}
func NewManeuver(R, N, C float64) Maneuver {
return Maneuver{R, N, C, false}
}

0 comments on commit 1e1b257

Please sign in to comment.