Senzory#

Zavedení#

Dron VEX AIR obsahuje inerciální senzor pro měření rotačního pohybu a detekci změn v pohybu a také senzor dosahu pro detekci vzdáleností. Dron VEX AIR dokáže také sledovat stav nabití baterie. Tyto senzory umožňují dronu sledovat jeho orientaci, směr, zrychlení a vzdálenost od objektů.

Níže je uveden seznam všech dostupných metod:

Inerciální – Sledování rotačního pohybu dronu.

  • get_rotation – Vrátí, o kolik se dron otočil od svého startu.

  • get_heading – Vrátí aktuální směr (0 až 359,99°).

  • get_yaw – Vrátí úhel stáčení (–180 až 180°).

  • get_roll – Vrátí úhel natočení (–180 až 180°).

  • get_pitch – Vrátí úhel sklonu (–180 až 180°).

  • reset_rotation – Obnoví hodnotu rotace na 0.

  • reset_heading – Nastaví aktuální směr na 0.

  • set_heading – Nastaví nadpis na určitou hodnotu.

  • get_acceleration – Vrátí zrychlení v daném směru.

  • get_turn_rate – Vrací rychlost otáčení ve stupních za sekundu.

Dosah – Detekce vzdáleností pomocí senzorů dosahu dronu.

  • get_distance — Vrátí vzdálenost mezi vybraným senzorem vzdálenosti a nejbližším detekovaným objektem.

Baterie – Vrátí procento nabití baterie dronu.

Inerciální#

get_rotation#

Funkce get_rotation vrací, o kolik stupňů se dron otočil od svého startu. Sečte všechny otočky a vrátí celkový součet ve stupních: kladný pro směr hodinových ručiček, záporný pro směr proti směru hodinových ručiček.

Usage:
drone.inertial.get_rotation()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Display the rotation after turning
drone.take_off(climb_to=500)
drone.turn_for(LEFT, 450, 50)
print(drone.inertial.get_rotation(), end="")
drone.land()

get_heading#

Funkce get_heading vrací úhel natočení dronu jako číslo s plovoucí desetinnou čárkou v rozsahu 0 až 359,99 stupňů.

Usage:
drone.inertial.get_heading()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Display the drone's heading after turning
drone.take_off(climb_to=500)
drone.set_turn_velocity(100)
drone.turn(RIGHT)
wait(5, SECONDS)
controller.screen.print("Heading: ")
controller.screen.print(drone.inertial.get_heading())
drone.land()

get_yaw#

get_yaw vrací úhel stáčení dronu v rozsahu –180,0 až 180,0 stupňů jako číslo s plovoucí čárkou.

Obrázek níže používá šipku k znázornění směru kladné rotace pro stáčení.

Dron VEX AIR s nosem směřujícím do pravého dolního rohu, s modrou šipkou směřující dolů ze středu. Kolem modré šipky je černá zakřivená šipka směřující ve směru hodinových ručiček a označená jako „Yaw“ (stáčení), což značí kladný směr stáčení.

Usage:
drone.inertial.get_yaw

Parametry

Popis

Tato metoda nemá žádné parametry.

# Display the yaw angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Yaw: ")
    controller.screen.print(drone.inertial.get_yaw())
    wait(0.2, SECONDS)

get_roll#

get_roll vrací úhel náklonu dronu v rozsahu –180,0 až 180,0 stupňů jako číslo s plovoucí čárkou.

Obrázek níže používá šipku k znázornění směru kladné rotace pro klopení.

Dron VEX AIR s nosem otočeným do pravého dolního rohu, se zelenou šipkou vyčnívající přímo z nosu dronu. Kolem zelené šipky je černá zakřivená šipka směřující proti směru hodinových ručiček, která označuje kladný směr klopení.

Usage:
drone.inertial.get_roll()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Display the roll angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Roll: ")
    controller.screen.print(drone.inertial.get_roll())
    wait(0.2, SECONDS)

get_pitch#

Funkce get_pitch vrací úhel náklonu dronu v rozsahu –180,0 až 180,0 stupňů jako číslo s plovoucí čárkou.

Obrázek níže používá šipku k znázornění směru kladné rotace pro stoupání.

Dron VEX AIR směřující do pravého dolního rohu s červenou šipkou vyčnívající z pravé strany dronu, vedle loga VEX. Kolem červené šipky černá zakřivená šipka směřující proti směru hodinových ručiček označuje kladný směr stoupání.

Usage:
drone.inertial.get_pitch()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Display the pitch angle as you rotate the drone by hand
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print("Pitch: ")
    controller.screen.print(drone.inertial.get_pitch())
    wait(0.2, SECONDS)

reset_rotation#

reset_rotation resetuje hodnotu rotace dronu na 0 stupňů.

Usage:
drone.inertial.reset_rotation()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Display the new rotation after resetting
drone.take_off(climb_to=500)
drone.turn(RIGHT)
while not drone.inertial.get_rotation() > 360:
    wait(5, MSEC)
drone.hover()
drone.inertial.reset_rotation()
wait(1, SECONDS)
print(drone.inertial.get_rotation(), end="")
drone.land()

reset_heading#

reset_heading resetuje směr dronu na 0 stupňů.

Používání:

drone.inertial.reset_heading()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Turn to a heading, reset the heading, and turn to the same heading.
drone.take_off(climb_to=500)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.inertial.reset_heading()
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.land()

set_heading#

set_heading nastaví směr dronu na zadanou hodnotu ve stupních.

Používání:

drone.inertial.set_heading(heading)

Parametry

Popis

heading

Hodnota, která se má použít pro nový směr, v rozsahu od 0 do 359,99 stupňů.

# Turn to a heading, set the heading, and turn to the same heading.
drone.take_off(climb_to=500)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.inertial.set_heading(90)
drone.turn_to(heading=180, velocity=50)
wait(3,SECONDS)
drone.land()

get_acceleration#

get_acceleration vrací zrychlení dronu v zadaném směru. Vrácená hodnota představuje míru změny rychlosti, měřenou v jednotkách g (kde 1g ≈ 9,81 m/s²), jako číslo s desetinnou čárkou v rozsahu od -4,00 do 4,00.

Obrázek níže používá šipky k znázornění směru kladného zrychlení vpřed a vpravo a záporného zrychlení dolů.

Dron VEX AIR je zobrazen se zelenou šipkou vyčnívající z nosu dronu s označením Vpřed, modrou šipkou vyčnívající ze středu spodní části dronu s označením Dolů a červenou šipkou vyčnívající z pravé strany dronu vedle loga VEX s označením Vpravo.

Používání:

drone.inertial.get_acceleration(type)

Parametry

Popis

type

Směr zrychlení, který je třeba hlásit:

  • DOWNWARD
  • FORWARD
  • RIGHTWARD

# Display the acceleration as the drone takes off
drone.take_off(500, wait=False)
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(1, 1)
    controller.screen.print(drone.inertial.get_acceleration(DOWNWARD))
    wait(5, MSEC)

get_turn_rate#

get_turn_rate vrací rychlost, s jakou se dron otáčí podél zadané osy. Vrátí hodnotu ve stupních za sekundu \(dps\) jako číslo s desetinnou čárkou od –1000,00 do 1000,00 dps.

Obrázek níže používá šipky k znázornění směru kladné rotace pro klopení, stoupání a stáčení.

Dron VEX AIR je zobrazen se směrovými šipkami. Z nosu dronu vychází zelená šipka s černou zakřivenou šipkou směřující proti směru hodinových ručiček a označenou „Klonění“. Ze středu spodní části dronu vychází modrá šipka s černou zakřivenou šipkou směřující ve směru hodinových ručiček a označenou „Stáčení“. A z pravé strany dronu vedle loga VEX vychází červená šipka s černou zakřivenou šipkou směřující proti směru hodinových ručiček a označenou „Sklon“.

Usage:
drone.inertial.get_turn_rate(axis)

Parametry

Popis

axis

Kterou orientaci hlásit:

  • YAW
  • ROLL
  • PITCH

# Display the drone turn rate as it is rotated by hand.
while True:
    controller.screen.clear_screen()
    controller.screen.set_cursor(7, 1)
    controller.screen.print(drone.inertial.get_turn_rate(ROLL))

Rozsah#

get_distance#

Funkce get_distance vrací vzdálenost mezi vybraným senzorem vzdálenosti a nejbližším detekovaným objektem.

Usage:
drone.range.get_distance(range, units)

Parametry

Popis

range

Použitý senzor vzdálenosti: FORWARD_RANGE nebo DOWNWARD_RANGE FORWARD_RANGE udává vzdálenost od přední části dronu. DOWNWARD_RANGE udává vzdálenost od spodní části dronu.

units

Volitelné. Jednotka vzdálenosti:

  • MM (výchozí) — milimetry
  • CM — centimetry
  • INCHES

# Fly forward until close to an object
drone.take_off(climb_to=500)
drone.move_at(direction=0, velocity=50)
while not drone.range.get_distance(FORWARD_RANGE, MM) < 750:
    wait(0.1, SECONDS)
drone.land()

Baterie#

get_battery_level#

get_battery_level vrací úroveň nabití baterie dronu v procentech. Vrátí číslo od 0 do 100.

Usage:
drone.get_battery_level()

Parametry

Popis

Tato metoda nemá žádné parametry.

# Display the drone's battery level
if drone.get_battery_level() < 25:
    controller.screen.print("Charge the drone Battery!")
else:
    controller.screen.print("Ready to fly!")