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

Podobne dokumenty
Spis treści. Przedmowa 11

Roboty JavaScript od podstaw

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

Instrukcja programu PControl Powiadowmienia.

Wskazówki monta owe. Pod aczenie elektryczne. OXIMO RTS pasuje do standardowych uchwytów monta owych stosowanych do serii LT 50

Polish edition copyright 2014 by Helion S.A. All rights reserved.

Adapter USB do CB32. MDH-SYSTEM ul. Bajkowa 5, Lublin tel./fax lub kom e mail: info@mdh-system.pl

Urządzenia do bezprzerwowego zasilania UPS CES GX RACK. 10 kva. Wersja U/CES_GXR_10.0/J/v01. Praca równoległa

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

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

Harmonogramowanie projektów Zarządzanie czasem

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Metoda LBL (ang. Layer by Layer, pol. Warstwa Po Warstwie). Jest ona metodą najprostszą.

DBX600 DZWONEK BEZPRZEWODOWY

Systemy mikroprocesorowe - projekt

PERSON Kraków

INSTRUKCJA OBSŁUGI WD2250A. WATOMIERZ 0.3W-2250W firmy MCP

Microsoft Management Console

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

linkprog programator USB

Bazy danych. Andrzej Łachwa, UJ, /15

Przewodnik AirPrint. Ten dokument obowiązuje dla modeli atramentowych. Wersja A POL

DJCONTROL INSTINCT I DJUCED PIERWSZE KROKI

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

Opis programu do wizualizacji algorytmów z zakresu arytmetyki komputerowej

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

PROCEDURA ROZWIĄZYWANIA PROBLEMÓW Z SYSTEMEM SD-NAVI (wersja 1.00)

HiTiN Sp. z o. o. Przekaźnik kontroli temperatury RTT 4/2 DTR Katowice, ul. Szopienicka 62 C tel/fax.: + 48 (32)

INSTRUKCJA OBSŁUGI MC-2810 CYFROWY SYSTEM GŁOŚNIKOWY 5.1 KANAŁÓW DO KINA DOMOWEGO

Śrubka zamykająca Uchwyt ścienny Przycisk kontrolny Lampka kontrolna

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

Zarządzanie Zasobami by CTI. Instrukcja

PAKOWARKA PRÓŻNIOWA VAC-10 DT, VAC-20 DT, VAC-20 DT L, VAC-20 DT L 2A VAC-40 DT, VAC-63 DT, VAC-100 DT

Instrukcja instalacji programu Plantator oraz transferu pliku danych z/do PC kolektor danych PT-20

Konfiguracja historii plików

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

VinCent Office. Moduł Drukarki Fiskalnej

Jabra Link 850. Podręcznik użytkownika.

Instrukcja wprowadzania ocen do systemu USOSweb

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Instrukcja obsługi zamka. bibi-z50. (zamek autonomiczny z czytnikiem identyfikatora Mifare)

Rysunek montażu. Krok 4 Koniec. Krok 2 Krok 2. Krok 3

2.Prawo zachowania masy

Demontaż. Uwaga: Regulacja napięcia paska zębatego może być wykonywana tylko przy zimnym silniku.

CZYTNIK ZBLIŻENIOWY RFID-UR80D

Seria P-662HW-Dx. Bezprzewodowy modem ADSL2+ z routerem. Skrócona instrukcja obsługi

UKŁAD ROZRUCHU SILNIKÓW SPALINOWYCH

Type ETO2 Controller for ice and snow melting

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

EGZAMIN POTWIERDZAJ CY KWALIFIKACJE W ZAWODZIE Rok 2014 CZ PRAKTYCZNA

SINAMICS G120C STARTER. Tworzenie nowego projektu w trybie online.

Konfigurator opisuje proces instalacji i konfiguracji karty sieciowej bezprzewodowej D-Link DWL-520+ w systemach /2000/XP /

MUltimedia internet Instrukcja Instalacji

raceboard-s Szybki start

Spis zawartości Lp. Str. Zastosowanie Budowa wzmacniacza RS485 Dane techniczne Schemat elektryczny

ROZPORZ DZENIE MINISTRA TRANSPORTU 1) z dnia r.

yoyo ver. 6.0

Elementy podłączeniowe.

Warszawa, r.

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

Objaśnienia do Wieloletniej Prognozy Finansowej na lata

SINAMICS G120C STARTER. Tworzenie nowego projektu w trybie offline.

Instrukcja użytkowania DRIVER. Programator z przewodem sterowniczym. DRIVER 610 lub lub 2 strefy DRIVER

Samochody ciężarowe z wymiennym nadwoziem

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

INSTRUKCJA OBSŁUGI. Czujnik opadu deszczu RAIN SENSOR RS500

Program Google AdSense w Smaker.pl

WOJEWÓDZKI KONKURS FIZYCZNY

enova Workflow Obieg faktury kosztowej

Skrócony podręcznik obsługi dla programu Wizualna poczta głosowa w wersji 8.5 lub nowszej

Oprogramowanie klawiatury matrycowej i alfanumerycznego wyświetlacza LCD

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Warunki Oferty PrOmOcyjnej usługi z ulgą

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Zainstalowana po raz pierwszy aplikacja wymaga aktualizacji bazy danych obsługiwanych sterowników.

Przyk ad konfiguracja MRP przy pomocy IO kontrolera Simatic S7-300 i switchy Scalance X

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Moduł GSM generacja 1

CitiDirect EB - Mobile

Projekt MES. Wykonali: Lidia Orkowska Mateusz Wróbel Adam Wysocki WBMIZ, MIBM, IMe

INTENSE BUSINESS INTELLIGENCE PLATFORM

Sterownik Silnika Krokowego GS 600

Sterownik AVerMedia i instalacja tunera TV w systemie Windows Media Center

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

OŚWIETLENIE PRZESZKLONEJ KLATKI SCHODOWEJ

Audyt SEO. Elementy oraz proces przygotowania audytu. strona

Instrukcja obsługi.

elero VarioTec Instrukcja obs ugi Instrukcj nale y zachowaç!

USTAWIANIE MODUŁU WAHLIWEGO SIŁOWNIKA X

ST SPECYFIKACJA TECHNICZNA ROBOTY GEODEZYJNE. Specyfikacje techniczne ST Roboty geodezyjne

EGZAMIN POTWIERDZAJ CY KWALIFIKACJE W ZAWODZIE Rok 2014 CZ PRAKTYCZNA

Projekt. Projekt opracował Inż. Roman Polski

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Jak korzystać z Group Tracks w programie Cubase na przykładzie EWQLSO Platinum (Pro)

DYSTRYBUCJA : DJ-DISTRIBUTION NUMARK POLSKA

INFORMATOR TECHNICZNY. Pierwsze uruchomienie przemiennika częstotliwości Astraada Drive UWAGA!

Elementy animacji sterowanie manipulatorem

C5 - D4EB0FP0 - Informacje ogólne : Poduszki powietrzne INFORMACJE OGÓLNE : PODUSZKI POWIETRZNE

Skrócony opis instalacji Sympodium DT770 Interaktywny ekran z cyfrowym piórem

Transkrypt:

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 HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: 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/roboty Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland.

Spis tre ci Przedmowa...11 1. Budowanie robotów ze zwyk ych materia ów... 15 Budowa robota SimpleBot...16 Wykaz materia ów...16 Etapy budowy...17 Instalacja pakietów Node.js...20 Sprawdzenie urz dzenia za pomoc podstawowego programu...20 Diagnostyka problemów...21 Prosty program steruj cy...21 Diagnostyka problemów...23 Odci cie przewodu...24 Budowa bezprzewodowego robota SimpleBot...24 Po czenia...24 Sterowanie robotem SimpleBot...25 Diagnostyka problemów...28 Co dalej?...29 2. Robot pisz cy TypeBot... 31 Wykaz materia ów...31 Informacje o serwomotorach...32 Anatomia ramienia robota...33 Konstrukcja ramienia...33 Warunki zwi zane z ruchem ramienia...34 3

Budowa cz ci mechanicznej...34 Podstawa i rami...34 okie...35 Nadgarstek...36 Palec...37 Mózg...37 Utworzenie programu...38 Utworzenie plików projektu...38 Sterowanie serwomotorami...38 Inicjalizacja...41 Okre lenie sekwencji naci ni klawiszy...43 Pierwsze uruchomienie...46 Dok adna regulacja ramienia...46 Co dalej?...47 3. Pierwsze kroki z robotami NodeBoat... 49 Wykaz materia ów...50 Narz dzia...50 Zasobnik z silnikiem...51 Po co stosowa sterownik silnika?...51 Komponenty zasobnika silnika...51 Modyfikacja silnika...52 Monta silnika...53 Sprawdzenie silnika...53 Przygotowanie silnika...53 Otwór w zasobniku na silnik...54 Zamkni cie zasobnika na silnik...55 Uszczelnienie przewodów...55 Konfiguracja modu u Spark...56 Test modu u Spark...56 Twój pierwszy program Spark...57 Przylutowanie sterownika silnika...58 Po czenie komponentów odzi...58 Zasilanie sterownika silnika...59 Po czenie modu u Spark i sterownika silnika...60 Pod czenie silnika...61 Sterowanie silnikiem: kod...62 Obs uga zdarzenia naci ni cia klawisza...62 Zapisywanie stanu klawiszy...63 Wodowanie odzi...64 4 Spis tre ci

