Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł...

38

Transcript of Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł...

Page 1: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry
Page 2: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry Pi, Arduino, and BeagleBone

Tłumaczenie: Andrzej Watrak

ISBN: 978-83-283-2054-3

© 2016 Helion S.A.

Authorized Polish translation of the English edition of Make: JavaScript Robotics, ISBN 9781457186950 © 2015 Backstop Media, LLC, published by Maker Media Inc.

This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all rights to publish and sell the same.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/roboty.zip

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/robotyMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

3

Spis tre ci

Przedmowa ...................................................................................................................... 11

1. Budowanie robotów ze zwyk ych materia ów ................................................................ 15Budowa robota SimpleBot ..................................................................................................................16

Wykaz materia ów .......................................................................................................................16Etapy budowy .............................................................................................................................17Instalacja pakietów Node.js .........................................................................................................20Sprawdzenie urz dzenia za pomoc podstawowego programu ....................................................20Diagnostyka problemów ..............................................................................................................21Prosty program steruj cy ............................................................................................................21Diagnostyka problemów ..............................................................................................................23

Odci cie przewodu ............................................................................................................................24Budowa bezprzewodowego robota SimpleBot ..............................................................................24Po czenia ...................................................................................................................................24Sterowanie robotem SimpleBot ....................................................................................................25Diagnostyka problemów ..............................................................................................................28

Co dalej? ...........................................................................................................................................29

2. Robot pisz cy TypeBot ..................................................................................................... 31Wykaz materia ów ..............................................................................................................................31

Informacje o serwomotorach .......................................................................................................32Anatomia ramienia robota ..................................................................................................................33

Konstrukcja ramienia ...................................................................................................................33Warunki zwi zane z ruchem ramienia ..........................................................................................34

Poleć książkęKup książkę

Page 4: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

4 Spis tre ci

Budowa cz ci mechanicznej ............................................................................................................34Podstawa i rami .........................................................................................................................34okie .........................................................................................................................................35

Nadgarstek ..................................................................................................................................36Palec ...........................................................................................................................................37Mózg ...........................................................................................................................................37

Utworzenie programu .........................................................................................................................38Utworzenie plików projektu ..........................................................................................................38Sterowanie serwomotorami .........................................................................................................38Inicjalizacja ..................................................................................................................................41Okre lenie sekwencji naci ni klawiszy .....................................................................................43Pierwsze uruchomienie ................................................................................................................46Dok adna regulacja ramienia ........................................................................................................46

Co dalej? ...........................................................................................................................................47

3. Pierwsze kroki z robotami NodeBoat .............................................................................. 49Wykaz materia ów ..............................................................................................................................50

Narz dzia ....................................................................................................................................50Zasobnik z silnikiem ...........................................................................................................................51

Po co stosowa sterownik silnika? ..............................................................................................51Komponenty zasobnika silnika .....................................................................................................51Modyfikacja silnika ......................................................................................................................52Monta silnika .............................................................................................................................53Sprawdzenie silnika .....................................................................................................................53Przygotowanie silnika ..................................................................................................................53Otwór w zasobniku na silnik ........................................................................................................54Zamkni cie zasobnika na silnik ....................................................................................................55Uszczelnienie przewodów ............................................................................................................55

Konfiguracja modu u Spark ................................................................................................................56Test modu u Spark ......................................................................................................................56

Twój pierwszy program Spark ............................................................................................................57Przylutowanie sterownika silnika ........................................................................................................58Po czenie komponentów odzi ..........................................................................................................58

Zasilanie sterownika silnika ..........................................................................................................59Po czenie modu u Spark i sterownika silnika ..............................................................................60Pod czenie silnika ......................................................................................................................61

Sterowanie silnikiem: kod ..................................................................................................................62Obs uga zdarzenia naci ni cia klawisza .......................................................................................62Zapisywanie stanu klawiszy .........................................................................................................63

Wodowanie odzi ...............................................................................................................................64

Poleć książkęKup książkę

Page 5: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Spis tre ci 5

Sterowanie odzi za pomoc serwomotoru .......................................................................................66Programowanie serwomotoru ......................................................................................................66Monta steru ...............................................................................................................................68

Pierwszy rejs .....................................................................................................................................69Co dalej? ...........................................................................................................................................69

4. Mobilna platforma piDuino5 ............................................................................................ 71Wykaz materia ów ..............................................................................................................................72

Instalacja platformy Node.js na p ytce Raspberry Pi .....................................................................73Pobranie kodu piDuino5 i zale no ci ............................................................................................73Narz dzia ....................................................................................................................................73

Konfiguracja p ytek i instalacja oprogramowania ................................................................................73Pod czenie Arduino ....................................................................................................................74Przegl d kodu app.js ...................................................................................................................74Sprawdzenie platformy Johnny-Five za pomoc protoko u WebSocket .........................................74Inicjalizacja platformy Johnny-Five ..............................................................................................75Sterowanie urz dzeniami .............................................................................................................75Sterowanie z ma ymi opó nieniami za pomoc protoko u WebSocket ..........................................75Po czenie z ka dego miejsca ......................................................................................................76

Monta komponentów ........................................................................................................................76Wys anie adresu do aplikacji WWW .............................................................................................78

Sterowanie za pomoc smartfona ......................................................................................................78Pobranie aplikacji WWW do sterowania robotem piDuino5 ..........................................................78Sprawd aplikacj WWW na telefonie ..........................................................................................79

Przegl d plików app.js i index.html .....................................................................................................79Zapisanie lokalnego adresu IP ......................................................................................................79Udost pnienie interfejsu u ytkownika ...........................................................................................79Dotykowy joystick .......................................................................................................................80Nawi zanie po czenia .................................................................................................................80Wysy anie polece ......................................................................................................................80

Co dalej? ...........................................................................................................................................81

5. Sterowanie heksapodem za pomoc platformy Johnny-Five ......................................... 83Wykaz materia ów ..............................................................................................................................83Sterowanie robotem za pomoc wiersza polece ...............................................................................84Wprowadzenie do programu phoenix.js ..............................................................................................85Monta robota ....................................................................................................................................86

Przygotowanie szkieletu ..............................................................................................................87Monta komponentów elektronicznych ........................................................................................87Przygotowanie serwomotorów ....................................................................................................87Monta stawów biodrowych ........................................................................................................88

Poleć książkęKup książkę

Page 6: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

6 Spis tre ci

Monta segmentów udowych ......................................................................................................89Monta segmentów piszczelowych ..............................................................................................89

Uk ad wspó rz dnych .........................................................................................................................90Regulacja serwomotorów ..................................................................................................................91

Regulacja stawów biodrowych ....................................................................................................91Regulacja segmentów udowych ..................................................................................................92Regulacja segmentów piszczelowych ..........................................................................................92

Okre lenie zakresów ruchu serwomotorów ........................................................................................92Chodzenie jest trudne! .......................................................................................................................93Poznaj klas Animation ......................................................................................................................94

Tabela serwomotorów jako grupa docelowa ................................................................................94Obiekt Servo.Array jako grupa docelowa ......................................................................................94Tabela obiektów Servo.Array jako grupa docelowa ......................................................................94

Pierwszy segment animacyjny ...........................................................................................................95Chodzenie ..........................................................................................................................................98

Wios owanie (row) ......................................................................................................................98Marsz (walk) ...............................................................................................................................99Bieg (run) ..................................................................................................................................100

Lista polece ...................................................................................................................................100Obracanie robota .............................................................................................................................100Co dalej? .........................................................................................................................................101

6. Budowanie robota NodeBot sterowanego g osem ....................................................... 103Wykaz materia ów ............................................................................................................................103

P ytka BeagleBone Black ...........................................................................................................105Tworzenie projektu ...........................................................................................................................106Budowa obwodu przeka nika ...........................................................................................................106

Sterowanie obwodem za pomoc platformy Johnny-Five ...........................................................107Budowa obwodu mikrofonu .............................................................................................................108

Obs uga mikrofonu i przeka nika za pomoc kodu Johnny-Five .................................................108Tworzenie serwera polece ..............................................................................................................110Prosty kontroler g osowy wykorzystuj cy interfejs Web Speech API .................................................112Integracja serwera polece z obwodem przeka nika .........................................................................112Zaawansowany kontroler g osowy wykorzystuj cy gad et z Androidem ...........................................115

Aplikacja przeno na dla systemu Android ..................................................................................115Aplikacja dla gad etu z Androidem .............................................................................................120

Co dalej? .........................................................................................................................................123

7. Pokojowy zegar s oneczny ............................................................................................ 125Wykaz materia ów ............................................................................................................................126

Elementy z pianki PCV ...............................................................................................................126

Poleć książkęKup książkę

Page 7: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Spis tre ci 7

Budowanie zegara s onecznego .......................................................................................................128Wycinanie elementów i przygotowanie g ównej konstrukcji ..............................................................129

Przygotowanie p yty monta owej ...............................................................................................129Pod czenie i konfiguracja serwomotorów .......................................................................................130

Pod czenie serwomotorów .......................................................................................................130Konfiguracja serwomotorów ......................................................................................................131

Przygotowanie tarcz .........................................................................................................................132Przygotowanie cianek i podparcia tarczy podstawowej ...................................................................133

Przygotowanie cianek ..............................................................................................................133Umieszczenie tarcz ....................................................................................................................134Przygotowanie podparcia tarczy ................................................................................................134

Wykonanie ostatnich elementów i monta zegara .............................................................................136Przygotowanie ramienia azymutu ...............................................................................................136Przygotowanie uku wysoko ci ..................................................................................................137Wyci cie gnomonu ....................................................................................................................138Pod czenie „s o ca” ................................................................................................................138

Kod, który wszystkim steruje ...........................................................................................................139Program sundial.js ....................................................................................................................140Dane konfiguracyjne w programie sundial.js ..............................................................................140Szczegó y programu sundial.js ..................................................................................................141

Z ó wszystko razem! .......................................................................................................................143W cz zegar! ....................................................................................................................................144Co dalej? .........................................................................................................................................144

8. wiate ka-straszyde ka ................................................................................................. 145Wykaz materia ów ............................................................................................................................145

Dobór kontrolera matrycy ..........................................................................................................146Teoria ..............................................................................................................................................146

Co to jest matryca LED? ............................................................................................................147Budowa a cucha wiate ek .............................................................................................................147

Potrzebne narz dzia ...................................................................................................................148Przygotowanie matryc ...............................................................................................................149Przygotowanie kabla ..................................................................................................................150Diagnostyka ..............................................................................................................................153

Sterowanie matryc LED ..................................................................................................................153Przygotowanie p ytki Arduino .....................................................................................................153Dekorowanie a cucha wiate ek ...............................................................................................153Opcje konstruktora klasy Matrix .................................................................................................154Rysowanie wzorów na matrycy .................................................................................................154Uruchomienie programu testuj cego .........................................................................................154

Poleć książkęKup książkę

Page 8: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

8 Spis tre ci

Utworzenie aplikacji WWW ...............................................................................................................155Narz dzia programistyczne ........................................................................................................155Korzystanie z generatora express ...............................................................................................155Utworzenie interfejsu API ...........................................................................................................156Utworzenie interfejsu u ytkownika .............................................................................................157Rozbudowa aplikacji ..................................................................................................................158

