Bezwładnościowy#

Wstęp#

Czujnik bezwładnościowy mierzy sposób poruszania się i skręcania robota.

Czujnik bezwładnościowy wykorzystuje do tego celu dwie części. Żyroskop mierzy obroty, takie jak kierunek, obrót, prędkość żyroskopu i orientację. Akcelerometr mierzy zmiany ruchu, takie jak przyspieszenie lub zwolnienie wzdłuż osi x, y i z.

Aby polecenia bezwładnościowe pojawiły się w VEXcode V5, w oknie Urządzenia należy skonfigurować czujnik bezwładnościowy.

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

Orientacja — odczyt i kontrola kierunku, obrotu i kalibracji czujnika.

  • heading — Zwraca kierunek, w którym skierowany jest czujnik, od 0 do 359,99 stopni.

  • rotation — Zwraca, o ile obrócił się czujnik.

  • gyro_rate — Zwraca szybkość, z jaką czujnik obraca się wokół wybranej osi.

  • orientation — Zwraca kąt przechyłu, pochylenia lub odchylenia czujnika bezwładnościowego.

  • set_heading — Ustawia aktualny kierunek czujnika bezwładnościowego na nową wartość kierunku.

  • set_rotation — Ustawia aktualny obrót czujnika bezwładnościowego na nową wartość obrotu.

  • calibrate — Kalibruje czujnik bezwładnościowy.

  • reset_heading — Resetuje aktualny kierunek czujnika bezwładnościowego do 0 stopni.

  • reset_rotation — Resetuje aktualny obrót czujnika bezwładnościowego do 0 stopni.

  • is_calibrating — Zwraca informację, czy czujnik bezwładnościowy jest obecnie kalibrowany.

  • changed — Rejestruje funkcję, która ma zostać uruchomiona, gdy zmieni się wartość czujnika bezwładnościowego.

  • zainstalowanoinstalled — Sprawdza, czy czujnik bezwładnościowy jest zainstalowany.

Ruch — pomiar przyspieszenia, kolizji i kierunku skrętu.

  • acceleration — Zwraca wartość informującą o tym, jak szybko czujnik przyspiesza lub zwalnia na wybranej osi.

  • collision — Rejestruje funkcję, która ma zostać uruchomiona, gdy czujnik bezwładnościowy wykryje kolizję.

  • set_turn_type — Ustawia kierunek skrętu, dla którego zwracane są dodatnie wartości nagłówka.

  • get_turn_type — Zwraca dodatnie wartości kierunku skrętu.

Konstruktor

  • Inertial – Tworzy czujnik inercyjny.

Orientacja#

heading#

Kurs to kierunek, w którym skierowany jest czujnik, mierzony w stopniach od 0 do 359,99. heading zwraca aktualny kurs czujnika jako wartość zmiennoprzecinkową.

Początkowy kurs wynosi 0 stopni. Jeśli czujnik przekroczy 359,99 stopnia, kurs powróci do 0 stopni.

Usage:
inertial_1.heading(units)

Parametry

Opis

units

Opcjonalnie. Jednostka nagłówka: DEGREES (domyślnie) lub TURNS

# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.heading())

rotation#

Obrót to wartość, o jaką obrócił się czujnik, mierzona w stopniach. W przeciwieństwie do kierunku, obrót może wzrosnąć powyżej 359,99 stopnia lub spaść poniżej 0 stopni. Na początku projektu wartość obrotu jest ustawiona na 0 stopni. rotation zwraca aktualny obrót czujnika bezwładnościowego jako wartość zmiennoprzecinkową.

Skręt w prawo zwiększa obrót, a skręt w lewo zmniejsza. Na przykład, wykonanie dwóch pełnych obrotów w prawo spowoduje obrót o 720 stopni. Jeden pełny obrót w lewo od 0 stopni spowoduje obrót o -360 stopni.

Usage:
inertial_1.rotation(units)

Parametry

Opis

units

Opcjonalnie. Jednostka obrotu: DEGREES (domyślnie) lub TURNS

# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.rotation())

gyro_rate#

Prędkość żyroskopu określa, jak szybko obraca się czujnik bezwładnościowy. gyro_rate zwraca aktualną prędkość obrotową czujnika bezwładnościowego na wybranej osi jako wartość zmiennoprzecinkową.

Wartość może być dodatnia lub ujemna w zależności od kierunku obrotu czujnika wokół danej osi.

Usage:
inertial_1.gyro_rate(axis, units)

