{"adoption": {"forks": 190, "observed_at": "2026-08-28T04:03:20.537404+00:00", "stars": 1041}, "canonical_url": "https://ross.abutalabs.com/products/pythonlinearnonlinearcontrol", "card": {"archived": false, "artifact_type": "library", "description": "PythonLinearNonLinearControl is a library implementing the linear and nonlinear control theories in python.", "domain": ["robotics", "reinforcement-learning", "simulation", "education"], "enriched": true, "function": ["simulation", "machine-learning", "reinforcement-learning", "math", "developer-tools"], "health_score": 20, "homepage": null, "language": "Python", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["Shunichi09/PythonLinearNonlinearControl"], "name": "Shunichi09/PythonLinearNonlinearControl", "platform": ["python", "cross-platform"], "pushed_at": "2021-08-23T12:57:01+00:00", "repo": "Shunichi09/PythonLinearNonlinearControl", "stars": 1041, "tags": ["model-predictive-control", "mpc", "nmpc", "ilqr", "ddp", "mppi", "cem", "optimal-control", "control-theory", "model-based-rl", "cartpole", "scipy", "numpy", "algorithms"], "topics": ["optimal-control", "model-predictive-control", "linear-control", "model-based-rl", "mpc", "nmpc", "ilqr", "mppi", "cem", "ddp", "reinforcement-learning", "nonlinear-control"], "urls": [], "use_cases": ["implement model predictive control in python", "compare mpc ilqr ddp and mppi controllers", "learn nonlinear control theory with runnable examples", "prototype model-based reinforcement learning controllers", "simulate cartpole with a python control algorithm", "extend a control algorithm with custom dynamics and costs"], "what_it_is": "A Python library implementing linear and nonlinear control theory algorithms such as MPC, iLQR, DDP, MPPI, and CEM using only NumPy and SciPy. It ships reference implementations with example environments like cartpole and two-wheeled tracking for studying model-based control and model-based reinforcement learning.", "when_to_avoid": ["you need real-time or hard real-time control performance in compiled code", "you require a maintained production library with active releases and support", "you need GPU acceleration or large-scale robotics stacks like ROS integration", "you want a no-code or GUI control design tool"], "when_to_choose": ["you want pure-python reference implementations of classic and sampling-based control algorithms", "you need a lightweight codebase built only on numpy and scipy that is easy to modify", "you are studying or teaching optimal control and model-based RL methods", "you want to test controllers on simple environments like cartpole or a two-wheeled robot"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/pythonlinearnonlinearcontrol", "repo": "Shunichi09/PythonLinearNonlinearControl", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:20.537404+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:02:52.432337+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8aea6382044b63dbb2a3c0c060412fadea411607b1befbaef43c53e784b3e058", "fetched_at": "2026-08-28T04:03:20.537404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Shunichi09/PythonLinearNonlinearControl"}, {"content_hash": "8e7673223c58801e59f0c1869a612827d8e4a4fe97951ef55ee53c560aedd952", "fetched_at": "2026-08-29T13:04:08.761124+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/pythonlinearnonlinearcontrol/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2817, "days_push": 1836, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}