Skip to content

Line following: rewrite functions to have clearer scope #184

Open
@m-roberts

Description

@m-roberts

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()

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions