Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • orekit/orekit
  • gbonnefille/orekit
  • sdinot/orekit
  • vmouraux/orekit
  • Petrush/orekit
  • gprat/orekit
  • Shiva_Iyer/orekit
  • yzokras/orekit
  • hankg/orekit
  • markrutten/orekit
  • ThomasP/orekit
  • mikael/orekit
  • AmirAllahvirdi/orekit
  • rferme/orekit
  • plan3d/orekit
  • andrewsgoetz/orekit
  • Vyom-Yadav/orekit
  • crusconi/orekit
  • afossa/orekit
  • julie.bayard/orekit
  • polmes/orekit
  • kendra.hale/orekit
  • mvanel73/orekit
  • ShippingEnjoyer/orekit
  • tommyfryer/orekit
  • bpfoster/orekit
  • louis_aucouturier/orekit
  • pascal/orekit
  • gaetanpierre0/orekit
  • bryan/orekit
  • vcucchie/orekit
  • GuillaumeFiorello/orekit
  • lirw1984/orekit
  • bradh/orekit
  • qmor/orekit
  • Jasquier/orekit
  • jfraserh/orekit
  • Rafael-Ayala/orekit
  • guillermojanner/orekit
  • Sohnny/orekit
  • laura.garcia/orekit
  • nick.lafarge/orekit
  • whigg/orekit
  • bullat/orekit
  • Zudo/orekit
  • Geckonoid/orekit
  • derekkayhan/orekit
  • simon-van-hulle/orekit
  • briannaaubin/orekit
  • quentin.gegoue/orekit
  • alexbm/orekit
  • rocuv/orekit
