Comments (3)
So the result should be that for the mapped elements from the measurement, the values from the measurement are used. And the elements that are not mapped, they are taken from the prior.
import datetime
import numpy as np
from stonesoup.initiator.simple import SimpleMeasurementInitiator
from stonesoup.models.measurement.linear import LinearGaussian
from stonesoup.types.detection import Detection
from stonesoup.types.state import GaussianState
timestamp = datetime.datetime.now()
detection = Detection([1, 2], timestamp)
prior = GaussianState([10, 20, 30, 40], np.diag([10, 20, 30, 40]))
model = LinearGaussian(4, [0, 2], np.diag([100, 200]))
tracks = SimpleMeasurementInitiator(prior, model).initiate({detection}, timestamp)
track = tracks.pop()
print(track.state_vector)
print(track.covar)
Results in:
[[ 1.] # From detection
[20.] # From prior
[ 2.] # From detection
[40.]] # From prior
[[100. 0. 0. 0.] # From detection
[ 0. 25. 0. 0.] # From prior
[ 0. 0. 200. 0.] # From detection
[ 0. 0. 0. 45.]] # From prior
from stone-soup.
I guess my confusion is in how I should interpret the mapping
attribute.
Here, for CartesianToBearingRangeRate
:
it indicates that the mapped dimensions are the 'x', 'y', 'z' components of the state vector (i.e., [0, 2, 4]). But, I get the impression from elsewhere that it should be the components of the state vector that the measurement model contributes an estimate for. This latter interpretation explains the code block here:
Stone-Soup/stonesoup/initiator/simple.py
Line 140 in 68f5dd9
in that the measurement-estimated state_vector
should necessarily be zero everywhere except the mapped_dimensions
.
But currently, this is not the case for CartesianToBearingRangeRate
where its mapping=[0, 2, 4]
even though this model does provide a direct estimate for the state velocity components. It defines a seperate:
velocity_mapping: Tuple[int, int, int] = Property( default=(1, 3, 5), doc="Mapping to the targets velocity within its state space")
from stone-soup.
So the idea behind the mapping was identify the relevant components between the state space and the measurement space, primarily, and initially, for translating the state space to measurement space for the predicted measurement.
I think it's probably a assumption by the measurement initiator that the mapping is present and correct for this; and we probably need to double check the models.
So there is an issue with the CartesianToBearingRangeRate
, this was debated a fair amount in #285 about the model only being partially reversible (and turns out in fact having velocity_mapping
ends up useful in initiator case as only reversible elements (position) are used) and didn't really react a conclusion on best way forward.
from stone-soup.
Related Issues (20)
- Pandas DataFrame Reader, additional example. HOT 2
- ValueError in `gm_reduce_single()` - mismatch in shape between delta_means matrix and weights HOT 9
- `Plotterly.plot_measurements` ability to differentiate the clutter and detections colors and symbol from different sensors
- Add citation guide to documentation HOT 1
- Issues in the description of the nearly-constant turn rate model HOT 2
- Issues with the GOSPA metric HOT 4
- Platforms can both 'move' and 'act' HOT 1
- Example menu duplication
- Problematic results with the inverse function in a measurement model HOT 1
- Type checking for `model_list` in CombinedGaussianTransitionModel
- Cannot slice a track when StatesLengthLimiter is used HOT 2
- Changing a platform's `movement_controller` doesn't change a sensor's `movement_controller`. HOT 3
- _noise_diff_coeff_ clarification HOT 2
- CSVDetectionReader not parsing csv successfully HOT 3
- Broken Links to Github on Read the Docs Documentation Page
- Low efficiency in GOSPA metric computations HOT 1
- Multi Measurement Initiator - Error on MultipleHypothesis Associations
- Demo zips from Documents are Unusable as is. HOT 2
- Create development guides for adding components
- PyTorch Support for Detectors HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from stone-soup.