Sterowanie odzi za pomoc serwomotoru...66 Programowanie serwomotoru...66 Monta steru...68 Pierwszy rejs...69 Co dalej?...69 4. Mobilna platforma piduino5... 71 Wykaz materia ów...72 Instalacja platformy Node.js na p ytce Raspberry Pi...73 Pobranie kodu piduino5 i zale no ci...73 Narz dzia...73 Konfiguracja p ytek i instalacja oprogramowania...73 Pod czenie Arduino...74 Przegl d kodu app.js...74 Sprawdzenie platformy Johnny-Five za pomoc protoko u WebSocket...74 Inicjalizacja platformy Johnny-Five...75 Sterowanie urz dzeniami...75 Sterowanie z ma ymi opó nieniami za pomoc protoko u WebSocket...75 Po czenie z ka dego miejsca...76 Monta komponentów...76 Wys anie adresu do aplikacji WWW...78 Sterowanie za pomoc smartfona...78 Pobranie aplikacji WWW do sterowania robotem piduino5...78 Sprawd aplikacj WWW na telefonie...79 Przegl d plików app.js i index.html...79 Zapisanie lokalnego adresu IP...79 Udost pnienie interfejsu u ytkownika...79 Dotykowy joystick...80 Nawi zanie po czenia...80 Wysy anie polece...80 Co dalej?...81 5. Sterowanie heksapodem za pomoc platformy Johnny-Five... 83 Wykaz materia ów...83 Sterowanie robotem za pomoc wiersza polece...84 Wprowadzenie do programu phoenix.js...85 Monta robota...86 Przygotowanie szkieletu...87 Monta komponentów elektronicznych...87 Przygotowanie serwomotorów...87 Monta stawów biodrowych...88 Spis tre ci 5

Monta segmentów udowych...89 Monta segmentów piszczelowych...89 Uk ad wspó rz dnych...90 Regulacja serwomotorów...91 Regulacja stawów biodrowych...91 Regulacja segmentów udowych...92 Regulacja segmentów piszczelowych...92 Okre lenie zakresów ruchu serwomotorów...92 Chodzenie jest trudne!...93 Poznaj klas Animation...94 Tabela serwomotorów jako grupa docelowa...94 Obiekt Servo.Array jako grupa docelowa...94 Tabela obiektów Servo.Array jako grupa docelowa...94 Pierwszy segment animacyjny...95 Chodzenie...98 Wios owanie (row)...98 Marsz (walk)...99 Bieg (run)...100 Lista polece...100 Obracanie robota...100 Co dalej?...101 6. Budowanie robota NodeBot sterowanego g osem... 103 Wykaz materia ów...103 P ytka BeagleBone Black...105 Tworzenie projektu...106 Budowa obwodu przeka nika...106 Sterowanie obwodem za pomoc platformy Johnny-Five...107 Budowa obwodu mikrofonu...108 Obs uga mikrofonu i przeka nika za pomoc kodu Johnny-Five...108 Tworzenie serwera polece...110 Prosty kontroler g osowy wykorzystuj cy interfejs Web Speech API...112 Integracja serwera polece z obwodem przeka nika...112 Zaawansowany kontroler g osowy wykorzystuj cy gad et z Androidem...115 Aplikacja przeno na dla systemu Android...115 Aplikacja dla gad etu z Androidem...120 Co dalej?...123 7. Pokojowy zegar s oneczny... 125 Wykaz materia ów...126 Elementy z pianki PCV...126 6 Spis tre ci

Budowanie zegara s onecznego...128 Wycinanie elementów i przygotowanie g ównej konstrukcji...129 Przygotowanie p yty monta owej...129 Pod czenie i konfiguracja serwomotorów...130 Pod czenie serwomotorów...130 Konfiguracja serwomotorów...131 Przygotowanie tarcz...132 Przygotowanie cianek i podparcia tarczy podstawowej...133 Przygotowanie cianek...133 Umieszczenie tarcz...134 Przygotowanie podparcia tarczy...134 Wykonanie ostatnich elementów i monta zegara...136 Przygotowanie ramienia azymutu...136 Przygotowanie uku wysoko ci...137 Wyci cie gnomonu...138 Pod czenie s o ca...138 Kod, który wszystkim steruje...139 Program sundial.js...140 Dane konfiguracyjne w programie sundial.js...140 Szczegó y programu sundial.js...141 Z ó wszystko razem!...143 W cz zegar!...144 Co dalej?...144 8. wiate ka-straszyde ka... 145 Wykaz materia ów...145 Dobór kontrolera matrycy...146 Teoria...146 Co to jest matryca LED?...147 Budowa a cucha wiate ek...147 Potrzebne narz dzia...148 Przygotowanie matryc...149 Przygotowanie kabla...150 Diagnostyka...153 Sterowanie matryc LED...153 Przygotowanie p ytki Arduino...153 Dekorowanie a cucha wiate ek...153 Opcje konstruktora klasy Matrix...154 Rysowanie wzorów na matrycy...154 Uruchomienie programu testuj cego...154 Spis tre ci 7

Utworzenie aplikacji WWW...155 Narz dzia programistyczne...155 Korzystanie z generatora express...155 Utworzenie interfejsu API...156 Utworzenie interfejsu u ytkownika...157 Rozbudowa aplikacji...158 Co dalej?...158 9. Lampa CheerfulJ5... 159 Wykaz materia ów...159 Zbudowanie obwodu...160 Kod do lampy CheerfulJ5...161 Po czenie z p ytk Arduino...161 Sterowanie diod RGB...162 U ycie platformy Node.js i p tli REPL...163 Zdefiniowanie mapy kolorów us ugi CheerLights...163 Dost p do us ugi CheerLights za pomoc interfejsu ThingSpeak API...164 Korzystanie z interfejsu Twitter Streaming API...165 czno bezprzewodowa dzi ki zestawowi Spark WiFi Development Kit...169 Umieszczenie modu u Spark w obwodzie...169 Zastosowanie wtyczki Spark-io...170 Prze czenie na zasilanie z akumulatora...170 Umieszczenie obwodu w obudowie...171 Co dalej?...172 10. Interaktywny panel LED RGB z p ytk BeagleBone Black... 173 Wykaz materia ów...174 P ytka BeagleBone Black...174 Adapter WiFi (opcjonalny)...174 Zewn trzny zasilacz 5 V (opcjonalny)...174 Panel LED RGB...175 Czujniki...175 Inne komponenty...175 Pierwsze kroki: oprogramowanie...175 Oprogramowanie LEDScape...175 Pod czenie panelu RGB LED...176 Pod czenie panelu RGB LED...176 Czas na kod! U yj j zyka JavaScript...178 Uruchomienie skryptu testowego...179 Zastosowanie platformy Johnny-Five i obudowy beaglebone-io...181 8 Spis tre ci

Pod czenie fotorezystora...183 Zmienianie kolorów za pomoc przyspieszeniomierza...185 Co dalej?...187 11. Osobiste bezpiecze stwo, JavaScript i Ty... 189 Prosty czujnik ultrad wi kowy...190 Implementacja...190 Urz dzenie ultrad wi kowe wysy aj ce SMS-y...193 Implementacja...193 System monitoringu...194 Implementacja...194 Laser robi wra enie na wrogach i przyjacio ach...195 Implementacja...195 Wska nik stanu, przyciski i diody LED...196 Implementacja...198 Co dalej?...201 12. Sztuczna inteligencja: robot BatBot... 203 Sztuczna inteligencja podstawy...203 Roboty semiautonomiczne...204 Roboty autonomiczne...204 Robot BatBot...204 Roboty zdalnie sterowane...204 Wykaz materia ów...205 Uwagi dotycz ce materia ów...206 Monta...206 Krok 1. Zdalne sterowanie...207 Poruszanie robotem...208 Sterowanie robotem...210 Ustawianie czujnika ultrad wi kowego i odczyt sygna u...210 Krok 2. Autonomia...211 Implementacja algorytmu...213 Diagnostyka...215 Co dalej?...216 13. Roboty delta i kinematyka... 217 Wykaz materia ów...218 Anatomia robota delta...219 Budowa robota Junky Delta...220 Wprawienie robota w ruch...223 Okre lanie po o enia w kinematyce...225 Bardziej zaawansowane roboty delta...229 Spis tre ci 9

Robot TapsterBot...229 Robot Army...229 Co dalej?...230 14. Interaktywne buty... 231 Wykaz materia ów...231 Opis elementów...231 Przygotowanie czujników...234 Przylutowanie przewodów do czujników...234 Umieszczenie czujników w butach...235 Wyprowadzenie przewodów na zewn trz buta...235 Po czenie butów...235 Przygotowanie przewodu spiralnego...235 Pod czenie butów do p ytki Arduino...237 Przygotowanie przewodów...237 Przylutowanie p ytki Arduino...238 Przymocowanie p ytki Arduino do prawego buta...238 Tworzenie kodu opartego na platformie Johnny-Five...238 Pod czenie do platformy Johnny-Five...238 Konfiguracja czujników...239 Wy wietlanie danych z czujników...239 Przyk adowe zachowania...240 Co dalej?...241 A. Dodatek... 243 Instalacja biblioteki Node.js...243 Instalacja platformy Johnny-Five...243 Diagnostyka...244 Dodatkowe informacje...244 Konfigurowanie sprz tu...244 Arduino...244 BeagleBone Black...244 Raspberry Pi...244 Zestaw Particle WiFi Development Kit...245 Programowanie w systemie Android...247 Instalacja oprogramowania Android Studio...247 Tworzenie projektu Android...247 Instalacja biblioteki Volley...248 Skorowidz... 249 10 Spis tre ci

