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.
firmware/armCtl | ||
.gitignore | ||
ArmControl.g4 | ||
ArmControlLexer.py | ||
ArmControlListener.py | ||
ArmControlParser.py | ||
armCtl.py | ||
ArmCtlListener.py | ||
LICENSE.md | ||
README.md | ||
robot.cfg | ||
robot.py |
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
- An Arduino firmware to recieve commands and position the robot arm.
- firmware/armCtl/armCtl.ino
- A streaming serial command & control protocol to communicate with the Arduino from a computer.
- A Python3 module that is a threaded serial reader/writer, and state machine for the arm.
- robot.py
- An Antlr4 domain-specific scripting language for maneuvering the robot.
- ArmControl.g4
- A Python3 implementation of that language for the Robot module.
- ArmCtlListener.py
- 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
command(text)
r.target = [90,120,10,95,90,90]
r.move()
while r.isMoving():
print(r.angle)