Parametry

Opis

axis

Oś, z której ma zostać zwrócona prędkość żyroskopu:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

units

Opcjonalnie. Jednostka prędkości żyroskopu:

  • VelocityUnits.DPS (domyślnie)
  • VelocityUnits.RPM
  • VelocityUnits.PERCENT

# Display the rate of change of
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(inertial_1.gyro_rate(AxisType.ZAXIS, VelocityUnits.DPS))
drivetrain.stop()

orientation#

Orientacja to aktualny kąt czujnika bezwładnościowego względem wybranej osi obrotu. Orientacja orientation zwraca przechylenie, pochylenie lub odchylenie czujnika bezwładnościowego w zakresie od -180,00 do 180,00 stopni jako wartość zmiennoprzecinkową.

Przechylenie, pochylenie i odchylenie opisują różne sposoby, w jakie czujnik może się przechylać lub obracać.

Usage:
inertial_1.orientation(type, units)

Parametry

Opis

type

Kąt orientacji do zwrotu:

  • AxisType.PITCH
  • AxisType.ROLL
  • AxisType.YAW

units

Opcjonalnie. Jednostka orientacji:

  • DEGREES (domyślnie)
  • RotationUnits.TURNS

# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
    brain.screen.clear_screen()
    brain.screen.print(inertial_1.orientation(AxisType.ROLL, DEGREES))
    brain.screen.next_row()
    brain.screen.print(inertial_1.orientation(AxisType.PITCH, DEGREES))
    brain.screen.next_row()
    brain.screen.print(inertial_1.orientation(AxisType.YAW, DEGREES))
    brain.screen.next_row()
    brain.screen.set_cursor(1, 1)
    wait(0.1, SECONDS)

set_heading#

Kurs to kierunek, w którym skierowany jest czujnik, mierzony w stopniach od 0 do 359,99. set_heading zmienia aktualny kurs czujnika bezwładnościowego na nową wartość kursu.

Na przykład, jeśli czujnik obrócił się w prawo, ustawienie kierunku na 0 stopni spowoduje, że ta pozycja skierowana w prawo stanie się nowym 0 stopniem. Wtedy czujnik może śledzić inne kierunki na podstawie tego nowego kierunku.

Usage:
inertial_1.set_heading(value, units)

Parametry

Opis

value

Wartość kierunku (w stopniach) do ustawienia dla czujnika. Może to być wartość z zakresu od 0 do 359,99.

units

Opcjonalnie. Jednostka nagłówka: DEGREES (domyślnie) lub TURNS

# Turn the robot around
inertial_1.set_heading(180, DEGREES)
drivetrain.turn_to_heading(0)

set_rotation#

Obrót to wartość, o jaką obrócił się czujnik, mierzona w stopniach. W przeciwieństwie do kierunku, obrót może wzrosnąć powyżej 359,99 stopnia lub spaść poniżej 0 stopni. Na początku projektu wartość obrotu jest ustawiona na 0 stopni. set_rotation zmienia aktualny obrót czujnika bezwładnościowego na nową wartość.

Na przykład, jeśli czujnik wykonał dwa pełne obroty w prawo, jego wartość obrotu wyniesie 720 stopni. Ustawienie obrotu na 0 stopni zresetuje ten obrót z 720 do 0 stopni. Wtedy czujnik będzie mógł śledzić obroty na podstawie tej nowej wartości.

Usage:
inertial_1.set_rotation(value, units)

Parametry

Opis

value

Wartość obrotu (w stopniach), którą należy ustawić dla czujnika. Może to być liczba całkowita lub dziesiętna (zmiennoprzecinkowa).

units

Opcjonalnie. Jednostka obrotu: DEGREES (domyślnie) lub TURNS

# Turn the robot around
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)

calibrate#

calibrate kalibruje czujnik bezwładnościowy.

Kalibracja pomaga czujnikowi prawidłowo mierzyć zakręty. Podczas kalibracji należy trzymać czujnik nieruchomo. Jeśli czujnik porusza się podczas kalibracji, wartości kierunku, obrotu, prędkości żyroskopu i orientacji mogą być niepoprawne.

Projekt zaczeka na zakończenie kalibracji przed uruchomieniem kolejnej linii kodu.

Usage:
inertial_1.calibrate()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

