Czujniki#

Wstęp#

Dron VEX AIR jest wyposażony w czujnik bezwładnościowy do pomiaru ruchu obrotowego i wykrywania zmian w ruchu, a także czujnik zasięgu do pomiaru odległości. Dron VEX AIR może również monitorować poziom naładowania akumulatora. Czujniki te pozwalają dronowi śledzić swoją orientację, kurs, przyspieszenie i odległość od obiektów.

Poniżej znajduje się lista wszystkich dostępnych metod:

Inercyjny — śledzenie ruchu obrotowego drona.

  • get_rotation – Zwraca wartość określającą, o ile dron obrócił się od momentu startu.

  • get_heading – Zwraca aktualny kierunek (od 0 do 359,99°).

  • get_yaw – Zwraca kąt odchylenia (–180 do 180°).

  • get_roll – Zwraca kąt obrotu (od –180 do 180°).

  • get_pitch – Zwraca kąt pochylenia (–180 do 180°).

  • reset_rotation – Resetuje wartość obrotu do 0.

  • reset_heading – Ustawia bieżący nagłówek na 0.

  • set_heading – Ustawia nagłówek na określoną wartość.

  • get_acceleration – Zwraca przyspieszenie w określonym kierunku.

  • get_turn_rate – Zwraca szybkość obrotu w stopniach na sekundę.

Zasięg — wykrywanie odległości za pomocą czujników zasięgu drona.

  • get_distance — Zwraca odległość między wybranym czujnikiem zasięgu a najbliższym wykrytym obiektem.

Bateria — Zwróć procentowy poziom naładowania baterii drona.

Bezwładnościowy#

get_rotation#

get_rotation zwraca, o ile stopni obrócił się dron od startu. Sumuje wszystkie obroty i zwraca sumę w stopniach: dodatnią dla kierunku zgodnego z ruchem wskazówek zegara, ujemną dla kierunku przeciwnego do ruchu wskazówek zegara.

Usage:
drone.inertial.get_rotation()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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#

get_heading zwraca kąt kierunku drona jako wartość zmiennoprzecinkową z zakresu od 0 do 359,99 stopni.

Usage:
drone.inertial.get_heading()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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 zwraca kąt odchylenia drona w zakresie od –180,0 do 180,0 stopni jako wartość zmiennoprzecinkową.

Na poniższym rysunku strzałka pokazuje kierunek dodatniego obrotu w przypadku odchylenia.

Dron VEX AIR z nosem skierowanym w prawy dolny róg, z niebieską strzałką biegnącą w dół od środka. Wokół niebieskiej strzałki znajduje się czarna, zakrzywiona strzałka skierowana zgodnie z ruchem wskazówek zegara i oznaczona jako „Odchylenie”, wskazująca dodatni kierunek odchylenia.

Usage:
drone.inertial.get_yaw

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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 zwraca kąt przechyłu drona w zakresie od –180,0 do 180,0 stopni jako wartość zmiennoprzecinkową.

Na poniższym rysunku strzałka pokazuje kierunek dodatniego obrotu dla przechyłu.

Dron VEX AIR z nosem skierowanym w prawy dolny róg, z zieloną strzałką wychodzącą prosto z nosa drona. Wokół zielonej strzałki znajduje się czarna, zakrzywiona strzałka skierowana przeciwnie do ruchu wskazówek zegara, wskazująca dodatni kierunek obrotu.

Usage:
drone.inertial.get_roll()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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#

get_pitch zwraca kąt pochylenia drona w zakresie od –180,0 do 180,0 stopni jako wartość zmiennoprzecinkową.

Na poniższym rysunku strzałka pokazuje kierunek dodatniego obrotu dla kąta nachylenia.

Dron VEX AIR zwrócony w prawy dolny róg z czerwoną strzałką wystającą z prawej strony drona, obok logo VEX. Wokół czerwonej strzałki czarna, zakrzywiona strzałka skierowana przeciwnie do ruchu wskazówek zegara wskazuje dodatni kierunek pochylenia.

Usage:
drone.inertial.get_pitch()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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 wartość obrotu drona do 0 stopni.

Usage:
drone.inertial.reset_rotation()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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 kierunek drona do 0 stopni.

Stosowanie:

drone.inertial.reset_heading()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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 ustawia kierunek drona na określoną wartość w stopniach.

Stosowanie:

drone.inertial.set_heading(heading)

Parametry

Opis

heading

Wartość nowego nagłówka mieści się w zakresie od 0 do 359,99 stopnia.

# 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 zwraca przyspieszenie drona w określonym kierunku. Zwrócona wartość reprezentuje tempo zmiany prędkości, mierzone w jednostkach g (gdzie 1g ≈ 9,81 m/s²), jako wartość zmiennoprzecinkowa z zakresu od -4,00 do 4,00.

Na poniższym rysunku strzałki pokazują kierunek dodatniego przyspieszenia w przód i w prawo oraz ujemnego przyspieszenia w dół.

Dron VEX AIR pokazany jest z zieloną strzałką wychodzącą z nosa drona oznaczoną jako Forward (Przód), niebieską strzałką wychodzącą ze środka dolnej części drona oznaczoną jako Downward (W dół) oraz czerwoną strzałką wychodzącą z prawej strony drona obok logo VEX oznaczoną jako Rightward (W prawo).

Stosowanie:

drone.inertial.get_acceleration(type)

Parametry

Opis

type

Kierunek przyspieszenia do zgłoszenia:

  • 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 zwraca prędkość, z jaką dron obraca się wokół określonej osi. Zwraca wartość w stopniach na sekundę \(dps\) jako liczbę zmiennoprzecinkową z zakresu od –1000,00 do 1000,00 dps.

Na poniższym rysunku strzałki pokazują kierunek dodatniego obrotu dla przechyłu, pochylenia i odchylenia.

Dron VEX AIR jest pokazany ze strzałkami kierunkowymi. Zielona strzałka wychodzi z przodu drona, otoczona czarną, zakrzywioną strzałką skierowaną przeciwnie do ruchu wskazówek zegara, oznaczoną jako „Roll”. Niebieska strzałka wychodzi ze środka dolnej części drona, otoczona czarną, zakrzywioną strzałką skierowaną zgodnie z ruchem wskazówek zegara, oznaczoną jako „Yaw”. Czerwona strzałka wychodzi z prawej strony drona, obok logo VEX, otoczona czarną, zakrzywioną strzałką skierowaną przeciwnie do ruchu wskazówek zegara, oznaczoną jako „Pitch”.

Usage:
drone.inertial.get_turn_rate(axis)

Parametry

Opis

axis

Którą orientację zgłosić:

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

Zakres#

get_distance#

get_distance zwraca odległość między wybranym czujnikiem zasięgu a najbliższym wykrytym obiektem.

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

Parametry

Opis

range

Czujnik zasięgu, którego należy użyć: FORWARD_RANGE lub DOWNWARD_RANGE FORWARD_RANGE raportuje odległość od przodu drona. DOWNWARD_RANGE raportuje odległość od dołu drona.

units

Opcjonalnie. Jednostka odległości:

  • MM (domyślnie) — milimetry
  • CM — centymetry
  • 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()

Bateria#

get_battery_level#

get_battery_level zwraca poziom naładowania akumulatora drona w procentach. Zwraca liczbę od 0 do 100.

Usage:
drone.get_battery_level()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# 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!")