E-book details

Nauka robotyki z językiem Python

Nauka robotyki z językiem Python

Lentin Joseph

Ebook
Roboty wkraczają do różnych dziedzin naszego życia, więc robotyka nabiera coraz większego znaczenia. Nauka o robotach, ich budowaniu i programowaniu jest dość złożoną, ale fascynującą dziedziną. Jej opanowanie wymaga wysiłku, jednak aby zaprojektować łatwy do wykorzystania interfejs, wystarczy posłużyć się kilkoma programami narzędziowymi oraz językiem Python. W ten sposób można zaprojektować zachowania robota, określić, w jaki sposób będzie zmierzał do celu, reagował na sygnały otaczającego świata, czy sprawić, by oczekiwał na instrukcje.

Dzięki tej książce można się nauczyć, jak z wykorzystaniem języka Python oraz kilku popularnych frameworków stosowanych w robotyce, takich jak system ROS, budować autonomiczne roboty mobilne. Omówiono w niej również inne frameworki programistyczne, w tym również te dla Pythona. Aby równocześnie pokazać praktyczne wykorzystanie przedstawianego materiału, omówiono krok po kroku proces budowania robota-służącego ChefBot, który na przykład może podawać posiłki w domu, hotelu czy restauracji.

W tej książce przedstawiono:
  • zwięzłe podstawy robotyki i zasady projektowania oprogramowania robotów,
  • aspekty projektowania CAD 2D i 3D z wykorzystaniem programów LibreCAD i Blender,
  • budowanie modeli 3D z wykorzystaniem API Blender dla Pythona,
  • zagadnienia sprzętowej warstwy projektowania robota,
  • zasady obsługi sensorów robotów, w tym programowanie sensorów wizji,
  • obsługę rozpoznawania mowy i syntezę mowy z wykorzystaniem Pythona i ROS,
  • implementację sztucznej inteligencji za pomocą Pythona,
  • zagadnienie testowania i kalibrowania robota.

Przekonaj się, jak fascynujące jest programowanie robotów!


Lentin Joseph — inżynier elektroniki, entuzjasta robotyki i ekspert w dziedzinie systemów wbudowanych. Szczególnie interesuje się robotyką, przetwarzaniem obrazu i zastosowaniem języka Python w programowaniu robotów. Jest również znawcą wielu platform oprogramowania robotów, takich jak system ROS (ang. Robot Operating system), V-REP i Actin. Biegle posługuje się bibliotekami przetwarzania obrazu, w tym OpenCV, OpenNI i PCL. Specjalizuje się również w dziedzinie projektowania 3D i programowania systemów wbudowanych na platformach Arduino i Launchpad Stellaris. Jest właścicielem firmy Qbotics Labs zajmującej się rozwijaniem robotyki i jej zastosowaniami w wielu dziedzinach.

O autorze (11)

O recenzentach (13)

Przedmowa (15)

Rozdział 1. Wprowadzenie do robotyki (19)

  • Czym jest robot? (20)
    • Historia terminu "robot" (20)
    • Współczesna definicja robota (22)
  • Skąd pochodzą roboty? (25)
  • Co można znaleźć w robocie? (28)
    • Ciało fizyczne (29)
    • Sensory (29)
    • Efektory (29)
    • Kontrolery (30)
  • Jak budujemy robota? (31)
    • Sterowanie reaktywne (31)
    • Sterowanie hierarchiczne (deliberatywne) (31)
    • Sterowanie hybrydowe (32)
  • Podsumowanie (33)

Rozdział 2. Projekt mechaniki robota usługowego (35)

  • Wymagania dla robota usługowego (36)
  • Mechanizm napędowy robota (36)
    • Wybór silników i kół (36)
    • Podsumowanie projektu (38)
    • Projekt podwozia robota (38)
  • Instalacja oprogramowania LibreCAD, Blender i MeshLab (40)
    • Instalacja programu LibreCAD (40)
    • Instalacja programu Blender (40)
    • Instalacja programu MeshLab (41)
  • Tworzenie rysunku CAD 2D robota z wykorzystaniem programu LibreCAD (41)
    • Projekt płyty bazowej (43)
    • Projekt biegunów płyty bazowej (44)
    • Projekt kół, silnika i uchwytów silnika (45)
    • Projekt kół kastora (47)
    • Projekt płyty środkowej (47)
    • Projekt płyty górnej (48)
  • Praca z modelem 3D robota z wykorzystaniem programu Blender (48)
    • Wykorzystanie skryptów Pythona w programie Blender (49)
    • Wprowadzenie do API Pythona programu Blender (50)
    • Skrypt modelu robota w Pythonie (51)
  • Pytania (56)
  • Podsumowanie (56)