Sterowanie heksapodem za pomoc platformy Johnny-Five 5 Donovan Buck W tym rozdziale dowiesz si, jak zbudowa prostego krocz cego heksapoda, czyli sze cionogiego robota. Opisany tu heksapod, pokazany na rysunku 5.1, b dzie mia po trzy stawy w ka dej nodze. Robot b dzie sterowany za pomoc klasy Animation z platformy Johnny-Five. Klasa ta jest wykorzystywana do tworzenia skryptów steruj cych serwomotorami w czasie. Oferuje funkcjonalno ci takie jak harmonogram, kluczowe ramki, p ynne przej cie jednej ramki w drug (ang. tweening) i funkcje wyg adzaj ce (ang. easing functions). Na koniec otrzymasz doskona platform do budowania w przysz o ci z o onych, ciekawych robotów. Wykaz materia ów Materia y u yte w tym rozdziale wymienione s w tabeli 5.1. Sze serwomotorów Hitec HS-485HB b dzie tworzy stawy biodrowe, sze modeli Hitec HS-645MG Rysunek 5.1. Gotowy heksapod stawy segmentów udowych, a sze Hitec HS-5685 MH stawy segmentów piszczelowych. Firma Lynxmotion zaleca zastosowanie sze ciu serwomotorów HS-485HB i dwunastu HS-645MG, jednak modele HS-5685MH oferuj wi kszy moment obrotowy niezb dny w stawach segmentów udowych. Do poruszania robotem b dzie potrzebny maksymalny moment obrotowy, jaki silniki mog osi gn. 83

