Drawbot is a DIY project consisting of a Raspberry Pi and two arms which can produce drawings.
Check out the Drawbot Gallery!
The setup consist of A Raspberry Pi three servos and two arms. The two for the arms(A/B) provide the actual drawing movements and the third provides the wrist movement to lift the drawing implement from the drawing surface.
- Choose arm servos which have a deadband less than 5 usec or lines will not be smooth. I chose TowerPro MG995(s) which have a deadband of 1 usec.
- Calibrate the servos and configure their GIPOs in drawbot.CFG.
- The wrist servo is less of a concern but having a bracket to do the mounting is handy. I chose Hobbypark HDR315M.
- Build the arms and configure their detentions in drawbot.CFG.
The primary module is drawbot2
and it contains all the smarts for directing the arms. All
the geometric related stuff is located in geometry
. Test cases are under test
.
The basic usage is to create some points and queue them by invoking drawbot2.queueX
operations.
Then invoke drawbot.execute()
which produces both a virtual render and an executable shell scrip of the actual
pigs commands to actual perform the render.
Check out all the examples under src/examples
and run npm run examples
to freshen them.
api
execute jsdoc to produce the api documentationtest
execute test casestestupdate
refresh snapshots and re-execute test casesdiagnostics
run diagnostic tests (intended to run with just primary arms attached)examples
run all the example drawings
- Arm segment lengths: In general arm segment 2 needs be longer than arm segment 1.
- Deadband: The setup makes use of digital servos so the deadband is important. The lower the better. Higher deadband means less resolution between PWM values and will result in jagged lines.