Rozdział 3. Symulacja robota z wykorzystaniem systemów ROS i Gazebo (59)

  • Symulacja robota (59)
    • Modelowanie matematyczne robota (62)
    • Wprowadzenie do ROS i Gazebo (69)
    • Instalacja systemu ROS Indigo w systemie Ubuntu 14.04.2 (72)
    • Symulacja robotów ChefBot i TurtleBot w środowisku hotelu (96)
  • Pytania (100)
  • Podsumowanie (101)

Rozdział 4. Projektowanie sprzętu robota ChefBot (103)

  • Specyfikacje sprzętu robota ChefBot (104)
  • Schemat blokowy robota (104)
    • Silnik i enkoder (104)
    • Sterownik silnika (106)
    • Płyta wbudowanego kontrolera (109)
    • Sensory ultradźwiękowe (110)
    • Inercyjna jednostka pomiarowa (112)
    • Kinect (113)
    • Centralna jednostka obliczeniowa (114)
    • Głośniki i mikrofon (115)
    • Zasilacz (akumulator) (115)
  • Opis działania sprzętu robota ChefBot (115)
  • Pytania (118)
  • Podsumowanie (118)

Rozdział 5. Aktuatory i enkodery kół (119)

  • Podłączenie motoreduktora DC z kontrolerem Tiva C LaunchPad (120)
    • Robot kołowy z napędem różnicowym (122)
    • Instalacja IDE Energia (123)
    • Kod interfejsu (126)
  • Podłączenie enkodera kwadraturowego do kontrolera Tiva C LaunchPad (130)
    • Przetwarzanie danych enkodera (131)
    • Kod interfejsu z enkoderem kwadraturowym (134)
  • Praca z aktuatorami Dynamixel (137)
  • Pytania (140)
  • Podsumowanie (141)

Rozdział 6. Wykorzystanie sensorów (143)

  • Ultradźwiękowe sensory odległości (143)
    • Podłączenie modułu HC-SR04 z kontrolerem Tiva C LaunchPad (144)
  • Sensory odległości na podczerwień (149)
  • Inercyjne jednostki pomiarowe (IMU) (152)
    • Nawigacja inercyjna (152)
    • Połączenie sensora MPU 6050 z kontrolerem Tiva C LaunchPad (154)
    • Kod interfejsu w środowisku Energia (156)
  • Kod interfejsu sensora MPU 6050 z kontrolerem Launchpad z wykorzystaniem DMP w środowisku Energia (159)
  • Pytania (164)

Rozdział 7. Programowanie sensorów wizji z wykorzystaniem języka Python i systemu ROS (165)

  • Lista sensorów wizji dla robota i bibliotek przetwarzania obrazu (166)
  • Wprowadzenie do OpenCV, OpenNI oraz PCL (169)
    • Czym jest OpenCV? (170)
    • Co to jest OpenNI? (174)
    • Co to jest PCL? (175)
  • Programowanie sensora Kinect za pomocą języka Python z wykorzystaniem ROS, OpenCV i OpenNI (176)
    • Jak uruchomić sterownik OpenNI? (176)
    • Interfejs ROS do biblioteki OpenCV (177)
  • Przetwarzanie chmur punktów z wykorzystaniem sensora Kinect, systemu ROS oraz bibliotek OpenNI i PCL (182)
    • Otwieranie urządzenia i generowanie chmury punktów (182)
  • Konwersja chmury punktów na dane skanu laserowego (183)
  • Wykorzystanie techniki SLAM z systemem ROS i sensorem Kinect (185)
  • Pytania (186)
  • Podsumowanie (186)

Rozdział 8. Rozpoznawanie i synteza mowy z wykorzystaniem systemu ROS i języka Python (187)

  • Rozpoznawanie mowy (188)
    • Schemat blokowy systemu rozpoznawania mowy (188)
    • Biblioteki rozpoznawania mowy (189)
    • Windows Speech SDK (190)
    • Synteza mowy (190)
    • Biblioteki syntezy mowy (191)
  • Rozpoznawanie i synteza mowy w systemie Ubuntu 14.04.2 z wykorzystaniem języka Python (192)
    • Konfiguracja biblioteki Pocket Sphinx i jej wrapperów dla języka Python w systemie Ubuntu 14.04.2 (192)
    • Wykorzystanie wrappera biblioteki Pocket Sphinx do języka Python w systemie Ubuntu 14.04.2 (193)
    • Wyjście (194)
  • Rozpoznawanie mowy w czasie rzeczywistym z wykorzystaniem biblioteki Pocket Sphinx, frameworka GStreamer i języka Python w systemie Ubuntu 14.04.2 (195)
  • Rozpoznawanie mowy za pomocą narzędzia Julius i języka Python w systemie Ubuntu 14.04.2 (198)
    • Instalacja narzędzia rozpoznawania mowy Julius i modułu języka Python (198)
    • Kod klienta Python-Julius (199)
    • Poprawianie dokładności rozpoznawania mowy w Pocket Sphinx i Julius (200)
    • Konfiguracja syntezatorów eSpeak i Festival w systemie Ubuntu 14.04.2 (201)
  • Rozpoznawanie i synteza mowy z wykorzystaniem języka Python w systemie Windows (202)
    • Instalacja pakietu Speech SDK (202)
  • Rozpoznawanie mowy w systemie ROS Indigo z wykorzystaniem języka Python (203)
    • Instalacja pakietu pocketsphinx w systemie ROS Indigo (203)
  • Synteza mowy w systemie ROS Indigo z wykorzystaniem języka Python (204)
  • Pytania (206)
  • Podsumowanie (206)