Tabela 5.1. Wykaz materia ów do budowy robota Liczba Element Przybli ona cena Numer/ ród o 1 Heksapod Phoenix 3DOF (bez serwomotorów i 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 podstawowego 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 robotem za pomoc wiersza polece Podczas konstruowania robota b dziesz musia sterowa serwomotorami i zmienia ich pozycje, wykorzystuj c uk ad wspó rz dnych. P tla REPL oferowana przez platform Node.js doskonale nadaje si do tego celu. Mo liwo wysy ania polece do serwomotorów i obserwowania ich reakcji w czasie rzeczywistym jest bardzo fajna i przydatna. Do sterowania robotem za pomoc p tli REPL b dzie potrzebny program phoenix.js. Wykonaj nast puj ce czynno ci: 1. Pobierz zawarto katalogu Buck.Animation z serwisu GitHub (https://github.com/rwaldron/ javascript-robotics). 2. Zapisz zawarto katalogu w folderze roboczym na komputerze. 3. Przejd do katalogu roboczego, a nast pnie u yj polecenia npm do zainstalowania zale no ci: npm install Powy sze polecenie powinno dostarczy wszystkich danych potrzebnych do skonfigurowania robota i sterowania nim. Je eli nie zainstalowa e jeszcze platformy Node.js na swoim komputerze, zajrzyj do cz 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 ona wprowadzanie informacji za pomoc wiersza polece, nast pnie przetwarzanie wprowadzonych danych za pomoc kodu i na koniec wy wietlenie wyników i oczekiwanie na kolejne polecenia. 84 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Wprowadzenie do programu phoenix.js Plik phoenix.js ze skryptem JavaScript zawiera pe ny kod potrzebny do konfiguracji robota i sterowania nim. W dalszej cz ci rozdzia u okre lisz w tym kodzie pewne warto ci konfiguracyjne, ale na razie tylko przejrzyj go i zapoznaj si z jego kilkoma podstawowymi funkcjonalno ciami. Plik sk ada si z dwóch g ównych sekcji, w których mo e by konieczne wprowadzenie zmian. Pierwsza z nich sekcja konfiguracyjna znajduje si w pobli u pocz tku pliku. S w niej zdefiniowane obiekty opisuj ce wszystkie pozycje, jakie przyjmuj serwomotory podczas wykonywania przez heksapoda kroków przesuwaj cych go naprzód i obracaj cych na boki. Te dane b dziesz musia zmieni tylko w przypadku, gdy zastosujesz inne serwomotory ni wymienione w li cie. Druga sekcja, w której koniecznie musisz wprowadzi zmiany, zawiera instrukcje tworz ce obiekty reprezentuj ce serwomotory poruszaj ce nogami robota. Sekcja ta znajduje si wewn trz funkcji zwrotnej w metodzie five.board().on("ready"). Za pomoc w a ciwo ci offset musisz ustawi w rodkowej pozycji wszystkie 18 serwomotorów. Szczegó owe instrukcje, jak to zrobi, zawarte s w dalszej cz ci rozdzia u. Ponadto, je eli u ywasz innego typu serwomotorów ni wymienione w tabeli, b dziesz musia zmieni warto ci w a ciwo ci range serwomotorów. Definicja serwomotoru w obiekcie phoenix jest nast 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 Mega Sensor, do którego pod czony jest serwomotor. W a ciwo offset s u y do regulacji pozycji serwomotoru. W a ciwo startat okre la pozycj pocz tkow serwomotoru. W a ciwo range okre la minimaln i maksymaln warto k ta, o jaki mo e obróci si serwomotor. W a ciwo isinverted odwraca warto k ta obrotu wysy an do serwomotoru (np. warto 180 jest zamieniana na 0, 45 na 135 itd.). Tabela 5.2 przedstawia funkcje serwomotorów oraz piny wykorzystane przez wszystkie serwomotory poruszaj ce stawami robota. Gdy przyjrzysz si dok adniej kodowi, zauwa ysz, e w konfiguracjach serwomotorów tylnych stawów biodrowych w a ciwo isinverted przyjmuje przeciwne warto ci ni w przypadku serwomotorów w pozosta ych stawach biodrowych z tej samej strony robota. Jest tak dlatego, poniewa podczas przesuwania przedniej nogi w przód dwie pozosta e nogi musz by przesuwane wstecz. W dalszej cz ci kodu dla ka dej nogi zdefiniowana jest tabela Servo.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 przyk ad z obiektu phoenix.l1, w ka dym obiekcie typu Servo zawartym w powy szej klasie wywo ywana jest ta sama metoda z takimi samymi argumentami. Klasa Servo.Array jest równie wykorzystywana do czenia serwomotorów w grupy animacyjne. Wi cej informacji na ten temat znajduje si w dalszej cz ci rozdzia u. W pliku phoenix.js tworzone s równie nast puj ce obiekty typu Servo.Array: coxa: sze serwomotorów tworz cych stawy biodrowe, femur: sze serwomotorów w segmentach udowych, tibia: sze serwomotorów w segmentach piszczelowych, legs: wszystkie serwomotory (osiemna cie sztuk) Wprowadzenie do programu phoenix.js 85

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 serwomotorów, która b dzie u yta pó niej podczas animowania 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 wiele obiektów typu Servo.Array, zawieraj cych ró ne kombinacje serwomotorów. Dzi ki takiej konfiguracji poruszanie segmentami nóg robota b dzie atwiejsze. Zadaniem kodu w tym pliku jest wysy anie polece tylko do wybranych grup serwomotorów. Monta robota Zanim poznasz klas Animation, musisz zmontowa robota. Wi kszo czynno ci wykonaj wed ug instrukcji dostarczonej przez Lynxmotion. S jednak trzy miejsca, na które musisz zwróci szczególn uwag. 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. 86 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Przygotowanie szkieletu Jednym z problemów, które musisz rozwi za, jest monta komponentów elektronicznych. Firma Lynxmotion zaprojektowa a heksapoda Phoenix pod k tem p ytki BotBoarduino. P ytka ta ma otwory monta owe w innych miejscach ni Arduino Mega. Ponadto p ytka Arduino Mega jest du a. Jej monta wewn trz szkieletu robota Phoenix jest idealnym, ale trudnym rozwi zaniem. Musisz odsun platformy szkieletu na tyle, aby dopasowa je do szeroko ci p ytki Mega. Na razie zamontuj p ytk Arduino po prostu na górnej platformie szkieletu. Na rysunku 5.2 widoczne s dwa ma e s upki dystansowe z tworzywa sztucznego, dopasowane do otworów monta owych w p ytce Arduino Mega. Zwró uwag, e nie s one dopasowane idealnie. P ytka po zamontowaniu b dzie obrócona w stosunku do szkieletu pod niewielkim k tem. Gdyby Ci to nie odpowiada o, wywier dodatkowe otwory monta owe. 2. Za ó nak adk silnikow na p ytk Arduino. 3. W zestawie Phoenix znajduje si wy cznik zasilania serwomotorów. Aby go zamontowa, trzeba wykona otwór o rednicy 6 mm, poniewa istniej ce otwory w szkielecie zostan zas oni te przez komponenty elektroniczne. Wywier wi c nowy otwór pod wy cznik, który zalecam zamontowa w pobli u nogi R2. Zamontuj go w szkielecie w sposób pokazany na rysunku, przytnij przewody na odpowiedni d ugo i pod cz je do z czy zasilania nak adki silnikowej. 4. Akumulator Ni-MH mo na ci le wpasowa pomi dzy s upki dystansowe i nie trzeba go mocowa adnymi dodatkowymi elementami. Wsu akumulator obrócony o 45 i umie go we w a ciwym po o eniu. Rysunek 5.3 przedstawia urz dzenie na obecnym etapie monta u. Rysunek 5.3. Szkielet robota z zamontowanymi komponentami elektronicznymi Rysunek 5.2. Zmontowany szkielet robota Od tego momentu do oznaczenia nóg heksapoda b d stosowane skróty R1, R2 i R3 (nogi prawe) oraz L1, L2 i L3 (nogi lewe). Monta komponentów elektronicznych Aby zamontowa elementy elektroniczne, wykonaj nast puj ce czynno ci: 1. Przymocuj p ytk Arduino do s upków dystansowych 1/2". Przygotowanie serwomotorów Teraz przygotuj serwomotory. Wykonaj nast puj ce czynno ci: 1. Pod cz wszystkie serwomotory stawów biodrowych i segmentów udowych do nak adki Mega Sensor zgodnie z tabel 5.2. Pod czenie serwomotorów segmentów piszczelowych nie jest na razie konieczne, ale je eli chcesz, mo esz to zrobi. 2. Pod cz p ytk Arduino do portu USB komputera, a przewody zasilaj ce do nak adki. Rysunek 5.4 przedstawia widok wszystkich komponentów na obecnym etapie monta u. Monta robota 87

6. Wykonaj powy sz czynno dla wszystkich 12 serwomotorów stawów biodrowych i segmentów udowych. Nasadki za ó dopiero po wy czeniu zasilania nak adki. Rysunek 5.4. Pod czone wszystkie serwomotory 3. Nasadki wszystkich serwomotorów musz by ustawione jak najdok adniej w rodkowej pozycji. W tym celu przed za o eniem nasadki na serwomotor 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 ustawione w 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 pozycji 90. Teraz za ó nasadki na serwomotory stawów biodrowych i serwomotory segmentów udowych tak, aby otwory monta owe by y równoleg e do osi. Nie zak adaj nasadek na serwomotory segmentów piszczelowych. Nasadki powinny by za o one tak, aby otwory znalaz y si w po o- eniu pokazanym na rysunku 5.5. Serwomotory stawów biodrowych trzeba przygotowa inaczej ni serwomotory segmentów udowych i piszczelowych. Uwa aj, aby nie pomyli wkr tów i nie uszkodzi serwomotorów. Monta stawów biodrowych W celu zamontowania serwomotorów stawów biodrowych wykonaj nast puj ce czynno ci: 1. Z ó wszystkie elementy stawów biodrowych i segmentów udowych zgodnie z instrukcjami producenta. Zwró uwag, e trzy elementy s lustrzanymi odbiciami trzech innych (patrz rysunek 5.6). Rysunek 5.6. Zmontowane stawy biodrowe Rysunek 5.5. Serwomotor ustawiony w pozycji 90 z poprawnie za o on nasadk 2. Teraz przymocuj do szkieletu elementy stawów biodrowych i segmentów udowych dwóch rodkowych nóg (R2 i L2). Nie mocuj na razie nasadek do szkieletu. 3. Przeci gnij przewody od serwomotorów pomi dzy nak adk Mega Sensor a szkieletem robota. 4. Pod cz cztery serwomotory do nak adki Mega Sensor. Tabela 5.2 zawiera informacje, gdzie nale y pod czy ka dy serwomotor. 88 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

5. Pod cz p ytk Arduino do komputera i akumulatory do nak adki, uruchom program phoenix.js i ustaw wszystkie serwomotory w pozycji 90. Pami taj, e na razie zajmujesz si tylko stawami biodrowymi. 6. Obró serwomotory stawów biodrowych tak, aby nasadki na serwomotorach segmentów udowych by y skierowane w przód, a otwory monta owe w nasadkach by y dopasowane do otworów w rusztowaniu. Serwomotory stawów biodrowych nie musz by umieszczone pod idealnym k tem w stosunku do szkieletu. Nie przejmuj si, dopasujesz 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 ty w ka dej nasadce serwomotoru. 9. Wykonaj kroki 1. 8. dla nóg przednich (R1 i L1). Zwró uwag, e otwory monta owe w nasadce serwomotoru stawu biodrowego s obrócone pod k tem 45. Oba segmenty udowe b d ustawione pod 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 ustawione pod k tem 45 w kierunku do ty u heksapoda. 11. Uruchom program phoenix.js i przymocuj nasadki do serwomotorów segmentów udowych ustawionych w pozycji 90. 12. Od cz przewód USB i przewody zasilaj ce. 13. Dokr cztery wkr ty w ka dej nasadce serwomotoru. Rysunek 5.7 przedstawia efekt dotychczasowej pracy. Monta segmentów udowych Aby zamontowa segmenty udowe, wykonaj nast puj ce czynno ci: 1. Uruchom program phoenix.js i ustaw wszystkie serwomotory w pozycji 90. Rysunek 5.7. Szkielet robota ze wszystkimi sze cioma stawami biodrowymi 2. Do segmentów udowych powinny ju by przymocowane nasadki. Za ó je na serwomotory segmentów udowych wszystkich sze ciu nóg. Segmenty udowe b d ustawione na wprost, niemal równolegle do pod o a. 3. Zatrzymaj program phoenix.js, naciskaj c klawisze Ctrl+C, i od cz p ytk Arduino od komputera. Teraz mo esz bezpiecznie przykr ci segmenty udowe do serwomotorów. Rysunek 5.8 przedstawia zamontowane segmenty. Rysunek 5.8. Wszystkie segmenty udowe ju zamontowane Monta segmentów piszczelowych Monta jest prawie zako czony, pozosta y tylko segmenty piszczelowe. Wykonaj nast puj ce czynno ci: Monta robota 89

1. Przymocuj sze segmentów piszczelowych do serwomotorów. Zwró uwag, e trzy elementy s lustrzanymi odbiciami trzech innych. 2. Pod cz przewody od serwomotorów segmentów piszczelowych do nak adki, ale nie mocuj jeszcze serwomotorów do segmentów udowych. Po ponownym uruchomieniu programu phoenix.js porusz si serwomotory wszystkich stawów. Je eli robot jest po o ony p asko na stole, mo e zmieni po o enie i spowodowa powa ne zamieszanie. Od tej chwili przed uruchomieniem programu phoenix.js musisz trzyma robota nad pod o em. Mo esz go trzyma w r ce, albo lepiej zbudowa specjalne stanowisko testowe i z niego korzysta. B d ostro ny, je eli postanowisz trzyma robota w d oni potrafi uszczypn. 3. Uruchom program i ustaw wszystkie serwomotory w pozycji 90. 4. Przymocuj serwomotory segmentów piszczelowych do segmentów udowych. Ko cówki nóg powinny znajdowa si pod nasadkami serwomotorów segmentów piszczelowych. Ustaw segmenty pod niewielkim k tem w kierunku do wewn trz szkieletu. 5. Od cz przewód USB i zasilanie i przykr serwomotory segmentów piszczelowych do segmentów udowych. Teraz jest odpowiedni moment, aby za pomoc opasek zaciskowych uporz dkowa przewody i przymocowa je w odpowiednich miejscach. Pami taj o pozostawieniu odpowiedniego zapasu, aby ka da noga mog a porusza si w pe nym zakresie. Nie pozostawiaj zbyt du ego zapasu, aby przewody nie zaczepia y o nogi. Rysunek 5.9 przedstawia robota z zamontowanymi segmentami piszczelowymi. Rysunek 5.9. Zamontowane segmenty piszczelowe i serwomotory wszystkich stawów ustawione pod k tem 90 Uk ad wspó rz dnych W tym projekcie dla ka dej nogi b dzie zastosowany osobny, lokalny uk ad wspó rz dnych. Zamiast definiowania po o enia ko cówek nóg w przestrzeni za pomoc trzech wspó rz dnych X, Y, Z b d stosowane warto ci k tów obrotów serwomotorów. Jest to tzw. przegubowy uk ad wspó rz dnych. Uk ad ten nie pozwala stosowa tak zaawansowanych metod animacji jak np. kinematyka odwrotna w globalnym uk adzie wspó rz dnych, ale lepiej nadaje si do poznania klasy Animation. Poniewa w programie phoenix.js wykorzystany jest przegubowy uk ad wspó rz dnych, ka dy serwomotor ustawiany jest pod okre lonym k tem. Obracany jest równie lokalny uk ad wspó rz dnych tak, aby osie by y ustawione równolegle. Ponadto odwracane s kierunki obrotów po lewej i prawej stronie robota, jak równie po stronie przedniej i tylnej. Taka konfiguracja powoduje, e poruszanie robotem jest maksymalnie u atwione. Je eli zamierzasz oprogramowa w asny sposób poruszania robotem, przydatne jest narysowanie uk adu wspó rz dnych na stanowisku testowym. rodek uk adu przyjmij w rodku szkieletu robota, a jako jednostk miary ustal jeden centymetr. 90 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Regulacja serwomotorów Do tej pory stara e si jak najdok adniej dopasowa nasadki serwomotorów, jednak wypustki ograniczaj po o enia przek adni i wszystkie nasadki mog by obrócone o kilka stopni. Do zniwelowania tego efektu wykorzystaj w a ciwo offset w obiektach konfiguracyjnych serwomotorów. Kalibracja wszystkich serwomotorów u atwi proces programowania animacji robota. Je eli podczas wykonywania kroku w przód k t obrotu ka dego stawu biodrowego b dzie dok adnie taki sam, wtedy za ka dym razem b dziesz musia wylicza tylko jeden parametr ruchu. W d u szej perspektywie op aci si po wi ci czas na wykonanie tej wst pnej pracy. Regulacja stawów biodrowych Najpierw wyreguluj serwomotor stawu biodrowego L2C: 1. Gdy popatrzysz na robota z góry (rysunek 5.10), segment udowy powinien by ustawiony pod k tem prostym w stosunku do robota (równolegle do osi x uk adu wspó rz dnych). Je eli u ywasz stanowiska testowego z narysowanym uk adem wspó rz dnych, powiniene móc to atwo sprawdzi. Je eli serwomotor L2C ma obróci si zgodnie ze wskazówkami zegara, nale y ustawi go pod k tem wi kszym ni 90. Je eli ma obróci si w przeciwnym kierunku, zmniejsz powy sz warto. Zwi kszaj za ka dym razem k t o kilka stopni, aby znale warto, przy której serwomotor b dzie ustawiony najdok adniej. Nie u ywaj u amkowych warto ci, poniewa platforma Johnny-Five wysy a do serwomotorów tylko warto ci ca kowite: ph.joints.to(91); // Lepsze ustawienie ph.joints.to(94); // O, za daleko! ph.joints.to(93); // Super! 2. Po okre leniu dok adnej warto ci musisz od niej odj liczb 90, aby obliczy warto w a ciwo ci offset. W tym przypadku b dzie to dzia anie 93 90 = 3, wi c w a ciwo offset otrzyma warto 3. Warto ta pe ni dok adnie tak sam rol jak trymer w nadajniku do zdalnego stero- Rysunek 5.10. Wyregulowany staw biodrowy wania. Jej przeznaczeniem jest ustawienie w rodkowej pozycji serwomotoru obróconego o kilka stopni. 3. W kodzie phoenix.js odszukaj wiersz, w którym tworzony jest obiekt l2c, i zmie warto w a ciwo 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ócony w stosunku do serwomotoru po lewej stronie. B dziesz musia odwróci warto ci k ta obrotu. 5. Teraz wyreguluj serwomotor L1C. Segment jest ustawiony pod k tem ok. 45 w stosunku do osi x, ale musi by do niej równoleg y, wi c ustaw serwomotor pod k tem 45. Segment powinien ustawi si do dok adnie, jednak b dziesz musia wyregulowa jego po o enie. Ca y proces wygl da nast puj co: ph.joints.to(45); // Znacznie lepiej ph.joints.to(47); // le, nie tak! ph.joints.to(44); // Super! 6. Po wyregulowaniu odejmij od uzyskanej warto ci liczb 90. B dzie to warto (ujemna) w a ciwo ci offset. 7. Zmie warto w a ciwo ci offset w obiekcie l1c. Cz sto zdarza si, e jest to du a liczba, np. 20. Regulacja serwomotorów 91

8. Powtórz kroki 4. 6. dla pozosta ych trzech serwomotorów stawów biodrowych, a nast pnie zatrzymaj i uruchom ponownie program phoenix.js. Teraz wszystkie serwomotory stawów biodrowych po ustawieniu pod k tem 90 powinny by równoleg e do osi x. Regulacja segmentów udowych Regulacja segmentów udowych jest podobna do opisanej wy ej regulacji stawów biodrowych. Jak poprzednio, segmenty udowe po ustawieniu serwomotorów w pozycji 90 powinny by równoleg e do osi x: 1. Patrz c na robota od przodu lub od ty u, wyreguluj serwomotory segmentów udowych tak, aby segmenty by y skierowane równolegle do pod o a. 2. Od otrzymanych warto ci odejmij liczb 90, aby obliczy warto ci w a ciwo ci offset. 3. Ustaw w a ciwo ci offset dla wszystkich sze ciu obiektów serwomotorów segmentów udowych l1f, r1f, l2f, r2f, l3f oraz r3f. Rysunek 5.11 przedstawia wyregulowane segmenty. Rysunek 5.11. Wyregulowany segment udowy Regulacja segmentów piszczelowych Na koniec wyreguluj segmenty piszczelowe. Tym razem musisz wyregulowa ka dy serwomotor tak, aby po ustawieniu go w pozycji 90 linia poprowadzona od rodka nasadki serwomotoru segmentu piszczelowego 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 ci offset wpisz je w pliku phoenix.js w definicjach obiektów l1t, r1t, l2t, r2t, l3t i r3t. Okre lenie zakresów ruchu serwomotorów Teraz okre l zakres ruchu ka dego serwomotoru. Wi kszo serwomotorów nie obraca si w pe nym zakresie 180. Jest to normalne. Aby uzyska pe ny zakres, mo e by wymagane przeprogramowanie serwomotoru lub w czenie pomi dzy serwomotorem a nak adk silnikow uk adu zwi kszaj cego zakres obrotu. W przypadku heksapoda nie b dzie potrzebny pe ny zakres, wi c nie musisz si tym przejmowa. W rzeczywisto ci b dziesz musia zakres jeszcze bardziej ograniczy, aby serwomotory nie ustawia y si w pozycjach powoduj cych zaczepianie nóg o siebie. W tej cz ci b dziesz za ka dym razem sterowa tylko jednym serwomotorem. Wykonaj nast puj ce czynno ci: 1. Jak poprzednio, zacznij od stawu biodrowego nogi L2. Aby okre li w a ciwe granice, musisz obraca serwomotorem w obu kierunkach. Serwomotor jest w stanie obraca si w wi kszym zakresie, ni jest to konieczne. 2. Metod prób i b dów okre l zakres obrotów w obu kierunkach. Gdy przy pewnej warto ci serwomotor przestanie reagowa, b dzie to znak, e wykroczy e poza zakres ruchu. Je eli na przyk ad serwomotor obróci si przy warto ci 165, 92 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

ale nie b dzie reagowa dla warto ci 166, b dzie to oznacza, e górn granic zakresu stanowi warto 165. Proces regulacji wygl da nast puj co: ph.l2c.to(60); // Wci jest miejsce ph.l2c.to(58); // To dobra pozycja ph.l2c.to(122); // Segmenty udowe zaczepiaj // o siebie ph.l2c.to(119); // SUPER! 3. W pliku phoenix.js odszukaj wiersz, w którym tworzony jest obiekt l2c, i we w a ciwo ci range wpisz 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 ciu serwomotorów stawów biodrowych i zmie w a ciwo ci range w obiektach l1c, l3c, r1c, r2c oraz r3c. W przypadku serwomotorów segmentów udowych i piszczelowych zakres ruchu jest znacznie wi kszy, poniewa istnieje mniejsze prawdopodobie stwo, e podczas obracania serwomotorów nogi b d zaczepia o siebie. W praktyce prawdopodobnie b dziesz wykorzystywa pe ny zakres ruchu serwomotorów zarówno segmentów udowych, jak i piszczelowych. 5. Poeksperymentuj i znajd warto ci, przy których serwomotory ju si nie obracaj. Mo esz zastosowa t sam metod prób i b dów jak w przypadku serwomotorów stawów biodrowych. Pami taj, e zakresy ruchu wszystkich serwomotorów segmentów udowych powinny by takie same (lub podobne). 6. Zmie w a ciwo ci range dla wszystkich obiektów serwomotorów segmentów udowych: l1f, l2f, l3f, r1f, r2f i r3f. 7. Zakresy ruchu wszystkich serwomotorów segmentów piszczelowych równie musz by takie same. Okre l te zakresy. 8. W pliku phoenix.js zmie w a ciwo ci range w obiektach l1t, l2t, l3t, r1t, r2t, r3t. Korzy ci z okre lenia rzeczywistego zakresu ruchu serwomotorów mog nie by oczywiste. Gdyby ustawi k t obrotu na 175 dla serwomotoru, który mo e ustawi si pod k tem 165, wtedy ko ce nóg nie zostan ustawione w pozycjach, których oczekuje program phoenix.js, i klasa Animation przyjmie, e robot wci si porusza, mimo e serwomotor si nie obraca. Nie b dzie to po dany efekt. Po zako czeniu konfiguracji obiekty serwomotorów segmentów udowego i piszczelowego nogi L2 b d wygl 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 range dla wszystkie 18 serwomotorów czas na zabaw! Uruchom robota! Chodzenie jest trudne! Oczywi cie jest mo liwe poruszanie robotem bez korzystania z klasy Animation, ale wymaga to w o enia mnóstwa pracy. By mo e wydaje Ci si, e przesuni cie robota w przód wymaga jedynie postawienia ko ca nogi na pod o u i obrócenia stawu biodrowego wstecz. Problem jednak polega na tym, e ko cówka nogi zakre la uk o rodku znajduj cym si w osi obrotu stawu biodrowego, jak pokazuje rysunek 5.13. Ka da noga zakre la wtedy w asny uk i utrudnia funkcjonowanie innych nóg. Z tego powodu chodzenie wygl da bardzo niezgrabnie. Aby zniwelowa ten efekt i aby ko cówka nogi porusza a si po linii prostej równolegle do kierunku ruchu robota, jak pokazuje rysunek 5.14, trzeba segment Chodzenie jest trudne! 93

sterowany serwomotor lub grupa serwomotorów. Grup mo e by równie tabela serwomotorów, czyli obiekt Servo.Array, lub tabela serwomotorów i obiektów Servo.Array. Poniewa mo e to wydawa si skomplikowane, poznaj kilka przyk adów. Rysunek 5.13. Ten robot chodzi, jakby by pijany Tabela serwomotorów jako grupa docelowa W listingu 5.1 trzy serwomotory wchodz ce w sk ad nogi L1 s poruszane niezale nie. Listing 5.1. Tabela serwomotorów Rysunek 5.14. Taka sekwencja ruchów zapewnia p ynne chodzenie piszczelowy przesuwa do wewn trz i na zewn trz. Ale zaczekaj! Podczas przesuwania segmentu piszczelowego do wewn trz i na zewn trz ko cówka nogi porusza si w gór i w dó w stosunku do pod o a, wi c trzeba jeszcze podnosi i opuszcza segment udowy, aby skompensowa ten efekt. Aby robot porusza si p ynnie, wszystkie 18 serwomotorów musi nieustannie ze sob wspó pracowa w zgrany sposób jak w orkiestrze. To zadanie mo e wydawa si bardzo trudne, ale platforma Johnny-Five i klasa Animation pozwala nad wszystkim zapanowa. Poznaj klas Animation Klasa Animation jest wykorzystywana do sterowania robotami za pomoc skryptów definiuj cych ich ruchy. Klasa ta stanowi opakowanie klasy Servo. Oferuje harmonogramy, kluczowe ramki, p ynne przej cia z jednej ramki do drugiej (ang. tweening) i punkty kontrolne (ang. cue points). Grup docelow stanowi 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 ]); // }); Taki kod pozwala wys a do ka dego z serwomotorów inn warto w dowolnym punkcie kontrolnym harmonogramu. Obiekt Servo.Array jako grupa docelowa Wynik wykonania kodu przedstawionego w listingu 5.2 jest taki sam jak poprzedniego kodu. Zwró jednak uwag, e jako domy lna grupa docelowa przekazywany jest jeden obiekt Servo.Array. Podobnie jak poprzednio, grupa jest jednowymiarow tabel. Tabela obiektów Servo.Array jako grupa docelowa W ostatnim listingu 5.3 serwomotory s zgrupowane wed ug typów stawów. Dzi ki temu mo liwe jest sterowanie serwomotorami stawów biodrowych jako jedn grup, serwomotorami segmentów udowych 94 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

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 piszczelowych jako trzeci. Przekazanie warto ci k towej w argumencie metody obiektu reprezentuj cego ca grup powoduje przekazanie tej samej warto ci w argumentach metod wszystkich obiektów serwomotoró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 na w jednej grupie docelowej umieszcza serwomotory i inne obiekty Servo.Array. Grup serwomotorów w tabeli Servo.Array mo na sterowa tak samo jak ka dym innym urz dzeniem. Teraz przyjrzyj si wierszowi pliku phoenix.js, w którym tworzona jest instancja klasy Animation i definiowana domy lna grupa docelowa: var legsanimation = new five.animation(phoenix.legs); W powy szym wierszu domy lna grupa docelowa phoenix.legs jest obiektem typu Servo.Array zawieraj cym 18 serwomotorów robota. Ta domy lna grupa wymaga okre lenia warto ci dla ka dego serwomotoru w ka dym punkcie kontrolnym harmonogramu. Pierwszy segment animacyjny Po utworzeniu obiektu animacyjnego mo na zdefiniowa segmenty animacyjne. Segment animacyjny to krótka sekwencja ruchów. Segmenty to miejsca, w których zdefiniowane s wszystkie k ty obrotów serwomotorów, punkty kontrolne, czasy trwania ruchu i funkcje wyg adzaj ce. Krótko mówi c, jest to miejsce, w którym dzieje si ca a magia animacyjna. Segmenty animacyjne s wykonywane synchroniczne. Po umieszczeniu w kolejce animacyjnej wykonywane s zgodnie z zasad pierwszy wchodzi, pierwszy wychodzi. Po uruchomieniu programu phoenix.js segmenty mo na wywo ywa z p tli REPL. Poni sza seria polece powoduje, e robot powstaje, idzie, zatrzymuje si i zasypia: > node phoenix ph.stand(); ph.walk(); ph.stop(); ph.sleep(); Pierwszy segment animacyjny 95

Powy sze segmenty zosta y ju zdefiniowane w programie phoenix.js, wi c nie musisz ich tworzy ani edytowa. Poni ej przedstawione s fragmenty programu, które u atwi Ci poznanie zawarto ci segmentów animacyjnych. Przyjrzyj si pokazanemu w listingu 5.4 pierwszemu zdefiniowanemu w pliku phoenix.js segmentowi animacyjnemu. Opcjonalna w a ciwo target definiuje grup animowanych serwomotorów. Po utworzeniu obiektu typu Animation domy ln warto ci tej w a ciwo ci jest grupa docelowa phoenix.legs. W tym segmencie jest ona zast powana grup phoenix.altjoints. Wpisuj c inn warto tej w a ciwo ci, mo na sterowa inn grup serwomotorów. Wszystkie serwomotory w grupie s skojarzone z tym samym harmonogramem i kolejk animacyjn. Je eli we w a ciwo ci target nie wska esz w asnej grupy, wtedy w danym segmencie zostanie u yta domy lna grupa docelowa. W opcjonalnej w a ciwo ci duration okre lany jest w milisekundach czas trwania animacji. Zwró uwag, e zmiana pr dko ci animacji podczas odtwarzania segmentu powoduje wyd u enie lub skrócenie jego czasu trwania (domy lnie w a- ciwo ta ma warto 1000 ms). Opcjonalna w a ciwo cuepoints (punkty kontrolne) jest jednowymiarow tabel warto ci z zakresu od 0,0 do 1,0. Ka dy segment animacyjny ma w asny harmonogram. W harmonogramie mo na zdefiniowa dowoln liczb punktów kontrolnych, w których urz dzenia s sterowane za pomoc kluczowych ramek. Punkty kontrolne i kluczowe ramki nie musz by rozmieszczone w regularnych odst pach czasu. W tym przypadku, gdy czas trwania segmentu jest równy 500 ms, punkty kontrolne odpowiadaj warto ciom 50 ms, 150 ms, 350 ms i 500 ms. Zmiana czasu trwania animacji powoduje zmian skali czasu, w którym realizowane s wszystkie punkty kontrolne (domy lnie s to punkty [0, 1]). Ta funkcja jest wywo ywana po zako czeniu wykonywania segmentu animacyjnego. W a ciwo keyframes (kluczowe ramki) jest w a ciwo ci obowi zkow. Jest to dwuwymiarowa tabela. Pierwszy wymiar odpowiada urz dzeniom w grupie docelowej i jego d ugo musi by równa d ugo ci grupy. Aby okre li urz dzenia powi zane z ka dym elementem pierwszego wymiaru, przyjrzyj si kodowi przedstawionemu w listingu 5.5, w którym zdefiniowana jest grupa docelowa 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 }] ] }; 96 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

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 obiekty reprezentuj ce cztery urz dzenia: phoenix.midcoxa, phoenix.outercoxa, phoenix.femur i pho enix.tibia. Ka dy z nich jest obiektem typu Servo.Array, zawieraj cym dwa, cztery lub sze obiektów reprezentuj cych serwomotory: element keyframes[0] jest skojarzony z serwomotorami rodkowych stawów biodrowych, element keyframes[1] jest skojarzony z serwomotorami przednich i tylnych stawów biodrowych, element keyframes[2] jest skojarzony z serwomotorami segmentów udowych, element keyframes[3] jest skojarzony z serwomotorami segmentów piszczelowych. Ka da tabela keyframes zawiera od 1 do n elementów, gdzie n oznacza liczb punktów kontrolnych. Przeanalizujmy kilka tabel z segmentu stand powoduj cego powstanie robota. Najpierw przyjrzyjmy si elementowi keyframes[0] odpowiadaj cemu grupie innercoxa: [null, false, { degrees: 88 }], W elemencie keyframes[0][0] zdefiniowana jest warto dla pierwszego urz dzenia w grupie docelowej, wykorzystywana w punkcie kontrolnym w chwili 0 ms. W elemencie keyframes[0][1] zdefiniowana jest warto wykorzystywana w punkcie kontrolnym 50 ms. Do okre lenia warto ci po rednich w przedziale czasu od 0 ms do 50 ms wykorzystywana jest funkcja wyg adzaj ca. Pierwsza warto w pierwszym elemencie keyfra mes jest równa null. Oznacza ona, e animacja powinna rozpoczyna si od bie cej pozycji urz dzenia. Je eli urz dzenie jest zdefiniowane za pomoc obiektu Servo.Array, wtedy bie ca pozycja jest odczytywana z pierwszego elementu tego obiektu. Je eli warto null znajduje si w innym elemencie tabeli keyframes, wówczas klasa Animation pomija ramk dla danego urz dzenia. W tej tabeli zdefiniowane s warto ci tylko pierwszych dwóch punktów kontrolnych. We wszystkich pozosta ych wykorzystywana jest ostatnia zdefiniowana warto (tj. 70). Teraz przyjrzyjmy si elementowi keyframes[3] (odpowiadaj cemu serwomotorom segmentów piszczelowych): [null, { degrees: 110}, false, { degrees: 110}] Je eli element w tabeli keyframes zawiera warto false, wówczas klasa Animation kopiuje warto obliczon dla poprzedniego elementu. Umieszczenie w pierwszych dwóch elementach warto ci null i false powoduje, e klasa Animation w ogóle nie b dzie sterowa urz dzeniami, dopóki nie minie drugi punkt kontrolny. Je eli w elemencie zostanie podana liczba, wtedy klasa Animation doda j do poprzedniej warto ci. Ten segment animacyjny powoduje, e heksapod przechodzi z pozycji u pienia w pozycj wyj ciow (pozycja wyj ciowa jest przyjmowana jako pozycja startowa w wi kszo ci segmentów animacyjnych). Gry porównasz kod z listingu 5.5 z kodem w pliku phoenix.js, zauwa ysz ró nice. W pliku zamiast jawnych warto ci liczbowych s u yte elementy z tabeli h. Tabela ta, zdefiniowana na pocz tku pliku, zawiera informacje o pozycjach serwomotorów dla wszystkich podstawowych kroków robota. Dzi ki zapisaniu tych warto ci w jednym miejscu atwiej je stosowa i modyfikowa w dalszej cz ci kodu. Poniewa zastosowanie elementów tabeli powoduje, e kod jest bardziej skomplikowany, w opisywanych przyk adach zosta y u yte liczby. Pierwszy segment animacyjny 97

