{"adoption": {"forks": 405, "observed_at": "2026-08-28T04:09:47.640607+00:00", "stars": 6683}, "canonical_url": "https://ross.abutalabs.com/products/openmower", "card": {"archived": false, "artifact_type": "application", "description": "Let's upgrade cheap off-the-shelf robotic mowers to modern, smart RTK GPS based lawn mowing robots!", "domain": ["robotics", "iot", "hardware"], "enriched": true, "function": ["robotics", "monitoring"], "health_score": 91, "homepage": null, "language": "Shell", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["ClemensElflein/OpenMower"], "name": "ClemensElflein/OpenMower", "platform": ["iot", "python", "cpp", "embedded"], "pushed_at": "2026-08-14T20:49:36+00:00", "repo": "ClemensElflein/OpenMower", "stars": 6683, "tags": ["rtk-gps", "lawn-mower", "diy-robotics", "ros", "arduino", "perimeter-wire-free", "smart-mowing", "path-finding", "automation", "linux"], "topics": ["raspberry-pi", "arduino", "robot", "robotics", "gps", "ros", "rtk", "path-finding", "robomow", "lawn-mower", "landscaping"], "urls": [], "use_cases": ["convert a cheap robotic mower into a smart GPS-guided robot", "mow the lawn without installing perimeter wire", "build a DIY autonomous lawn mowing robot", "add RTK GPS navigation to a YardForce mower", "control a mowing robot from a mobile app", "detect and avoid obstacles while mowing"], "what_it_is": "OpenMower is an open-source project that converts cheap off-the-shelf robotic lawn mowers into smart, RTK GPS-guided mowing robots by replacing their stock electronics with custom hardware and software. It provides autonomous, map-aware, app-controlled lawn mowing without perimeter wires, with obstacle avoidance and safety features.", "when_to_avoid": ["you are not comfortable with hands-on hardware modification and electronics work", "you want a plug-and-play commercial product with warranty and support", "you need a solution cheaper than ~€700 plus the base mower and RTK station"], "when_to_choose": ["you want a wire-free, GPS-guided robotic mower at lower cost than premium commercial models", "you enjoy DIY hardware projects and are comfortable modifying electronics", "you want an open, hackable robot lawn mower with app control and obstacle avoidance"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openmower", "repo": "ClemensElflein/OpenMower", "role": "main", "score": 66}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "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:09:47.640607+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.640607+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:42:59.907021+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eda1a69cd3be62becb8719a9b6d78f293f3b3f6befb81ae42513e102f2cf0cc2", "fetched_at": "2026-08-28T04:09:47.640607+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ClemensElflein/OpenMower"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["prerelease_only", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1680, "days_push": 19, "days_rel": 481, "gap_med": null, "n_releases_24m": 1}, "score": 66, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}