pi-top-Python-SDK icon indicating copy to clipboard operation
pi-top-Python-SDK copied to clipboard

Line following: rewrite functions to have clearer scope

Open m-roberts opened this issue 4 years ago • 0 comments

This is not a completely accurate concept, but seeks to outline a more clear step-by-step basis on which to determine a line from an image, calculate a turn angle, and render a processed image showing the line geometry from the image.

from pitop import AlexRobot
from pitop.processing.algorithms.line_detect import (
    get_line,
    get_control_angle,
    vector_to_image,
)
from signal import pause


robot = AlexRobot()


def drive_based_on_frame(frame):
    line_vector = get_line(frame)

    angle = get_control_angle(line_vector)
    print(f"Target angle: {angle:.2f} deg ", end="\r")
    robot.target_lock_drive_angle(angle)

    robot_view = vector_to_image(line_vector)
    robot.oled.display_image(robot_view)


# On each camera frame, detect a line
robot.camera.on_frame = drive_based_on_frame
pause()

m-roberts avatar Jan 26 '21 16:01 m-roberts