Chodzenie Sekwencje kroków robota dziel si na dwie g ówne kategorie: statyczne i dynamiczne. Podczas wykonywania kroków statycznych rodek ci ko ci robota w ka dym momencie jest utrzymywany na stabilnym oparciu (przynajmniej na trzech nogach). Innymi s owy robot nie przewróci by si, gdyby w dowolnym momencie zosta zatrzymany w pó kroku. Podczas wykonywania kroku dynamicznego przez pewien czas wyst puje stan nierównowagi. Program phoenix.js wykonuje tylko kroki statyczne. Jak wspomnia em wcze niej, sekwencja kroków heksapoda jest bardziej skomplikowana, ni mog oby si to wydawa. Aby przesun robota w przód, nie wystarczy poruszy jedynie stawami biodrowymi, poniewa spowodowa oby to obrócenie si ko cówek nóg wokó 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 prostej wymaga skoordynowania ruchów wszystkich trzech serwomotorów nogi. Przesuwanie w przód ca ego szkieletu robota wymaga wspó pracy wszystkich 18 serwomotorów, które musz ustawia ko cówki nóg w okre lonych miejscach na pod o u. Je eli serwomotory 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 rodzaje kroków: wios owanie (row), kraul (crawl), marsz (walk) i bieg (run). W ka dym rodzaju kroku przyj ty jest odcinek przesuni cia (odleg o pomi dzy pocz 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ównie fal ) powoduje przesuwanie nóg parami do przodu, anast pnie przesuwanie szkieletu do przodu. Nie jest to elegancki krok (patrz rysunek 5.15), ale prosty w implementacji, poniewa wymaga umieszczenia w tabeli keyframes tylko o miu elementów. Do zdefiniowania ruchu nogi potrzebne s tylko trzy punkty kontrolne. Pierwszy z nich zawiera warto null lub false, wi c ruch nogi rozpoczyna si od bie cych pozycji urz dze, niezale nie od tego, jakie one s. Drugi punkt kontrolny definiuje moment zgi cia nogi, natomiast trzeci jej ko cowy ruch. Ilustruje to listing 5.6. Rysunek 5.15. Fala Listing 5.6. Wios owanie var row = { target: phoenix.jointpairs, duration: 1500, 98 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

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 pozostaj przez ca y czas w kontakcie z pod o em. Krok rozpoczyna si od przesuni cia jednej nogi do przodu. Gdy noga zostanie zgi ta, do przodu przesuwana jest druga noga. Pierwsza noga oprze si na pod o u w tym samym momencie, w którym zostanie zgi ta druga noga. Jednocze nie do przodu przesuwana jest trzecia noga. Graficzne przedstawienie kluczowych ramek dla tego kroku jest trudne, wi c ich opis zosta pomini ty. Gdyby chcia zbada, jak jest realizowany ten krok, ustaw w a ciwo duration segmentu na 20 000 ms. Krok b dzie wtedy wykonywany w zwolnionym tempie. Listing 5.7. Marsz 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 ] }; Chodzenie 99

