Камера#

Вступ#

Дрон VEX AIR оснащений двома датчиками зору, які служать бортовими камерами — одним спереду, а іншим знизу. Вони можуть знімати як зображення, так і відео під час польоту. У VEXcode AIR слово «камера» завжди стосується одного з цих датчиків зору. Наприклад, у команді типу drone.camera.start_recording(FORWARD_CAMERA), camera стосується датчиків зору, а FORWARD_CAMERA вибирає передній датчик.

Щоб перенести відеозаписи та зображення з контролера дрона VEX AIR, підключіть контролер до комп’ютера. Він відображатиметься як пристрій масової пам’яті (подібний до USB-накопичувача), що дозволить вам копіювати файли безпосередньо. Після завершення проекту зачекайте приблизно хвилину, поки контролер завершить завантаження будь-яких зображень або записів з дрона, перш ніж намагатися їх скопіювати.

Нижче наведено список усіх доступних методів:

Дії

  • start_recording – Записує відео з датчика зору.

  • stop_recording – Зупиняє запис із датчика зору.

  • capture_image – Захоплює зображення з датчика зору.

Мутатори

  • show_camera – Показує вибраний датчик зору на контролері дрона VEX AIR.

  • hide_camera – Приховує сигнал від датчика зору на контролері.

  • set_overlay_reticle – Показує або приховує накладену сітку прицілу.

  • set_overlay_telemetry – Показує або приховує дані телеметрії.

Геттери

  • is_recording – Повертає, чи записує датчик зору.

  • get_recording_time – Повертає час, витрачений на запис.

Дії#

start_recording#

start_recording починає запис із зазначеним датчиком зору.

Щоб отримати інформацію про перегляд та отримання записів, перейдіть сюди.

Використання:

drone.camera.start_recording(camera)

Параметри

Опис

camera

Датчик зору для запису: DOWNWARD_CAMERA або FORWARD_CAMERA.

# Press button 7 to end recording
def end_recording():
    drone.camera.stop_recording(FORWARD_CAMERA)
    drone.land()

controller.button7.pressed(end_recording)

# Record a video as you fly around
controller.screen.show_camera(FORWARD_CAMERA)
drone.take_off(climb_to=500)
drone.camera.start_recording(FORWARD_CAMERA)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

stop_recording#

stop_recording зупиняє запис зазначеного датчика зору.

Щоб отримати інформацію про перегляд та отримання записів, перейдіть сюди.

Використання:

drone.camera.stop_recording(camera)

Параметри

Опис

camera

Датчик зору для зупинки запису за допомогою: DOWNWARD_CAMERA або FORWARD_CAMERA.

# Press button 7 to end recording
def end_recording():
    drone.camera.stop_recording(FORWARD_CAMERA)
    drone.land()

controller.button7.pressed(end_recording)

# Record a video as you fly around
controller.screen.show_camera(FORWARD_CAMERA)
drone.take_off(climb_to=500)
drone.camera.start_recording(FORWARD_CAMERA)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

capture_image#

capture_image робить знімок за допомогою зазначеного датчика зору.

Щоб отримати інформацію про перегляд та отримання знятих зображень, перейдіть сюди.

Використання:

drone.camera.capture_image(camera)

Параметри

Опис

camera

Датчик зору для зйомки зображення: DOWNWARD_CAMERA або FORWARD_CAMERA.

# Press button 7 to take pictures
def take_picture():
    drone.camera.capture_image(FORWARD_CAMERA)

controller.button7.pressed(take_picture)

# Take pictures while you control the drone
controller.screen.show_camera(FORWARD_CAMERA)
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

Мутатори#

show_camera#

show_camera встановлює поточний режим екрана на вказаний канал датчика зору.

Використання:

controller.screen.show_camera(camera)

Параметри

Опис

camera

Датчик зору для відображення: DOWNWARD_CAMERA або FORWARD_CAMERA.

# Switch camera feeds after 3 seconds
controller.screen.show_camera(DOWNWARD_CAMERA)
wait(3, SECONDS)
controller.screen.show_camera(FORWARD_CAMERA)

hide_camera#

hide_camera приховує сигнал зазначеного датчика зору.

Використання:

controller.screen.hide_camera()

Параметри

Опис

Цей метод не має параметрів.

# Hide camera feed after 3 seconds
controller.screen.show_camera(FORWARD_CAMERA)
wait(3, SECONDS)
controller.screen.hide_camera()

set_overlay_reticle#

set_overlay_reticle вмикає або вимикає накладання сітки. Сітка — це візуальний маркер, подібний до перехрестя, який з’являється в полі зору камери, щоб допомогти під час прицілювання або вирівнювання об’єктів.

За замовчуванням на початку проєкту для накладання сітки встановлено значення True , лише на нижньому датчику зору.

Usage:
controller.screen.set_overlay_reticle(state)

Параметри

Опис

state

Стан накладеної сітки: True вмикає накладену сітку. False вимикає накладену сітку.

# Hide the reticle when not aligning to a landing area
controller.screen.show_camera(DOWNWARD_CAMERA)
drone.take_off(climb_to=500)
controller.screen.set_overlay_reticle(False)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

set_overlay_telemetry#

set_overlay_telemetry вмикає або вимикає видимість телеметричних даних дрона на екрані контролера. Телеметрія — це дані, що надходять з дрона в реальному часі під час польоту або виконання проекту.

За замовчуванням на початку проєкту для накладання телеметричних даних встановлено значення True.

Usage:
controller.screen.set_overlay_telemetry(state)

Параметри

Опис

state

Стан телеметричних даних: True дозволяє перегляд телеметричних даних на екрані. False вимикає перегляд телеметричних даних на екрані.

# Clear the camera video for better visibility
controller.screen.show_camera(FORWARD_CAMERA)
drone.take_off(climb_to=500)
controller.screen.set_overlay_telemetry(False)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

Геттери#

is_recording#

is_recording повертає логічне значення, яке вказує, чи виконує вказаний датчик зору наразі запис.

  • True – Визначений датчик зору записує.

  • False – Зазначений датчик зору не записує.

Використання:

drone.camera.is_recording(camera)

Параметри

Опис

camera

Датчик зору для перевірки стану запису: DOWNWARD_CAMERA або FORWARD_CAMERA.

# Use button 7 to start and stop recording
def toggle_recording():
    if drone.camera.is_recording(FORWARD_CAMERA):
        drone.camera.stop_recording(FORWARD_CAMERA)
    else:
        drone.camera.start_recording(FORWARD_CAMERA)

controller.button7.pressed(toggle_recording)

# Make video recordings while you control the drone
controller.screen.show_camera(FORWARD_CAMERA)
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    wait(5, MSEC)

get_recording_time#

get_recording_time повертає час, протягом якого певний датчик зору записував, у вигляді десяткового числа (float) у секундах.

Використання:

drone.camera.get_recording_time(camera)

Параметри

Опис

camera

Датчик зору для перевірки часу запису: DOWNWARD_CAMERA або FORWARD_CAMERA.

# Record a video for 10 seconds
controller.screen.show_camera(FORWARD_CAMERA)
drone.camera.start_recording(FORWARD_CAMERA)
drone.take_off(climb_to=500)
while not (drone.camera.get_recording_time(FORWARD_CAMERA)) >= 10:
    wait(5, MSEC)
drone.camera.stop_recording(FORWARD_CAMERA)