Ruch

Ruchy kontrolują silniki robota i układ sterowania. Możesz użyć sekwencyjnych poleceń ruchu, oddzielając je znakami podziału linii, np. Hello World! program. Roboty Sphero poruszają się z trzema podstawowymi instrukcjami: głową, prędkością i czasem trwania. Na przykład, jeśli ustawisz kurs = 0 °, prędkość = 60, czas trwania = 3 s, robot będzie toczył się do przodu przez 3 s z umiarkowaną prędkością.

Roll
await roll() łączy kierunek (0-360 °), prędkość (-255-255) i czas trwania (czas (s)), aby robot mógł przetoczyć się z jedną linią kodu. Na przykład, aby robot przechylał się pod kątem 90 °, z prędkością 200 przez 2 s, użyj funkcji await roll(90, 200, 2)

Prędkość
setSpeed() ustawia prędkość robota od -255 do 255, gdzie prędkość dodatnia jest do przodu, prędkość ujemna do tyłu, a 0 jest zatrzymywane. Każdy typ robota przekłada tę wartość inaczej na rzeczywistą prędkość świata; Ollie jest prawie trzy razy szybsza niż Sphero. Na przykład użyj setSpeed(188) aby ustawić prędkość na 188, która będzie się utrzymywać do momentu ustawienia innej prędkości. Możesz także odczytać wartość prędkości w czasie rzeczywistym w centymetrach na sekundę zgłaszaną przez enkodery silnikowe.

Co to jest skala 255?
Skala dotyczy pamięci komputera i jest używana zamiast wartości procentowej, aby pozwolić młodym użytkownikom naprawdę zrozumieć, jak działa pamięć komputera. Roboty Sphero mają tylko 128 000 - 256 000 bajtów pamięci, co jest niewielką ilością w porównaniu do komputera, który ma 1 000 000 000 bajtów. Pamięć w najbardziej podstawowej formie składa się z 1 i 0. Prostym przykładem jest to, jak komputer liczy 5: 0, 1, 10, 11, 100, 101. Każdy bajt może zawierać osiem 1 lub 0, a przy ośmiu cyfrach największą liczbą, jaką możesz zrobić, jest 255, używając „11111111”. Dlatego użycie najmniejszej ilości pamięci dla wartości (jednego bajtu) oferuje zakres 0–255.

Stop
stopRoll() ustawia prędkość na zero, aby zatrzymać robota, tak samo jak setSpeed(0) .

Nagłówek
setHeading() ustawia kierunek, w którym robot się toczy. Zakładając, że celujesz robotem z niebieskim światłem tylnym skierowanym do siebie, wtedy 0° jest do przodu, 90° jest w prawo, 270° jest w lewo, a 180 ° do tyłu. Na przykład użyj funkcji setHeading(90) aby skierować ją w prawo.

Obrót
await spin() obraca robota o określoną liczbę stopni w czasie, przy czym 360 ° to pojedynczy obrót. Na przykład, aby obrócić robota o 360 ° przez 1s, użyj: await spin(360, 1). Użyj setSpeed() przed await spin() aby robot poruszał się po okręgu lub łuku lub okręgu.

Stabilizacja
setStabilization(true) włącza system stabilizacji, a setStabilization(false) wyłącza go. Stabilizacja jest zwykle włączona, aby utrzymać robota w pozycji pionowej za pomocą bezwładnościowego urządzenia pomiarowego (IMU), kombinacji odczytów z akcelerometru (przyspieszenie kierunkowe), żyroskopu (prędkość obrotowa) i enkoderów (lokalizacja i odległość). Gdy setStabilization(false) i setStabilization(false) silniki, robot nie setStabilization(false) , co może prowadzić do niestabilnych zachowań, takich jak chwiejna jazda, a nawet skakanie, jeśli ustawisz bardzo wysoką moc. Niektóre przypadki użycia, aby go wyłączyć to:

Skoki: ustaw Moc silnika na wartości maksymalne, a robot wyskoczy z ziemi!
Gyro: Programy takie jak Spinning Top, w których chcesz izolować odczyty żyroskopu zamiast automatycznego balansu robota wewnątrz skorupy.
Gdy stabilizacja jest wyłączona, nie można użyć setSpeed do ustawienia prędkości, ponieważ wymaga ona włączenia systemu sterowania. Można jednak sterować silnikami za pomocą Motor Power za pomocą rightMotorPwm i leftMotorPwm gdy układ sterowania jest wyłączony.

Raw Motor
5 surowy silnik
await rawMotor() kontroluje moc elektryczną wysyłaną do lewego i prawego silnika niezależnie, w skali od -255 do 255, gdzie dodatnia jest do przodu, ujemna do tyłu, a 0 jest zatrzymywane. Jeśli ustawisz oba silniki na pełną moc, robot podskoczy, ponieważ stabilizacja (użycie IMU do utrzymania robota w pozycji pionowej) jest wyłączona podczas korzystania z tego polecenia. Różni się to od setSpeed ponieważ Raw Motor wysyła do silników „siłę elektromotoryczną”, podczas gdy prędkość zadana jest prędkością docelową mierzoną przez enkodery. Na przykład, aby ustawić silnik surowy na pełną moc na 4 s, powodując, że robot wyskoczy z ziemi, użyj funkcji await rawMotor(255, 255, 4) .

Moc silnika
rightMotorPwm() i leftMotorPwm() kontrolują moc elektryczną wysyłaną do lewego i prawego silnika niezależnie, w skali od -255 do 255. Jeśli ustawisz oba silniki na pełną moc, robot podskoczy, ponieważ setStabilization(false) podczas używania tego polecenia . Moc silnika różni się od setSpeed ponieważ Raw Motor wysyła „siłę elektromotoryczną” do silników, podczas gdy prędkość zadana jest prędkością docelową mierzoną przez enkodery.

Resetuj cel
resetAim() resetuje kąt kalibracji (celowania) resetAim() aby użyć bieżącego kierunku robota jako 0 °, w zakresie 0-360 °. Na przykład użyj resetAim(90) aby użyć bieżącego kierunku robota skierowanego w prawo jako 0 °. W przypadku zastosowania w obszarze roboczym bloku resetAim() jest ograniczony do ustawienia bieżącego kierunku robota do przodu na 0 °.

Sphero BOLT Movements
Sphero BOLT ma czujnik kompasu (magnetometr), który ma unikalną funkcjonalność. Pobliskie obiekty metalowe i magnetyczne mogą wpływać na dokładność kompasu, więc spróbuj użyć tej funkcji w obszarze bez zakłóceń lub trzymaj ją w powietrzu, jeśli nie możesz uciec od zakłóceń.

Kalibruj kompas
ruch - kalibracja
await calibrateCompass() kalibruje magnetometr, obracając robota na miejscu. Musisz uruchomić to polecenie przed ustawieniem lub uzyskaniem kierunku kompasu. Pobliskie obiekty metalowe i magnetyczne mogą wpływać na dokładność kompasu.

Kierunek kompasu
ruch - kompas modalnysetCompassDirection() ustawia kierunek świata rzeczywistego na podstawie ostatniej kalibracji kompasu. 0 ° na północ, 90 ° na wschód, 180 ° na południe, a 270 ° na zachód. Wymaga uruchomienia polecenia Calibrate Compass, zanim będzie można ustawić tę wartość. Na przykład użyj poniższego, aby skierować Sphero BOLT na północ:
 async function startProgram() { await calibrateCompass(); setCompassDirection(0); }
1
 async function startProgram() { await calibrateCompass(); setCompassDirection(0); }
Ruchy droidów Star Wars
Animacje Droidów
5 R2 an
await Animation.DroidName.Category.AnimationName.play() odtwarza kultowe animacje Star Wars Droid unikalne dla BB-8, BB-9E, R2-D2 i R2-Q5, które łączą ruch, światło i dźwięk. Nazwy droidów są zapisywane jako BB8 , BB9E , R2D2 i R2Q5 . Możesz losować animacje i dźwięki, nie deklarując Category i AnimationName , takich jak await Animation.R2D2.play() . Jeśli zadeklarujesz Category ale pozostawić nazwę AnimationName pustą, będzie ona losowo przydzielana do danej kategorii, na przykład w await Animation.R2D2.Patrol.play() . Wszystkie animacje są wymienione poniżej:

BB-8
Pozytywne: Giddy, Tak
Negatywne: zły, nie
Działanie: Zelektryfikowany, Numer 8, Wyszukiwanie, Kwadrat
BB-9E
Działanie: Odwrót, przeskok skanowania
Pozytywne: twierdząco, treść, pozdrowienia, zrozumienie, tak
Negatywne: pobudzone, alarmowe, gniewne, antagonizowane, wściekłe, nie
Watch With Me: Angry, Antagonized, Bored, Bow, Defiant, Disagree, Disappointed, Disbelief, Double Take, wątpliwy, podekscytowany, sfrustrowany, wściekły, szczęśliwy, śmiech, nie, złowieszczy, ulga, wstrząsnąć, zaskoczony, niepewny, wrzask, Yoohoo
R2-D2
Działanie: Jedź, Skanuj, Uśpij, Wiruj
Idle: Idle 1, Idle 2, Idle 3
Negatywne: alarm, gniew, zirytowany, wybuch jonów, nie, smutny, przestraszony
Patrol: Alarm, Hit, Patrolowanie
Pozytywne: rozmowny, pewny siebie, podekscytowany, szczęśliwy, śmiech, zaskoczony, tak
Watch With Me: Angry, niespokojny, Bow, niepokój, Curious, Double Take, Excited, Fiery, Frustrated, Happy, Jittery, Laugh, Long Shake, No, Zminous, Relieved, Sad, Scared, Shake, Zaskoczony, Drwina, Whisper, Wrzask, Yoohoo
R2-Q5
Animacje nie są dostępne dla R2-Q5 :(
Ruchy R2-D2 i R2-Q5
Droidy R2-D2 i R2-Q5 różnią się fizycznie od innych robotów Sphero, więc istnieje kilka unikalnych poleceń, z których tylko one mogą korzystać. R2Q5 może zastąpić R2D2 dla tych poleceń.

Pozycja kopuły
5 kopułaR2D2.setDomePosition() obraca kopułę wokół własnej osi, od -160 ° do 180 °. Na przykład ustaw na 45 ° za pomocą setDomePosition(45) .
Postawa
Boolean, który zmienia postawę między dwójnogiem a statywem. Ustaw na dwójnóg za pomocą funkcji await setStance(Stance.Bipod) i na statyw za pomocą funkcji await setStance(Stance.Tripod) . Do toczenia wymagany jest statyw.

Kaczkowaty chód
Boolean, który włącza chodzenie await setWaddle(true) przy użyciu funkcji await setWaddle(true) i wyłączania przy użyciu funkcji await setWaddle(false) .

https://sphero.docsapp.io/docs/movement