KevsRobots Learning Platform
60% Percent Complete
By Kevin McAleer, 5 Minutes
In this lesson, we will learn how to code the BrachioGraph plotter using Python.
Type the following code into the Python command line (also known as the Read Execute Print Loop or REPL) to import the BrachioGraph library:
from brachiograph import BrachioGraph
bg = BrachioGraph() # This will create a new BrachioGraph object
You can now use the bg object to control the BrachioGraph plotter.
When the BrachioGraph object is created, the arm will move to the default position.
Now that the servo motor has been set to its default position by the code we have just run, we can attach the inner arm to the shoulder servo.

The servo might not attach at exactly 90 degrees, but that’s okay. The calibration code will take care of that, later.
Test the arm by running the following code:
bg.set_angles(0, 90)
This will move the arm to the 0, 90 position; the shoulder servo will move to 0 degrees and the elbow servo will move to 90 degrees. Note that the arm will move their very quickly, without any motion easing.
To park the arm, run the following code:
bg.park()
This will move the arm to the park position, which is the default position.
Now that the inner arm is attached to the shoulder servo, we can attach the outer arm to the elbow servo.
You can also add the pen (or pencil) to the clothes peg at the end of the outer arm. The tip of the pen should not be touching the paper.
Let’s test the arm by running the following code:
bg.set_angles(-90, 120)
This will move the arm to the -90, 120 position; the shoulder servo will move to -90 degrees and the elbow servo will move to 120 degrees.
To lower the pen to the writing position, run the following code:
bg.pen.down()
The pen should now be touching the paper, if its not, adjust the positon of the pen accordingly.
To raise the pen, run the following code:
bg.pen.up()
You can check the status of the BrachioGraph by running the following code:
bg.status()
The BrachioGraph will report its status:
------------------------------------------
| Servo 1 | Servo 2
| Shoulder| Elbow
----------------------|---------|---------
pulse-width | 1500 | 1500
angle | -90 | 90
hysteresis correction | 0.0 | 0.0
------------------------------------------
------------------------------------------
pen: up
------------------------------------------
bottom left: (-8, 4) top right: (6, 13)
------------------------------------------
Congratulations! Your BrachioGraph just moved for the first time! Now let’s practice controlling it:
bg.set_angles(45, 45) # Try this
bg.set_angles(-45, 135) # And this
bg.set_angles(0, 180) # What about this?
Watch how the arm moves to each position. Which position reaches furthest from the base?
bg.pen.down()
# Wait 2 seconds - is the pen touching the paper?
bg.pen.up()
If the pen doesn’t touch the paper when down, adjust it in the clothes peg.
bg.set_angles(-90, 90) # Move to one corner
bg.set_angles(90, 90) # Move to opposite corner
bg.set_angles(0, 120) # Move to center
bg.park() # Return to park position
bg.status() after different movements to see how the values change. This helps you understand what each servo is doing.Challenge: Can you figure out which angle values make the arm point:
Write down your observations - understanding the coordinate system now will help when you start drawing!
ImportError: No module named 'brachiograph'pip install brachiograph and are using Python 3Why: The BrachioGraph library must be installed before you can import it
bg.status() - does it show values?Why: Servos need proper power and signal connections to respond to commands
Why: Servos aren’t perfectly accurate “out of the box” - calibration fixes this
sudo python3 script.py or configure GPIO permissionsWhy: GPIO pin access on Raspberry Pi requires elevated permissions
bg.pen.up() position - you may need to adjust the pen servo arm angle or the pen position in the clothes pegWhy: The pen mechanism needs proper mechanical adjustment, not just code
You can use the arrows ← → on your keyboard to navigate between lessons.
Comments