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.
1. 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.
Go to the coordinates given as *{value, value, value, value}*. Values must be integers. Values may be given in either decimal or hexidecimal notation. Omitted values will be accepted as *null* and will not effect the arm position.
###### axis_name value
Move the named axis to the given value. Names must be defined in the configuration file as the intiger index of the axis in the command protocol. Values must be integers. Values may be in decimal or hexidecimal notation.
###### preset_name
Move the robot to the named corrdinates defined in the configuration file. Coordinates must be defined in decimal notation.