{"id":22006421,"url":"https://github.com/anoff/robby5","last_synced_at":"2025-05-05T22:38:29.799Z","repository":{"id":55457212,"uuid":"83153883","full_name":"anoff/robby5","owner":"anoff","description":"autonomous robot car 🤖🚗","archived":false,"fork":false,"pushed_at":"2020-12-29T15:32:57.000Z","size":11684,"stargazers_count":19,"open_issues_count":0,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-31T00:24:06.915Z","etag":null,"topics":["arduino","firmata-client","javascript","johnny-five","nodejs","raspi","robot-car","servo","sonar"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/anoff.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-02-25T18:43:13.000Z","updated_at":"2024-11-25T18:35:44.000Z","dependencies_parsed_at":"2022-08-15T00:40:45.230Z","dependency_job_id":null,"html_url":"https://github.com/anoff/robby5","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Frobby5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Frobby5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Frobby5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Frobby5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anoff","download_url":"https://codeload.github.com/anoff/robby5/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252588486,"owners_count":21772687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["arduino","firmata-client","javascript","johnny-five","nodejs","raspi","robot-car","servo","sonar"],"created_at":"2024-11-30T01:12:11.305Z","updated_at":"2025-05-05T22:38:29.779Z","avatar_url":"https://github.com/anoff.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# robby5\n\n\u003e robot car ecosystem 🤖🚗\n\nThe idea behind `robby-five` is to build different components in a robotic/autonomous (toy) car ecosystem.\n\nInspired by [johnny-five](http://johnny-five.io/) the main controlling unit will run on higher level languages like nodeJS or python. The underlying hardware components will be controlled by arduino hardware.\n\nThe base setup is the [elegoo smart robot car kit v2](https://www.elegoo.com/product/elegoo-uno-project-upgraded-smart-robot-car-kit-v2-0/). However the components on it only allow to build really basic robots. To make it usable for some higher level automation it needs the base needs to be extended with additional sensors for environment perception as well as ego motion sensors.\n\n\u003cimg alt=\"#robby5 image\" src=\"assets/sonic-cam.jpeg\" height=\"480px\"/\u003e\n\n\u003e The most advanced build is the [multibot](projects/multi-bot) setup\n\n\u003c!-- TOC depthFrom:2 --\u003e\n\n- [examples](#examples)\n- [chassis evolution](#chassis-evolution)\n  - [multiple sonar sensors](#multiple-sonar-sensors)\n  - [autonomous nodebot](#autonomous-nodebot)\n  - [4WD](#4wd)\n  - [optimize movement](#optimize-movement)\n  - [relative robot localization](#relative-robot-localization)\n  - [remote localization](#remote-localization)\n  - [map generation](#map-generation)\n- [troubleshooting](#troubleshooting)\n  - [serialport does not install on raspbian](#serialport-does-not-install-on-raspbian)\n  - [node module installation fails using `yarn`](#node-module-installation-fails-using-yarn)\n- [future ideas](#future-ideas)\n\n\u003c!-- /TOC --\u003e\n\n\n## examples\n\nThere is a list of examples on how to use the underlying components within this project\n\n| example | description |\n|--|--|\n|[firmata-servo](./examples/firmata-servo) | Shows how to use [johnny-five](http://johnny-five.io/) or [firmata.js](https://github.com/firmata/firmata.js/) to control a servo. |\n| [j5-chartist-sonar](./examples/j5-chartist-sonar) | Capture HC-SR04 sonar distance readings via johnny-five and chart them on a website. |\n| [raspi-led](./examples/raspi-led) | Use raspberry pi IO to play with LEDs using johnny-five / raspi-io |\n| [raspi-sonar-servo](./examples/raspi-sonar-servo) | raspberry as control server for two attached arduinos |\n\n## chassis evolution\n\na list of ideas how the standard set of the robot can be improved to become a bit smarter.\n\n### multiple sonar sensors\n\n`Status`: ✅\n\n\u003cimg src=\"assets/sonar.png\" height=\"200px\"/\u003e\n\u003cimg src=\"assets/sonic-pi.jpeg\" height=\"400px\"/\u003e\n\nHook the car up with at least 5 sonar sensors to allow better areal awareness.\nThe idea is to interface the sensors via an additional arduino that exposes the individual sensors over I2C.\n\n### autonomous nodebot\n\n`Status`: ✅\n\nre-implement the default smart robot car program using raspi \u0026 nodeJS as control device. Use sonar for obstacle detection:\n* move straight until obstacle \u003c20cm distance\n* move sonar to right/left using the servo\n* turn robot in the direction with most distance to next obstacle\n* repeat\n\n### 4WD\n\n`Status`: ✅\n\n\u003e This has been implemented in [projects/firmata-sonar-map](./projects/firmata-sonar-map/4wd_test.js)\nwheels on each side are controlled in pairs, using individual wheel control might improve maneuverability e.g. only stopping rear wheel to turn\n\n\n| before | after |\n|:---:|:---:|\n|the original setup comes with one motor driver that allows two seperately controlled outputs. this is set up to drive the wheel pair on either side in sync. | adding an additional motor driver allows to drive each wheel individually. this requires 2 additional pins on the µc to be used. |\n|\u003cimg src=\"assets/4wd-1.png\" height=\"200px\" /\u003e | \u003cimg src=\"assets/4wd-2.png\" height=\"200px\" /\u003e |\n\n### optimize movement\n\n`Status`: 🚧 (_4WD was a first step_)\n\nsome issues with the base robot car should be improved when it comes to movement:\n\n1. DC engines do not allow for proper odometry due to varying speed, maybe use **steppers**\n1. ~~wheels have high grip which makes it hard to turn. having lower friction (especially lateral) would allow easier turns.~~ turns out that turning is only hard for low wheel speeds, increasing to proper speeds lets the robot turn just fine 👯\n1. although quite expensive (100€ per set) the [**mecanum wheels**](https://www.youtube.com/watch?v=8sH1a511_q4) would allow amazing 2D movements in any direction incl strafing.\ncontrol logic would be a bit trick probably as well as possible negative influences on odometry solutions\n- evaluate using 2 driven wheels in front and one undriven wheel in the rear for stability. this would be a cheap solution for the masses. unsure what negative side effects this would have as opposed to 4 wheels.\n\n### relative robot localization\n\n`Status:` 💡\n\nuse odometry, inertial sensors, sonar/lidar feedback to allow for a control loop system aware of its past movement.\n\n### remote localization\n\n`Status:` 💡\n\nSet up a stationary camera that tracks the robot. Locate it on the map and send use this information to make the robot move within the map.\n\n### map generation\n\n`Status:` 💡\n\ncome up with an idea how to use the sonar sensor (possibly rotating) to map a room by driving through it.\n\n\u003e first implementation of a radar chart with rotating 180° servo is available in the [firmata-sonar-map](./projects/firmata-sonar-map) project\n\n## troubleshooting\n\n### serialport does not install on raspbian\n\nfor some reason jessy doesn't ship with git installed which the `serialport` module needs during its make.\n\n```sh\napt-get install git\n```\n\n### node module installation fails using `yarn`\n\nyes it happens.. guess it's something with the compilation use `npm install` instead\n\n## future ideas\n\n- **robby wars**:\nattach laser diodes \u0026 laser sensor to the robot. build a remote control web UI to maneuver the robot. attach LED strips to indicate health bars (or on the web UI). use your laser beam to hit other robots","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanoff%2Frobby5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanoff%2Frobby5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanoff%2Frobby5/lists"}