1
0
Fork 0
armCtl/README.md

2.1 KiB

armCtl

Summary

A suite of software useful in experimenting with small robotic arms. Use as a teaching framework with a low barrier to entry for robotics and programming.

History

Whilst an expansive scope, the principal development and implementation happened over 3 days in the summer of 2019.

Software Components

  1. An Arduino firmware to recieve commands and position the robot arm.
  • firmware/armCtl/armCtl.ino
  1. A streaming serial command & control protocol to communicate with the Arduino from a computer.
  2. A Python3 module that is a threaded serial reader/writer, and state machine for the arm.
  • robot.py
  1. An Antlr4 domain-specific scripting language for maneuvering the robot.
  • ArmControl.g4
  1. A Python3 implementation of that language for the Robot module.
  • ArmCtlListener.py
  1. A Python3 module to interface the scripting language to the robot module. When called directly, this module also provides an interactive shell for the scripting language.
  • armCtl.py

Hardware Components

This BOM is one possible configuration. Substitute parts are available, and any servo controlled arm is acceptable.

Part Cost
Arduino Uno $22
Arduino Sensor Shield V5 $7.19
Power Supply 25W 5V 5A $9.50
6-Axis Desktop Robotic Arm $170

Activities

  • Control the arm interactively.
> ./armCtl.py
command# go jib 90
command# wait
command# go home
  • Script a simple sequence of moves.
# my_script.txt
go jib 90
wait
go home

> ./armCtl.py my_script.txt
  • Write a Python3 script for complex movements.
#!/usr/bin/env python3
import armCtl as arm

command("go home")

arm.r.target = [90, 120, 10, 95, 90, 90]
arm.r.move()
while arm.r.isMoving():
    pass
print(arm.r.angle)