52 results
Show changes
Showing
with 999 additions and 307 deletions
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
...@@ -25,17 +25,24 @@ ...@@ -25,17 +25,24 @@
skinparam NoteFontColor #691616 skinparam NoteFontColor #691616
skinparam ClassFontSize 11 skinparam ClassFontSize 11
skinparam PackageFontSize 12 skinparam PackageFontSize 12
skinparam linetype ortho
package org.orekit.propagation #ECEBD8 { package org.orekit.propagation #ECEBD8 {
interface Propagator {
+void addEventDetector(EventDetector detector)
+Collection<EventDetector> getEventDetectors()
+void clearEventsDetectors()
}
package events #DDEBD8 { package events #DDEBD8 {
package handlers #CEEBD8 { package handlers #CBDBC8 {
interface "EventHandler<T extends EventDetector>" as EventHandler_T_ { interface EventHandler {
+init(SpacecraftState s0, AbsoluteDate target) +init(SpacecraftState s0, AbsoluteDate target, EventDetector detector)
+Action eventOccurred(SpacecraftState s, T detector, boolean increasing) +Action eventOccurred(SpacecraftState s, EventDetector detector, boolean increasing)
+SpacecraftState resetState(T detector, SpacecraftState oldState) +SpacecraftState resetState(EventDetector detector, SpacecraftState oldState)
} }
enum Action { enum Action {
...@@ -45,10 +52,10 @@ ...@@ -45,10 +52,10 @@
+CONTINUE +CONTINUE
} }
ContinueOnEvent --|> EventHandler_T_ ContinueOnEvent --|> EventHandler
StopOnEvent --|> EventHandler_T_ StopOnEvent --|> EventHandler
StopOnDecreasingEvent --|> EventHandler_T_ StopOnDecreasingEvent --|> EventHandler
StopOnIncreasingEvent --|> EventHandler_T_ StopOnIncreasingEvent --|> EventHandler
} }
...@@ -70,17 +77,17 @@ ...@@ -70,17 +77,17 @@
} }
EventDetector <--* "1" EventShifter EventDetector <--* "1" EventShifter
class "AbstractDetector<T extends EventDetector>" as AbstractDetector_T_ { class "AbstractDetector<T extends AbstractDetector<T>>" as AbstractDetector_T_ {
+T withMaxCheck(double maxCheck) +T withMaxCheck(double maxCheck)
+T withThreshold(double threshold) +T withThreshold(double threshold)
+T withMaxIter(int maxIter) +T withMaxIter(int maxIter)
+T withHandler(EventHandler<T> handler) +T withHandler(EventHandler handler)
+EventHandler<T> getHandler() +EventHandler getHandler()
} }
enum FilterType { enum FilterType {
TRIGGER_ONLY_DECREASING_EVENTS TRIGGER_ONLY_DECREASING_EVENTS
TRIGGER_ONLY_INCREASING_EVENTS TRIGGER_ONLY_INCREASING_EVENTS
} }
interface EnablingPredicate { interface EnablingPredicate {
...@@ -92,6 +99,7 @@ ...@@ -92,6 +99,7 @@
EventDetector <--* "1" EventSlopeFilter EventDetector <--* "1" EventSlopeFilter
EventSlopeFilter "1" *--> FilterType EventSlopeFilter "1" *--> FilterType
Propagator "1" o--> "*" EventDetector : detectors
EventDetector <--* "1" EventEnablingPredicateFilter EventDetector <--* "1" EventEnablingPredicateFilter
EventEnablingPredicateFilter "1" *--> EnablingPredicate EventEnablingPredicateFilter "1" *--> EnablingPredicate
...@@ -99,29 +107,22 @@ ...@@ -99,29 +107,22 @@
AbstractDetector_T_ <|-- EventSlopeFilter AbstractDetector_T_ <|-- EventSlopeFilter
AbstractDetector_T_ <|-- EventEnablingPredicateFilter AbstractDetector_T_ <|-- EventEnablingPredicateFilter
Action <-left- EventHandler_T_ Action <-left- EventHandler
EventDetector <|.. AbstractDetector_T_ EventDetector <|.. AbstractDetector_T_
AbstractDetector_T_ <|-- EclipseDetector AbstractDetector_T_ <|-- EclipseDetector
AbstractDetector_T_ <|-- ElevationDetector AbstractDetector_T_ <|-- ElevationDetector
class "...Detector" as DummyDetector class "...Detector" as DummyDetector
AbstractDetector_T_ <|-- DummyDetector DummyDetector --|> AbstractDetector_T_
note top note top
many implementations many implementations
not displayed for the not displayed for the
sake of diagram clarity sake of diagram clarity
end note end note
EventHandler_T_ "1" <--o AbstractDetector_T_ : handler EventHandler "1" <--o AbstractDetector_T_ : handler
} }
interface Propagator {
+void addEventDetector(EventDetector detector)
+Collection<EventDetector> getEventsDetectors()
+void clearEventsDetectors()
}
EventDetector "*" <--o "1" Propagator : detectors
} }
@enduml @enduml
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
......
' Copyright 2002-2025 CS GROUP
' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0
' (the "License"); you may not use this file except in compliance with
' the License. You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and
' limitations under the License.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB/CCC9C5
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
package org.hipparchus.filtering #ECEBD8 {
abstract AbstractKalmanFilter {
+ predict()
+ correct()
}
package kalman.extended #DDEBD8 {
interface NonLinearProcess {
+ getEvolution()
+ getInnovation()
}
class ExtendedKalmanFilter {
+ ExtendedKalmanFiler(MatrixDecomposer decomposer, NonLinearProcess process, ProcessEstimate initialState)
+ estimationStep(measurement)
}
ExtendedKalmanFilter *-->"1" NonLinearProcess
}
ExtendedKalmanFilter --|> AbstractKalmanFilter
}
package org.orekit #ECEBD8 {
package propagation #DDEBD8 {
package integration #F3EFEB {
interface AdditionalDerivativesProvider {
+ init()
+ derivatives()
}
}
package sampling #F3EFEB {
interface OrekitStepHandler {
+ init()
+ handleStep(OrekitStepInterpolator interpolator)
}
}
package seminalytical.dsst #F3EFEB {
class DSSTPropagator {
+ DSSTHarvester setupMatricesComputation(String stmName, RealMatrix initialStm, DoubleArrayDictionary initialJacobianColumns)
+ SpacecraftState propagate(AbsoluteDate start, AbsoluteDate end)
+ void setStepHandler(OrekitStepHandler handler)
}
class DSSTHarvester {
+ RealMatrix getB1()
+ RealMatrix getB2()
+ RealMatrix getB3()
+ RealMatrix getB4()
+ setReferenceState(SpacecraftState meanState)
}
AdditionalDerivativesProvider <|.. DSSTStateTransitionMatrixGenerator
DSSTPropagator *--> AdditionalDerivativesProvider
DSSTPropagator *--> OrekitStepHandler
DSSTHarvester <--o DSSTPropagator
DSSTStateTransitionMatrixGenerator <--o DSSTPropagator
}
}
package estimation.sequential #DDEBD8 {
class SemiAnalyticalKalmanEstimator {
- ExtendedKalmanFilter filter
- SemiAnalyticalKalmanModel processModel
+ DSSTPropagator processMeasurements(List<ObservedMeasurement> measurements)
}
class SemiAnalyticalKalmanEstimatorBuilder {
+ decomposer(MatrixDecomposer decomposer)
+ addPropagationConfiguration(DSSTPropagator propagator, CovarianceMatrixProvider initialCovariance)
+ SemiAnalyticalKalmanEstimator build()
}
class SemiAnalyticalKalmanModel {
- DSSTHarvester mapper
- DSSTPropagator dsstPropagator
+ DSSTPropagator processMeasurements(List<ObservedMeasurement> measurements)
- void updateNominalSpacecraftState(SpacecraftState nominal)
- RealMatrix getErrorStateTransitionMatrix()
- RealMatrix getMeasurementMatrix()
- RealVector predictFilterCorrection(RealMatrix stm)
- computeOsculatingElements()
}
class SemiAnalyticalMeasurementHandler
OrekitStepHandler <|.. SemiAnalyticalMeasurementHandler
SemiAnalyticalKalmanEstimator <-- SemiAnalyticalKalmanEstimatorBuilder
NonLinearProcess <|.. SemiAnalyticalKalmanModel
SemiAnalyticalKalmanModel <-- SemiAnalyticalKalmanEstimator
ExtendedKalmanFilter <-- SemiAnalyticalKalmanEstimator
SemiAnalyticalMeasurementHandler <-- SemiAnalyticalKalmanModel
}
}
@enduml
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
skinparam NoteFontColor #691616 skinparam NoteFontColor #691616
skinparam ClassFontSize 11 skinparam ClassFontSize 11
skinparam PackageFontSize 12 skinparam PackageFontSize 12
skinparam linetype ortho
package org.hipparchus #ECEBD8 { package org.hipparchus #ECEBD8 {
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
Field<T> getField() Field<T> getField()
} }
interface "RealFieldElement<T>" as RealFieldElement_T_ { interface "CalculusFieldElement<T>" as CalculusFieldElement_T_ {
T sin() T sin()
T cos() T cos()
... ...
...@@ -68,13 +69,13 @@ ...@@ -68,13 +69,13 @@
+double taylor(double[] delta) +double taylor(double[] delta)
} }
FieldElement_T_ <.. RealFieldElement_T_ FieldElement_T_ <.. CalculusFieldElement_T_
RealFieldElement_T_ <.. DerivativeStructure CalculusFieldElement_T_ <.. DerivativeStructure
DSFactory --> DerivativeStructure : creates DSFactory --> DerivativeStructure : creates
} }
package util #DDEBD8 { package util #DDEBD8 {
RealFieldElement_T_ <.. Tuple CalculusFieldElement_T_ <.. Tuple
} }
} }
...@@ -82,7 +83,7 @@ ...@@ -82,7 +83,7 @@
package org.orekit.propagation #ECEBD8 { package org.orekit.propagation #ECEBD8 {
interface "FieldPropagator<T>" as FieldPropagator_T_ { interface "FieldPropagator<T>" as FieldPropagator_T_ {
} }
RealFieldElement_T_ <-- FieldPropagator_T_ CalculusFieldElement_T_ <-- FieldPropagator_T_
} }
@enduml @enduml
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
...@@ -25,17 +25,20 @@ ...@@ -25,17 +25,20 @@
skinparam NoteFontColor #691616 skinparam NoteFontColor #691616
skinparam ClassFontSize 11 skinparam ClassFontSize 11
skinparam PackageFontSize 12 skinparam PackageFontSize 12
skinparam linetype ortho
package org.orekit #ECEBD8 { package org.orekit #ECEBD8 {
package time #DDEBD8 { package time #DDEBD8 {
interface TimeStamped interface TimeStamped
interface "TimeShiftable<T>" as TimeShiftable_T_ interface "TimeShiftable<T>" as TimeShiftable_T_
interface "TimeInterpolable<T>" as TimeInterpolable_T_
} }
package frames #DDEBD8 { package frames #DDEBD8 {
interface StaticTransform
interface KinematicTransform
class Frame { class Frame {
+String getName() +String getName()
+boolean isPseudoInertial() +boolean isPseudoInertial()
...@@ -61,7 +64,7 @@ ...@@ -61,7 +64,7 @@
+Vector3D transformVector(Vector3D vector) +Vector3D transformVector(Vector3D vector)
+Line transformLine(Line line) +Line transformLine(Line line)
+PVCoordinates transformPVCoordinates(PVCoordinates pv) +PVCoordinates transformPVCoordinates(PVCoordinates pv)
+void getJacobian(double[][] jacobian) +void getJacobian(CartesianDerivativesFilter selector, double[][] jacobian)
+Vector3D getTranslation() +Vector3D getTranslation()
+Vector3D getVelocity() +Vector3D getVelocity()
+Rotation getRotation() +Rotation getRotation()
...@@ -69,8 +72,7 @@ ...@@ -69,8 +72,7 @@
} }
class UpdatableFrame { class UpdatableFrame {
+void setTransform(Transform) +void updateTransform(...)
+void updateFrame(...)
} }
class TopocentricFrame class TopocentricFrame
...@@ -117,9 +119,10 @@ ...@@ -117,9 +119,10 @@
} }
TimeStamped <|-- Transform StaticTransform <|-- KinematicTransform
TimeStamped <|-right- StaticTransform
TimeShiftable_T_ <|-- Transform TimeShiftable_T_ <|-- Transform
TimeInterpolable_T_ <|-- Transform KinematicTransform <|-- Transform
package utils #DDEBD8 { package utils #DDEBD8 {
enum IERSConventions { enum IERSConventions {
......
' Copyright 2002-2025 CS GROUP
' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0
' (the "License"); you may not use this file except in compliance with
' the License. You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and
' limitations under the License.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB/CCC9C5
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
skinparam PackageFontSize 12
skinparam linetype ortho
package org.orekit #ECEBD8 {
package data #DDEBD8 {
interface DataFilter {
DataSource filter(DataSource)
}
class DataSource {
+getName()
+getOpener()
}
DataFilter --> DataSource
}
package files #DDEBD8 {
package sp3 #CBDBC8 {
class SP3
class SP3Coordinate
SP3 --> SP3Coordinate
}
package ilrs #CBDBC8 {
class CPF
class CPFWriter
class StreamingCpfWriter
class CPFCoordinate
CPF --> CPFCoordinate
}
package general #CBDBC8 {
class OrekitEphemerisFile
interface EphemerisFileParser {
+EphemerisFile parse(dataSource)
}
interface EphemerisFileWriter {
+write(appendable, ephemerisFile)
+write(path, ephemerisFile)
}
interface "EphemerisFile<C,S>" as EphemerisFile {
+getSatellites()
}
interface "EphemerisFile.SatelliteEphemeris" as SatelliteEphemeris {
+getId()
+getMu()
+getStart()
+getStop()
+getSegments()
+getPropagator()
}
interface "EphemerisFile.EphemerisSegment" as EphemerisSegment {
+getMu()
+getFrame()
+getInertialFrame()
+getInterpolationSamples()
+getAvailableDerivatives()
+getCoordinates()
+getStart()
+getStop()
+getPropagator()
}
SP3 ..|> EphemerisFile
CPF ..|> EphemerisFile
CPFWriter <--o StreamingCpfWriter
EphemerisFileWriter <|.. CPFWriter
SatelliteEphemeris <--* EphemerisFile
SatelliteEphemeris o--> EphemerisSegment
DataSource <-- EphemerisFileParser
EphemerisFile <|.. OrekitEphemerisFile
EphemerisFile <-- EphemerisFileWriter
EphemerisFileParser --> EphemerisFile : create
}
package ccsds.ndm.odm #CBDBC8 {
package oem #CCCCC7 {
class OemWriter
class StreamingOemWriter
class Oem
EphemerisFile <|.. Oem
OemWriter <--o StreamingOemWriter
EphemerisFileWriter <|.. OemWriter
}
package ocm #CCCCC7 {
class OcmWriter
class StreamingOcmWriter
class Ocm
EphemerisFile <|.. Ocm
OcmWriter <--o StreamingOcmWriter
EphemerisFileWriter <|.. OcmWriter
}
}
}
package propagation #DDEBD8 {
interface Propagator
interface BoundedPropagator
Propagator <|.. BoundedPropagator
BoundedPropagator <-left- SatelliteEphemeris
BoundedPropagator <-left- EphemerisSegment
package sampling #CBDBC8 {
interface OrekitFixedStepHandler
Propagator --> OrekitFixedStepHandler
OrekitFixedStepHandler <|-- StreamingOemWriter
OrekitFixedStepHandler <|-- StreamingOcmWriter
}
}
}
@enduml
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
skinparam NoteFontColor #691616 skinparam NoteFontColor #691616
skinparam ClassFontSize 11 skinparam ClassFontSize 11
skinparam PackageFontSize 12 skinparam PackageFontSize 12
skinparam linetype ortho
package org.orekit.gnss #ECEBD8 { package org.orekit.gnss #ECEBD8 {
...@@ -39,7 +40,7 @@ ...@@ -39,7 +40,7 @@
+MIXED +MIXED
} }
enum Frequency { enum PredefinedGnssSignal {
+G01 +G01
+G02 +G02
+... +...
...@@ -49,7 +50,7 @@ ...@@ -49,7 +50,7 @@
+S05 +S05
} }
SatelliteSystem "1" <--* Frequency SatelliteSystem "1" <--* PredefinedGnssSignal
package antenna #DDEBD8 { package antenna #DDEBD8 {
...@@ -67,8 +68,8 @@ ...@@ -67,8 +68,8 @@
} }
class Antenna { class Antenna {
+Vector3D getEccentricities(frequency) +Vector3D getEccentricities(radioWave)
+double getPhaseCenterVariation(frequency, direction) +double getPhaseCenterVariation(radioWave, direction)
} }
class ReceiverAntenna { class ReceiverAntenna {
...@@ -93,7 +94,7 @@ ...@@ -93,7 +94,7 @@
} }
FrequencyPattern "1" <--* PhaseCenterVariationFunction FrequencyPattern "1" <--* PhaseCenterVariationFunction
Frequency "*" <-left-* Antenna PredefinedGnssSignal "*" <-left-* Antenna
Antenna *-right-> "*" FrequencyPattern Antenna *-right-> "*" FrequencyPattern
SatelliteAntenna ..|> Antenna SatelliteAntenna ..|> Antenna
ReceiverAntenna ..|> Antenna ReceiverAntenna ..|> Antenna
......
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
...@@ -25,77 +25,127 @@ ...@@ -25,77 +25,127 @@
skinparam NoteFontColor #691616 skinparam NoteFontColor #691616
skinparam ClassFontSize 11 skinparam ClassFontSize 11
skinparam PackageFontSize 12 skinparam PackageFontSize 12
skinparam linetype ortho
package org.orekit.gnss #ECEBD8 { package org.orekit.gnss #ECEBD8 {
class RinexLoader { class SatInSystem {
+List<ObservationDataSet> getObservationDataSets() -int prn
} }
enum SatelliteSystem { enum SatelliteSystem {
+GPS +USER_DEFINED_A
+GLONASS +USER_DEFINED_B
+GALILEO +...
+BEIDOU +BEIDOU
+QZSS +GALILEO
+GPS
+IRNSS +IRNSS
+SBAS +QZSS
+MIXED +MIXED
+GLONASS
+SBAS
+...
+USER_DEFINED_Z
} }
enum ObservationType { interface GnssSignal {
+C1 +F0
+C5 +double getRatio()
+C6 +String getName()
... +SatelliteSystem getSatelliteSystem()
+L1C
...
+S8X
+getMeasurementType()
+getFrequency(SatelliteSystem)
} }
enum MeasurementType { interface RadioWave {
+PSEUDO_RANGE +double getFrequency()
+CARRIER_PHASE +double getWavelength()
+DOPPLER +boolean closeTo(other)
+SIGNAL_STRENGTH +boolean closeTo(other, tolerance)
} }
enum Frequency { enum PredefinedGnssSignal {
+G01 +G01
+... +...
+J06 +J06
+... +...
+S05 +S05
+String getName()
+SatelliteSystem getSatelliteSystem()
+double getRatio()
+double getMHzFrequency()
} }
class ObservationData { SatInSystem *-right-> SatelliteSystem
+ObservationType getObservationType() SatelliteSystem <-- GnssSignal
+double getValue() GnssSignal ..|> RadioWave
GnssSignal <|-- PredefinedGnssSignal
}
package org.orekit.files.rinex #ECEBD8 {
class "RinexFile<T extends RinexBaseHeader>" as RinexFile {
+T getHeader()
+List<RinexComment> getComments()
} }
class ObservationDataSet { package observation #DDEBD8 {
+RinexHeader getHeader()
+AbsoluteDate getDate() class RinexObservationParser {
+SatelliteSystem getSatelliteSystem() +RinexObservation parse(dataSource)
+int getPrnNumber() }
+double getRcvrClkOffset() class RinexObservationWriter {
+List<ObservationData> getObservationData() +write(RinexObservation)
}
interface ObservationType {
+getMeasurementType()
+getFrequency(SatelliteSystem)
}
enum PredefinedObservationType {
+C1
+C5
+C6
...
+L1C
...
+S8X
}
enum MeasurementType {
+PSEUDO_RANGE
+CARRIER_PHASE
+DOPPLER
+SIGNAL_STRENGTH
+COMBINED_RANGE_PHASE
}
class ObservationData {
+ObservationType getObservationType()
+double getValue()
}
class ObservationDataSet {
+AbsoluteDate getDate()
+SatInSystem getSatellite()
+int getEventFlag()
+double getRcvrClkOffset()
+List<ObservationData> getObservationData()
}
ObservationDataSet *-left-> "1" SatInSystem
RinexObservationHeader *--> "*" SatInSystem
RinexObservationHeader *--> "*" ObservationType
RinexObservation *--> "*" ObservationDataSet
RinexObservation *--> "1" RinexObservationHeader
ObservationDataSet *--> "*" ObservationData
ObservationData *-right-> "1" ObservationType
ObservationType *--> "1" MeasurementType
ObservationType *--> "*" PredefinedGnssSignal
ObservationType <|.. PredefinedObservationType
RinexObservationParser --> RinexObservation
RinexObservationWriter --> RinexObservation
RinexFile <|-left- RinexObservation
} }
ObservationDataSet *-left-> "1" SatelliteSystem
RinexHeader *--> "1" SatelliteSystem
RinexHeader "*" <--* ObservationDataSet
RinexLoader *--> "*" ObservationDataSet
ObservationDataSet *--> "*" ObservationData
ObservationType "1" <-left-* ObservationData
ObservationType *--> "1" MeasurementType
ObservationType *--> "*" Frequency
} }
@enduml @enduml
......
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
skinparam NoteFontColor #691616 skinparam NoteFontColor #691616
skinparam ClassFontSize 11 skinparam ClassFontSize 11
skinparam PackageFontSize 12 skinparam PackageFontSize 12
skinparam linetype ortho
package org.hipparchus #ECEBD8 { package org.hipparchus #ECEBD8 {
...@@ -43,7 +44,7 @@ ...@@ -43,7 +44,7 @@
package estimation #DDEBD8 { package estimation #DDEBD8 {
package measurements #CEEBD8 { package measurements #CBDBC8 {
class EstimatedMeasurement class EstimatedMeasurement
interface ObservedMeasurement { interface ObservedMeasurement {
+estimate(state) +estimate(state)
...@@ -51,9 +52,9 @@ ...@@ -51,9 +52,9 @@
EstimatedMeasurement <-left- ObservedMeasurement EstimatedMeasurement <-left- ObservedMeasurement
} }
package sequential #CEEBD8 { package sequential #CBDBC8 {
interface ProcessNoiseMatrixProvider interface CovarianceMatrixProvider
class KalmanEstimator { class KalmanEstimator {
+getOrbitalParametersDrivers() +getOrbitalParametersDrivers()
...@@ -63,29 +64,35 @@ ...@@ -63,29 +64,35 @@
+estimationStep(measurement) +estimationStep(measurement)
} }
class Model { abstract AbstractKalmanModel {
+estimationStep(measurement) #updateReferenceTrajectories(propagators, pType, sType)
#analyticalDerivativeComputations(mapper, state)
+ProcessEstimate getEstimate()
+EstimatedMeasurement<?> getCorrectedMeasurement()
+SpacecraftState[] getCorrectedSpacecraftStates()
} }
Model <-left-* KalmanEstimator class KalmanModel
class DSSTKalmanModel
class TLEKalmanModel
AbstractKalmanModel <-left-* KalmanEstimator
KalmanEstimator *-right-> ExtendedKalmanFilter_T KalmanEstimator *-right-> ExtendedKalmanFilter_T
Model *--> ProcessNoiseMatrixProvider AbstractKalmanModel *--> CovarianceMatrixProvider
EstimatedMeasurement <-- Model EstimatedMeasurement <-- AbstractKalmanModel
KalmanModel --|> AbstractKalmanModel
DSSTKalmanModel --|> AbstractKalmanModel
TLEKalmanModel --|> AbstractKalmanModel
} }
} }
package propagation #DDEBD8 {
interface Propagator
Propagator <-- Model : run
}
} }
package user.application #F3EDF7 { package user.application #F3EDF7 {
class MyProcessNoiseMatrixProvider #EAE6F7/B9B3D2 class MyProcessNoiseMatrixProvider #EAE6F7/B9B3D2
ProcessNoiseMatrixProvider <|-- MyProcessNoiseMatrixProvider CovarianceMatrixProvider <|-- MyProcessNoiseMatrixProvider
} }
@enduml @enduml
' Copyright 2002-2025 CS GROUP
' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0
' (the "License"); you may not use this file except in compliance with
' the License. You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and
' limitations under the License.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB/CCC9C5
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
skinparam PackageFontSize 12
skinparam linetype ortho
package org.orekit #ECEBD8 {
package propagation.events #DDEBD8 {
interface EventDetector
interface FieldEventDetector
}
package forces.maneuvers.propulsion.triggers #DDEBD8 {
interface ManeuverTriggers {
+getName()
+init()
+getEventsDetectors()
+getFieldEventsDetectors()
+isFiring()
+getParametersDrivers()
}
abstract class AbstractManeuverTriggers
abstract class "IntervalEventTrigger<T>" as IntervalEventTrigger_T {
-firingIntervalDetector
#convertIntervalDetector()
}
abstract class "StartStopEventsTrigger<A, O>" as StartStopEventsTrigger_A_O {
-startDetector
-stopDetector
#convertStartDetector()
#convertStopDetector()
}
class DateBasedManeuverTriggers
EventDetector <--o ManeuverTriggers
FieldEventDetector <--o ManeuverTriggers
AbstractManeuverTriggers ..|> ManeuverTriggers
AbstractManeuverTriggers <|-- IntervalEventTrigger_T
AbstractManeuverTriggers <|-- StartStopEventsTrigger_A_O
IntervalEventTrigger_T <|-- DateBasedManeuverTriggers
}
}
@enduml
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
skinparam NoteFontColor #691616 skinparam NoteFontColor #691616
skinparam ClassFontSize 11 skinparam ClassFontSize 11
skinparam PackageFontSize 12 skinparam PackageFontSize 12
skinparam linetype ortho
package org.hipparchus #ECEBD8 { package org.hipparchus #ECEBD8 {
interface RandomVectorGenerator interface RandomVectorGenerator
...@@ -32,27 +33,50 @@ ...@@ -32,27 +33,50 @@
package org.orekit #ECEBD8 { package org.orekit #ECEBD8 {
package propagation.events #DDEBD8 { package propagation #DDEBD8 {
interface EventsDetector
note top package events #CBDBC8 {
ground visibility, interface EventsDetector
ground at night, note top
sunlit satellite, ground visibility,
inter sat direct view, ground at night,
boolean combination... sunlit satellite,
end note inter sat direct view,
boolean combination...
end note
}
interface Propagator
class PropagatorsParallelizer {
propagate()
}
Propagator <-- PropagatorsParallelizer
}
package time #DDEBD8 {
interface DatesSelector {
+selectDates(interval)
}
class FixedStepSelector
class BurstSelector
DatesSelector <|.. FixedStepSelector
DatesSelector <|.. BurstSelector
} }
package estimation.measurements #DDEBD8 { package estimation.measurements #DDEBD8 {
package generation #CEEBD8 { package generation #CBDBC8 {
interface "MeasurementBuilder<T>" as MeasurementBuilder_T_ { interface "MeasurementBuilder<T>" as MeasurementBuilder_T_ {
+addModifier(estimationModifier) +addModifier(estimationModifier)
+T build(spacecraftStates) +EstimatedMeasurement<T> build(date, interpolators)
} }
class "...MeasurementBuilder" as XXXMeasurementBuilder class "...MeasurementBuilder" as XXXMeasurementBuilder
note right note left
one for each one for each
measurement type measurement type
end note end note
...@@ -60,8 +84,9 @@ ...@@ -60,8 +84,9 @@
class Generator { class Generator {
+ObservableSatellite addPropagator(Propagator) +ObservableSatellite addPropagator(Propagator)
+Propagator getPropagator(index) +Propagator getPropagator(index)
+addScheduler(Scheduler) +addScheduler(scheduler)
+SortedSet<ObservedMeasurements> generate(startDate, endDate) +addSubscriber(subscriber)
+generate(startDate, endDate)
} }
enum SignSemantic { enum SignSemantic {
...@@ -72,24 +97,39 @@ ...@@ -72,24 +97,39 @@
class "ContinuousScheduler<T>" as ContinuousScheduler_T_ class "ContinuousScheduler<T>" as ContinuousScheduler_T_
interface "Scheduler<T>" as Scheduler_T_ { interface "Scheduler<T>" as Scheduler_T_ {
+MeasurementBuilder_T_ getBuilder()
+SortedSet<T> generate(interpolators) +SortedSet<T> generate(interpolators)
} }
interface GeneratedMeasurementSubscriber {
+init(start, end)
+handleGeneratedMeasurement(measurement)
}
class GatheringSubscriber {
+SortedSet<ObservedMeasurements> getGeneratedMeasurements()
}
XXXMeasurementBuilder ..|> MeasurementBuilder_T_ XXXMeasurementBuilder ..|> MeasurementBuilder_T_
MeasurementBuilder_T_ "1" <--* Scheduler_T_ MeasurementBuilder_T_ "1" <--* Scheduler_T_
XXXMeasurementBuilder -up-> RandomVectorGenerator RandomVectorGenerator <-- XXXMeasurementBuilder
SignSemantic "1" <--* EventBasedScheduler_T_ SignSemantic "1" <--* EventBasedScheduler_T_
Scheduler_T_ <|.left. EventBasedScheduler_T_ Scheduler_T_ <|.left. EventBasedScheduler_T_
ContinuousScheduler_T_ .right.|> Scheduler_T_ Scheduler_T_ <|.. ContinuousScheduler_T_
Scheduler_T_ "*" <--* Generator Scheduler_T_ "*" <--* Generator
Generator *--> GeneratedMeasurementSubscriber
GeneratedMeasurementSubscriber <|-- GatheringSubscriber
EventsDetector <--* EventBasedScheduler_T_
EventBasedScheduler_T_ *-right-> "1" EventsDetector Generator --> PropagatorsParallelizer
Propagator "*" <--* Generator
} }
interface "EstimationModifier<T>" as EstimationModifier_T_ interface "EstimationModifier<T>" as EstimationModifier_T_
interface "ObservedMeasurement<T>" as ObservedMeasurement_T_ interface "ObservedMeasurement<T>" as ObservedMeasurement_T_
class "...Measurement" as XXXMeasurement class "...Measurement" as XXXMeasurement
note bottom note top
this box represents any this box represents any
measurement type measurement type
(range, range-rate, ...) (range, range-rate, ...)
...@@ -98,40 +138,12 @@ ...@@ -98,40 +138,12 @@
EstimationModifier_T_ "*" <-left-* ObservedMeasurement_T_ EstimationModifier_T_ "*" <-left-* ObservedMeasurement_T_
ObservedMeasurement_T_ <|.. XXXMeasurement ObservedMeasurement_T_ <|.. XXXMeasurement
XXXMeasurementBuilder --> XXXMeasurement XXXMeasurement <-left- XXXMeasurementBuilder
EstimationModifier_T_ "*" <--* XXXMeasurementBuilder EstimationModifier_T_ "*" <--* XXXMeasurementBuilder
Scheduler_T_ *--> "1" DatesSelector
} }
package propagation #DDEBD8 {
interface Propagator
class PropagatorsParallelizer {
propagate()
}
Generator --> PropagatorsParallelizer
Generator *--> "*" Propagator
Propagator <-left- PropagatorsParallelizer
}
package time #DDEBD8 {
class FixedStepSelector
class BurstSelector
interface DatesSelector {
+selectDates(interval)
}
FixedStepSelector --|> DatesSelector
BurstSelector --|> DatesSelector
Scheduler_T_ *--> "1" DatesSelector
}
}
package mission.specific #C4D2C5 {
class "CustomScheduler<T>" as CustomScheduler_T_ #D5E0D5/E2EBE2
Scheduler_T_ <|.up. CustomScheduler_T_
} }
@enduml @enduml
' Copyright 2002-2025 CS GROUP
' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0
' (the "License"); you may not use this file except in compliance with
' the License. You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing, software
' distributed under the License is distributed on an "AS IS" BASIS,
' WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
' See the License for the specific language governing permissions and
' limitations under the License.
@startuml
skinparam svek true
skinparam ClassBackgroundColor #F3EFEB/CCC9C5
skinparam ClassArrowColor #691616
skinparam ClassBorderColor #691616
skinparam NoteBackgroundColor #F3EFEB
skinparam NoteBorderColor #691616
skinparam NoteFontColor #691616
skinparam ClassFontSize 11
package java.lang #ECEBD8 {
interface Runnable
}
package org.orekit.gnss.metric #ECEBD8 {
package parser #DDEBD8 {
class MessagesParser
abstract class AbstractEncodedMessages {
{abstract} #int fetchByte()
}
}
package ntrip #DDEBD8 {
interface MessageObserver {
+messageAvailable(String mountPoint, ParsedMessage message)
}
class MyObserverForIgm01
class StreamMonitor {
+run()
}
class NtripClient {
+NtripClient(String host, int port)
+setProxy(Proxy.Type type, proxyHost, proxyPort)
+addObserver(int typeCode, String mountPoint, MessageObserver observer)
+SourceTable getSourceTable()
+startStreaming(mountPoint, type, requiresNMEA, ignoreUnknownMessageTypes)
+stropStreaming(time)
}
enum Type {
+RTCM
+IGS_SSR
{static} +MessagesParser getParser(List<Integer> messages)
}
class SourceTable {
+List<CasterRecord> getCasters()
+List<NetworkRecord> getNetworks()
+List<DataStreamRecord> getDataStreams()
}
Runnable <|.. StreamMonitor
AbstractEncodedMessages <|-- StreamMonitor
MessagesParser <-- Type
StreamMonitor <-- NtripClient
SourceTable <-- NtripClient
NtripClient *--> "*" MessageObserver
NtripClient *-->"1" Type
MessageObserver <|.. MyObserverForIgm01
}
}
@enduml
This diff is collapsed.
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
......
' Copyright 2002-2019 CS Systèmes d'Information ' Copyright 2002-2025 CS GROUP
' Licensed to CS Systèmes d'Information (CS) under one or more ' Licensed to CS GROUP (CS) under one or more
' contributor license agreements. See the NOTICE file distributed with ' contributor license agreements. See the NOTICE file distributed with
' this work for additional information regarding copyright ownership. ' this work for additional information regarding copyright ownership.
' CS licenses this file to You under the Apache License, Version 2.0 ' CS licenses this file to You under the Apache License, Version 2.0
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
skinparam NoteFontColor #691616 skinparam NoteFontColor #691616
skinparam ClassFontSize 11 skinparam ClassFontSize 11
skinparam PackageFontSize 12 skinparam PackageFontSize 12
skinparam linetype ortho
package org.orekit #ECEBD8 { package org.orekit #ECEBD8 {
...@@ -45,11 +46,11 @@ ...@@ -45,11 +46,11 @@
class EstimatedMeasurement { class EstimatedMeasurement {
+getObservedMeasurement() +getObservedMeasurement()
+getStateSize()
+getIteration() +getIteration()
+getState() +getStates()
+getTimeOffset() +getTimeOffset()
+[get|set]Value() +[get|set]EstimatedValue()
+[get|set]CurrentWeight()
+[get|set]StateDerivatives() +[get|set]StateDerivatives()
+[get|set]ParameterDerivatives() +[get|set]ParameterDerivatives()
} }
...@@ -58,7 +59,7 @@ ...@@ -58,7 +59,7 @@
+getParametersDrivers() +getParametersDrivers()
+modify(estimated) +modify(estimated)
} }
class "On-board antenna" as Onboard class "On-board antenna" as Onboard
ObservedMeasurement *--> "*" EstimationModifier ObservedMeasurement *--> "*" EstimationModifier
ObservedMeasurement --> EstimatedMeasurement : create ObservedMeasurement --> EstimatedMeasurement : create
......
This diff is collapsed.