Bieg (run) Ten krok (zwany popularnie trójnogiem, zdefiniowany w listingu 5.8) powoduje najszybsze przemieszczanie si robota, ale obci a serwomotory segmentów udowych i piszczelowych. Stosuj go rzadko. W tym kroku jednocze nie poruszane s trzy nogi, natomiast trzy inne pozostaj w kontakcie z pod o em i musz one utrzyma wi kszy ci ar ni w przypadku pozosta ych kroków. Obracanie robota Obracanie robota jest trudniejsze ni wykonywanie kroków. Ko cówki nóg nie poruszaj si wtedy po liniach prostych, ale zakre laj koncentryczne uki o rodkach znajduj cych si w rodku szkieletu robota. Promie uku dla nóg R2 i L2 jest inny ni dla pozosta ych czterech nóg. Krok obracaj cy robota jest bardzo podobny do kroku biegowego. Trzy nogi pozostaj w kontakcie z pod- o em, a pozosta e obracaj si o k t pomi dzy 15 a 30. W programie phoenix.js zdefiniowane s dodatkowe, 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 robota i uzyskaniu prawid owego kroku. Lista polece Wszystkie poni sze polecenia mo na wpisywa w p tli REPL 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 prawej nogi) ph.waveright() (przesuni cie przedniej lewej nogi) 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 ] }; 100 5. Sterowanie heksapodem za pomoc platformy Johnny-Five

Wypróbuj mia o powy sze polecenia i sprawd, do czego s u. Co dalej? Teraz Twój heksapod powinien na komend chodzi, obraca si i robi kilka innych rzeczy. Ale to dopiero pocz tek. Mo esz go wykorzysta do tworzenia nowych, niesamowitych konstrukcji. Poni ej wymienionych jest kilka pomys ów, które mo esz zrealizowa : Utwórz inne segmenty animacyjne. U yj podstawy testowej i swojej wyobra ni. Podziel si na forum http://forums.nodebots.io efektami z innymi konstruktorami heksapodów. Dodaj kontroler. Wpisywanie polece w terminalu jest uci liwe. Powiniene zbada inne mo liwo ci sterowania heksapodem. Dost pne s interfejsy API platformy Node.js do nast puj cych kontrolerów: Leap Motion Controller (http://bit.ly/19ly4nm), nak adka SparkFun Joystick po prostu u yj platformy Johnny-Five, Kinect (http://bit.ly/1bqrz4l), Wii Motion Controller po prostu u yj platformy Johnny-Five, Brainwaves (http://bit.ly/19lyot4). Dodaj czujniki. Dodaj kamer i czujniki ultrad wi kowe, aby robot móg orientowa si w swoim otoczeniu. Naucz go podejmowa decyzje oparte na informacjach odbieranych z tych urz dze. Zbuduj innego heksapoda. Przedstawiony w tym rozdziale kod nadaje si nie tylko do sterowania robotem Phoenix. Dost pnych jest wiele innych robotów, pod adresem http://www.thingiverse.com mo na znale nawet ich ogólnodost pne projekty do wykonania na drukarce 3D. B dziesz musia zmieni warto ci w tabelach h, t, s oraz l, ale je eli zbudujesz stanowisko testowe i wyregulujesz wszystkie serwomotory, b dzie to ca kiem proste zadanie. Decyzja o zastosowaniu platform Node.js i Johnny-Five okaza a si s uszna. Wszystkie pakiety npm znajduj si w zasi gu palców. Dzi ki temu mo esz pod a dowolnie wybran cie k. Co wi cej, Johnny-Five jest najbardziej elastyczn i najlepiej obs ugiwan platform wykorzystywan podczas budowania robotów. Realizuj wi c mia o wszystkie pomys y, jakie Ci przyjd do g owy. Rozwój spo eczno ci majsterkowiczów oraz pot ga platformy Node.js sprawiaj, e bardzo przyjemne jest by robotykiem amatorem! Co dalej? 101

Skorowidz A adapter WiFi, 174, 245 adres I2C, 149 IP, 79 akumulator, 18 algorytm sterowania robotem, 208 anatomia ramienia robota, 33 robota delta, 219 animacja, 95 Android, 115 aplikacja WWW, 78, 79, 155 B BatBot algorytm, 214 czujnik ultrad wi kowy, 210 diagnostyka, 215 implementacja algorytmu, 213 monta, 206 poruszanie robotem, 208 sterowanie robotem, 210 wykaz materia ów, 205 zdalne sterowanie, 207 bezpiecze stwo, 189 bezprzewodowe sterowanie robotem, 27 bezprzewodowy robot SimpleBot, 24 biblioteka Johnny-Five, 156 Node.js, 243 Twilio, 193 Volley, 248 wsccat, 74 bieg, 100 budowa a cucha wiate ek, 147 odzi, 50 obwodu mikrofonu, 108 obwodu przeka nika, 106 robota bezprzewodowego, 24 robota SimpleBot, 16 zegara s onecznego, 128 budowanie robotów, 15 C chodzenie, 93, 98, 175 czujnik, 234 HC-SR04, 190 ultrad wi kowy, 190, 206 wody, 69 D dekorowanie a cucha wiate ek, 153 diagram pinów sterownika silnika, 60 dioda LED, 196 RGB, 162 dobór kontrolera matrycy, 146 E elementy elektroniczne lampy CheerfulJ5, 160 interaktywnych butów, 232 panelu LED RGB, 174 robota BatBot, 205 heksapod, 84 Junky Delta, 218 NodeBoat, 50 NodeBot, 104 piduino5, 72 SimpleBot, 16 TypeBot, 32 zegara s onecznego, 126 249

F fala, 98 fotorezystor, 183 fritzing, 37 funkcja, patrz tak e metoda callback, 41 delta_calcangleyz, 227 getlatestcolor, 165 min(), 67 setinterval(), 165 sunpositionindegrees, 143 tick, 141 ultradata(), 200 G generator express, 155 gnomon, 125 H heksapod chodzenie, 98 lista polece, 100 monta robota, 86 obracanie robota, 100 program phoenix.js, 85 regulacja serwomotorów, 91 sterowanie robotem, 84 uk ad wspó rz dnych, 90 wykaz materia ów, 83 zakres ruchu serwomotorów, 92 informacje o serwomotorach, 32 inicjalizacja modu u, 41 platformy Johnny-Five, 75 instalacja biblioteki Node.js, 243 biblioteki Volley, 248 oprogramowania, 73 oprogramowania Android Studio, 247 platformy Node.js, 73 I instancja platformy Johnny-Five, 243 interaktywne buty, 231 czujniki, 235 kod, 238 pod czenie do Arduino, 237 po czenie butów, 235 stan lewego buta, 240 wykaz materia ów, 231 wy wietlanie danych, 239 interaktywny panel LED RGB, 173 interfejs API, 156 ThingSpeak API, 164, 166 Twitter Streaming API, 165 u ytkownika, 79, 157 Web Speech API, 112 J joystick, 79 dotykowy, 80 Junky Delta anatomia robota, 219 budowa, 220 ruch robota, 223 wykaz materia ów, 218 K kabel, 150 kinematyka, 217, 225 klasa Animation, 83, 90, 94, 95 AsyncTask, 122 Led, 75 Led.Matrix, 158 Matrix, 154 Servo.Array, 95 WebSocketServer, 75 kod do lampy CheerfulJ5, 161 funkcji tick, 141 servo-test.js, 20 simplebot.js, 22 steruj cy kolorami, 184 steruj cy obwodem, 109 komponenty zasobnika silnika, 51 komunikaty Firmata, 27 konfiguracja adaptera WiFi, 245 Arduino, 26 czujników, 239 modu u Spark, 56 modu u WiFi, 25 serwomotorów, 41, 130, 131 sprz tu, 244 konsola DualShock, 210 konstrukcja ramienia, 33 kontroler g osowy, 112, 115 matrycy, 146 L lampa CheerfulJ5, 159 kod, 161 czno bezprzewodowa, 169 modu Spark, 171 obwód, 160 umieszczenie obwodu, 171 warianty obudowy, 161 wykaz materia ów, 159 laser, 195 lista serwomotorów, 86 lutowanie sterownika silnika, 58 czenie przewodów, 150 serwomotorów, 37 czno bezprzewodowa, 24, 169 okie, 35 uk wysoko ci, 137 M mapa kolorów, 163 marsz, 99 matryca LED, 147 wietlna, 188 mened er Homebrew, 27 250 Skorowidz