Rozdział 9. Zastosowanie mechanizmów sztucznej inteligencji w robocie ChefBot za pośrednictwem języka Python (207)

  • Schemat blokowy systemu komunikacji w robocie ChefBot (208)
  • Wprowadzenie do AIML (209)
    • Wprowadzenie do znaczników AIML (209)
  • Wprowadzenie do PyAIML (212)
    • Instalacja modułu PyAIML w systemie Ubuntu 14.04.2 (213)
    • Instalacja modułu PyAIML z kodu źródłowego (213)
  • Przetwarzanie formatu AIML z poziomu języka Python (213)
    • Załadowanie pojedynczego pliku AIML za pośrednictwem argumentu wiersza polecenia (215)
  • Wykorzystanie plików AIML robota A.L.I.C.E. (216)
    • Ładowanie plików AIML do pamięci (216)
    • Ładowanie plików AIML i zapisywanie ich do plików .brn (217)
    • Ładowanie plików AIML i plików .brn za pomocą metody bootstrap (218)
  • Integracja biblioteki PyAIML z systemem ROS (219)
    • aiml_server.py (219)
    • aiml_client.py (220)
    • aiml_tts_client.py (221)
    • aiml_speech_recog_client.py (221)
    • start_chat.launch (223)
    • start_tts_chat.launch (223)
    • start_speech_chat.launch (223)
  • Pytania (225)
  • Podsumowanie (225)

Rozdział 10. Integracja sprzętu i programowanie robota ChefBot z wykorzystaniem języka Python (227)

  • Budowa sprzętu robota ChefBot (228)
  • Konfiguracja komputera PC robota ChefBot i ustawienie pakietów systemu ROS (232)
  • Interfejs sensorów robota ChefBot z kontrolerem Tiva C LaunchPad (233)
    • Wbudowany kod robota ChefBot (234)
  • Sterownik systemu ROS dla robota ChefBot w języku Python (236)
  • Pliki startowe systemu ROS dla robota ChefBot (241)
  • Korzystanie z plików startowych i węzłów robota ChefBot z poziomu języka Python (242)
    • Wykorzystanie algorytmu SLAM w systemie ROS do zbudowania mapy pomieszczenia (248)
    • Lokalizacja i nawigacja w systemie ROS (250)
  • Pytania (251)
  • Podsumowanie (251)

Rozdział 11. Projektowanie GUI dla robota za pomocą biblioteki Qt oraz języka Python (253)

  • Instalacja frameworka Qt w systemie Ubuntu 14.04.2 LTS (254)
  • Korzystanie z wrappera frameworka Qt dla języka Python (254)
    • PyQt (255)
    • PySide (255)
  • Korzystanie z wrapperów PyQt oraz PySide (256)
    • Wprowadzenie do programu Qt Designer (256)
    • Sygnały i gniazda Qt (258)
    • Konwersja pliku UI na kod w języku Python (260)
    • Dodawanie definicji gniazda do kodu PyQt (260)
    • Uruchomienie aplikacji GUI Witaj świecie (262)
  • Interfejs GUI sterowania robotem ChefBot (263)
    • Instalacja i korzystanie z narzędzia rqt w systemie Ubuntu 14.04.2 LTS (269)
  • Pytania (271)
  • Podsumowanie (271)

Rozdział 12. Kalibracja i testowanie robota ChefBot (273)

  • Kalibrowanie sensora Xbox Kinect z wykorzystaniem systemu ROS (273)
    • Kalibracja kamery RGB sensora Kinect (274)
    • Kalibracja kamery podczerwieni sensora Kinect (277)
  • Kalibracja odometrii kół (279)
    • Analiza błędów odometrii kół (279)
    • Korekcja błędów (280)
  • Kalibracja sensora MPU 6050 (281)
  • Testowanie robota za pomocą interfejsu GUI (282)
    • Zalety i wady nawigacji w systemie ROS (285)
  • Pytania (285)
  • Podsumowanie (285)

Skorowidz (287)

  • Title: Nauka robotyki z językiem Python
  • Author: Lentin Joseph
  • Original title: Learning Robotics using Python
  • Translation: Radosław Meryk
  • ISBN: 978-83-283-2346-9, 9788328323469
  • Date of issue: 2016-05-13
  • Format: Ebook
  • Item ID: naropy
  • Publisher: Helion