Skip to content
← OnesArm

Project files

5 KB

Machine-translated by Robotheca from the original in Chinese (opens in a new tab). License: CC-BY-4.0 (opens in a new tab) and MIT (opens in a new tab).

Assembly and Replication

1. Choose the version first

Do not mix v1 and v2.

  • v1 — 15 kgf·cm PWM servos, Raspberry Pi Pico W, 5 module boards, 16P gold-finger interconnect. Corresponds to chapters 1–4 of the report and the 2024 defense slides.
  • v2 — 42BYGH47 stepper, FLE-42-20 reducer, STM32F103C8T6 CAN module, STM32F407ZGT6 controller, Controller/Monitor boards, 350 W power supply. Corresponds to chapter 5 of the report.

The CAD drive folder is named FLE-42-20_42BYGH27, but the body text says 42BYGH47. Confirm the motor model before printing the joint housings.

2. Tools and Materials

  • M3/M5 hex keys, screwdrivers, diagonal cutters, calipers.
  • Soldering station, flux, multimeter, current-limited bench power supply.
  • 3D printer (SLA with 9400A resin; FDM recommended for trial fitting only).
  • Sheet metal laser cutting/bending, carbon tube cutting and bonding fixtures.
  • STM32CubeIDE; MicroPython for Pico W.
  • MATLAB + Robotics Toolbox (original kinematics scripts); Python 3 (independent verification scripts).

3. Part Fabrication

3.1 3D Printing

  • Use the STEP files in mechanical/output/3dp/. Print the first batch of 17 part types, then reprint 8 part types. Print the joint housings in 9400A resin, with layer normals kept as close to perpendicular as possible to the T/N sliding faces.
  • Clean up the sliding faces; a rough surface will make the N node stick.
  • After printing, re-measure the M3 holes. The spec calls for a diameter of 3 mm and a depth of 3 mm.

3.2 Sheet metal

  • Use 5 mm 5052 aluminum for the long links, short links, and base plate.
  • Deburr all parts; carbon tubes are bonded into the links, and burrs can become crack initiation points.
  • Check the M5 joint hole positions before bending. See the checklist at BOM/manufacturing/定做生产.md.

3.3 Carbon Tube

  • 50 × 46 mm carbon tube, cut to length according to BOM/manufacturing/碳管定做/清单.md.
  • Use structural adhesive; before bonding, sand and clean both the aluminum parts and the carbon tube surfaces.
  • Keep the vent open during curing to avoid trapped air pushing the connecting rod out of alignment.

3.4 PCB

  • Order the PCB using the Gerber files in electronics/output/gerber/. Check the drill layer and the board outline layer before paying.
  • The v1 boards are dated 2024-02/03, and the v2 Controller/Monitor boards are dated 2024-07. They must not be mixed.
  • There is no EDA source. If you need to modify the board, you can only redraw it based on the Gerber files, BOM, and photos.

4. Mechanical Assembly

  1. Install the bearings and drive in the joint housing; before closing the cover, confirm the rotation moves freely.
  2. Insert the PCB into the slot, routing the FPC away from the bearings.
  3. Slide the N node into the T node, set the orientation, insert the M5 screw and tighten it.
  4. Assemble segment by segment from the base upward; depending on the selected configuration (e.g., AyCxBy-D), keep the joint axes parallel or perpendicular.
  5. Attach the end effector at the last T/N interface.
  6. Fix the base to the platform; install four suction cups or bolt it directly to the test board.
  7. Check that no cable is under tension when each joint reaches its limit.

5. Wiring

  • v1: 16P gold-finger connector between modules; 12P FPC and XH 3P inside modules; each joint board has 3 PWM channels, 5 LED channels, and signal selection.
  • v2: CAN daisy chain, TJA1050 transceiver; 350 W power supply via XT60; LM2596 supplies 5 V logic.
  • Mark pin 1 on all connectors. The gold-finger connector has no reverse-polarity protection.
  • Add strain relief to the wiring harness at the joints; the harness must not bear joint loads.

6. Firmware and Software

  • STM32: Open .ioc in STM32CubeIDE, and regenerate and build it if necessary. The user code is a skeleton; you need to add your own PWM/CAN application.
  • Pico W: Copy the SSD1306/GNSS libraries from firmware/micropython/ to the board; write your own test main.py. The repository has no robotic arm control main.py.
  • MATLAB: Add software/matlab/kinematics to the path and run AyCxBy_D. Note the known issues in software/README.md.
  • Python recalculation: Run python scripts/verify_theory/report_checks.py and python -m unittest discover -s scripts/verify_theory -v.

7. Testing Procedure

  1. Bench check: single joint, unloaded, low speed. Confirm direction, limits, and current.
  2. Single module check: joint plus link, no end effector fitted. Check the T/N screws and cable clearance.
  3. Serial chain check: assemble as a 4-DOF AyCxBy-D. Move slowly within the joint ranges.
  4. End effector check: gripper open/close, ultrasonic ranging, gas sensor output, stylus contact.
  5. Trajectory check: send a short joint-space trajectory. If feedback is available, record the actual joint angles.
  6. Load check: resolve the actuator margin first. The load's point of application and moment arm must be stated.

The archive contains no acceptance values. Do not treat a report's "normal" as a passed test; record your own measurements.

8. Known Issues Before You Start

  • The reported form (3.7) is a singular matrix; use standard DH and the recomputation script, and do not use the printed matrix directly.
  • Table 3-20 has different joint ranges for joints 3/4 than MATLAB.
  • The "energy consumption" metric is a kinematic cost; Optimization.m has nothing to do with it.
  • 10 N applied at 0.45 m is about 4.5 N·m, which exceeds the 1.47 N·m stall torque of a single servo.
  • There are no EDA sources, no robotic arm firmware, and no measured data.

See Errata and Verification.

Files by @Robusr, at commit f5d0613, read from GitHub in your browser. Hardware license: CC-BY-4.0; software license: MIT. Robotheca doesn't review code: read it before running it.