{"id":44655485,"url":"https://github.com/milsto/robust-kalman","last_synced_at":"2026-02-27T09:01:14.164Z","repository":{"id":53335507,"uuid":"88172266","full_name":"milsto/robust-kalman","owner":"milsto","description":"Robust Kalman filter with adaptive noise statistics estimation.","archived":false,"fork":false,"pushed_at":"2018-09-25T20:34:13.000Z","size":70,"stargazers_count":113,"open_issues_count":2,"forks_count":46,"subscribers_count":5,"default_branch":"master","last_synced_at":"2023-11-07T19:07:42.590Z","etag":null,"topics":["kalman","kalman-filter","noise","robust","statistics"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/milsto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-13T14:14:24.000Z","updated_at":"2023-10-24T15:00:38.000Z","dependencies_parsed_at":"2022-09-11T03:20:51.716Z","dependency_job_id":null,"html_url":"https://github.com/milsto/robust-kalman","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/milsto/robust-kalman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milsto%2Frobust-kalman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milsto%2Frobust-kalman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milsto%2Frobust-kalman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milsto%2Frobust-kalman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/milsto","download_url":"https://codeload.github.com/milsto/robust-kalman/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milsto%2Frobust-kalman/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29888777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T08:34:21.514Z","status":"ssl_error","status_checked_at":"2026-02-27T08:32:38.035Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kalman","kalman-filter","noise","robust","statistics"],"created_at":"2026-02-14T22:00:18.750Z","updated_at":"2026-02-27T09:01:14.144Z","avatar_url":"https://github.com/milsto.png","language":"Python","funding_links":[],"categories":["Code"],"sub_categories":["Python"],"readme":"# Robust Kalman\n\n![Alt Text](/images/x0_spike_outliers.png?raw=true)\n\nPython implementation of a robust Kalman estimator using so called M-robust estimation with support for adaptive noise variance estimation. Robust estimation is used to give better estimates when the data is polluted by outliers (see figure above).\n\nImplementation is based on the method presented in the paper [Robust Estimation with Unknown Noise Statistics](http://ieeexplore.ieee.org/abstract/document/769393/). Main difference is that iterative Nelder-Mead algorithm is used for nonlinear minimization problems instead of approximate linear method proposed by original authors (one may try out other methods if interested by editing [the code](robust_kalman/robust_kalman.py#L127)). Adaptive variance estimation is implemented only for measurement noise.\n\n## Usage\nRobust Kalman may be easily integrated in the user's code using few intuitive API calls as shown in the sample below.\n\n```python\n# Import RobustKalman provided by the package in this repo\nfrom robust_kalman import RobustKalman\n\n# Create the estimator by passing model parameters\nkalman = RobustKalman(F, B, H, x0, P0, Q0, R0, use_robust_estimation=True)\n\n# ...\n\n# Do updates on every time step\nkalman.time_update()\nkalman.measurement_update(measurements)\n\n# ...\n\n# Get the estimations\nprint('Current state estimates', kalman.current_estimate)\n\n```\n\nSimple and fully functional example is available in the [examples/example_simple.py](examples/example_simple.py#L2?raw=true). This example contains model definition, update loop and result plotting.\n\nThe example in the [examples/example_advanced.py](examples/example_advanced.py#L2?raw=true) was intended for the authors coursework in the Stochastic System Theory at Masters program in Signal processing at University of Belgrade, School of Electrical Engineering. That script was used to generate results presented in the image above.\n\nAuthor: Miloš Stojanović Stojke\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilsto%2Frobust-kalman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmilsto%2Frobust-kalman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilsto%2Frobust-kalman/lists"}