{"id":19380141,"url":"https://github.com/hrszpuk/braccioobserver","last_synced_at":"2026-04-28T16:41:21.997Z","repository":{"id":177061936,"uuid":"633536186","full_name":"hrszpuk/BraccioObserver","owner":"hrszpuk","description":"The backend for my Baccio Controller project. It observes serial communication and responds in real-time to a custom-made protocol.","archived":false,"fork":false,"pushed_at":"2023-06-30T19:42:07.000Z","size":21,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-07T06:15:31.608Z","etag":null,"topics":["arduino","braccio","braccio-arduino","braccio-controller","cpp","robotics"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hrszpuk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"hrszpuk"}},"created_at":"2023-04-27T18:04:11.000Z","updated_at":"2023-06-27T11:42:37.000Z","dependencies_parsed_at":"2023-07-10T04:48:39.037Z","dependency_job_id":null,"html_url":"https://github.com/hrszpuk/BraccioObserver","commit_stats":null,"previous_names":["hrszpuk/braccioobserver"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrszpuk%2FBraccioObserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrszpuk%2FBraccioObserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrszpuk%2FBraccioObserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hrszpuk%2FBraccioObserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hrszpuk","download_url":"https://codeload.github.com/hrszpuk/BraccioObserver/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240517006,"owners_count":19814114,"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","braccio","braccio-arduino","braccio-controller","cpp","robotics"],"created_at":"2024-11-10T09:12:50.214Z","updated_at":"2026-04-28T16:41:21.938Z","avatar_url":"https://github.com/hrszpuk.png","language":"C++","funding_links":["https://github.com/sponsors/hrszpuk"],"categories":[],"sub_categories":[],"readme":"# Braccio Observer\nA C++ Arduino script that monitors the serial port for instructions on how to control the Arduino or Braccio robot arm.\n\n## Communication Protocol\n\n### Instruction Format\nThe [proof of concept](https://github.com/hrszpuk/BraccioProofOfConcept) used a 5 byte instruction representation.\n\nThis project will use a variable length 25 byte capacity instruction representation.\nThis will allow for *concurrent* motor movement, as well as more information to be parsed in each instruction.\n\n### Commands\n| Command        | Description                                               | Pattern |\n|----------------|-----------------------------------------------------------|:------:|\n| ROTATE         | Tell the robot arm to rotate  |   `RMDDD...`    |\n| START_RECORD   | Starts recording all instructions being written (can be played back) | `SIII` |\n| END_RECORD     | Ends the recording `III` is the numerical ID representing that recording | `EIII` |\n| PLAY_RECORD    | Plays back a record with the ID `III` | `PIII` |\n| DEFAULT_POS    | Moves all the motors into a starting position | `D` |\n| SET_DEFAULT_POS | Sets the default position for motors to be moved into | `TMDDD...` |\n\n### Parsing Instruction Format\nEach instruction need to be parsed differently.\nHowever, many instructions can be parsed in a similar way that helps us.\n\nThere are 2 distinct parsers that can be used.\nFirstly, instructions that *can* reach the 25 byte capacity and follow the IMDDD pattern (Instruction Byte, Motor Byte, Degrees Bytes).\nSecondly, instructions that follow a IXXX pattern (Instruction Byte, ID Bytes).\nFinally, there is a instruction that is only a single byte (Default Instruction), in this case we can just read the instruction byte.\n\n### Arduino Response\nThe Arduino will send a response for each instruction recieved.\nIt will send an immidiate response indicating it has recieved an instruction, and it will send another response indicating whether an insturction has passed or failed.\n\n## Related Projects\n- [Robot Arm Controller - Proof of concept](https://github.com/hrszpuk/BraccioProofOfConcept)\n- [Robot Arm Controller (frontend)](https://github.com/hrszpuk/BraccioController)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrszpuk%2Fbraccioobserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhrszpuk%2Fbraccioobserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhrszpuk%2Fbraccioobserver/lists"}