/libauto

The Python library for all AutoAuto devices

Primary LanguagePythonOtherNOASSERTION

libauto

The Python library for all AutoAuto devices

Examples

Run these examples on a real car.

Calibrate the Throttle and Steering

from car.setup import calibrate

calibrate()

Drive the Car!

import car

car.forward()
car.left()
car.right()
car.reverse()
car.pause(2.0)
car.forward(0.2)

Print to the AutoAuto Console!

import car

car.print("Hello, my friend!")
car.print("How are you today?")

Use the Camera

import car

frames = car.capture(4)
car.plot(frames)

# There is also a lower-level class-based interface for the camera: `from car.camera import CameraRGB`

Detect Humans

import car

frame = car.capture()
car.detect_faces(frame)
car.plot(frame)

# There is also a lower-level class-based interface for the face detector: `from car.models import FaceDetector`

Stream Camera Frames (and detect humans)

The frames can be viewed at http://ip-of-your-car:1025/

import car

for _ in range(400):
    frame = car.capture(verbose=False)
    car.detect_faces(frame, verbose=False)
    car.stream(frame)

car.stream(None)  # clears the screen

Classify Frame Center Color

import car

frame = car.capture()
color = car.classify_color(frame)
car.plot(frame)
car.print("The detected color is", color)

# There is also a lower-level class-based interface for the color classifier: `from car.models import ColorClassifier`

Detect Stop Signs

import car

frame = car.capture()
rectangles = detect_stop_signs(frame)
car.plot(frame)
print("Stop Signs Found at:", rectangles)

# There is also a lower-level class-based interface for the stop sign detector: `from car.models import StopSignDetector`

Detect Pedestrians

import car

frame = car.capture()
rectangles = detect_pedestrians(frame)
car.plot(frame)
print("Pedestrians Found at:", rectangles)

# There is also a lower-level class-based interface for the stop sign detector: `from car.models import PedestrianDetector`

Object Location/Size Helpers

import car

frame = car.capture()
rectangles = detect_stop_signs(frame)
car.plot(frame)

location = car.object_location(rectangles, frame.shape)
size = car.object_size(rectangles, frame.shape)

car.print("Object location:", location)
car.print("Object size:", size)

Raw OpenCV

The cars use OpenCV under the hood (no pun intended) for many of the image processing tasks. You are welcome to use OpenCV directly as well if you want:

import cv2

print(cv2.__version__)

Precise Steering

import car
from car.steering import set_steering

for angle in range(-45, 45):
    set_steering(angle)
    car.pause(0.05)
    
for angle in range(45, -45, -1):
    set_steering(angle)
    car.pause(0.05)
    
car.pause(0.5)
set_steering(0.0)  # STRAIGHT
car.pause(1.0)

Precise Throttle

WARNING: You can easily injure the car by setting the throttle too high. Use this interface with great caution.

Run the code below in a large open space.

import car
from car.throttle import set_throttle

set_throttle(0.0)     # CAR IN NEUTRAL
car.pause(1.0)

set_throttle(100.0)   # CAR'S MAX THROTTLE
car.pause(0.3)

set_throttle(50.0)    # HALF THROTTLE
car.pause(0.5)

set_throttle(0.0)     # NEUTRAL
car.pause(2.0)

Sonar Sensor (if available and working properly)

from car.sonar import echo_time, query_distance

seconds = echo_time()
print("It took {} seconds for the ping to travel round-trip.".format(seconds))

distance_meters = query_distance()
print("The estimated distance to the nearest object is {} meters.".format(distance_meters))

Radio-Controlled (RC) Car Mode

You can return your car to it's original state: A basic RC car! This only works if your AutoAuto car has a receiver on it, and if you have a paird transmitter.

from car.rc import manual_control

manual_control()

Low-level GPIO

You can get access to the raw GPIO pins via the car.gpio module.

How to run in an Anaconda environment

You can run some things off the car (on your local machine). Get a matching python environment like this:

conda create -n py3 scikit-learn matplotlib jupyter python=3.4
source activate py3
conda install -c https://conda.binstar.org/menpo opencv3
pip install keras
pip install https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.0.0-py3-none-any.whl
rm -f ~/.keras/keras.json
conda install requests h5py pandas twisted openssl