Co dalej? .........................................................................................................................................158

9. Lampa CheerfulJ5 .......................................................................................................... 159Wykaz materia ów ............................................................................................................................159Zbudowanie obwodu ........................................................................................................................160Kod do lampy CheerfulJ5 .................................................................................................................161

Po czenie z p ytk Arduino .......................................................................................................161Sterowanie diod RGB ...............................................................................................................162U ycie platformy Node.js i p tli REPL ........................................................................................163Zdefiniowanie mapy kolorów us ugi CheerLights ........................................................................163Dost p do us ugi CheerLights za pomoc interfejsu ThingSpeak API ..........................................164Korzystanie z interfejsu Twitter Streaming API ...........................................................................165

czno bezprzewodowa dzi ki zestawowi Spark WiFi Development Kit .........................................169Umieszczenie modu u Spark w obwodzie ..................................................................................169Zastosowanie wtyczki Spark-io ..................................................................................................170Prze czenie na zasilanie z akumulatora .....................................................................................170

Umieszczenie obwodu w obudowie .................................................................................................171Co dalej? .........................................................................................................................................172

10. Interaktywny panel LED RGB z p ytk BeagleBone Black ............................................ 173Wykaz materia ów ............................................................................................................................174

P ytka BeagleBone Black ...........................................................................................................174Adapter WiFi (opcjonalny) .........................................................................................................174Zewn trzny zasilacz 5 V (opcjonalny) ........................................................................................174Panel LED RGB ..........................................................................................................................175Czujniki .....................................................................................................................................175Inne komponenty .......................................................................................................................175

Pierwsze kroki: oprogramowanie .....................................................................................................175Oprogramowanie LEDScape ......................................................................................................175Pod czenie panelu RGB LED ....................................................................................................176

Pod czenie panelu RGB LED ...........................................................................................................176Czas na kod! U yj j zyka JavaScript .................................................................................................178

Uruchomienie skryptu testowego ...............................................................................................179Zastosowanie platformy Johnny-Five i obudowy beaglebone-io .................................................181

Poleć książkęKup książkę

Page 9: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Spis tre ci 9

Pod czenie fotorezystora ..........................................................................................................183Zmienianie kolorów za pomoc przyspieszeniomierza ................................................................185

Co dalej? .........................................................................................................................................187

11. Osobiste bezpiecze stwo, JavaScript i Ty .................................................................... 189Prosty czujnik ultrad wi kowy .........................................................................................................190

Implementacja ...........................................................................................................................190Urz dzenie ultrad wi kowe wysy aj ce SMS-y .................................................................................193

Implementacja ...........................................................................................................................193System monitoringu .........................................................................................................................194

Implementacja ...........................................................................................................................194Laser robi wra enie na wrogach i przyjacio ach ................................................................................195

Implementacja ...........................................................................................................................195Wska nik stanu, przyciski i diody LED ..............................................................................................196

Implementacja ...........................................................................................................................198Co dalej? .........................................................................................................................................201

12. Sztuczna inteligencja: robot BatBot .............................................................................. 203Sztuczna inteligencja — podstawy ...................................................................................................203

Roboty semiautonomiczne ........................................................................................................204Roboty autonomiczne ................................................................................................................204Robot BatBot .............................................................................................................................204Roboty zdalnie sterowane ..........................................................................................................204

Wykaz materia ów ............................................................................................................................205Uwagi dotycz ce materia ów .....................................................................................................206

Monta ............................................................................................................................................206Krok 1. Zdalne sterowanie ................................................................................................................207

Poruszanie robotem ..................................................................................................................208Sterowanie robotem ..................................................................................................................210Ustawianie czujnika ultrad wi kowego i odczyt sygna u .............................................................210

Krok 2. Autonomia ...........................................................................................................................211Implementacja algorytmu ..........................................................................................................213

Diagnostyka .....................................................................................................................................215Co dalej? .........................................................................................................................................216

13. Roboty delta i kinematyka ............................................................................................. 217Wykaz materia ów ............................................................................................................................218Anatomia robota delta ......................................................................................................................219Budowa robota Junky Delta .............................................................................................................220

Wprawienie robota w ruch .........................................................................................................223Okre lanie po o enia w kinematyce ...........................................................................................225

Bardziej zaawansowane roboty delta ................................................................................................229

Poleć książkęKup książkę

Page 10: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

10 Spis tre ci

Robot TapsterBot ......................................................................................................................229Robot Army ...............................................................................................................................229

Co dalej? .........................................................................................................................................230

14. Interaktywne buty .......................................................................................................... 231Wykaz materia ów ............................................................................................................................231Opis elementów ...............................................................................................................................231Przygotowanie czujników .................................................................................................................234

Przylutowanie przewodów do czujników ....................................................................................234Umieszczenie czujników w butach .............................................................................................235Wyprowadzenie przewodów na zewn trz buta ...........................................................................235

Po czenie butów .............................................................................................................................235Przygotowanie przewodu spiralnego ..........................................................................................235

Pod czenie butów do p ytki Arduino ................................................................................................237Przygotowanie przewodów ........................................................................................................237Przylutowanie p ytki Arduino ......................................................................................................238Przymocowanie p ytki Arduino do prawego buta ........................................................................238

Tworzenie kodu opartego na platformie Johnny-Five ........................................................................238Pod czenie do platformy Johnny-Five .......................................................................................238Konfiguracja czujników ..............................................................................................................239Wy wietlanie danych z czujników ..............................................................................................239Przyk adowe zachowania ...........................................................................................................240

Co dalej? .........................................................................................................................................241

A. Dodatek ........................................................................................................................... 243Instalacja biblioteki Node.js ..............................................................................................................243Instalacja platformy Johnny-Five ......................................................................................................243

Diagnostyka ..............................................................................................................................244Dodatkowe informacje ...............................................................................................................244

Konfigurowanie sprz tu ....................................................................................................................244Arduino .....................................................................................................................................244BeagleBone Black ......................................................................................................................244Raspberry Pi .............................................................................................................................244Zestaw Particle WiFi Development Kit ........................................................................................245

Programowanie w systemie Android ................................................................................................247Instalacja oprogramowania Android Studio ................................................................................247Tworzenie projektu Android .......................................................................................................247Instalacja biblioteki Volley .........................................................................................................248

Skorowidz ...................................................................................................................... 249

Poleć książkęKup książkę

Page 11: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

83

Sterowanie heksapodemza pomoc platformy

Johnny-Five5

Donovan Buck

W tym rozdziale dowiesz si , jak zbudowa prostegokrocz cego heksapoda, czyli sze cionogiego robota.Opisany tu heksapod, pokazany na rysunku 5.1, b dziemia po trzy stawy w ka dej nodze. Robot b dziesterowany za pomoc klasy Animation z platformyJohnny-Five. Klasa ta jest wykorzystywana do two-rzenia skryptów steruj cych serwomotorami w cza-sie. Oferuje funkcjonalno ci takie jak harmonogram,kluczowe ramki, p ynne przej cie jednej ramki w drug(ang. tweening) i funkcje wyg adzaj ce (ang. easingfunctions). Na koniec otrzymasz doskona platformdo budowania w przysz o ci z o onych, ciekawychrobotów.

Wykaz materia ów

Materia y u yte w tym rozdziale wymienione sw tabeli 5.1.

Sze serwomotorów Hitec HS-485HB b dzie tworzystawy biodrowe, sze modeli Hitec HS-645MG —

Rysunek 5.1. Gotowy heksapod

stawy segmentów udowych, a sze Hitec HS-5685MH — stawy segmentów piszczelowych. Firma Lynx-motion zaleca zastosowanie sze ciu serwomotorówHS-485HB i dwunastu HS-645MG, jednak modeleHS-5685MH oferuj wi kszy moment obrotowy nie-zb dny w stawach segmentów udowych. Do poru-szania robotem b dzie potrzebny maksymalnymoment obrotowy, jaki silniki mog osi gn .

Poleć książkęKup książkę

Page 12: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

84 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Tabela 5.1. Wykaz materia ów do budowy robota

Liczba Element Przybli ona cena Numer/ ród o

1 Heksapod Phoenix 3DOF (bez serwomotorówi elementów elektronicznych)

950 z LM PHOE

1 Arduino Mega 2560 175 z MS MKSP5, AF 191, SF DEV-11061

1 Nak adka DFRobot Mega Sensor 75 z AZ B0098SJ1RS

6 Serwomotor HiTec HS-485HB 65 z LM S485HB, AZ B00944TF72

6 Serwomotor HiTec HS-645MG 120 z LM S645MG, AZ B003T6RSVQ

6 Serwomotor HiTec HS-5685MH 150 z LM S5685MH, AZ B003X6KT7C

1 adowarka 6 V – 12 V NiMH/NiCd 85 z LM USC-02, AZ B001DHC2LO

1 Akumulator 6 V / 2800 mAh Ni-MH 105 z LM BAT-05

Lista potrzebnych narz dzi jest skromna. Do podsta-wowego monta u b d potrzebne:

zestaw ma ych wkr taków, szczypce precyzyjne, wiertarka, wiert o o rednicy 3 mm, wiert o o rednicy 6 mm, opaski zaciskowe (kilkadziesi t sztuk).

Sterowanie robotemza pomoc wiersza polece

Podczas konstruowania robota b dziesz musia ste-rowa serwomotorami i zmienia ich pozycje, wyko-rzystuj c uk ad wspó rz dnych. P tla REPL oferowanaprzez platform Node.js doskonale nadaje si do tegocelu. Mo liwo wysy ania polece do serwomo-torów i obserwowania ich reakcji w czasie rzeczy-wistym jest bardzo fajna i przydatna.

Do sterowania robotem za pomoc p tli REPL b dziepotrzebny program phoenix.js. Wykonaj nast puj ceczynno ci:

1. Pobierz zawarto katalogu Buck.Animationz serwisu GitHub (https://github.com/rwaldron/javascript-robotics).

2. Zapisz zawarto katalogu w folderze roboczymna komputerze.

3. Przejd do katalogu roboczego, a nast pnie u yjpolecenia npm do zainstalowania zale no ci:

npm install

Powy sze polecenie powinno dostarczy wszystkichdanych potrzebnych do skonfigurowania robota i ste-rowania nim. Je eli nie zainstalowa e jeszcze plat-formy Node.js na swoim komputerze, zajrzyj docz ci „Instalacja platformy Node.js” w dodatku.

P tla REPL

Skrót REPL oznacza p tl odczytaj-przetwórz-wy wietl (ang. read-eval-print loop). Umo liwia onawprowadzanie informacji za pomoc wiersza polece , nast pnie przetwarzanie wprowadzonych danychza pomoc kodu i na koniec wy wietlenie wyników i oczekiwanie na kolejne polecenia.

Poleć książkęKup książkę

Page 13: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Wprowadzenie do programu phoenix.js 85

Wprowadzeniedo programu phoenix.js

Plik phoenix.js ze skryptem JavaScript zawiera pe nykod potrzebny do konfiguracji robota i sterowania nim.W dalszej cz ci rozdzia u okre lisz w tym kodziepewne warto ci konfiguracyjne, ale na razie tylkoprzejrzyj go i zapoznaj si z jego kilkoma podsta-wowymi funkcjonalno ciami.

Plik sk ada si z dwóch g ównych sekcji, w którychmo e by konieczne wprowadzenie zmian. Pierw-sza z nich — sekcja konfiguracyjna — znajduje siw pobli u pocz tku pliku. S w niej zdefiniowaneobiekty opisuj ce wszystkie pozycje, jakie przyjmujserwomotory podczas wykonywania przez heksapodakroków przesuwaj cych go naprzód i obracaj cychna boki. Te dane b dziesz musia zmieni tylko w przy-padku, gdy zastosujesz inne serwomotory ni wymie-nione w li cie.

Druga sekcja, w której koniecznie musisz wprowa-dzi zmiany, zawiera instrukcje tworz ce obiektyreprezentuj ce serwomotory poruszaj ce nogamirobota. Sekcja ta znajduje si wewn trz funkcjizwrotnej w metodzie five.Board().on("ready").Za pomoc w a ciwo ci offset musisz ustawiw rodkowej pozycji wszystkie 18 serwomotorów.Szczegó owe instrukcje, jak to zrobi , zawarte sw dalszej cz ci rozdzia u. Ponadto, je eli u ywaszinnego typu serwomotorów ni wymienione w tabeli,b dziesz musia zmieni warto ci w a ciwo ci rangeserwomotorów.

Definicja serwomotoru w obiekcie phoenix jestnast puj ca:

phoenix.r1c = new five.Servo({ pin:40, offset: 0, startAt: l.c, range: [50, 180], isInverted: true });// + 17 kolejnych takich definicji…

w a ciwo pin okre la numer pinu nak adki MegaSensor, do którego pod czony jest serwomotor.W a ciwo offset s u y do regulacji pozycjiserwomotoru.

W a ciwo startAt okre la pozycj pocz t-kow serwomotoru.W a ciwo range okre la minimaln i maksy-maln warto k ta, o jaki mo e obróci si ser-womotor.W a ciwo isInverted odwraca warto k taobrotu wysy an do serwomotoru (np. warto180 jest zamieniana na 0, 45 na 135 itd.).

Tabela 5.2 przedstawia funkcje serwomotorów orazpiny wykorzystane przez wszystkie serwomotoryporuszaj ce stawami robota.

Gdy przyjrzysz si dok adniej kodowi, zauwa ysz,e w konfiguracjach serwomotorów tylnych stawów

biodrowych w a ciwo isInverted przyjmujeprzeciwne warto ci ni w przypadku serwomoto-rów w pozosta ych stawach biodrowych z tej samejstrony robota. Jest tak dlatego, poniewa podczasprzesuwania przedniej nogi w przód dwie pozosta enogi musz by przesuwane wstecz. W dalszejcz ci kodu dla ka dej nogi zdefiniowana jest tabelaServo.Array:

phoenix.l1 = new five.Servo.Array([ phoenix.l1c, phoenix.l1f, phoenix.l1t]);// Pi kolejnych podobnych definicji

Po wywo aniu metody klasy Servo.Array, na przy-k ad z obiektu phoenix.l1, w ka dym obiekcie typuServo zawartym w powy szej klasie wywo ywanajest ta sama metoda z takimi samymi argumentami.Klasa Servo.Array jest równie wykorzystywana do

czenia serwomotorów w grupy animacyjne. Wi cejinformacji na ten temat znajduje si w dalszej cz cirozdzia u.

W pliku phoenix.js tworzone s równie nast puj ceobiekty typu Servo.Array:

coxa: sze serwomotorów tworz cych stawybiodrowe,

femur: sze serwomotorów w segmentachudowych,

tibia: sze serwomotorów w segmentachpiszczelowych,

legs: wszystkie serwomotory (osiemna cie sztuk)

Poleć książkęKup książkę

Page 14: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

86 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Tabela 5.2. Lista serwomotorów

Serwomotor Skrót Model Pin

Staw biodrowy lewy 1 L1C HS-485HB 27

Segment udowy lewy 1 L1F HS-645MG 26

Segment piszczelowy lewy 1 L1T HS-5685MH 25

Staw biodrowy lewy 2 L2C HS-485HB 23

Segment udowy lewy 2 L2F HS-645MG 21

Segment piszczelowy lewy 2 L2T HS-5685MH 20

Staw biodrowy lewy 3 L3C HS-485HB 19

Segment udowy lewy 3 L3F HS-645MG 18

Segment piszczelowy lewy 3 L3T HS-5685MH 17

Staw biodrowy prawy 1 R1C HS-485HB 40

Segment udowy prawy 1 R1F HS-645MG 39

Segment piszczelowy prawy 1 R1T HS-5685MH 38

Staw biodrowy prawy 2 R2C HS-485HB 49

Segment udowy prawy 2 R2F HS-645MG 48

Segment piszczelowy prawy 2 R2T HS-5685MH 47

Staw biodrowy prawy 3 R3C HS-485HB 45

Segment udowy prawy 3 R3F HS-645MG 44

Segment piszczelowy prawy 3 R3T HS-5685MH 43

Ponadto tworzona jest tabela zawieraj ca tabele ser-womotorów, która b dzie u yta pó niej podczas ani-mowania u pienia i przebudzenia robota:

phoenix.joints = new five.Servo.Array([ phoenix.coxa, phoenix.femur, phoenix.tibia]);

Jak wida , w pliku phoenix.js tworzonych jest wieleobiektów typu Servo.Array, zawieraj cych ró nekombinacje serwomotorów. Dzi ki takiej konfiguracjiporuszanie segmentami nóg robota b dzie atwiejsze.Zadaniem kodu w tym pliku jest wysy anie polecetylko do wybranych grup serwomotorów.

Monta robota

Zanim poznasz klas Animation, musisz zmonto-wa robota. Wi kszo czynno ci wykonaj wed uginstrukcji dostarczonej przez Lynxmotion. S jednaktrzy miejsca, na które musisz zwróci szczególnuwag . Oto najwa niejsze etapy monta u:

1. Przygotowanie szkieletu. 2. Monta komponentów elektronicznych. 3. Przygotowanie serwomotorów. 4. Monta stawów biodrowych. 5. Monta segmentów udowych. 6. Monta segmentów piszczelowych.

Poleć książkęKup książkę

Page 15: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Monta robota 87

Przygotowanie szkieletuJednym z problemów, które musisz rozwi za , jestmonta komponentów elektronicznych. Firma Lynx-motion zaprojektowa a heksapoda Phoenix pod k temp ytki BotBoarduino. P ytka ta ma otwory monta owew innych miejscach ni Arduino Mega. Ponadto p ytkaArduino Mega jest du a. Jej monta wewn trz szkie-letu robota Phoenix jest idealnym, ale trudnym roz-wi zaniem. Musisz odsun platformy szkieletu natyle, aby dopasowa je do szeroko ci p ytki Mega.Na razie zamontuj p ytk Arduino po prostu na górnejplatformie szkieletu.

Na rysunku 5.2 widoczne s dwa ma e s upki dystan-sowe z tworzywa sztucznego, dopasowane do otwo-rów monta owych w p ytce Arduino Mega. Zwróuwag , e nie s one dopasowane idealnie. P ytka pozamontowaniu b dzie obrócona w stosunku do szkie-letu pod niewielkim k tem. Gdyby Ci to nie odpo-wiada o, wywier dodatkowe otwory monta owe.

Rysunek 5.2. Zmontowany szkielet robota

Od tego momentu do oznaczenia nóg heksapoda b dstosowane skróty R1, R2 i R3 (nogi prawe) oraz L1,L2 i L3 (nogi lewe).

Monta komponentówelektronicznychAby zamontowa elementy elektroniczne, wykonajnast puj ce czynno ci:

1. Przymocuj p ytk Arduino do s upków dystanso-wych 1/2".

2. Za ó nak adk silnikow na p ytk Arduino. 3. W zestawie Phoenix znajduje si wy cznik zasi-lania serwomotorów. Aby go zamontowa , trzebawykona otwór o rednicy 6 mm, poniewa ist-niej ce otwory w szkielecie zostan zas oni teprzez komponenty elektroniczne. Wywier wi cnowy otwór pod wy cznik, który zalecam zamon-towa w pobli u nogi R2. Zamontuj go w szkie-lecie w sposób pokazany na rysunku, przytnijprzewody na odpowiedni d ugo i pod cz jedo z czy zasilania nak adki silnikowej.

4. Akumulator Ni-MH mo na ci le wpasowapomi dzy s upki dystansowe i nie trzeba gomocowa adnymi dodatkowymi elementami.Wsu akumulator obrócony o 45° i umie go wew a ciwym po o eniu. Rysunek 5.3 przedstawiaurz dzenie na obecnym etapie monta u.

Rysunek 5.3. Szkielet robota z zamontowanymikomponentami elektronicznymi

Przygotowanie serwomotorówTeraz przygotuj serwomotory. Wykonaj nast puj ceczynno ci:

1. Pod cz wszystkie serwomotory stawów biodro-wych i segmentów udowych do nak adki MegaSensor zgodnie z tabel 5.2. Pod czenie serwo-motorów segmentów piszczelowych nie jest narazie konieczne, ale je eli chcesz, mo esz tozrobi .

2. Pod cz p ytk Arduino do portu USB komputera,a przewody zasilaj ce do nak adki. Rysunek 5.4przedstawia widok wszystkich komponentów naobecnym etapie monta u.

Poleć książkęKup książkę

Page 16: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

88 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Rysunek 5.4. Pod czone wszystkie serwomotory

3. Nasadki wszystkich serwomotorów musz byustawione jak najdok adniej w rodkowej pozycji.W tym celu przed za o eniem nasadki na serwo-motor musisz ustawi go w rodkowej pozycji.W katalogu, w którym znajduje si plik phoenix.js,wpisz nast puj ce polecenie:node phoenix

4. Serwomotory po zainicjowaniu zostan ustawionew pozycjach odpowiadaj cych warto ci w a-ciwo ci startAt. Wszystkie trzeba ustawi

w pozycji 90°, wi c w p tli REPL wpisz nast -puj ce polecenie:ph.joints.to(90);

5. Wszystkie serwomotory zostan ustawione w po-zycji 90°. Teraz za ó nasadki na serwomotorystawów biodrowych i serwomotory segmentówudowych tak, aby otwory monta owe by y równo-leg e do osi. Nie zak adaj nasadek na serwomo-tory segmentów piszczelowych. Nasadki powinnyby za o one tak, aby otwory znalaz y si w po o-eniu pokazanym na rysunku 5.5.

Rysunek 5.5. Serwomotor ustawiony w pozycji 90°z poprawnie za o on nasadk

6. Wykonaj powy sz czynno dla wszystkich 12serwomotorów stawów biodrowych i segmentówudowych. Nasadki za ó dopiero po wy czeniuzasilania nak adki.

Monta stawów biodrowychW celu zamontowania serwomotorów stawów bio-drowych wykonaj nast puj ce czynno ci:

1. Z ó wszystkie elementy stawów biodrowychi segmentów udowych zgodnie z instrukcjamiproducenta. Zwró uwag , e trzy elementy slustrzanymi odbiciami trzech innych (patrz rysu-nek 5.6).

Rysunek 5.6. Zmontowane stawy biodrowe

2. Teraz przymocuj do szkieletu elementy stawówbiodrowych i segmentów udowych dwóch rod-kowych nóg (R2 i L2). Nie mocuj na razie nasadekdo szkieletu.

3. Przeci gnij przewody od serwomotorów pomi dzynak adk Mega Sensor a szkieletem robota.

4. Pod cz cztery serwomotory do nak adki MegaSensor. Tabela 5.2 zawiera informacje, gdzienale y pod czy ka dy serwomotor.

Serwomotory stawów biodrowychtrzeba przygotowa inaczej niserwomotory segmentów udowychi piszczelowych. Uwa aj, aby niepomyli wkr tów i nie uszkodziserwomotorów.

Poleć książkęKup książkę

Page 17: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Monta robota 89

5. Pod cz p ytk Arduino do komputera i akumu-latory do nak adki, uruchom program phoenix.jsi ustaw wszystkie serwomotory w pozycji 90°.Pami taj, e na razie zajmujesz si tylko stawamibiodrowymi.

6. Obró serwomotory stawów biodrowych tak, abynasadki na serwomotorach segmentów udowychby y skierowane w przód, a otwory monta owew nasadkach by y dopasowane do otworóww rusztowaniu. Serwomotory stawów biodrowychnie musz by umieszczone pod idealnym k temw stosunku do szkieletu. Nie przejmuj si , dopa-sujesz je pó niej.

7. Po cz nasadki ze szkieletem za pomoc wkr tów,ale jeszcze ich nie dokr caj.

8. Od cz przewód USB i przewody zasilaj ce,a nast pnie dokr wszystkie cztery wkr tyw ka dej nasadce serwomotoru.

9. Wykonaj kroki 1. – 8. dla nóg przednich (R1 i L1).Zwró uwag , e otwory monta owe w nasadceserwomotoru stawu biodrowego s obrócone podk tem 45°. Oba segmenty udowe b d ustawionepod k tem 45° w kierunku na wprost heksapoda.

10. Na koniec powtórz kroki 1. – 8. dla nóg tylnych(R3 i L3). Otwory monta owe równie b d obró-cone o 45°. Oba segmenty udowe b d usta-wione pod k tem 45° w kierunku do ty u hek-sapoda.

11. Uruchom program phoenix.js i przymocuj nasadkido serwomotorów segmentów udowych ustawio-nych w pozycji 90°.

12. Od cz przewód USB i przewody zasilaj ce. 13. Dokr cztery wkr ty w ka dej nasadce serwo-motoru.

Rysunek 5.7 przedstawia efekt dotychczasowej pracy.

Monta segmentów udowychAby zamontowa segmenty udowe, wykonaj nast -puj ce czynno ci:

1. Uruchom program phoenix.js i ustaw wszystkieserwomotory w pozycji 90°.

Rysunek 5.7. Szkielet robota ze wszystkimisze cioma stawami biodrowymi

2. Do segmentów udowych powinny ju by przy-mocowane nasadki. Za ó je na serwomotorysegmentów udowych wszystkich sze ciu nóg.Segmenty udowe b d ustawione na wprost, nie-mal równolegle do pod o a.

3. Zatrzymaj program phoenix.js, naciskaj c klawiszeCtrl+C, i od cz p ytk Arduino od komputera.Teraz mo esz bezpiecznie przykr ci segmentyudowe do serwomotorów. Rysunek 5.8 przed-stawia zamontowane segmenty.

Rysunek 5.8. Wszystkie segmenty udowe juzamontowane

Monta segmentówpiszczelowychMonta jest prawie zako czony, pozosta y tylko seg-menty piszczelowe. Wykonaj nast puj ce czynno ci:

Poleć książkęKup książkę

Page 18: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

90 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

1. Przymocuj sze segmentów piszczelowych doserwomotorów. Zwró uwag , e trzy elementys lustrzanymi odbiciami trzech innych.

2. Pod cz przewody od serwomotorów segmentówpiszczelowych do nak adki, ale nie mocuj jesz-cze serwomotorów do segmentów udowych.

Po ponownym uruchomieniu programuphoenix.js porusz si serwomotorywszystkich stawów. Je eli robot jestpo o ony p asko na stole, mo ezmieni po o enie i spowodowapowa ne zamieszanie. Od tej chwiliprzed uruchomieniem programuphoenix.js musisz trzyma robotanad pod o em. Mo esz go trzymaw r ce, albo lepiej — zbudowaspecjalne stanowisko testowe i z niegokorzysta . B d ostro ny, je elipostanowisz trzyma robota w d oni— potrafi uszczypn .

3. Uruchom program i ustaw wszystkie serwomo-tory w pozycji 90°.

4. Przymocuj serwomotory segmentów piszczelo-wych do segmentów udowych. Ko cówki nógpowinny znajdowa si pod nasadkami serwo-motorów segmentów piszczelowych. Ustaw seg-menty pod niewielkim k tem w kierunku dowewn trz szkieletu.

5. Od cz przewód USB i zasilanie i przykr serwo-motory segmentów piszczelowych do segmen-tów udowych.

Teraz jest odpowiedni moment, aby za pomoc opa-sek zaciskowych uporz dkowa przewody i przy-mocowa je w odpowiednich miejscach. Pami tajo pozostawieniu odpowiedniego zapasu, aby ka danoga mog a porusza si w pe nym zakresie. Niepozostawiaj zbyt du ego zapasu, aby przewody niezaczepia y o nogi. Rysunek 5.9 przedstawia robotaz zamontowanymi segmentami piszczelowymi.

Rysunek 5.9. Zamontowane segmenty piszczelowei serwomotory wszystkich stawów ustawione podk tem 90°

Uk ad wspó rz dnych

W tym projekcie dla ka dej nogi b dzie zastosowanyosobny, lokalny uk ad wspó rz dnych. Zamiast defi-niowania po o enia ko cówek nóg w przestrzeni zapomoc trzech wspó rz dnych X, Y, Z b d stoso-wane warto ci k tów obrotów serwomotorów. Jest totzw. przegubowy uk ad wspó rz dnych. Uk ad tennie pozwala stosowa tak zaawansowanych metodanimacji jak np. kinematyka odwrotna w globalnymuk adzie wspó rz dnych, ale lepiej nadaje si do po-znania klasy Animation.

Poniewa w programie phoenix.js wykorzystany jestprzegubowy uk ad wspó rz dnych, ka dy serwomotorustawiany jest pod okre lonym k tem. Obracany jestrównie lokalny uk ad wspó rz dnych tak, aby osieby y ustawione równolegle. Ponadto odwracane skierunki obrotów po lewej i prawej stronie robota, jakrównie po stronie przedniej i tylnej.

Taka konfiguracja powoduje, e poruszanie robotemjest maksymalnie u atwione. Je eli zamierzasz opro-gramowa w asny sposób poruszania robotem, przy-datne jest narysowanie uk adu wspó rz dnych na sta-nowisku testowym. rodek uk adu przyjmij w rodkuszkieletu robota, a jako jednostk miary ustal jedencentymetr.

Poleć książkęKup książkę

Page 19: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Regulacja serwomotorów 91

Regulacja serwomotorów

Do tej pory stara e si jak najdok adniej dopasowanasadki serwomotorów, jednak wypustki ograniczajpo o enia przek adni i wszystkie nasadki mog byobrócone o kilka stopni. Do zniwelowania tego efektuwykorzystaj w a ciwo offset w obiektach kon-figuracyjnych serwomotorów.

Kalibracja wszystkich serwomotorów u atwi procesprogramowania animacji robota. Je eli podczas wyko-nywania kroku w przód k t obrotu ka dego stawubiodrowego b dzie dok adnie taki sam, wtedy zaka dym razem b dziesz musia wylicza tylko jedenparametr ruchu. W d u szej perspektywie op aci sipo wi ci czas na wykonanie tej wst pnej pracy.

Regulacja stawów biodrowychNajpierw wyreguluj serwomotor stawu biodrowegoL2C:

1. Gdy popatrzysz na robota z góry (rysunek 5.10),segment udowy powinien by ustawiony podk tem prostym w stosunku do robota (równo-legle do osi x uk adu wspó rz dnych). Je eli u y-wasz stanowiska testowego z narysowanym uk a-dem wspó rz dnych, powiniene móc to atwosprawdzi . Je eli serwomotor L2C ma obróci sizgodnie ze wskazówkami zegara, nale y ustawigo pod k tem wi kszym ni 90°. Je eli ma obró-ci si w przeciwnym kierunku, zmniejsz powy szwarto . Zwi kszaj za ka dym razem k t o kilkastopni, aby znale warto , przy której serwo-motor b dzie ustawiony najdok adniej. Nie u y-waj u amkowych warto ci, poniewa platformaJohnny-Five wysy a do serwomotorów tylko war-to ci ca kowite:ph.joints.to(91); // Lepsze ustawienieph.joints.to(94); // O, za daleko!ph.joints.to(93); // Super!

2. Po okre leniu dok adnej warto ci musisz od niejodj liczb 90, aby obliczy warto w a ci-wo ci offset. W tym przypadku b dzie to dzia a-nie 93–90 = 3, wi c w a ciwo offset otrzymawarto 3. Warto ta pe ni dok adnie tak samrol jak trymer w nadajniku do zdalnego stero-

Rysunek 5.10. Wyregulowany staw biodrowy

wania. Jej przeznaczeniem jest ustawienie w rod-kowej pozycji serwomotoru obróconego o kilkastopni.

3. W kodzie phoenix.js odszukaj wiersz, w którymtworzony jest obiekt l2c, i zmie warto w a ci-wo ci offset:l2c = new five.Servo({ pin: 27, invert: true, offset: 3, startAt: 90, range: [50, 130]})

4. Powtórz kroki 1. i 2. dla serwomotoru R2C.Pami taj, e ten serwomotor jest odwróconyw stosunku do serwomotoru po lewej stronie.B dziesz musia odwróci warto ci k ta obrotu.

5. Teraz wyreguluj serwomotor L1C. Segment jestustawiony pod k tem ok. 45° w stosunku doosi x, ale musi by do niej równoleg y, wi custaw serwomotor pod k tem 45°. Segmentpowinien ustawi si do dok adnie, jednakb dziesz musia wyregulowa jego po o enie.Ca y proces wygl da nast puj co:ph.joints.to(45); // Znacznie lepiejph.joints.to(47); // le, nie tak!ph.joints.to(44); // Super!

6. Po wyregulowaniu odejmij od uzyskanej warto ciliczb 90. B dzie to warto (ujemna) w a ciwo cioffset.

7. Zmie warto w a ciwo ci offset w obiekciel1c. Cz sto zdarza si , e jest to du a liczba,np. 20.

Poleć książkęKup książkę

Page 20: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

92 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

8. Powtórz kroki 4. – 6. dla pozosta ych trzechserwomotorów stawów biodrowych, a nast p-nie zatrzymaj i uruchom ponownie programphoenix.js. Teraz wszystkie serwomotory sta-wów biodrowych po ustawieniu pod k tem 90°powinny by równoleg e do osi x.

Regulacja segmentów udowychRegulacja segmentów udowych jest podobna do opi-sanej wy ej regulacji stawów biodrowych. Jak po-przednio, segmenty udowe po ustawieniu serwomo-torów w pozycji 90° powinny by równoleg e do osi x:

1. Patrz c na robota od przodu lub od ty u, wyregulujserwomotory segmentów udowych tak, aby seg-menty by y skierowane równolegle do pod o a.

2. Od otrzymanych warto ci odejmij liczb 90, abyobliczy warto ci w a ciwo ci offset.

3. Ustaw w a ciwo ci offset dla wszystkich sze ciuobiektów serwomotorów segmentów udowychl1f, r1f, l2f, r2f, l3f oraz r3f. Rysunek 5.11przedstawia wyregulowane segmenty.

Rysunek 5.11. Wyregulowany segment udowy

Regulacja segmentówpiszczelowychNa koniec wyreguluj segmenty piszczelowe. Tym razemmusisz wyregulowa ka dy serwomotor tak, aby poustawieniu go w pozycji 90° linia poprowadzona odrodka nasadki serwomotoru segmentu piszczelo-

wego do jego ko ca tworzy a z pod o em k t prosty(patrz rysunek 5.12).

Rysunek 5.12. Wyregulowany segment piszczelowy

Po wyliczeniu wszystkich warto ci w a ciwo cioffset wpisz je w pliku phoenix.js w definicjachobiektów l1t, r1t, l2t, r2t, l3t i r3t.

Okre lenie zakresów ruchuserwomotorów

Teraz okre l zakres ruchu ka dego serwomotoru.Wi kszo serwomotorów nie obraca si w pe nymzakresie 180°. Jest to normalne. Aby uzyska pe nyzakres, mo e by wymagane przeprogramowanieserwomotoru lub w czenie pomi dzy serwomotorema nak adk silnikow uk adu zwi kszaj cego zakresobrotu. W przypadku heksapoda nie b dzie potrzebnype ny zakres, wi c nie musisz si tym przejmowa .W rzeczywisto ci b dziesz musia zakres jeszcze bar-dziej ograniczy , aby serwomotory nie ustawia y siw pozycjach powoduj cych zaczepianie nóg o siebie.

W tej cz ci b dziesz za ka dym razem sterowatylko jednym serwomotorem. Wykonaj nast puj ceczynno ci:

1. Jak poprzednio, zacznij od stawu biodrowegonogi L2. Aby okre li w a ciwe granice, musiszobraca serwomotorem w obu kierunkach. Ser-womotor jest w stanie obraca si w wi kszymzakresie, ni jest to konieczne.

2. Metod prób i b dów okre l zakres obrotóww obu kierunkach. Gdy przy pewnej warto ci ser-womotor przestanie reagowa , b dzie to znak, ewykroczy e poza zakres ruchu. Je eli na przy-k ad serwomotor obróci si przy warto ci 165,

Poleć książkęKup książkę

Page 21: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Chodzenie jest trudne! 93

ale nie b dzie reagowa dla warto ci 166, b dzieto oznacza , e górn granic zakresu stanowiwarto 165. Proces regulacji wygl da nast -puj co:ph.l2c.to(60); // Wci jest miejsceph.l2c.to(58); // To dobra pozycjaph.l2c.to(122); // Segmenty udowe zaczepiaj // o siebieph.l2c.to(119); // SUPER!

3. W pliku phoenix.js odszukaj wiersz, w którymtworzony jest obiekt l2c, i we w a ciwo ci rangewpisz okre lone przed chwil warto ci:l2c = new five.Servo({ pin:27, invert: true, offset: 3, startAt: 90, range: [58, 119]})

4. Powtórz kroki 1. – 3. dla pozosta ych pi ciuserwomotorów stawów biodrowych i zmiew a ciwo ci range w obiektach l1c, l3c, r1c,r2c oraz r3c.W przypadku serwomotorów segmentów udo-wych i piszczelowych zakres ruchu jest znaczniewi kszy, poniewa istnieje mniejsze prawdopo-dobie stwo, e podczas obracania serwomo-torów nogi b d zaczepia o siebie. W praktyceprawdopodobnie b dziesz wykorzystywa pe nyzakres ruchu serwomotorów zarówno segmen-tów udowych, jak i piszczelowych.

5. Poeksperymentuj i znajd warto ci, przy którychserwomotory ju si nie obracaj . Mo eszzastosowa t sam metod prób i b dów jakw przypadku serwomotorów stawów biodrowych.Pami taj, e zakresy ruchu wszystkich serwo-motorów segmentów udowych powinny by takiesame (lub podobne).

6. Zmie w a ciwo ci range dla wszystkich obiek-tów serwomotorów segmentów udowych: l1f,l2f, l3f, r1f, r2f i r3f.

7. Zakresy ruchu wszystkich serwomotorów seg-mentów piszczelowych równie musz by takiesame. Okre l te zakresy.

8. W pliku phoenix.js zmie w a ciwo ci rangew obiektach l1t, l2t, l3t, r1t, r2t, r3t.

Korzy ci z okre lenia rzeczywistego zakresu ruchuserwomotorów mog nie by oczywiste. Gdybyustawi k t obrotu na 175° dla serwomotoru, którymo e ustawi si pod k tem 165°, wtedy ko ce nógnie zostan ustawione w pozycjach, których oczekujeprogram phoenix.js, i klasa Animation przyjmie, erobot wci si porusza, mimo e serwomotor si nieobraca. Nie b dzie to po dany efekt.

Po zako czeniu konfiguracji obiekty serwomotorówsegmentów udowego i piszczelowego nogi L2 b dwygl da y jak poni ej:

l2f = new five.Servo({ pin:22, invert: true, offset: -2, startAt: 180, range: [25, 165]}),l2t = new five.Servo({ pin:21, invert: true, offset: 4, startAt: 180, range: [21, 159]}),

Po ustawieniu warto ci w a ciwo ci offset i rangedla wszystkie 18 serwomotorów czas na zabaw !Uruchom robota!

Chodzenie jest trudne!

Oczywi cie jest mo liwe poruszanie robotem bezkorzystania z klasy Animation, ale wymaga to w o e-nia mnóstwa pracy. By mo e wydaje Ci si , e prze-suni cie robota w przód wymaga jedynie postawieniako ca nogi na pod o u i obrócenia stawu biodrowegowstecz. Problem jednak polega na tym, e ko cówkanogi zakre la uk o rodku znajduj cym si w osiobrotu stawu biodrowego, jak pokazuje rysunek 5.13.Ka da noga zakre la wtedy w asny uk i utrudnia funk-cjonowanie innych nóg. Z tego powodu chodzeniewygl da bardzo niezgrabnie.

Aby zniwelowa ten efekt i aby ko cówka nogi poru-sza a si po linii prostej równolegle do kierunku ruchurobota, jak pokazuje rysunek 5.14, trzeba segment

Poleć książkęKup książkę

Page 22: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

94 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

sterowany serwomotor lub grupa serwomotorów.Grup mo e by równie tabela serwomotorów, czyliobiekt Servo.Array, lub tabela serwomotorówi obiektów Servo.Array. Poniewa mo e to wyda-wa si skomplikowane, poznaj kilka przyk adów.

Tabela serwomotorówjako grupa docelowaW listingu 5.1 trzy serwomotory wchodz ce w sk adnogi L1 s poruszane niezale nie.

Listing 5.1. Tabela serwomotorów

board = new five.Board().on("ready",function() { var l1c = new five.Servo(27); var l1f = new five.Servo(26); var l1t = new five.Servo(25); var myAnimation = new five.Animation([ l1c, l1f, l1t]); // …});

Rysunek 5.13. Ten robot chodzi, jakby by pijany

Rysunek 5.14. Taka sekwencja ruchów zapewniap ynne chodzenie

piszczelowy przesuwa do wewn trz i na zewn trz.Ale zaczekaj! Podczas przesuwania segmentu pisz-czelowego do wewn trz i na zewn trz ko cówka nogiporusza si w gór i w dó w stosunku do pod o a,wi c trzeba jeszcze podnosi i opuszcza segmentudowy, aby skompensowa ten efekt.

Aby robot porusza si p ynnie, wszystkie 18 serwo-motorów musi nieustannie ze sob wspó pracowaw zgrany sposób jak w orkiestrze. To zadanie mo ewydawa si bardzo trudne, ale platforma Johnny-Fivei klasa Animation pozwala nad wszystkim zapa-nowa .

Poznaj klas Animation

Klasa Animation jest wykorzystywana do sterowaniarobotami za pomoc skryptów definiuj cych ich ruchy.Klasa ta stanowi opakowanie klasy Servo. Oferujeharmonogramy, kluczowe ramki, p ynne przej ciaz jednej ramki do drugiej (ang. tweening) i punktykontrolne (ang. cue points). Grup docelow stanowi

Taki kod pozwala wys a do ka dego z serwomoto-rów inn warto w dowolnym punkcie kontrolnymharmonogramu.

Obiekt Servo.Arrayjako grupa docelowaWynik wykonania kodu przedstawionego w listingu5.2 jest taki sam jak poprzedniego kodu. Zwró jednakuwag , e jako domy lna grupa docelowa przeka-zywany jest jeden obiekt Servo.Array. Podobniejak poprzednio, grupa jest jednowymiarow tabel .

Tabela obiektów Servo.Arrayjako grupa docelowaW ostatnim listingu 5.3 serwomotory s zgrupowanewed ug typów stawów. Dzi ki temu mo liwe jest ste-rowanie serwomotorami stawów biodrowych jakojedn grup , serwomotorami segmentów udowych

Poleć książkęKup książkę

Page 23: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Pierwszy segment animacyjny 95

Listing 5.2. Obiekt Servo.Array

board = new five.Board().on("ready", function() { var l1c = new five.Servo(27); var l1f = new five.Servo(26); var l1t = new five.Servo(25); var l1 = new Servo.Array([ l1c, l1f, l1t ]); var myAnimation = new five.Animation(l1); // …});

jako drug grup i serwomotorami segmentów pisz-czelowych jako trzeci . Przekazanie warto ci k to-wej w argumencie metody obiektu reprezentuj cegoca grup powoduje przekazanie tej samej warto ciw argumentach metod wszystkich obiektów serwo-motorów w danej grupie.

Listing 5.3. Tabela obiektów Servo.Array

board = new five.Board().on("ready",function() {

var l1c = new five.Servo(27); var l1f = new five.Servo(26); var l1t = new five.Servo(25); var l2c = new five.Servo(23); var l2f = new five.Servo(22); var l2t = new five.Servo(21); var coxa = new Servo.Array([ l1c, l2c ]); var femur = new Servo.Array([ l1f, l2f ]); var tibia = new Servo.Array([ l1t, l2t ]); // Dwuwymiarowa tabela tabel var myAnimation = new five.Animation([ coxa, femur, tibia ]); // …});

Dzi ki zastosowaniu klasy Servo.Array mo naw jednej grupie docelowej umieszcza serwomo-tory i inne obiekty Servo.Array. Grup serwomo-torów w tabeli Servo.Array mo na sterowa taksamo jak ka dym innym urz dzeniem.

Teraz przyjrzyj si wierszowi pliku phoenix.js, w którymtworzona jest instancja klasy Animation i definio-wana domy lna grupa docelowa:

var legsAnimation = newfive.Animation(phoenix.legs);

W powy szym wierszu domy lna grupa docelowaphoenix.legs jest obiektem typu Servo.Arrayzawieraj cym 18 serwomotorów robota. Ta domy lnagrupa wymaga okre lenia warto ci dla ka dego ser-womotoru w ka dym punkcie kontrolnym harmo-nogramu.

Pierwszy segmentanimacyjny

Po utworzeniu obiektu animacyjnego mo na zdefinio-wa segmenty animacyjne. Segment animacyjny tokrótka sekwencja ruchów. Segmenty to miejsca,w których zdefiniowane s wszystkie k ty obrotówserwomotorów, punkty kontrolne, czasy trwania ruchui funkcje wyg adzaj ce. Krótko mówi c, jest to miej-sce, w którym dzieje si ca a magia animacyjna.

Segmenty animacyjne s wykonywane synchroniczne.Po umieszczeniu w kolejce animacyjnej wykonywanes zgodnie z zasad „pierwszy wchodzi, pierwszywychodzi”. Po uruchomieniu programu phoenix.jssegmenty mo na wywo ywa z p tli REPL. Poni szaseria polece powoduje, e robot powstaje, idzie,zatrzymuje si i zasypia:

> node phoenixph.stand();ph.walk();ph.stop();ph.sleep();

Poleć książkęKup książkę

Page 24: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

96 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Powy sze segmenty zosta y ju zdefiniowane w pro-gramie phoenix.js, wi c nie musisz ich tworzy aniedytowa . Poni ej przedstawione s fragmenty pro-gramu, które u atwi Ci poznanie zawarto ci seg-mentów animacyjnych.

Przyjrzyj si pokazanemu w listingu 5.4 pierwszemuzdefiniowanemu w pliku phoenix.js segmentowi ani-macyjnemu.

Opcjonalna w a ciwo target definiuje grupanimowanych serwomotorów. Po utworzeniuobiektu typu Animation domy ln warto ci tejw a ciwo ci jest grupa docelowa phoenix.legs.W tym segmencie jest ona zast powana grupphoenix.altJoints. Wpisuj c inn warto tejw a ciwo ci, mo na sterowa inn grup ser-womotorów. Wszystkie serwomotory w grupies skojarzone z tym samym harmonogramemi kolejk animacyjn . Je eli we w a ciwo citarget nie wska esz w asnej grupy, wtedyw danym segmencie zostanie u yta domy lnagrupa docelowa.W opcjonalnej w a ciwo ci duration okre lanyjest w milisekundach czas trwania animacji. Zwróuwag , e zmiana pr dko ci animacji podczasodtwarzania segmentu powoduje wyd u enie lubskrócenie jego czasu trwania (domy lnie w a-ciwo ta ma warto 1000 ms).

Opcjonalna w a ciwo cuePoints (punktykontrolne) jest jednowymiarow tabel war-to ci z zakresu od 0,0 do 1,0. Ka dy segmentanimacyjny ma w asny harmonogram. W har-monogramie mo na zdefiniowa dowoln liczbpunktów kontrolnych, w których urz dzenia ssterowane za pomoc kluczowych ramek. Punktykontrolne i kluczowe ramki nie musz by roz-mieszczone w regularnych odst pach czasu.W tym przypadku, gdy czas trwania segmentujest równy 500 ms, punkty kontrolne odpowia-daj warto ciom 50 ms, 150 ms, 350 ms i 500ms. Zmiana czasu trwania animacji powodujezmian skali czasu, w którym realizowane swszystkie punkty kontrolne (domy lnie s topunkty [0, 1]).Ta funkcja jest wywo ywana po zako czeniuwykonywania segmentu animacyjnego.W a ciwo keyFrames (kluczowe ramki) jestw a ciwo ci obowi zkow . Jest to dwuwymia-rowa tabela. Pierwszy wymiar odpowiada urz -dzeniom w grupie docelowej i jego d ugo musiby równa d ugo ci grupy. Aby okre li urz dze-nia powi zane z ka dym elementem pierwszegowymiaru, przyjrzyj si kodowi przedstawionemuw listingu 5.5, w którym zdefiniowana jest grupadocelowa phoenix.altJoints.

Listing 5.4. Segment animacyjny powoduj cy powstanie robota

var stand = { target: phoenix.altJoints, duration: 500, cuePoints: [0, 0.1, 0.3, 0.7, 1.0], oncomplete: function() { phoenix.state = "stand"; }, keyFrames: [ ///5 [null, { degrees: 90 }], [null, { degrees: 66 }], [null, false, false, { degrees: 120, easing: easeOut}, { degrees: 94, easing: easeIn}], [null, false, { degrees: 106}, false, { degrees: 93 }] ]};

Poleć książkęKup książkę

Page 25: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Pierwszy segment animacyjny 97

Listing 5.5. Grupa docelowa phoenix.altJoints

altJoints = new five.Servo.Array([ phoenix.innerCoxa, phoenix.outerCoxa, phoenix.femurs, phoenix.tibia]),

W grupie phoenix.altJoints znajduj si obiektyreprezentuj ce cztery urz dzenia: phoenix.midCoxa,phoenix.outerCoxa, phoenix.femur i phoenix.tibia. Ka dy z nich jest obiektem typu

Servo.Array, zawieraj cym dwa, cztery lub szeobiektów reprezentuj cych serwomotory:

element keyFrames[0] jest skojarzony z ser-womotorami rodkowych stawów biodrowych,

element keyFrames[1] jest skojarzony z serwo-motorami przednich i tylnych stawów biodrowych,

element keyFrames[2] jest skojarzony z serwo-motorami segmentów udowych,

element keyFrames[3] jest skojarzony z serwo-motorami segmentów piszczelowych.

Ka da tabela keyFrames zawiera od 1 do n elemen-tów, gdzie n oznacza liczb punktów kontrolnych.Przeanalizujmy kilka tabel z segmentu stand powo-duj cego powstanie robota. Najpierw przyjrzyjmy sielementowi keyFrames[0] odpowiadaj cemu grupieinnerCoxa:

[null, false, { degrees: 88 }],

W elemencie keyFrames[0][0] zdefiniowana jestwarto dla pierwszego urz dzenia w grupie docelo-wej, wykorzystywana w punkcie kontrolnym w chwili0 ms. W elemencie keyFrames[0][1] zdefinio-wana jest warto wykorzystywana w punkcie kon-trolnym 50 ms. Do okre lenia warto ci po rednichw przedziale czasu od 0 ms do 50 ms wykorzysty-wana jest funkcja wyg adzaj ca.

Pierwsza warto w pierwszym elemencie keyFrames jest równa null. Oznacza ona, e animacja

powinna rozpoczyna si od bie cej pozycji urz -dzenia. Je eli urz dzenie jest zdefiniowane za pomocobiektu Servo.Array, wtedy bie ca pozycja jest

odczytywana z pierwszego elementu tego obiektu.Je eli warto null znajduje si w innym elemencietabeli keyFrames, wówczas klasa Animation pomijaramk dla danego urz dzenia. W tej tabeli zdefinio-wane s warto ci tylko pierwszych dwóch punktówkontrolnych. We wszystkich pozosta ych wykorzy-stywana jest ostatnia zdefiniowana warto (tj. 70).

Teraz przyjrzyjmy si elementowi keyFrames[3](odpowiadaj cemu serwomotorom segmentów pisz-czelowych):

[null, { degrees: 110}, false,{ degrees: 110}]

Je eli element w tabeli keyFrames zawiera wartofalse, wówczas klasa Animation kopiuje wartoobliczon dla poprzedniego elementu. Umieszczeniew pierwszych dwóch elementach warto ci nulli false powoduje, e klasa Animation w ogólenie b dzie sterowa urz dzeniami, dopóki nie miniedrugi punkt kontrolny.

Je eli w elemencie zostanie podana liczba, wtedy klasaAnimation doda j do poprzedniej warto ci.

Ten segment animacyjny powoduje, e heksapodprzechodzi z pozycji u pienia w pozycj wyj ciow(pozycja wyj ciowa jest przyjmowana jako pozycjastartowa w wi kszo ci segmentów animacyjnych).

Gry porównasz kod z listingu 5.5z kodem w pliku phoenix.js, zauwa yszró nice. W pliku zamiast jawnychwarto ci liczbowych s u yte elementyz tabeli h. Tabela ta, zdefiniowanana pocz tku pliku, zawiera informacjeo pozycjach serwomotorów dlawszystkich podstawowych krokówrobota. Dzi ki zapisaniu tych warto ciw jednym miejscu atwiej je stosowai modyfikowa w dalszej cz ci kodu.Poniewa zastosowanie elementówtabeli powoduje, e kod jest bardziejskomplikowany, w opisywanychprzyk adach zosta y u yte liczby.

Poleć książkęKup książkę

Page 26: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

98 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Chodzenie

Sekwencje kroków robota dziel si na dwie g ównekategorie: statyczne i dynamiczne. Podczas wykony-wania kroków statycznych rodek ci ko ci robotaw ka dym momencie jest utrzymywany na stabilnymoparciu (przynajmniej na trzech nogach). Innymi s owyrobot nie przewróci by si , gdyby w dowolnym mo-mencie zosta zatrzymany w pó kroku. Podczas wyko-nywania kroku dynamicznego przez pewien czaswyst puje stan nierównowagi. Program phoenix.jswykonuje tylko kroki statyczne.

Jak wspomnia em wcze niej, sekwencja kroków hek-sapoda jest bardziej skomplikowana, ni mog oby sito wydawa . Aby przesun robota w przód, nie wy-starczy poruszy jedynie stawami biodrowymi, ponie-wa spowodowa oby to obrócenie si ko cówek nógwokó osi serwomotorów stawów biodrowych. Ko -cówka nogi musi porusza si wzd u linii prostej.

Przesuwanie ko cówki nogi wzd u linii prostejwymaga skoordynowania ruchów wszystkich trzechserwomotorów nogi. Przesuwanie w przód ca egoszkieletu robota wymaga wspó pracy wszystkich 18serwomotorów, które musz ustawia ko cówki nógw okre lonych miejscach na pod o u. Je eli serwo-

motory nie b d wspó pracowa , robot b dzie pow ó-czy nogami po pod o u i kroki nie b d p ynne.

W programie phoenix.js zdefiniowane s cztery rodzajekroków: wios owanie (row), kraul (crawl), marsz(walk) i bieg (run). W ka dym rodzaju kroku przy-j ty jest odcinek przesuni cia (odleg o pomi dzypocz tkow a ko cow pozycj ko cówki nogi)równy 8 cm. Teraz przyjrzyjmy si dok adniej ka -demu rodzajowi kroku.

Wios owanie (row)Sekwencja ruchów w tym kroku (zwanym równiefal ) powoduje przesuwanie nóg parami do przodu,a nast pnie przesuwanie szkieletu do przodu. Nie jestto elegancki krok (patrz rysunek 5.15), ale prostyw implementacji, poniewa wymaga umieszczeniaw tabeli keyFrames tylko o miu elementów.

Do zdefiniowania ruchu nogi potrzebne s tylkotrzy punkty kontrolne. Pierwszy z nich zawierawarto null lub false, wi c ruch nogi rozpo-czyna si od bie cych pozycji urz dze , niezale -nie od tego, jakie one s . Drugi punkt kontrolny de-finiuje moment zgi cia nogi, natomiast trzeci — jejko cowy ruch. Ilustruje to listing 5.6.

Rysunek 5.15. Fala

Listing 5.6. Wios owanie

var row = { target: phoenix.jointPairs, duration: 1500,

Poleć książkęKup książkę

Page 27: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Chodzenie 99

cuePoints: [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.85, 1.0], loop: true, fps: 100, onstop: function() { phoenix.att(); }, oncomplete: function() { }, keyFrames: [ [null, null, null, null, false, null, {degrees: 56}, false, {degrees: 70}, {degrees: 91}], [null, null, null, null, false, { step: 30, easing: easeOut }, {degrees: 116}, false, {degrees: 120}, {degrees: 119}], [null, null, null, null, false, { step: -20, easing: easeOut }, {degrees: 97}, false, {degrees: 110}, {degrees: 116}], // …dwie nast pne pary nóg ]}

Marsz (walk)W tym kroku (patrz listing 5.7) cztery nogi pozostajprzez ca y czas w kontakcie z pod o em. Krok rozpo-czyna si od przesuni cia jednej nogi do przodu. Gdynoga zostanie zgi ta, do przodu przesuwana jest druganoga. Pierwsza noga oprze si na pod o u w tymsamym momencie, w którym zostanie zgi ta druganoga. Jednocze nie do przodu przesuwana jest trze-cia noga.

Listing 5.7. Marsz

Graficzne przedstawienie kluczowych ramek dla tegokroku jest trudne, wi c ich opis zosta pomini ty. Gdy-by chcia zbada , jak jest realizowany ten krok, ustaww a ciwo duration segmentu na 20 000 ms. Krokb dzie wtedy wykonywany w zwolnionym tempie.

var walk = { duration: 2000, cuePoints: [0, 0.071, 0.143, 0.214, 0.286, 0.357, 0.429, 0.5, 0.571, 0.643, 0.714, 0.786, 0.857, 0.929, 1], loop: true, loopback: 0.5, fps: 100, onstop: function() { phoenix.att(); }, oncomplete: function() { }, keyFrames: [ [null, null, {degrees: 82}, null, null, null, null, {degrees: 82}, null, {56}, null, null, null, null, {degrees: 82}], // r1c [null, { step: 30, easing: easeOut }, {degrees: 119, easing: easeIn}, null, null, null, null, {degrees: 119}, { step: 30, easing: easeOut }, {degrees: s.f.f[0], easing: easeIn}, null, null, null, null, {degrees: 119}], [null, { step: -20, easing: easeOut }, {degrees: 119, easing: easeIn}, null, null, null, null, {degrees: 119}, { step: -20, easing: easeOut }, {degrees: 97, easing: easeIn}, null, null, null, null, {degrees: 119}], // …pi nast pnych nóg ]};

Poleć książkęKup książkę

Page 28: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

100 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Bieg (run)Ten krok (zwany popularnie trójnogiem, zdefiniowanyw listingu 5.8) powoduje najszybsze przemieszczaniesi robota, ale obci a serwomotory segmentówudowych i piszczelowych. Stosuj go rzadko. W tymkroku jednocze nie poruszane s trzy nogi, nato-miast trzy inne pozostaj w kontakcie z pod o emi musz one utrzyma wi kszy ci ar ni w przy-padku pozosta ych kroków.

Obracanie robota

Obracanie robota jest trudniejsze ni wykonywaniekroków. Ko cówki nóg nie poruszaj si wtedy poliniach prostych, ale zakre laj koncentryczne ukio rodkach znajduj cych si w rodku szkieleturobota. Promie uku dla nóg R2 i L2 jest inny nidla pozosta ych czterech nóg.

Krok obracaj cy robota jest bardzo podobny do krokubiegowego. Trzy nogi pozostaj w kontakcie z pod-o em, a pozosta e obracaj si o k t pomi dzy15° a 30°.

W programie phoenix.js zdefiniowane s dodat-kowe, nieopisane tutaj segmenty animacyjne: sleep(u pienie), waveRight (przesuni cie przedniej prawej

Listing 5.8. Bieg

nogi), waveLeft (przesuni cie przedniej lewej nogi)i pe zanie (crawl). Wypróbuj je po wyregulowaniu ro-bota i uzyskaniu prawid owego kroku.

Lista polece

Wszystkie poni sze polecenia mo na wpisywa w p tliREPL podczas ruchów robota:

ph.stand() (powstanie) ph.sleep() (u pienie) ph.walk() (marsz) ph.crawl() (pe zanie) ph.row() (wios owanie) ph.badRow() (inne wios owanie) ph.run() (bieg) ph.run("rev") (bieg do ty u) ph.turn() (obrót) ph.turn("left") (obrót w lewo) ph.stop() (zatrzymanie) ph.waveLeft() (przesuni cie przedniej prawejnogi)

ph.waveRight() (przesuni cie przedniej lewejnogi)

ph.att() (powrót do pozycji wyj ciowej)

var run = { duration: 1000, cuePoints: [0, 0.25, 0.5, 0.75, 1.0], loop: true, fps: 100, onstop: function() { phoenix.att(); }, oncomplete: function() { }, keyFrames: [ [ null, {degrees: 70}, {degrees: 56}, null, {degrees: 91}], [ null, {degrees: 120}, {degrees: 116}, { step: 30, easing: easeOut }, {degrees: 119, easing: easeIn}], [ null, {degrees: 110}, {degrees: 97}, { step: -20, easing: easeOut }, {degrees: 116, easing: easeIn}], // …5 nast pnych nóg ]};

Poleć książkęKup książkę

Page 29: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Co dalej? 101

Wypróbuj mia o powy sze polecenia i sprawd , doczego s u .

Co dalej?

Teraz Twój heksapod powinien na komend chodzi ,obraca si i robi kilka innych rzeczy. Ale to dopieropocz tek. Mo esz go wykorzysta do tworzenianowych, niesamowitych konstrukcji. Poni ej wymie-nionych jest kilka pomys ów, które mo esz zre-alizowa :

Utwórz inne segmenty animacyjne.U yj podstawy testowej i swojej wyobra ni.Podziel si na forum http://forums.nodebots.ioefektami z innymi konstruktorami heksapodów.

Dodaj kontroler.Wpisywanie polece w terminalu jest uci liwe.Powiniene zbada inne mo liwo ci sterowaniaheksapodem. Dost pne s interfejsy API plat-formy Node.js do nast puj cych kontrolerów:

Leap Motion Controller (http://bit.ly/19LY4nm), nak adka SparkFun Joystick — po prostuu yj platformy Johnny-Five,

Kinect (http://bit.ly/1bQRz4l), Wii Motion Controller — po prostu u yj plat-formy Johnny-Five,

Brainwaves (http://bit.ly/19LYoT4).

Dodaj czujniki.Dodaj kamer i czujniki ultrad wi kowe, aby robotmóg orientowa si w swoim otoczeniu. Nauczgo podejmowa decyzje oparte na informacjachodbieranych z tych urz dze .

Zbuduj innego heksapoda.Przedstawiony w tym rozdziale kod nadaje si nietylko do sterowania robotem Phoenix. Dost p-nych jest wiele innych robotów, pod adresemhttp://www.thingiverse.com mo na znale nawetich ogólnodost pne projekty do wykonania nadrukarce 3D. B dziesz musia zmieni warto ciw tabelach h, t, s oraz l, ale je eli zbudujeszstanowisko testowe i wyregulujesz wszystkie ser-womotory, b dzie to ca kiem proste zadanie.

Decyzja o zastosowaniu platform Node.js i Johnny-Fiveokaza a si s uszna. Wszystkie pakiety npm znajdujsi w zasi gu palców. Dzi ki temu mo esz pod adowolnie wybran cie k . Co wi cej, Johnny-Fivejest najbardziej elastyczn i najlepiej obs ugiwanplatform wykorzystywan podczas budowania robo-tów. Realizuj wi c mia o wszystkie pomys y, jakieCi przyjd do g owy.

Rozwój spo eczno ci majsterkowiczów oraz pot gaplatformy Node.js sprawiaj , e bardzo przyjemne jestby robotykiem amatorem!

Poleć książkęKup książkę

Page 30: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

102 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Poleć książkęKup książkę

Page 31: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

249

Skorowidz

Aadapter WiFi, 174, 245adres

I2C, 149IP, 79

akumulator, 18algorytm sterowania robotem,

208anatomia

ramienia robota, 33robota delta, 219

animacja, 95Android, 115

aplikacja WWW, 78, 79, 155

BBatBot

algorytm, 214czujnik ultrad wi kowy, 210diagnostyka, 215implementacja algorytmu,

213monta , 206poruszanie robotem, 208sterowanie robotem, 210wykaz materia ów, 205zdalne sterowanie, 207

bezpiecze stwo, 189bezprzewodowe sterowanie

robotem, 27bezprzewodowy robot

SimpleBot, 24biblioteka

Johnny-Five, 156Node.js, 243Twilio, 193Volley, 248wsccat, 74

bieg, 100budowa

a cucha wiate ek, 147odzi, 50obwodu mikrofonu, 108obwodu przeka nika, 106robota bezprzewodowego, 24robota SimpleBot, 16zegara s onecznego, 128

budowanie robotów, 15

Cchodzenie, 93, 98, 175czujnik, 234

HC-SR04, 190ultrad wi kowy, 190, 206wody, 69

Ddekorowanie a cucha wiate ek,

153diagram pinów sterownika

silnika, 60dioda

LED, 196RGB, 162

dobór kontrolera matrycy, 146

Eelementy

elektroniczne lampyCheerfulJ5, 160

interaktywnych butów, 232panelu LED RGB, 174robota

BatBot, 205heksapod, 84Junky Delta, 218NodeBoat, 50NodeBot, 104piDuino5, 72SimpleBot, 16TypeBot, 32

zegara s onecznego, 126

Poleć książkęKup książkę

Page 32: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

250 Skorowidz

Ffala, 98fotorezystor, 183fritzing, 37funkcja, patrz tak e metoda

callback, 41delta_calcAngleYZ, 227getLatestColor, 165min(), 67setInterval(), 165sunPositionInDegrees, 143tick, 141ultraData(), 200

Ggenerator express, 155gnomon, 125

Hheksapod

chodzenie, 98lista polece , 100monta robota, 86obracanie robota, 100program phoenix.js, 85regulacja serwomotorów, 91sterowanie robotem, 84uk ad wspó rz dnych, 90wykaz materia ów, 83zakres ruchu serwomotorów,

92

Iinformacje o serwomotorach, 32inicjalizacja

modu u, 41platformy Johnny-Five, 75

instalacjabiblioteki Node.js, 243biblioteki Volley, 248oprogramowania, 73oprogramowania Android

Studio, 247platformy Node.js, 73

instancja platformy Johnny-Five,243

interaktywne buty, 231czujniki, 235kod, 238pod czenie do Arduino, 237po czenie butów, 235stan lewego buta, 240wykaz materia ów, 231wy wietlanie danych, 239

interaktywny panel LED RGB, 173interfejs

API, 156ThingSpeak API, 164, 166Twitter Streaming API, 165u ytkownika, 79, 157Web Speech API, 112

Jjoystick, 79

dotykowy, 80Junky Delta

anatomia robota, 219budowa, 220ruch robota, 223wykaz materia ów, 218

Kkabel, 150kinematyka, 217, 225klasa

Animation, 83, 90, 94, 95AsyncTask, 122Led, 75Led.Matrix, 158Matrix, 154Servo.Array, 95WebSocketServer, 75

koddo lampy CheerfulJ5, 161funkcji tick, 141servo-test.js, 20simplebot.js, 22steruj cy kolorami, 184steruj cy obwodem, 109

komponenty zasobnika silnika, 51

komunikaty Firmata, 27konfiguracja

adaptera WiFi, 245Arduino, 26czujników, 239modu u Spark, 56modu u WiFi, 25serwomotorów, 41, 130, 131sprz tu, 244

konsola DualShock, 210konstrukcja ramienia, 33kontroler

g osowy, 112, 115matrycy, 146

Llampa CheerfulJ5, 159

kod, 161czno bezprzewodowa,

169modu Spark, 171obwód, 160umieszczenie obwodu, 171warianty obudowy, 161wykaz materia ów, 159

laser, 195lista serwomotorów, 86lutowanie sterownika silnika, 58

czenieprzewodów, 150serwomotorów, 37

czno bezprzewodowa, 24,169

okie , 35uk wysoko ci, 137

Mmapa kolorów, 163marsz, 99matryca

LED, 147wietlna, 188

mened er Homebrew, 27

Poleć książkęKup książkę

Page 33: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Skorowidz 251

metoda, patrz te funkcjacallback, 41forward(), 76init, 39joystick.left(), 80joystick.up(), 80led.color(), 165motor.forward(), 63move, 40sonarServo.center(), 210sonarServo.max(), 210temporal.queue(), 68tick, 45

mikrofon, 108mobilna platforma, 71mocowanie

akumulatora, 18, 76efektora, 222przewodów, 37ramion, 222, 223segmentu nadgarstka, 37serwomotoru, 18

okcia, 36nadgarstka, 36

zasobnika z silnikiem, 65modulacja szeroko ci impulsu, 60modu

dualshock-controller, 210keypress, 63Spark, 56, 58, 59Spark Core, 58, 169Spark-IO, 58temporal, 68WiFi, 24WIFI232, 27

modyfikacja silnika, 52monitoring, 194monta

kad uba odzi, 64komponentów, 76komponentów

elektronicznych, 87segmentów piszczelowych, 89segmentów udowych, 89silnika, 53stawów biodrowych, 88steru, 68zasobnika na silnik, 55zegara, 136

Nnadgarstek, 36nap d

ró nicowy, 23Tamiya, 52

narz dzia programistyczne, 155nawi zanie po czenia, 80NodeBoat

czenie komponentów, 58modu Spark, 56sterowanie odzi , 66sterownik silnika, 58, 62wodowanie odzi, 64wykaz materia ów, 50zasobnik z silnikiem, 51

NodeBotaplikacja Android, 115kontroler g osowy, 112, 115mikrofon, 108obwód przeka nika, 106p ytka BeagleBone Black, 105serwer polece , 110tworzenie projektu, 106wykaz materia ów, 103

Oobiekt

Board, 58MatrixView, 158Motor, 62, 66Servo, 66Servo.Array, 94, 95

obliczenie k ta, 226obracanie robota, 100obs uga zdarze , 62, 63obudowa Beaglebone-io, 181, 182obwód

mikrofonu, 108przedwzmacniacza

mikrofonu, 108przeka nika, 106

odwrócona kinematyka, 226opcje konstruktora klasy, 154oprogramowanie

Firmata, 20LEDScape, 175VoodooSpark, 170

Ppalec, 33, 37panel LED RGB, 173, 175

czujniki, 175kod, 178, 180komponenty, 175obudowa Beaglebone-io, 182oprogramowanie, 175schemat pod czenia, 177wykaz materia ów, 174zmienianie kolorów, 185

parametr nonblock, 28Particle WiFi Development Kit, 245p tla

REPL, 84, 163steruj ca

otwarta, 213zamkni ta, 213

pianka PCV, 135piDuino5

monta komponentów, 76sterowanie smartfonem, 78sterowanie urz dzeniami, 75wykaz materia ów, 72

pierwsze uruchomienie, 46platforma

Johnny-Five, 38, 75, 181, 243Node.js, 73ThingSpeak API, 164

plikactivity_main.xml, 116align.js, 36AndroidManifest.xml, 120app.js, 79, 156boat.js, 62circuit.js, 113CommandRequest.java, 115,

118index.html, 79, 111, 112lights.js, 156ListenerService.java, 119MainActivity.java, 116moveBot.js, 209package.json, 57, 68, 193phoenix.js, 88rect_activity_wear_main.xml,

123

Poleć książkęKup książkę

Page 34: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

252 Skorowidz

plikrelay.js, 107server.js, 110, 112, 114servos.js, 131sundial.js, 139typebot.js, 41WearMainActivity.java, 120

p ytkaArduino, 244Arduino Uno, 31BeagleBone Black, 105,

173, 244Raspberry Pi, 73, 244

pod czenieArduino, 74butów, 237czujnika HC-SR04, 190diody laserowej, 196fotorezystora, 183matrycy, 151, 152modu u Spark, 57modu u WiFi, 25panelu RGB LED, 176p ytki Arduino, 151serwomotorów, 19, 88, 130silnika, 61sterownika silnika, 60zasilania, 59

podparcie tarczy, 134podstawa, 34pokojowy zegar s oneczny, 125po czenie

butów, 235modu u Spark i silnika, 60z ka dego miejsca, 76z modu em WiFi, 26z serwomotorem, 66

pozycja pocz tkowa robota, 42prezentacja urz dzenia, 189pr dko obrotowa, 33program

cheerful.js, 162, 166cheerful-twit.js, 168matrix-test.js, 154open-pixel-test.js, 179phoenix.js, 85socat, 27Spark, 57

steruj cy, 21sundial.js, 139, 140, 141VSPE, 28warmup.js, 224

programowanie, 247serwomotoru, 66

projekt VoiceController, 247protokó WebSocket, 74, 75prototyp systemu

bezpiecze stwa, 201przedwzmacniacz mikrofonu, 108przegl darka, 75przeka nik, 106przeliczanie odczytów, 186przewód mikro-USB, 50przycisk resetowania, 27przygotowanie

czujników, 234kabla, 150matryc, 149serwomotorów, 87

przyspieszeniomierz, 185PWM, pulse-width modulated,

33, 60

Rrami , 38

azymutu, 128, 136robota, 32, 33

regulacjaramienia, 46segmentów piszczelowych, 92segmentów udowych, 92serwomotorów, 91stawów biodrowych, 91

rejs, 69resetowanie

Arduino, 28uk adów, 28

robotArmy, 217, 229, 230BatBot, 203Junky Delta, 217NodeBoat, 49NodeBot, 15, 103piDuino5, 71, 76SimpleBot, 15

TapsterBot, 217, 229TypeBot, 31

robotyautonomiczne, 204delta, 217pisz ce, 31semiautonomiczne, 204sterowane g osem, 103zdalnie sterowane, 204

rozpoznawanie mowy, 112ruch ramienia, 34rysowanie prostok ta, 228rzepy, 76

Sschemat

ideowy pod czenia czujnika,207

obwodu przeka nika, 107pod czenia fotorezystora,

184, 186po cze robota SimpleBot,

19ruchów robota, 208stanów, 43

segmentanimacyjny, 95palca, 37

sekwencja naci ni klawiszy, 43serwer

polece , 110WWW, 75

serwis GitHub, 201serwomotor, 17, 18, 21, 86silnik, 53SimpleBot

budowa robota, 16diagnostyka problemów,

21, 28czno bezprzewodowa,

24sterowanie robotem, 25wykaz materia ów, 16

Spark WiFi Development Kit, 169sprawdzenie

sieci, 26silnika, 53

Poleć książkęKup książkę

Page 35: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Skorowidz 253

stanbuta, 240klawiszy, 63robota, 212

stawbiodrowy, 88okciowy, 35

ster, 68sterowanie, 23

smartfonem, 78diod RGB, 162heksapodem, 83odzi , 66matrycami, 157matryc LED, 153obwodem przeka nika, 107robotem, 210robotem SimpleBot, 25serwomotorami, 38

sterowanieserwomotorem, 67silnikiem, 62urz dzeniami, 75

sterownik silnika, 51, 58, 59sygna o modulowanej

szeroko ci, 33system

bezpiecze stwa, 201monitoringu, 194

szkic StandardFirmata.ino, 26sztuczna inteligencja, 203szyna I2C, 148, 150

ruba, 54wiate ka-straszyde ka, 145

aplikacja WWW, 155budowa, 147diagnostyka, 153interfejs u ytkownika, 157komponenty, 146

program testuj cy, 154sterowanie matryc LED, 153wykaz materia ów, 145

Ttabela

obiektów Servo.Array, 94serwomotorów, 94

tag <div>, 80tarcza, 132tarcze gnomonu, 133test modu u Spark, 56, 57tworzenie

interfejsu API, 156interfejsu u ytkownika, 157plików projektu, 38projektu Android, 247serwera polece , 110

TypeBotbudowa

cz ci mechanicznej, 34inicjalizacja, 41pierwsze uruchomienie, 46program, 38wykaz materia ów, 31

Uuk ad wspó rz dnych, 90umieszczenie tarcz, 134urz dzenie ultrad wi kowe, 193us uga CheerLights, 163, 164ustawianie

czujnika ultrad wi kowego,210

uszczelnienie przewodów, 55

Wwarto null, 97wiercenie otworów, 222

wios owanie, 98wodowanie odzi, 64wska nik stanu, 196wtyczka Spark-io, 170wyci cie gnomonu, 138wyliczanie po o enia efektora, 227wysy anie

polece , 80SMS-ów, 193

wy wietlacz, 173

Zzak adanie czówek, 152zakres ruchu serwomotorów, 92zapisywanie stanu klawiszy, 63zasilacz 5 V, 174zasilanie sterownika silnika, 59zasobnik z silnikiem, 51, 54, 55zatrzask, 52zdalne sterowanie, 207zdarzenie

message, 76naci ni cia klawisza, 62

zegar s oneczny, 125budowanie, 128kod, 139konfiguracja serwomotorów,

130konstrukcja g ówna, 129monta , 136podparcie tarczy, 133przygotowanie tarcz, 132cianki, 133

w czanie, 144wycinanie elementów, 129wykaz materia ów, 126

zmianakolorów, 185rezystancji czujnika, 233

Poleć książkęKup książkę

Page 36: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry

Poleć książkęKup książkę

Page 38: Tytuł oryginału: Make: JavaScript Robotics: Building ...pdf.helion.pl/roboty/roboty.pdf · Tytuł oryginału: Make: JavaScript Robotics: Building NodeBots with Johnny-Five, Raspberry