@@ -25,7 +25,10 @@ class SinglePointInitiator(GaussianInitiator):
2525 """
2626
2727 prior_state : GaussianState = Property (doc = "Prior state information" )
28- measurement_model : MeasurementModel = Property (doc = "Measurement model" )
28+ measurement_model : MeasurementModel = Property (
29+ default = None ,
30+ doc = "Measurement model. Can be left as None if all detections have a "
31+ "valid measurement model." )
2932
3033 def initiate (self , detections , timestamp , ** kwargs ):
3134 """Initiates tracks given unassociated measurements
@@ -64,6 +67,8 @@ class SimpleMeasurementInitiator(GaussianInitiator):
6467
6568 This initiator utilises the :class:`~.MeasurementModel` matrix to convert
6669 :class:`~.Detection` state vector and model covariance into state space.
70+ It either takes the :class:`~.MeasurementModel` from the given detection
71+ or uses the :attr:`measurement_model`.
6772
6873 Utilises the ReversibleModel inverse function to convert
6974 non-linear spherical co-ordinates into Cartesian x/y co-ordinates
@@ -77,7 +82,10 @@ class SimpleMeasurementInitiator(GaussianInitiator):
7782 decompositions.
7883 """
7984 prior_state : GaussianState = Property (doc = "Prior state information" )
80- measurement_model : MeasurementModel = Property (doc = "Measurement model" )
85+ measurement_model : MeasurementModel = Property (
86+ default = None ,
87+ doc = "Measurement model. Can be left as None if all detections have a "
88+ "valid measurement model." )
8189 skip_non_reversible : bool = Property (default = False )
8290 diag_load : float = Property (default = 0.0 , doc = "Positive float value for diagonal loading" )
8391
@@ -94,7 +102,10 @@ def initiate(self, detections, timestamp, **kwargs):
94102 if detection .measurement_model is not None :
95103 measurement_model = detection .measurement_model
96104 else :
97- measurement_model = self .measurement_model
105+ if self .measurement_model is None :
106+ raise ValueError ("No measurement model specified" )
107+ else :
108+ measurement_model = self .measurement_model
98109
99110 if isinstance (measurement_model , LinearModel ):
100111 model_matrix = measurement_model .matrix ()
@@ -155,12 +166,15 @@ class MultiMeasurementInitiator(GaussianInitiator):
155166 Does cause slight delay in initiation to tracker."""
156167
157168 prior_state : GaussianState = Property (doc = "Prior state information" )
158- measurement_model : MeasurementModel = Property (doc = "Measurement model" )
159169 deleter : Deleter = Property (doc = "Deleter used to delete the track." )
160170 data_associator : DataAssociator = Property (
161171 doc = "Association algorithm to pair predictions to detections." )
162172 updater : Updater = Property (
163173 doc = "Updater used to update the track object to the new state." )
174+ measurement_model : MeasurementModel = Property (
175+ default = None ,
176+ doc = "Measurement model. Can be left as None if all detections have a "
177+ "valid measurement model." )
164178 min_points : int = Property (
165179 default = 2 , doc = "Minimum number of track points required to confirm a track." )
166180 updates_only : bool = Property (
0 commit comments