Annin Robotics AR4 Robot Arm

This lab guides students through the electromechanical integration, motion control, and software configuration of the Annin Robotics AR4, an open-source six-axis articulated robotic manipulator. Operating on a dual-microcontroller architecture featuring an ARM Cortex-M7 Teensy 4.1 and an ATmega328P Arduino Nano, students configure multi-axis hybrid stepper motor drivers, wire limit switch homing circuits and emergency stop interlocks, and control an articulated end-effector servo gripper. The lab investigates forward and inverse kinematics, joint calibration, and real-time step-and-direction trajectory generation using both a Python-based graphical control interface and an industrial-grade ROS 2 software stack incorporating ros2_control and MoveIt 2. Through hands-on testing and motion profiling, students master essential competencies in mechatronic assembly, embedded firmware flashing, serial communication protocols, and automated path planning.

robotics robot manipulator 6-DOF robot arm articulated arm mechatronics motion planning MoveIt 2 ROS 2 Robot Operating System ros2_control Teensy 4.1 Arduino Nano microcontroller stepper motor motor driver inverse kinematics trajectory generation servo gripper

Uploaded by demo on 2026-09-03 · ready · Electronics · Original source ↗

Files: anninrobotics_downloads.md · ar4hmi_README.md · ros_driver_README.md

Readiness checks

  • complete 2026-09-04 00:04 🛡 Cybersecurity: Review before networking · 7 findings 19 searches · 14 pages
    view · PDF

Latest report — 2026-09-04 00:04

Readiness: Annin Robotics AR4 Robot Arm

Verdict: Ready with caveats · 2026-09-03 · est. parts cost $830–$1,035 Cybersecurity — software & network: Review before networking

This is the cold check — no previous readiness report exists for this lab, so these figures establish the baseline for future drift comparison. Every electronic part in the bill of materials was found in stock at an authorized distributor or a mainstream retailer at an ordinary price; nothing is obsolete, end-of-life, or unobtainable. The caveats are about ordering the right thing rather than about availability. The Teensy 4.1 is no longer catalogued under any PJRC part number, and DigiKey's top hit for "TEENSY 4.1" is a $9.95 Ethernet accessory rather than the board — an easy and expensive mis-order. Three requirements the snapshot states (the E-stop's low-level contact rating, the servo's fit in the printed gripper pocket, and the limit-switch bracket hole pattern) are specified only in the offline assembly manuals, which are not in the uploaded materials, so they could not be checked against any candidate part. The six stepper motors are sold only as a vendor-designated package; individual motor part numbers and gear ratios were not checked.

The estimated cost covers the controller electronics and consumables checked here plus the StepperOnline motor package. It excludes the optional encoders, the aluminium/hardware kits, and 3D-printed parts — those are priced separately under Other dependencies.

Action required

Part Problem Recommended action
PJRC Teensy 4.1 Not an availability problem — an ordering trap. DigiKey's top result for "TEENSY 4.1" is 18615, "ETHERNET KIT FOR TEENSY 4.1", $9.95 — the connector accessory, not the controller board. PJRC's own part number (TEENSY41_NE) returns zero products at DigiKey and is listed by no ECIA-authorized distributor. Order SparkFun 20359, "TEENSY 4.1 WITHOUT ETHERNET", $29.60 — DigiKey. Avoid 28369 and 28370: PJRC describes its lockable boards as "For commercial products and secure applications", which is the wrong choice for a lab that reflashes firmware repeatedly.
Emergency Stop Push Button The snapshot requires dry contacts usable at 3.3 V DC, ≥ 10 mA. No listing in evidence states a minimum switching current or a low-level contact rating, and no product page was fetched. Many industrial contact blocks are specified for AC line loads and carry a minimum contact load. Before ordering, check the chosen contact block's minimum switching current on its datasheet. Plentiful and cheap at $12.00–$67.52 either way — this is a spec check, not a sourcing problem.
Gripper servo, limit switches Mechanical fit is unverified: the servo must fit the pocket in AR4-Servo-Gripper-CAD.zip, and the six limit switches must match the 3D-printed bracket hole pattern for the specific MK revision. Both dimensions live in the offline manuals and CAD archives, which are not in the uploaded materials. Pull the bracket and pocket dimensions from the assembly manual for your revision and check them against the candidate before ordering six of anything.

Cybersecurity — software & network

Review before networking — No advisories were found, but every component in the stack is unpinned or undeterminable, and the documented setup runs unverified downloads - including one installed as root - so the security state is unknown rather than clean.

