{"adoption": {"forks": 661, "observed_at": "2026-08-28T04:08:05.106097+00:00", "stars": 3442}, "canonical_url": "https://ross.abutalabs.com/products/openbot", "card": {"archived": false, "artifact_type": "application", "description": "OpenBot leverages smartphones as brains for low-cost robots. We have designed a small electric vehicle that costs about $50 and serves as a robot body. Our software stack for Android smartphones supports advanced robotics workloads such as person following and real-time autonomous navigation.", "domain": ["robotics", "education", "machine-learning", "computer-vision", "autonomous-vehicles"], "enriched": true, "function": ["machine-learning", "computer-vision", "robotics", "deep-learning"], "health_score": 91, "homepage": "https://www.openbot.org", "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["ob-f/OpenBot"], "name": "ob-f/OpenBot", "platform": ["iot", "cross-platform"], "pushed_at": "2026-08-26T04:41:41+00:00", "repo": "ob-f/OpenBot", "stars": 3442, "tags": ["smartphone-robot", "low-cost-robotics", "person-following", "autonomous-navigation", "arduino-firmware", "driving-policy", "stem-education", "android"], "topics": ["openbot", "android", "smartphone", "robot", "robotics", "education", "research", "arduino", "deeplearning"], "urls": [], "use_cases": ["build a low-cost robot using a smartphone as its brain", "implement person following on a mobile robot", "run real-time autonomous navigation experiments", "train and deploy driving policies for a wheeled robot", "use robotics for education and research on a budget", "program a robot via Arduino firmware and Android apps"], "what_it_is": "OpenBot is an open-source project that turns Android smartphones into the brains of low-cost robots, paired with a ~$50 electric vehicle body and Arduino firmware. Its software stack supports advanced robotics workloads such as person following and real-time autonomous navigation.", "when_to_avoid": ["you need industrial-grade or safety-certified robotics hardware", "you require non-Android control hardware or iOS support", "you need manipulator arms or drones rather than a wheeled vehicle"], "when_to_choose": ["you want an affordable, open robotics platform for education or research", "you want to leverage smartphone sensors and compute for robot perception and control", "you want to experiment with deep-learning-based robot policies", "you want a hackable hardware-plus-software stack with Arduino and Android components"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/openbot", "repo": "ob-f/OpenBot", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "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:08:05.106097+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:05.106097+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:37:38.330728+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a7164e6d3fe556f6d08ca0c501ec9a63a4513c995036c5a447d46a832c4c3865", "fetched_at": "2026-08-28T04:08:05.106097+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ob-f/OpenBot"}, {"content_hash": "a5ddf679873a77f3e215ba6bc6b6bfeb33b23811e2d443dc4eb3fb3121488c7c", "fetched_at": "2026-08-29T09:31:30.195507+00:00", "kind": "homepage", "missing": false, "url": "https://www.openbot.org"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2224, "days_push": 7, "days_rel": 548, "gap_med": null, "n_releases_24m": 1}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}