metoda, patrz te funkcja callback, 41 forward(), 76 init, 39 joystick.left(), 80 joystick.up(), 80 led.color(), 165 motor.forward(), 63 move, 40 sonarservo.center(), 210 sonarservo.max(), 210 temporal.queue(), 68 tick, 45 mikrofon, 108 mobilna platforma, 71 mocowanie akumulatora, 18, 76 efektora, 222 przewodów, 37 ramion, 222, 223 segmentu nadgarstka, 37 serwomotoru, 18 okcia, 36 nadgarstka, 36 zasobnika z silnikiem, 65 modulacja szeroko ci impulsu, 60 modu dualshock-controller, 210 keypress, 63 Spark, 56, 58, 59 Spark Core, 58, 169 Spark-IO, 58 temporal, 68 WiFi, 24 WIFI232, 27 modyfikacja silnika, 52 monitoring, 194 monta kad uba odzi, 64 komponentów, 76 komponentów elektronicznych, 87 segmentów piszczelowych, 89 segmentów udowych, 89 silnika, 53 stawów biodrowych, 88 steru, 68 zasobnika na silnik, 55 zegara, 136 N nadgarstek, 36 nap d ró nicowy, 23 Tamiya, 52 narz dzia programistyczne, 155 nawi zanie po czenia, 80 NodeBoat czenie komponentów, 58 modu Spark, 56 sterowanie odzi, 66 sterownik silnika, 58, 62 wodowanie odzi, 64 wykaz materia ów, 50 zasobnik z silnikiem, 51 NodeBot aplikacja Android, 115 kontroler g osowy, 112, 115 mikrofon, 108 obwód przeka nika, 106 p ytka BeagleBone Black, 105 serwer polece, 110 tworzenie projektu, 106 wykaz materia ów, 103 O obiekt Board, 58 MatrixView, 158 Motor, 62, 66 Servo, 66 Servo.Array, 94, 95 obliczenie k ta, 226 obracanie robota, 100 obs uga zdarze, 62, 63 obudowa Beaglebone-io, 181, 182 obwód mikrofonu, 108 przedwzmacniacza mikrofonu, 108 przeka nika, 106 odwrócona kinematyka, 226 opcje konstruktora klasy, 154 oprogramowanie Firmata, 20 LEDScape, 175 VoodooSpark, 170 P palec, 33, 37 panel LED RGB, 173, 175 czujniki, 175 kod, 178, 180 komponenty, 175 obudowa Beaglebone-io, 182 oprogramowanie, 175 schemat pod czenia, 177 wykaz materia ów, 174 zmienianie kolorów, 185 parametr nonblock, 28 Particle WiFi Development Kit, 245 p tla REPL, 84, 163 steruj ca otwarta, 213 zamkni ta, 213 pianka PCV, 135 piduino5 monta komponentów, 76 sterowanie smartfonem, 78 sterowanie urz dzeniami, 75 wykaz materia ów, 72 pierwsze uruchomienie, 46 platforma Johnny-Five, 38, 75, 181, 243 Node.js, 73 ThingSpeak API, 164 plik activity_main.xml, 116 align.js, 36 AndroidManifest.xml, 120 app.js, 79, 156 boat.js, 62 circuit.js, 113 CommandRequest.java, 115, 118 index.html, 79, 111, 112 lights.js, 156 ListenerService.java, 119 MainActivity.java, 116 movebot.js, 209 package.json, 57, 68, 193 phoenix.js, 88 rect_activity_wear_main.xml, 123 Skorowidz 251

plik relay.js, 107 server.js, 110, 112, 114 servos.js, 131 sundial.js, 139 typebot.js, 41 WearMainActivity.java, 120 p ytka Arduino, 244 Arduino Uno, 31 BeagleBone Black, 105, 173, 244 Raspberry Pi, 73, 244 pod czenie Arduino, 74 butów, 237 czujnika HC-SR04, 190 diody laserowej, 196 fotorezystora, 183 matrycy, 151, 152 modu u Spark, 57 modu u WiFi, 25 panelu RGB LED, 176 p ytki Arduino, 151 serwomotorów, 19, 88, 130 silnika, 61 sterownika silnika, 60 zasilania, 59 podparcie tarczy, 134 podstawa, 34 pokojowy zegar s oneczny, 125 po czenie butów, 235 modu u Spark i silnika, 60 z ka dego miejsca, 76 z modu em WiFi, 26 z serwomotorem, 66 pozycja pocz tkowa robota, 42 prezentacja urz dzenia, 189 pr dko obrotowa, 33 program cheerful.js, 162, 166 cheerful-twit.js, 168 matrix-test.js, 154 open-pixel-test.js, 179 phoenix.js, 85 socat, 27 Spark, 57 steruj cy, 21 sundial.js, 139, 140, 141 VSPE, 28 warmup.js, 224 programowanie, 247 serwomotoru, 66 projekt VoiceController, 247 protokó WebSocket, 74, 75 prototyp systemu bezpiecze stwa, 201 przedwzmacniacz mikrofonu, 108 przegl darka, 75 przeka nik, 106 przeliczanie odczytów, 186 przewód mikro-usb, 50 przycisk resetowania, 27 przygotowanie czujników, 234 kabla, 150 matryc, 149 serwomotorów, 87 przyspieszeniomierz, 185 PWM, pulse-width modulated, 33, 60 R rami, 38 azymutu, 128, 136 robota, 32, 33 regulacja ramienia, 46 segmentów piszczelowych, 92 segmentów udowych, 92 serwomotorów, 91 stawów biodrowych, 91 rejs, 69 resetowanie Arduino, 28 uk adów, 28 robot Army, 217, 229, 230 BatBot, 203 Junky Delta, 217 NodeBoat, 49 NodeBot, 15, 103 piduino5, 71, 76 SimpleBot, 15 TapsterBot, 217, 229 TypeBot, 31 roboty autonomiczne, 204 delta, 217 pisz ce, 31 semiautonomiczne, 204 sterowane g osem, 103 zdalnie sterowane, 204 rozpoznawanie mowy, 112 ruch ramienia, 34 rysowanie prostok ta, 228 rzepy, 76 S schemat ideowy pod czenia czujnika, 207 obwodu przeka nika, 107 pod czenia fotorezystora, 184, 186 po cze robota SimpleBot, 19 ruchów robota, 208 stanów, 43 segment animacyjny, 95 palca, 37 sekwencja naci ni klawiszy, 43 serwer polece, 110 WWW, 75 serwis GitHub, 201 serwomotor, 17, 18, 21, 86 silnik, 53 SimpleBot budowa robota, 16 diagnostyka problemów, 21, 28 czno bezprzewodowa, 24 sterowanie robotem, 25 wykaz materia ów, 16 Spark WiFi Development Kit, 169 sprawdzenie sieci, 26 silnika, 53 252 Skorowidz

stan buta, 240 klawiszy, 63 robota, 212 staw biodrowy, 88 okciowy, 35 ster, 68 sterowanie, 23 smartfonem, 78 diod RGB, 162 heksapodem, 83 odzi, 66 matrycami, 157 matryc LED, 153 obwodem przeka nika, 107 robotem, 210 robotem SimpleBot, 25 serwomotorami, 38 sterowanie serwomotorem, 67 silnikiem, 62 urz dzeniami, 75 sterownik silnika, 51, 58, 59 sygna o modulowanej szeroko ci, 33 system bezpiecze stwa, 201 monitoringu, 194 szkic StandardFirmata.ino, 26 sztuczna inteligencja, 203 szyna I2C, 148, 150 ruba, 54 wiate ka-straszyde ka, 145 aplikacja WWW, 155 budowa, 147 diagnostyka, 153 interfejs u ytkownika, 157 komponenty, 146 program testuj cy, 154 sterowanie matryc LED, 153 wykaz materia ów, 145 T tabela obiektów Servo.Array, 94 serwomotorów, 94 tag <div>, 80 tarcza, 132 tarcze gnomonu, 133 test modu u Spark, 56, 57 tworzenie interfejsu API, 156 interfejsu u ytkownika, 157 plików projektu, 38 projektu Android, 247 serwera polece, 110 TypeBot budowa cz ci mechanicznej, 34 inicjalizacja, 41 pierwsze uruchomienie, 46 program, 38 wykaz materia ów, 31 U uk ad wspó rz dnych, 90 umieszczenie tarcz, 134 urz dzenie ultrad wi kowe, 193 us uga CheerLights, 163, 164 ustawianie czujnika ultrad wi kowego, 210 uszczelnienie przewodów, 55 W warto null, 97 wiercenie otworów, 222 wios owanie, 98 wodowanie odzi, 64 wska nik stanu, 196 wtyczka Spark-io, 170 wyci cie gnomonu, 138 wyliczanie po o enia efektora, 227 wysy anie polece, 80 SMS-ów, 193 wy wietlacz, 173 Z zak adanie czówek, 152 zakres ruchu serwomotorów, 92 zapisywanie stanu klawiszy, 63 zasilacz 5 V, 174 zasilanie sterownika silnika, 59 zasobnik z silnikiem, 51, 54, 55 zatrzask, 52 zdalne sterowanie, 207 zdarzenie message, 76 naci ni cia klawisza, 62 zegar s oneczny, 125 budowanie, 128 kod, 139 konfiguracja serwomotorów, 130 konstrukcja g ówna, 129 monta, 136 podparcie tarczy, 133 przygotowanie tarcz, 132 cianki, 133 w czanie, 144 wycinanie elementów, 129 wykaz materia ów, 126 zmiana kolorów, 185 rezystancji czujnika, 233 Skorowidz 253