Bezwładnościowy#
Wstęp#
Mózg IQ (2. generacja) Mózg posiada wbudowany czujnik bezwładnościowy. Czujnik ten mierzy ruch i obrót mózgu.
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.
Ta strona używa brain_inertial jako przykładowej nazwy czujnika bezwładnościowego. W razie potrzeby zastąp ją własną, skonfigurowaną nazwą.
Poniżej znajduje się lista wszystkich 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.calibrate— Kalibruje czujnik bezwładnościowy.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.is_calibrating— Zwraca informację, czy czujnik bezwładnościowy jest obecnie kalibrowany.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.changed— Rejestruje funkcję, która ma zostać uruchomiona, gdy zmieni się nagłówek czujnika bezwładnościowego.
Ruch — pomiar przyspieszenia, prędkości obrotowej i nachylenia.
acceleration— Zwraca wartość informującą o tym, jak szybko czujnik przyspiesza lub zwalnia na wybranej osi.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.
Konstruktory — ręczna inicjalizacja i konfiguracja czujnika bezwładnościowego.
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.
Początkowy kurs wynosi 0 stopni. Jeśli czujnik przekroczy 359,99 stopnia, kurs powróci do 0 stopni.
Usage:
brain_inertial.heading(units)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Jednostka nagłówka: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Obrót to wartość obrotu czujnika, mierzona w stopniach. W przeciwieństwie do kierunku, obrót może przekroczyć 359,99 stopnia lub zmniejszyć się poniżej 0 stopni. Na początku projektu wartość obrotu jest ustawiona na 0 stopni. rotation zwraca aktualny obrót czujnika bezwładnościowego.
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:
brain_inertial.rotation(units)
Parametry |
Opis |
|---|---|
|
Opcjonalnie. Jednostka obrotu: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate kalibruje czujnik bezwładnościowy. Wszystkie kolejne linie będą oczekiwać na zakończenie kalibracji przed uruchomieniem. Kalibracja pomaga czujnikowi prawidłowo mierzyć obroty poprzez pomiar i kompensację szumu czujnika oraz dryftu w określonym czasie. W tym czasie Mózg musi pozostawać całkowicie nieruchomo na stabilnej powierzchni. Ruch podczas kalibracji może dawać niedokładne wyniki.
VEX Brain automatycznie próbuje skalibrować wbudowany czujnik bezwładnościowy na początku każdego projektu. Jeśli jednak robot jest przenoszony lub przemieszczany na początku projektu, czujnik może nie skalibrować się prawidłowo lub uzyskać nieprawidłową kalibrację.
Usage:
brain_inertial.calibrate()
Parametr |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
set_heading#
Kurs to kierunek, w którym skierowany jest czujnik, mierzony w stopniach od 0 do 359,99. set_heading() zmienia bieżący 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:
brain_inertial.set_heading(value, units)
Parametry |
Opis |
|---|---|
|
Wartość kierunku (w stopniach) do ustawienia dla czujnika. Może to być wartość z zakresu od 0 do 359,99. |
|
Opcjonalnie. Jednostka nagłówka: |
# Turn the robot around
brain_inertial.set_heading(180)
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:
brain_inertial.set_rotation(value, units)
Parametry |
Opis |
|---|---|
|
Wartość obrotu (w stopniach), którą należy ustawić dla czujnika. Może to być liczba całkowita lub dziesiętna (zmiennoprzecinkowa). |
|
Opcjonalnie. Jednostka obrotu: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
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:
brain_inertial.is_calibrating()
Parametr |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
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:
brain_inertial.reset_heading()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)
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:
brain_inertial.reset_rotation()
Parametry |
Opis |
|---|---|
Ta metoda nie ma żadnych parametrów. |
# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)
changed#
changed rejestruje funkcję, która ma zostać wywołana, gdy zmieni się nagłówek czujnika bezwładnościowego.
Usage:
brain_inertial.changed(callback, arg)
Parametry |
Opis |
|---|---|
|
Funkcja uruchamiana w momencie zmiany nagłówka czujnika bezwładnościowego. |
|
Opcjonalnie. Krotka argumentów do przekazania do funkcji wywołania zwrotnego. |
def heading_changed():
brain.screen.set_cursor(1, 1)
brain.screen.clear_screen()
brain.screen.print("my heading ")
brain.screen.next_row()
brain.screen.print("has changed!")
wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)
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 ziemskie 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 XAXIS, YAXISi ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parametry |
Opis |
|---|---|
oś |
Oś, na której należy zmierzyć przyspieszenie:
|
# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
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.
Wartość może być dodatnia lub ujemna w zależności od kierunku obrotu czujnika wokół danej osi.
Usage:
brain_inertial.gyro_rate(axis, units)
Parametry |
Opis |
|---|---|
|
Oś, z której ma zostać zwrócona prędkość żyroskopu:
|
|
Opcjonalnie. Jednostka prędkości żyroskopu:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
Orientacja to aktualny kąt czujnika bezwładnościowego względem wybranej osi obrotu. orientation zwraca przechylenie, pochylenie lub odchylenie czujnika bezwładnościowego.
Przechylenie, pochylenie i odchylenie opisują różne sposoby, w jakie czujnik może się przechylać lub obracać.
Usage:
brain_inertial.orientation(axis, units)
Parametry |
Opis |
|---|---|
|
Kąt orientacji do powrotu:
|
|
Opcjonalnie. Jednostka orientacji: |
# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
brain.screen.clear_screen()
brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
Konstruktorzy#
Konstruktory służą do ręcznego tworzenia obiektów Inertial , na przykład podczas konfigurowania czujnika inercyjnego poza VEXcode.
Inertial#
Inertial tworzy czujnik inercyjny.
Usage:
Inertial(smartport)
Parametr |
Opis |
|---|---|
|
Opcjonalnie. W przypadku korzystania z wbudowanego czujnika bezwładnościowego Brain w IQ (2. generacja), port inteligentny nie jest potrzebny. W przypadku podłączania zewnętrznego czujnika bezwładnościowego należy określić port inteligentny, do którego jest podłączony czujnik bezwładnościowy, zapisując go jako |
# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)


