← 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
- Install the bearings and drive in the joint housing; before closing the cover, confirm the rotation moves freely.
- Insert the PCB into the slot, routing the FPC away from the bearings.
- Slide the N node into the T node, set the orientation, insert the M5 screw and tighten it.
- Assemble segment by segment from the base upward; depending on the selected configuration (e.g., AyCxBy-D), keep the joint axes parallel or perpendicular.
- Attach the end effector at the last T/N interface.
- Fix the base to the platform; install four suction cups or bolt it directly to the test board.
- 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
.iocin 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 testmain.py. The repository has no robotic arm controlmain.py. - MATLAB: Add
software/matlab/kinematicsto the path and runAyCxBy_D. Note the known issues insoftware/README.md. - Python recalculation: Run
python scripts/verify_theory/report_checks.pyandpython -m unittest discover -s scripts/verify_theory -v.
7. Testing Procedure
- Bench check: single joint, unloaded, low speed. Confirm direction, limits, and current.
- Single module check: joint plus link, no end effector fitted. Check the T/N screws and cable clearance.
- Serial chain check: assemble as a 4-DOF AyCxBy-D. Move slowly within the joint ranges.
- End effector check: gripper open/close, ultrasonic ranging, gas sensor output, stylus contact.
- Trajectory check: send a short joint-space trajectory. If feedback is available, record the actual joint angles.
- 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.mhas 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.