Software¶
piBo’s features are used through the openpibo Python package. Blocks also turn into Python code that calls this package (see it with the [Python code] button). The source is on GitHub (AGPL-3.0).
Package layout¶
openpibo
├── audio.py play, stop and record sound
├── collect.py Wikipedia, weather, news (internet, Korean edition)
├── device.py eye LEDs, battery, touch, PIR … (MCU)
├── motion.py motors and motions
├── oled.py OLED display
├── pibo_graphics.py turtle graphics for the display
├── speech.py voices (TTS), speech recognition (STT), chat (LLM)
├── usb_uart.py USB serial
├── utils.py other tools
├── vision_camera.py camera and image editing
├── vision_detect.py object, QR, pose, hand gesture and marker recognition
├── vision_face.py find, analyze and learn faces
└── vision_classify.py load models taught in the Classifier
See Python on the left for every class and method.
Writing Python¶
from openpibo.<library> import <Class>
<instance> = <Class>()
<instance>.<method>(<arguments>)
Example: play a sound and stop it.
from openpibo.audio import Audio
import time
audio = Audio()
audio.play('/home/pi/openpibo-files/audio/system/opening.mp3', volume=80)
time.sleep(3)
audio.stop()
Example: make a voice inside piBo and speak (no internet; Korean and English are detected automatically).
from openpibo.speech import SpeechOnDevice
from openpibo.audio import Audio
tts = SpeechOnDevice()
tts.tts('Hello! I am piBo.', filename='/home/pi/hello.wav', voice='f1')
Audio().play('/home/pi/hello.wav', background=False)
Example: classify the camera view with a model saved in the Classifier.
from openpibo.vision_camera import Camera
from openpibo.vision_classify import CustomClassifier
camera = Camera()
cf = CustomClassifier()
cf.load('fruit') # /home/pi/mymodel/fruit
img = camera.read()
name, probs = cf.predict(img, draw=True) # draws the hand/face/body points and the class name on img
print(name)
camera.imwrite('/home/pi/result.jpg', img)
Note
Code run from the IDE runs inside piBo as root (so it can use the camera, GPIO and other hardware).