Table of Contents

Using the Python API on Linux

1.0. Introduction

Pixy2 now has a Python wrapper for libpixyusb2. For now, this is only available for Linux-based controllers (e.g. Raspberry Pi, BeagleBone). The libpixyusb2 library provides a software application programming interface (API) for communicating with Pixy2 over USB. The following procedure will outline the steps to build libpixyusb2 as a Python module.

This procedure assumes the following:

Although this procedure uses Linux Mint, it should work with any Linux distribution that uses the Debian package manager (e.g. Ubuntu).

2.0. Procedure

2.1. Install dependencies for building Python SWIG module

Start a terminal application. In the terminal window type:

# sudo apt-get install swig libusb-1.0-0-dev g++ git

2.2. Download Pixy2 source code

In the terminal window type:

# git clone https://github.com/charmedlabs/pixy2

2.3. Build the Pixy2 SWIG module

In the terminal window type:

# cd pixy2/scripts
# ./build_python_demos.sh

2.4. Try it out!

Change directory to the build folder. In your terminal window type:

# cd ../build/python_demos

2.4.1. Run the get blocks demo

Make sure your Pixy2 is connected to a USB port on your computer. Then in a terminal window type:

# python get_blocks_python_demo.py

If all goes well you should see blocks:

Pixy2 Python SWIG Example -- Get Blocks
frame 0:
[BLOCK: SIG=1 X=157 Y=103 WIDTH=314 HEIGHT=207]
frame 1:
[BLOCK: SIG=1 X=157 Y=103 WIDTH=314 HEIGHT=207]
frame 2:
[BLOCK: SIG=1 X=157 Y=103 WIDTH=314 HEIGHT=207]
frame 3:
[BLOCK: SIG=1 X=157 Y=103 WIDTH=314 HEIGHT=207]

If you don't see any block information, try running as superuser:

# sudo python get_blocks_python_demo.py

2.4.2. Run the get lines demo

Make sure your Pixy2 is connected to a USB port on your computer. Then in a terminal window type:

# python get_lines_python_demo.py

Example output:

Pixy2 Python SWIG Example -- Get Line Features
frame 0:
[VECTOR: INDEX=1 X0= 50 Y0= 15 X1= 50 Y1= 5]
[VECTOR: INDEX=2 X0= 56 Y0= 8 X1= 67 Y1= 4]
frame 1:
[VECTOR: INDEX=0 X0= 55 Y0= 27 X1= 51 Y1= 2]
frame 2:
[VECTOR: INDEX=0 X0= 55 Y0= 27 X1= 51 Y1= 2]
frame 3:
[VECTOR: INDEX=1 X0= 57 Y0= 31 X1= 53 Y1= 21]

If you don't see any line feature information, try running as superuser:

# sudo python get_lines_python_demo.py