{"id":20394493,"url":"https://github.com/btoms20/robotarm","last_synced_at":"2026-06-07T15:32:15.931Z","repository":{"id":65405520,"uuid":"591724786","full_name":"btoms20/RobotArm","owner":"btoms20","description":"Iterating on the Annin Robotics 6 axis robot arm 🦾","archived":false,"fork":false,"pushed_at":"2023-09-22T16:35:11.000Z","size":42,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-05T00:43:13.456Z","etag":null,"topics":["duet3d","gcode","robotics"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/btoms20.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-01-21T17:06:45.000Z","updated_at":"2025-02-12T18:28:09.000Z","dependencies_parsed_at":"2025-01-15T10:15:52.835Z","dependency_job_id":"360bfa5e-896c-47ba-b834-c37fbb0ea66d","html_url":"https://github.com/btoms20/RobotArm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/btoms20/RobotArm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btoms20%2FRobotArm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btoms20%2FRobotArm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btoms20%2FRobotArm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btoms20%2FRobotArm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/btoms20","download_url":"https://codeload.github.com/btoms20/RobotArm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/btoms20%2FRobotArm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34027670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["duet3d","gcode","robotics"],"created_at":"2024-11-15T03:53:16.204Z","updated_at":"2026-06-07T15:32:15.912Z","avatar_url":"https://github.com/btoms20.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# AnninRobotics v4 Robot Arm   \n   \nHi! 👋\n \nThis repo is home to all the notes, thoughts and future plans I have for my build of the amazing [AnninRobotics v4 robot arm](https://www.anninrobotics.com). Below, you'll find some basic info covering some of the physical and electrical attributes of the arm and the software stack used to control it; There's also a TODO list of features I'm hoping to add in the near future.  \n\nIf you have any questions or comments, feel free to post on the [discussions board](https://github.com/btoms20/RobotArm/discussions)! 🙋\n   \n## 🦾 Structure\n- [AnninRobotics v4 Design \u0026 Kit](https://www.anninrobotics.com)\n- 6 axis robot arm, aluminum core with 3D printed cosmetic panels\n   \n## 🧠 Logics   \n- Duet 3 6XD running RepRapFirmware with custom IK code    \n- DWC interface with http gcode server exposed\n   \n   \n## ✅ TODOs   \n- [x] Mechanical Build\n- [x] Control/Junction Box (panel cutouts, air vents, estop, board brackets, etc)\n- [x] Electronics (cable routing, wiring, soldering, etc)\n- [x] Electronics (endstops and encoders)\n- [x] Software Basics (provision Duet 3 6XD)\n- [x] Software Basics (external drivers configured, steps/deg, speed, accel)\n- [x] Software Basics (homing files, homing sequence)\n- [x] Open loop control (all 6 axis working)\n- [x] End Effector (servo gripper installed, configured and running)\n- [x] Upgrade J2 to new [higher precision gearbox](https://www.anninrobotics.com/post/j2-gearbox-update) (https://github.com/btoms20/RobotArm/discussions/2) \n- [x] Get robo viewer plugin set up on DWC   \n- [x] Change DWC from mm to deg (our config is doing everything in mm, it would make more sense if we started using degrees instead)   \n- [x] Enable Closed Loop Control (https://github.com/btoms20/RobotArm/discussions/3)\n- [ ] [Joint Encoders](https://github.com/ongdexter/ar3_hardware_mods) as well\n- [x] Get IK set up    \n- [x] Software based backlash compensation (3.5 - M425)\n- [ ] Use accelerometer to fine tune ee pose\n- [ ] Install Panel Due on front of junction box \n\n   \n## 🎛️ Duet DWC Config File   \n```\n; Enable network\nif {network.interfaces[0].type = \"ethernet\"}\n\tM551 P\"***\"           ; set password (used when you connect Duet Web Control or via FTP)\n\tM552 P192.168.1.24 S1 ; enable network and bind to, 24 \u003cor your favorite number\u003e\n\tM586 P0 S1            ; enable HTTP\n\tM586 P1 S0            ; disable FTP\n\tM586 P2 S0            ; disable Telnet\nelse\n    M552 S1\n\n; Fan\nM950 F0 C\"!out3\" Q250  ; Fan 1 is connected to out_3 pin, PWM at 250Hz (noctua says 25khz)\nM106 F0 S0.5           ; 0.0 == off 1.0 == full\n\n; Servo / Gripper\nM950 S1 C\"vfd\" ; Minimum 680 (closed) - Maximum 1080 (opened)\n;M280 P1 S1080  ; Open Gripper \n\n; External Driver Config\nM569 P0 R0 T2.5:2.5:5:5 S1 ; physical drive 0 goes forwards (change to S0 to reverse it) (with min pulse width commands)\nM569 P1 R0 T2.5:2.5:5:5 S1 ; physical drive 1 goes forwards (change to S0 to reverse it) (with min pulse width commands)\nM569 P2 R0 T2.5:2.5:5:5 S0 ; physical drive 2 goes reverse (change to S1 to reverse it) (with min pulse width commands)\nM569 P3 R0 T2.5:2.5:5:5 S0 ; physical drive 3 goes reverse (change to S1 to reverse it) (with min pulse width commands)\nM569 P4 R0 T2.5:2.5:5:5 S1 ; physical drive 4 goes forwards (change to S0 to reverse it) (with min pulse width commands)\nM569 P5 R0 T2.5:2.5:5:5 S0 ; physical drive 5 goes reverse (change to S1 to reverse it) (with min pulse width commands)\n\n; Drive to Axis Mapping\nM584 X0 Y1 Z2 U3 V4 W5 \n\n; Endstops\nM574 X1 S1 P\"io1.in\"  ; configure switch-type (e.g. microswitch) endstop for high end on X via pin io1.in\nM574 Y1 S1 P\"io2.in\"\nM574 Z1 S1 P\"io3.in\"\nM574 U1 S1 P\"io4.in\"\nM574 V1 S1 P\"io5.in\"\nM574 W1 S1 P\"io6.in\"\n\n; Configure microstepping with interpolation\nM350 X1 Y1 Z1 U1 V1 W1 I0  \n\n; Steps per mm\nM92 X200.00 Y200.00 Z200.00 U200.00 V200.00 W200.00\n\n; Set maximum instantaneous speed changes (mm/min)\nM566 X100.00 Y100.00 Z100.00 U100.00 V100.00 W100.00\n\n; Set maximum speeds (mm/min)\nM203 X2000.00 Y2000.00 Z2000.00 U2000.00 V2000.00 W1000.00\n\n; Set accelerations (mm/s^2)\nM201 X50.00 Y50.00 Z50.00 U25.00 V25.00 W10.00      \n\n;M906 X1460 I30   ; set motor currents (mA) and motor idle factor in per cent\n\n; Set idle timeout\nM84 S30          \n\n; Axis Limits\n; Set axis maxima and high homing switch positions (adjust to suit your machine)\nM208 X70 Y35 Z40 U55 V25 W35 S0 \n; Set axis minima and low homing switch positions (adjust to make X=0 and Y=0 the edges of the bed)\nM208 X0 Y0 Z0 U0 V0 W0 S1 \n```\n   \n## 📸 Media   \n![RobotArm](https://user-images.githubusercontent.com/32753167/213881860-788fda76-0838-43bd-9a7b-2eec156446b1.jpeg)\n\n| Homing to Ready | Block De-Stacking |\n| :-------------: | :-------------: |\n| ![Homing](https://user-images.githubusercontent.com/32753167/213882039-ebf8dee0-3288-44c1-89bc-e9ffb9ed38bb.mp4) | ![Block Stack](https://user-images.githubusercontent.com/32753167/213882056-57d40fd9-df9f-4b78-9aec-2173c790e646.mp4) |\n\n| Closed Loop |\n| :-------------: |\n| ![Closed Loop](https://user-images.githubusercontent.com/32753167/233811881-bad81b96-132a-4ea8-9189-a250a28ba883.mp4) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtoms20%2Frobotarm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbtoms20%2Frobotarm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbtoms20%2Frobotarm/lists"}