# Start calibration.
inertial_1.calibrate()
# Print that the Inertial Sensor is calibrating while
# waiting for it to finish calibrating.
while inertial_1.is_calibrating():
    brain.screen.clear()
    brain.screen.print("Inertial Sensor Calibrating")
    wait(50, MSEC)

reset_heading#

reset_heading resetuje aktualny kierunek czujnika bezwładnościowego do 0 stopni.

Po zastosowaniu tej metody aktualny kierunek czujnika staje się nowym kursem 0 stopni.

Usage:
inertial_1.reset_heading()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

reset_rotation#

reset_rotation resetuje aktualny obrót czujnika bezwładnościowego do 0 stopni.

Po zastosowaniu tej metody czujnik śledzi przyszłe obroty od nowej wartości obrotu 0 stopni.

Usage:
inertial_1.reset_rotation()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

is_calibrating#

is_calibrating zwraca informację, czy czujnik bezwładnościowy jest obecnie kalibrowany.

  • True — Czujnik bezwładnościowy jest kalibrowany.

  • False — Czujnik bezwładnościowy nie kalibruje się.

Usage:
inertial_1.is_calibrating()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

changed#

changed rejestruje funkcję, która ma zostać wywołana za każdym razem, gdy zmieni się wartość czujnika bezwładnościowego.

Usage:
inertial_1.changed(callback, arg)

Parametry

Opis

callback

Wcześniej zdefiniowana funkcja, która jest wykonywana, gdy zmienia się wartość czujnika bezwładnościowego.

arg

Opcjonalnie. Krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w Używanie funkcji z parametrami.

def my_function():
  brain.screen.print("Value changed!!")

# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)

installed#

installed sprawdza, czy czujnik bezwładnościowy jest zainstalowany.

  • True — Czujnik bezwładnościowy jest zainstalowany.

  • False — Czujnik bezwładnościowy nie jest zainstalowany.

Usage:
inertial_1.installed()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

Ruch#

acceleration#

Przyspieszenie określa, jak szybko czujnik przyspiesza lub zwalnia. Przyspieszenie acceleration zwraca przyspieszenie czujnika bezwładnościowego na wybranej osi, od -4,0 G do 4,0 G, jako wartość zmiennoprzecinkową.

G to jednostka miary przyspieszenia. 1 G to przyspieszenie grawitacyjne odczuwane w pozycji siedzącej.

Wartość może być dodatnia lub ujemna w zależności od kierunku przyspieszenia na wybranej osi. Dostępne opcje osi to AxisType.XAXIS, AxisType.YAXISi AxisType.ZAXIS.

Usage:
inertial_1.acceleration(type)

Parametry

Opis

type

Oś, na której należy zmierzyć przyspieszenie:

  • AxisType.XAXIS
  • AxisType.YAXIS
  • AxisType.ZAXIS

# Return the acceleration for the Z axis of the Inertial Sensor
zaccel = inertial_1.acceleration(AxisType.ZAXIS)

collision#

collision rejestruje funkcję, która ma zostać wywołana za każdym razem, gdy czujnik bezwładnościowy wykryje nagłe uderzenie lub kolizję.

Usage:
inertial_1.collision(callback, arg)

Parametry

Opis

callback

Wcześniej zdefiniowana funkcja, która jest wykonywana po wykryciu kolizji.

arg

Opcjonalnie. Krotka zawierająca argumenty do przekazania do funkcji wywołania zwrotnego. Więcej informacji można znaleźć w Używanie funkcji z parametrami.

def my_function():
  brain.screen.print("Collision!")

# Call my_function whenever a collision is detected
inertial_1.collision(my_function)

set_turn_type#

set_turn_type ustawia kierunek skrętu, który zwraca dodatnie wartości kursu.

Usage:
inertial_1.set_turn_type(turntype)

Parametry

Opis

turntype

Typ skrętu do ustawienia:

  • LEFT
  • RIGHT

get_turn_type#

get_turn_type zwraca kierunek skrętu, zwraca dodatnie wartości nagłówka.

  • LEFT — Skręty w lewo zwracają dodatnie wartości kierunku.

  • RIGHT — Skręty w prawo zwracają dodatnie wartości kierunku.

Usage:
inertial_1.get_turn_type()

Parametry

Opis

Ta metoda nie ma żadnych parametrów.

Konstruktorzy#

Inertial#

Inertial tworzy czujnik inercyjny.

Usage:
Inertial(port)

Parametry

Opis

port

Port inteligentny, do którego podłączony jest czujnik bezwładnościowy, od 1 do 21.

# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)