Component Version How known Support status
Ubuntu Linux (ROS 2 host) 24.04 read from project (fetched/03-README.md: "Tested with ROS 2 Jazzy on Ubuntu 24.04") supported until 2029-05-31
Microsoft Windows (alternative HMI host) not determined not determined (Sources give only the family "Windows 10 / Windows 11 x64"; no feature-update release is stated anywhere.) —
ROS 2 Jazzy Jalisco jazzy read from project (fetched/02-Dockerfile: "FROM ros:jazzy"; also fetched/03-README.md) —
ar4_ros_driver (AR4 ROS 2 driver) not determined unpinned (fetched/03-README.md line 107 clones the default branch with no tag or commit SHA: "git clone https://github.com/Annin-Robotics/ar4_ros_driver.git") —
ROS 2 stack packages declared by annin_ar4_driver (ros2_control, controller_manager, joint_trajectory_controller, MoveIt 2, rclcpp and 15 others) not determined unpinned (fetched/04-package.xml: 20 dependencies, 0 pinned (ROS package.xml carries no versions); README lines 142 and 157 install them with bare "sudo apt install -y") —
AR4 HMI Python dependencies (requirements.txt) not determined unpinned (fetched/01-requirements.txt: 10 of 10 dependencies carry no constraint (inputs, matplotlib, opencv-contrib-python, opencv-python, pybind11, pyserial, pywin32, ttkbootstrap, ttkthemes, vtk)) —
CPython (AR4 HMI runtime) 3.12 inferred (ar4hmi_README.md states a 3.11-3.12 range (per snapshot); a range is not a pin, so the upper bound was taken for the support lookup) supported until 2028-10-31
Arduino IDE (AppImage) 2.3.6 read from project (fetched/03-README.md line 249: wget https://downloads.arduino.cc/arduino-ide/arduino-ide_2.3.6_Linux_64bit.AppImage) —
PJRC Teensyduino board support package not determined unpinned (Installed through the Arduino Boards Manager from the live index https://www.pjrc.com/teensy/package_teensy_index.json; no release pinned (snapshot)) —
PJRC udev rules (00-teensy.rules) not determined unpinned (fetched/03-README.md line 347 fetches it live from https://www.pjrc.com/teensy/00-teensy.rules; the file is not versioned) —
Bounce2 (Arduino switch debounce library) not determined unpinned (Installed via the Arduino IDE Library Manager with no version pinned (snapshot)) —
AR4 Teensy 4.1 and Arduino Nano firmware sketches not determined not determined (The archives are named per release (v7.0, v2.0), but nothing fetched pins which sketch a given build installs; the ROS repo ships annin_ar4_firmware at branch HEAD) —
AR4-MK3 Control Software (AR4 HMI desktop application) not determined not determined (The lab's own release numbers (6.3.1, 7.0) are product releases, not a checkable software version; the ar4-hmi repository default branch pins nothing) —
rocker (OSRF Docker wrapper, optional) not determined unpinned (fetched/03-README.md line 400 links https://github.com/osrf/rocker with no version stated) —
Component Finding Severity Fix available?
AR4 HMI Python dependencies (requirements.txt) Dependencies unpinned: 10 of 10 in requirements.txt, so the HMI installs whatever version of pyserial, OpenCV, VTK and matplotlib is current on the day and the software students actually run has no checkable security state. posture Mitigation only - pin versions / use the lockfile
ar4_ros_driver (AR4 ROS 2 driver) The driver is installed by cloning a branch at HEAD with no tag or commit, and the shipped Dockerfile clones a different GitHub account (ycheng517/ar4_ros_driver) also at HEAD, so the code a student builds is whatever those repositories contain at build time. posture Mitigation only - clone a specific tag or commit SHA and record it in the lab handout
Arduino IDE (AppImage) The documented install downloads the Arduino IDE AppImage with wget and makes it executable with no checksum or signature verification step anywhere in the procedure. posture Mitigation only - verify the download against Arduino's published checksum before chmod +x
Arduino IDE (AppImage) The IDE is launched with its application sandbox switched off (--no-sandbox), and the desktop launcher entry the instructions create bakes that flag in permanently. posture Mitigation only - launch without --no-sandbox, or keep the flashing machine off shared coursework
PJRC udev rules (00-teensy.rules) The setup downloads a device-rules file over the network and copies it straight into /etc/udev/rules.d/ with root privileges and no verification, so whatever that URL serves that day becomes a root-level device rule on the lab PC. posture Mitigation only - read the downloaded rules file before sudo cp, and ship a known-good copy with the course materials
rocker (OSRF Docker wrapper, optional) The optional container workflow forwards the host's SSH credentials and X11 display into the container (rocker --ssh --x11), so code running inside it can use the operator's SSH keys and reach the host display. posture Mitigation only - drop --ssh unless a build step genuinely needs it
ROS 2 stack packages declared by annin_ar4_driver (ros2_control, controller_manager, joint_trajectory_controller, MoveIt 2, rclcpp and 15 others) Dependencies unpinned: 20 of 20 in annin_ar4_driver/package.xml, and the documented setup installs the control and motion-planning stack with bare apt commands, so two lab machines built weeks apart run different code and neither version can be checked for known issues. posture Mitigation only - record the installed package versions with the lab image (apt list --installed) so a rebuild is reproducible

What this means for your lab

Nothing in this check turned up a known vulnerability, but that is mostly because almost nothing here has a version anyone can check - it is not a clean bill of health. The arm talks to the PC over USB cables rather than the network, and the lab's documentation describes no login service, open port or default password, so there is no obvious way for someone else on the campus network to reach the robot directly. The real exposure is in how the software gets installed. The setup instructions download the Arduino IDE and a system device-rules file straight off the internet and use them without checking that the files are what they claim to be - one of them is copied in with administrator rights, and the IDE is deliberately run with its own safety sandbox switched off. The driver code is likewise pulled fresh from GitHub at build time, from two different accounts, with no fixed version. Anyone able to tamper with those downloads would be running their code on your lab PC. Practical steps: build the lab PC once and write down exactly which versions you installed; check the Arduino IDE download against Arduino's published checksum; open the Teensy rules file and read it before copying it in as administrator; and if you use the optional Docker setup, leave out the option that hands your SSH keys to the container. If you plan to run the ROS 2 software across more than one machine, raise it with campus IT and put those machines on their own network segment first - this check found nothing that tells us how that traffic is protected, and unknown is not the same as safe.

Not checked

  • Microsoft Windows 10 / 11 host: The sources name only the family, and endoflife.date needs a feature-update cycle (its Windows cycles are of the form 11-24h2-w, 10-22h2); lookups on both '11' and '10' returned no cycle match, so support status is unknown.
  • ROS 2 Jazzy Jalisco: endoflife.date's 'ros' product lists only ROS 1 cycles (noetic, melodic, lunar, kinetic), so there is no ROS 2 cycle to match Jazzy against.
  • AR4 HMI Python dependencies (10 packages): All 10 are unpinned; OSV needs an exact version, so none could be checked.
  • ROS 2 stack packages from annin_ar4_driver/package.xml (20): ROS package.xml carries no versions and the README installs them with bare apt, so there is no exact version to check.
  • Arduino IDE 2.3.6: Not checked: no package named 'arduino-ide' exists in the npm registry, and no advisory database covers the Arduino IDE desktop application under that name.
  • PJRC Teensyduino board support package: Installed from a live board-manager index with no release pinned, and vendor board packages have no vulnerability database.
  • Bounce2 (Arduino library): Arduino libraries have no vulnerability database, and no version is pinned.
  • AR4 Teensy 4.1 and Arduino Nano firmware sketches: Vendor firmware with no public vulnerability tracking, and the installed sketch version is not pinned by the repository.
  • AR4-MK3 Control Software (AR4 HMI desktop application): Custom vendor application with no advisory database; its release numbers are not checkable software versions.
  • wmctrl and libfuse2t64: Unpinned Ubuntu system packages; the version is whatever the OS installs on the day.
  • rocker (OSRF Docker wrapper): Unpinned tool with no version stated in the documentation.
  • arduino-ide 2.3.6: no package by this name in the registry
  • windows 11: support status: version matches no release cycle on endoflife.date
  • ros jazzy: support status: version matches no release cycle on endoflife.date

Parts

Part Spec/Package Status Stock Price Source
PJRC Teensy 4.1 (qty 1) 42-pin DIP breakout, 0.1" pitch; 3.3 V I/O, not 5 V tolerant Active — order as SparkFun 20359 860 $29.60 DigiKey (SparkFun Electronics)
— Ethernet kit variant, do NOT order as the board Accessory Active 1733 $9.95 DigiKey (SparkFun 18615)
— lockable variant, avoid for a teaching lab "TEENSY 4.1 WITH COPY PROTECTION" Active 650 $31.50 DigiKey (SparkFun 28369)
— lockable variant, avoid for a teaching lab "TEENSY 4.1 WITHOUT ETHERNET WITH …" (DigiKey description truncated; trailing words not in evidence) Active 587 $29.50 DigiKey (SparkFun 28370)
Arduino Nano A000005 (qty 1) 30-pin DIP module, 0.1" pitch, ATmega328P, 5 V logic Active 3498 $25.70 DigiKey; also Mouser $22.53 (stock 7195), 7 authorized distributors with stock
Emergency Stop Push Button (qty 1) Panel-mount latching mushroom, NC/NO dry contacts Available at retail; contact rating not verified — $12.00–$67.52 AutomationDirect 22 mm $12.00; RS PRO $26.67 / $34.42; Eaton M22-PVT $44.77; IDEC XW1E-BV422M-R $51.44 and XW1E-BV413M-R $52.81 (Mouser); Schneider XB4BT842 $67.52 (Grainger)
Joint Homing Limit Switches (qty 6) Subminiature snap-action, lever or roller lever, 2-hole chassis mount Available at retail; bracket fit not verified — $2.51–$20.00 each (~$15–$103 for six) Pololu SPDT 5 A, 16.3 mm roller lever $2.51; goBILDA 2-pack $2.99; Grainger $3.07; Philmore $3.60; Honeywell V7 $4.71 (DigiKey); Honeywell 311SX5-T $17.23
Position Encoders AMT102-V (optional, up to 6) CUI AMT modular capacitive encoder kit, 3.3 V or 5 V, SPI/quadrature Active 3774 $34.23 each (~$205 for six) DigiKey — Same Sky (formerly CUI Devices)
End-Effector Gripper Servo (qty 1) Positional hobby servo, 4.8–6.0 V, 50 Hz PWM, metal gear Available at retail; pocket fit not verified — $18.99–$43.99 Hiwonder LD-25MG 25 kg $18.99; SF3218MG 20 kg $18.58 (RobotShop); Hitec HS-645MG $43.99; Adafruit micro servo $11.95. Hitec HSR-1425CR $21.74 is continuous-rotation — not suitable
Primary Controller USB Cable (qty 1) USB 2.0 Type-A to Micro-B, data-capable Readily available — $5.99–$13.99 Target 5 ft $5.99; Micro Center Inland $5.99; Best Buy essentials charge-and-sync $6.99 / $7.99; Monoprice Select $9.26. Power-only charging cables will fail
Gripper Controller USB Cable (qty 1) USB 2.0 Type-A to Mini-B (or Type-C on newer Nano variants), data-capable Readily available — $8.11 DigiKey "USB 2.0 Certified 480 Mbps Type A to Mini-B/5-Pin" $8.11 — the only listing in evidence that certifies the data rate. Cheaper: Monoprice $1.43, Micro Center $2.99, Cable Matters $5.99
6-Axis Stepper Motors + drivers + PSU (qty 6 motors, J1–J6) NEMA 17 / 23 / 34 hybrid bipolar, 1.5–4.0 A per phase, external 24 V DC bus Available only as a vendor-designated package; per-motor part numbers not checked not verified $729.81 "Complete AR4 MK3, MK4 & MK5 stepper-motor, driver & power supply package — factory direct from Stepperonline" (listing sourced to Annin Robotics)

Substitutes

None needed.

Other dependencies

  • 3D-printed structural parts (AR4-MK5/MK4/MK3-3D-Print-Files.zip, structural components, covers and spacers, misc, servo gripper CAD, travel-track CAD): fabrication dependency. If the department does not print in-house, a ready-made AR4 MK5 Robot 3D Printed Parts Set is $299.98 (white, lavender, gray and red all list at the same price). Print parameters — layer height, infill, PETG/ABS/PLA+ — are in the manual PDFs: not checked.
  • Custom PCBs: none required. The materials contain no Gerber, Eagle or KiCad files; both controllers are commercial off-the-shelf boards wired to external drivers.
  • Annin Robotics kits (the vendor's intended purchase route, prices from the same shopping search): AR4 MK5 Robot Combo Kit $1,189.00; AR4 MK5 Hardware Kit $319.00; AR4 MK5 Electrical Parts Kit $229.00.
  • Annin Robotics resource portal and download host (www.anninrobotics.com, anninrobotics.com/wp-content/uploads/): live — the kits page was fetched successfully this run. It states plainly that the vendor does not sell motors and that the project is two purchases: the Annin combo kit, and the motors and drivers package direct from StepperOnline. Individual manual, CAD and firmware archive URLs were not fetched: not checked.
  • StepperOnline AR4 package product page: could not be fetched this run (blocked, timeout, or gone), so live stock and the seller's own price are unverified. Reach it through the link on the Annin FAQ page.
  • PJRC (www.pjrc.com/store/teensy41.html): live, fetched successfully. It confirms SparkFun now manufactures Teensy products, and restates the board's 3.3 V limit: "Teensy 4.1 pins accept 0 to 3.3V signals. The pins are not 5V tolerant."
  • GitHub repositories (Annin-Robotics/ar4_ros_driver and Annin-Robotics/ar4-hmi): both live on branch main, listed successfully this run.
  • Offline assembly manuals (AR4-MK5-Robot-Manul-1.1.pdf and siblings): indexed by the project but not present as text in the uploaded materials. Every mechanical dimension this check wanted to verify — bracket hole spacing, servo pocket, motor part numbers, gear ratios — lives in them: not checked.

Watch list

  • SparkFun 20359 (Teensy 4.1) — effectively single-distributor. The ECIA record lists DigiKey as the only stocking distributor (860 units), with supply-chain risk rated Low-Med. The snapshot allows no substitute: the firmware depends on Teensy 4.1 pin assignments, interval timers and RAM. If that one warehouse empties, the lab stops.
  • The stepper motor package — a single supplier relationship, not a catalogue part. The vendor's own page routes all motor purchases to StepperOnline, and this check could not read that page directly. If the partnership lapses, rebuilding the motor BOM requires the offline manuals.
  • Same Sky AMT102-V — healthy today (Active, 3774 in stock), but note the manufacturer renamed from CUI Devices to Same Sky; search under both names at the next check so a rename is not mistaken for a discontinuation.
  • Arduino Nano A000005 — no risk signal today (Active, 3498 at DigiKey, 7 authorized distributors with stock), but the classic ATmega328P Nano is a long-lived board whose retail variants shift toward USB-C. Confirm the connector type when reordering, and re-match the Mini-B cable to it.
  • Retail commodity lines (E-stop, limit switches, servo, cables) — these have no fixed part number, so drift here shows up as the specific model vanishing rather than as a price move. Record whichever model is actually bought so the next check has a real baseline.
Snapshot What the lab depended on when it was uploaded — the baseline the readiness checks research against.

This document provides a comprehensive hardware and software dependency snapshot for the Annin Robotics AR4 6-axis robotic arm across mechanical revisions MK1 through MK5.

The Annin Robotics AR4 is an open-source, 6-degree-of-freedom articulated robotic manipulator with an optional 1-DOF motorized servo gripper. The motion control architecture utilizes a dual-microcontroller topology communicating over independent serial USB connections with a host computing platform running either a standalone Python GUI (AR4-MK3 HMI) or a ROS 2 Jazzy motion planning pipeline (using ros2_control and MoveIt 2). Primary joint trajectory generation, step and direction pulse sequencing for 6 stepper axes, limit-switch homing, and hardware emergency stop (E-stop) detection are executed on a PJRC Teensy 4.1 development board. Gripper actuation and motor overcurrent sensing are handled independently by an Arduino Nano board. The electrical subsystem runs on mixed voltage rails: a 5 V DC logic rail supplying the microcontroller development boards via USB (with the Teensy 4.1 core operating at 3.3 V logic with 3.3 V I/O tolerance, and the Arduino Nano operating at 5 V logic), a 5 V to 6 V DC auxiliary rail powering the gripper servo, and an external higher-voltage DC motor bus (typically 24 V DC nominal, defined in the robot assembly manuals) that supplies power to external industrial stepper motor drivers.

Bill of Materials

Note: Detailed discrete component counts, fasteners, structural aluminum plates, and external stepper motor driver part numbers are defined inside the external offline assembly manuals (such as AR4-MK5-Robot-Manul-1.1.pdf and AR4-MK4-Robot-Manul-1.1.pdf) which are indexed by the project but not included as raw text files in the workspace. All hardware modules, controller boards, sensors, and electromechanical components specified across the operational manifests and driver documentation are cataloged below.

  1. Primary Motion Controller Board
  • Identity: PJRC Teensy 4.1 (ARM Cortex-M7 at 600 MHz, NXP i.MXRT1062)
  • Quantity: 1
  • Footprint/package: 42-pin DIP breakout form factor, 2.4 inch by 0.7 inch, 0.1 inch pin pitch, with onboard micro-SD slot and micro-USB port
  • Electrical constraints: Powered via 5 V DC VUSB (supply range 3.6 V to 6.0 V DC). Digital I/O operates strictly at 3.3 V logic (not 5 V tolerant on general I/O pins). Step/direction signals, E-stop sensing, and limit switch inputs interface at 3.3 V logic.
  • Substitution latitude: Must be an authentic PJRC Teensy 4.1. The firmware uses native Teensyduino libraries, hardware interval timers, and pin assignments unique to the Teensy 4.1 layout; older Teensy variants or standard Arduinos lack the pin count, clock frequency, and RAM needed for high-speed multi-axis trajectory execution.
  • Operated control: No (flashed set-once microcontroller).
  • Sourcing plan: distributor lookup: TEENSY 4.1
  1. Gripper Controller Board
  • Identity: Arduino Nano (Microchip ATmega328P microcontroller)
  • Quantity: 1
  • Footprint/package: 30-pin DIP module, 18 mm by 45 mm, 0.1 inch pin pitch, with Mini-B or USB-C connector
  • Electrical constraints: Powered via 5 V DC USB rail or 7 V to 12 V DC unregulated VIN pin; ATmega328P operates at 5 V DC logic. PWM output and analog sensing interface at 5 V logic.
  • Substitution latitude: Any standard Arduino Nano board or exact clone using the ATmega328P processor (specifically supporting the 16 MHz 5V Old Bootloader or Optiboot) is functionally drop-in compatible.
  • Operated control: No (flashed set-once microcontroller).
  • Sourcing plan: distributor lookup: A000005
  1. Emergency Stop (E-Stop) Push Button
  • Identity: Industrial latching emergency stop pushbutton switch with twist-to-reset or pull-to-reset actuator, described in driver documentation as E-Stop button on the robot.
  • Quantity: 1
  • Footprint/package: Panel-mount pushbutton (typically 16 mm, 19 mm, or 22 mm panel cutout, normally closed / normally open dry contacts).
  • Electrical constraints: Dry contact switch wired to Teensy 4.1 digital input pin with software debounce via Bounce2 library; operates at 3.3 V logic level.
  • Substitution latitude: Any latching, normally closed (NC) or normally open (NO) industrial E-stop push button rated for low-voltage signal levels (3.3 V DC, ≥ 10 mA) can be used, matched to firmware trip logic.
  • Operated control: Yes (twist-to-reset / push-to-stop industrial mushroom actuator operated by the user during fault or emergency situations).
  • Sourcing plan: retail shopping search: emergency stop push button switch panel mount twist reset
  1. Joint Homing Limit Switches
  • Identity: Miniature snap-action microswitches (lever or roller-lever actuator) used for joint calibration homing sensing on joints J1 through J6.
  • Quantity: 6 (one per motion joint J1 through J6)
  • Footprint/package: Subminiature snap-action switch, 2-hole chassis mounting.
  • Electrical constraints: Dry mechanical contact switching 3.3 V logic input pulled high or low, debounced via the Bounce2 Arduino library.
  • Substitution latitude: Any subminiature snap-action limit switch with mechanical mounting matching the 3D printed brackets of the specific robot revision (MK1 through MK5) is compatible.
  • Operated control: No (actuated automatically by mechanical joint travel stops during homing routines).
  • Sourcing plan: retail shopping search: subminiature snap action limit switch roller lever
  1. Position Encoders (Optional Configuration)
  • Identity: CUI Devices absolute or incremental modular rotary encoders (referenced in AR4_teensy41_CUI_sketch and AR4_teensy41_CUI_enc_sketch firmware).
  • Quantity: Up to 6 (one per joint on encoder-equipped builds).
  • Footprint/package: Modular shaft-mount encoder assembly (e.g., CUI AMT series capacitive encoder modular kit).
  • Electrical constraints: 3.3 V or 5 V DC supply voltage (must match Teensy 4.1 3.3 V input tolerance directly or via level shifting), SPI or quadrature incremental interface.
  • Substitution latitude: Must match the CUI AMT protocol and configuration expected by the official CUI firmware sketches if using closed-loop or absolute homing builds; open-loop standard builds use limit switches instead.
  • Operated control: No (internal kinematic sensor).
  • Sourcing plan: distributor lookup (representative example — sources give spec only): AMT102-V
  1. End-Effector Gripper Actuator
  • Identity: Standard or miniature positional hobby servo motor (referenced in AR4 Servo Gripper CAD, Manual, and ROS gripper controller action).
  • Quantity: 1
  • Footprint/package: Standard micro or standard-size RC hobby servo chassis mounting in 3D-printed gripper housing.
  • Electrical constraints: Operating voltage 4.8 V to 6.0 V DC; 50 Hz PWM control signal generated by Arduino Nano; stall current up to 1.5 A to 2.0 A requiring dedicated overcurrent protection.
  • Substitution latitude: Must fit the 3D-printed servo pocket defined in AR4-Servo-Gripper-CAD.zip and deliver sufficient stall torque for gripper claw mechanical links.
  • Operated control: No (actuated electronically by Arduino Nano PWM).
  • Sourcing plan: retail shopping search: robotic hobby servo motor high torque metal gear
  1. Primary Controller USB Communication Cable
  • Identity: USB 2.0 Type-A to Micro-B male data/power cable.
  • Quantity: 1
  • Footprint/package: Standard molded male USB Type-A to male USB Micro-B cable assembly.
  • Electrical constraints: 5 V DC power conductors (rated ≥ 1 A), shielded high-speed data twisted pair for 12 Mbps / 480 Mbps serial USB emulation.
  • Substitution latitude: Any standard high-speed USB data cable. Power-only charging cables will fail as they lack data conductors.
  • Operated control: No.
  • Sourcing plan: retail shopping search: USB A to micro B cable data rated
  1. Gripper Controller USB Communication Cable
  • Identity: USB 2.0 Type-A to Mini-B (or Type-C depending on Nano board variant) male data/power cable.
  • Quantity: 1
  • Footprint/package: Standard molded cable assembly.
  • Electrical constraints: 5 V DC power conductors, standard full-speed USB data pair for 115200 baud UART-over-USB emulation.
  • Substitution latitude: Any data-capable cable matching the Arduino Nano connector.
  • Operated control: No.
  • Sourcing plan: retail shopping search: USB A to Mini B cable data rated
  1. 6-Axis Stepper Motors and Joint Mechanics Subsystem
  • Identity: Hybrid bipolar stepper motors for joints J1 through J6 (NEMA 17, NEMA 23, and NEMA 34 class steppers depending on joint axis as detailed in kinematic calculation workbooks AR4-MK5-motor-step-calculations.xlsx through MK3 workbooks).
  • Quantity: 6 motors across joints J1 to J6.
  • Footprint/package: Standard NEMA faceplates (NEMA 17, NEMA 23, NEMA 34) with reduction gearboxes or timing belt pulleys as specified in mechanical assembly manuals.
  • Electrical constraints: Phase currents typically 1.5 A to 4.0 A per phase, driven by external bipolar microstepping drivers powered by an external 24 V DC nominal bus.
  • Substitution latitude: Must match the mechanical mounting, shaft dimensions, gear ratios, and step angle (1.8° or 0.9°) specified in the motor step calculation spreadsheets for each AR4 revision to avoid kinematic tracking errors.
  • Operated control: No.
  • Sourcing plan: general web research: Annin Robotics AR4 stepper motor kit specifications and gear ratios

Software and network dependencies

The AR4 robotic platform depends on a host operating system running either the Python-based AR4 HMI control software or the ROS 2 Jazzy motion planning and hardware interface stack, alongside Arduino-based toolchains for flashing firmware to the two microcontrollers.

  1. Base Operating System (ROS 2 Stack)
  • Name: Ubuntu Linux
  • Where it comes from: Canonical Ltd. (https://releases.ubuntu.com/noble/)
  • Version: 24.04 LTS (Noble Numbat)
  • Where the version came from: stated in documentation (ros_driver_README.md specifies Ubuntu 24.04)
  • Whether versions are pinned: Pinned to 24.04 LTS release series
  • Manifest location: Not applicable (system OS platform)
  • Check plan: support-status lookup: Ubuntu 24.04 LTS
  1. Alternative Desktop Operating System (HMI Software Stack)
  • Name: Microsoft Windows
  • Where it comes from: Microsoft Corporation
  • Version: Windows 10 / Windows 11 x64
  • Where the version came from: stated in documentation (ar4hmi_README.md specifies Windows 10/11 x64)
  • Whether versions are pinned: Unpinned major family release
  • Manifest location: Not applicable (host OS platform)
  • Check plan: support-status lookup: Windows 11
  1. Robot Operating System (Core Middleware)
  • Name: ROS 2 Jazzy Jalisco (with alternative legacy branch for ROS 2 Humble Hawksbill)
  • Where it comes from: Open Source Robotics Foundation (OSRF) / ROS 2 package repositories (https://docs.ros.org/en/jazzy/)
  • Version: Jazzy Jalisco
  • Where the version came from: stated in documentation (ros_driver_README.md)
  • Whether versions are pinned: Pinned to ROS 2 Jazzy distribution
  • Manifest location: /etc/apt/sources.list.d/ros2.list
  • Check plan: support-status lookup: ROS 2 Jazzy
  1. ROS 2 Control Stack
  • Name: ros-jazzy-ros2-control, ros-jazzy-ros2-controllers, ros-jazzy-controller-manager
  • Where it comes from: Ubuntu/ROS apt binary repositories
  • Version: not stated (installs current Jazzy release via apt install -y)
  • Where the version came from: stated in documentation (package names without version pins)
  • Whether versions are pinned: Unpinned in install commands in ros_driver_README.md (bare apt install)
  • Manifest location: ros_driver_README.md line 117
  • Check plan: not checkable: unpinned version in Ubuntu apt repositories
  1. MoveIt 2 Motion Planning Framework
  • Name: ros-jazzy-moveit, ros-jazzy-moveit-py
  • Where it comes from: Ubuntu/ROS apt binary repositories
  • Version: not stated (installs current Jazzy release via apt install -y)
  • Where the version came from: stated in documentation (package names without version pins)
  • Whether versions are pinned: Unpinned in install commands in ros_driver_README.md
  • Manifest location: ros_driver_README.md line 132
  • Check plan: not checkable: unpinned version in Ubuntu apt repositories
  1. AR4 ROS Driver Repository
  • Name: ar4_ros_driver (contains annin_ar4_description, annin_ar4_driver, annin_ar4_firmware, annin_ar4_moveit_config, annin_ar4_gazebo)
  • Where it comes from: https://github.com/Annin-Robotics/ar4_ros_driver.git
  • Version: main branch (or humble branch)
  • Where the version came from: stated in documentation
  • Whether versions are pinned: Unpinned (git clone command clones latest default branch HEAD without commit SHA or release tag)
  • Manifest location: ros_driver_README.md line 95
  • Check plan: not checkable: unpinned git repository tracking HEAD
  1. Python Runtime Environment
  • Name: CPython
  • Where it comes from: Python Software Foundation (https://www.python.org)
  • Version: 3.11 – 3.12
  • Where the version came from: stated in documentation (ar4hmi_README.md System Requirements table)
  • Whether versions are pinned: Range pinned to 3.11 through 3.12
  • Manifest location: ar4hmi_README.md
  • Check plan: support-status lookup: Python 3.12
  1. Python Dependency Manifest for AR4 HMI
  • Name: requirements.txt (dependencies: tkinter, ttkbootstrap, pyserial, vtk, numpy, pandas, pybind11)
  • Where it comes from: ar4-hmi repository (https://github.com/Annin-Robotics/ar4-hmi.git inside Control Software/ directory)
  • Version: not stated in README text; installs via pip install -r requirements.txt
  • Where the version came from: stated in documentation
  • Whether versions are pinned: Not stated in workspace text (referenced as requirements.txt)
  • Manifest location: ar4-hmi/Control Software/requirements.txt
  • Check plan: not checkable: manifest contents not included in uploaded file inventory
  1. System Window Management Utility (Linux HMI Dependency)
  • Name: wmctrl
  • Where it comes from: Ubuntu upstream universe repository
  • Version: not stated (installed via sudo apt-get install wmctrl)
  • Where the version came from: stated in documentation (ar4hmi_README.md)
  • Whether versions are pinned: Unpinned
  • Manifest location: ar4hmi_README.md
  • Check plan: not checkable: unpinned system package
  1. AppImage FUSE Compatibility Library
  • Name: libfuse2t64
  • Where it comes from: Ubuntu 24.04 noble official repository
  • Version: not stated (installed via sudo apt install -y libfuse2t64)
  • Where the version came from: stated in documentation (ros_driver_README.md)
  • Whether versions are pinned: Unpinned
  • Manifest location: ros_driver_README.md line 208
  • Check plan: not checkable: unpinned system package
  1. Microcontroller IDE
  • Name: Arduino IDE 2.x 64-bit Linux AppImage
  • Where it comes from: https://downloads.arduino.cc/arduino-ide/arduino-ide_2.3.6_Linux_64bit.AppImage
  • Version: 2.3.6
  • Where the version came from: pinned in ros_driver_README.md line 216
  • Whether versions are pinned: Pinned to 2.3.6 in download URL
  • Manifest location: ros_driver_README.md
  • Check plan: vulnerability lookup: arduino-ide / unknown / 2.3.6
  1. PJRC Teensyduino Board Support Package
  • Name: Teensyduino (PJRC Teensy Board Package)
  • Where it comes from: https://www.pjrc.com/teensy/package_teensy_index.json
  • Version: not stated (installed via Arduino Boards Manager)
  • Where the version came from: stated in documentation (ros_driver_README.md)
  • Whether versions are pinned: Unpinned (points to live board manager index JSON)
  • Manifest location: ros_driver_README.md line 291
  • Check plan: not checkable: vendor board manager package index without pinned release
  1. PJRC Linux Hardware Udev Rules
  • Name: 00-teensy.rules
  • Where it comes from: https://www.pjrc.com/teensy/00-teensy.rules
  • Version: not stated (fetched directly from website root)
  • Where the version came from: stated in documentation (ros_driver_README.md)
  • Whether versions are pinned: Unpinned
  • Manifest location: ros_driver_README.md line 316
  • Check plan: not checkable: dynamic upstream file download
  1. Arduino Switch Debounce Library
  • Name: Bounce2
  • Where it comes from: Arduino Library Manager (Thomas O Fredericks)
  • Version: not stated (installed via Arduino IDE Library Manager)
  • Where the version came from: stated in documentation (ros_driver_README.md)
  • Whether versions are pinned: Unpinned
  • Manifest location: ros_driver_README.md line 304
  • Check plan: not checkable: unpinned Arduino library
  1. Teensy 4.1 Motion Control Firmware Sketches
  • Name: AR4 Teensy 4.1 sketch (AR4_teensy41_sketch_v7.0.zip, AR4_teensy41_sketch_v6.8.1.zip, down to v2.0, or annin_ar4_firmware in ROS repo)
  • Where it comes from: Annin Robotics WordPress repository (https://anninrobotics.com/wp-content/uploads/...) and GitHub
  • Version: v7.0 (latest), v6.3.1 (HMI 6.3.1 baseline), v6.0 / v3.0 (MK3/MK4 baseline)
  • Where the version came from: stated in documentation (anninrobotics_downloads.md and ar4hmi_README.md)
  • Whether versions are pinned: Explicitly versioned per archive download name; must match HMI software version (e.g., Firmware v7.0 with HMI 7.0; firmware ≥ 6.3 with HMI 6.3.1)
  • Manifest location: anninrobotics_downloads.md
  • Check plan: not checkable: custom proprietary/open firmware without public vulnerability tracking
  1. Arduino Nano Gripper Firmware Sketches
  • Name: AR4 Nano sketch (AR4_nano_sketch_v2.0.zip, AR4_nano_sketch_v1.5.zip, down to v1.3)
  • Where it comes from: Annin Robotics WordPress repository and GitHub
  • Version: v2.0 (for HMI / system v7.0), v1.5 (for version 6.8), v1.4
  • Where the version came from: stated in documentation (anninrobotics_downloads.md)
  • Whether versions are pinned: Explicitly versioned per archive download name
  • Manifest location: anninrobotics_downloads.md
  • Check plan: not checkable: custom vendor sketch
  1. Standalone Desktop Control Application
  • Name: AR4-MK3 Control Software (AR4 HMI)
  • Where it comes from: Annin Robotics (https://github.com/Annin-Robotics/ar4-hmi.git or packaged zip AR4-HMI-7.0-exe.zip / AR4-HMI-interface-6.3.1-source.zip)
  • Version: 6.3.1 (January 2025) and v7.0 (July 2026 release)
  • Where the version came from: stated in documentation (ar4hmi_README.md title and anninrobotics_downloads.md)
  • Whether versions are pinned: Pinned to specific point releases
  • Manifest location: ar4hmi_README.md and anninrobotics_downloads.md
  • Check plan: not checkable: custom robotics HMI desktop application
  1. Containerization Runtime Utility (Optional)
  • Name: rocker (OSRF Docker wrapper for X11/SSH/device passthrough)
  • Where it comes from: https://github.com/osrf/rocker
  • Version: not stated
  • Where the version came from: stated in documentation (ros_driver_README.md)
  • Whether versions are pinned: Unpinned
  • Manifest location: ros_driver_README.md line 364
  • Check plan: not checkable: unpinned tool

Network Exposure and Interfaces:

  • The system communicates locally via virtual COM / USB CDC serial links: /dev/ttyACM0 for the Teensy 4.1 controller (requires user membership in the Linux dialout group) and /dev/ttyUSB0 for the Arduino Nano gripper controller.
  • When running in Docker containers, the documentation directs users to pass these serial device nodes (--devices /dev/ttyUSB0 /dev/ttyACM0) along with host display forwarding (--x11) and SSH credential forwarding (--ssh).
  • Network listening services, default open network ports, remote login daemons, and default IP credentials are not stated in the sources; communication operates entirely over local serial buses and internal ROS 2 DDS middleware.

Temporal, URL, and Fabrication Dependencies

  1. Upstream Web Endpoints and Repositories:
  • Annin Robotics Official Resource Portal: https://www.anninrobotics.com
  • Annin Robotics Download Host: https://anninrobotics.com/wp-content/uploads/ (hosts manual PDFs, CAD zip archives, step calculation spreadsheets, and firmware archives).
  • AR4 ROS Driver Git Repository: https://github.com/Annin-Robotics/ar4_ros_driver.git (branches: main, humble).
  • AR4 HMI Software Git Repository: https://github.com/Annin-Robotics/ar4-hmi.git.
  • PJRC Teensy Package Manifest: https://www.pjrc.com/teensy/package_teensy_index.json and https://www.pjrc.com/teensy/00-teensy.rules.
  • Arduino IDE CDN: https://downloads.arduino.cc/arduino-ide/arduino-ide_2.3.6_Linux_64bit.AppImage.
  1. Mechanical Fabrication and 3D Printing:
  • The robot chassis, joint bearing mounts, covers, spacers, and gripper mechanism require additive manufacturing (FDM/FFF 3D printing) using files packaged in the official zip archives:
    • AR4-MK5-3D-Print-Files.zip, AR4-MK4-3D-Print-Files.zip, AR4-MK3-3D-Print-Files.zip
    • AR4-Structural-Components-Print-Files.zip, AR4-Covers-Spacers-Print-Files.zip, AR4-Misc-Print-Files.zip
    • AR4-Servo-Gripper-CAD.zip, AR4-travel-track-CAD-models.zip
  • Structural machining/printing parameters, layer thicknesses, infill percentages, and material guidelines (typically PETG, ABS, or PLA+) are documented in the companion manual PDFs (AR4-MK5-Robot-Manul-1.1.pdf, AR4-MK4-Robot-Manul-1.1.pdf, and AR4-MK3-Robot-Manul.pdf).
  • Custom Printed Circuit Boards (PCBs): No custom raw Gerber or Eagle/KiCad board layout files are included in the workspace; controller hardware relies on commercial off-the-shelf COTS development boards (Teensy 4.1 and Arduino Nano) wired to external industrial stepper motor drivers and terminal breakouts.