TechLab - Laboratórium budúcnosti

        • 5. DOBOT MAGICIAN - PYTHON + LINUX

        • Sedenie 5.1: Uvod do Linuxu, uvod do programovania

          Trvanie: 45 min práca + 45 min samostatne
          Cieľ: Základná orientácia v Linuxe a prvý Python program

          Potrebné:

          • 1x Notebook s Linuxom (Ubuntu)
          • Textový editor (nano, gedit, VS Code)

          Postup (45 min):

          1. Linux terminal (15 min)
            • Otvor terminál (Ctrl+Alt+T)
            • Základné príkazy:
              • pwd - kde som
              • ls - čo je tu
              • cd Desktop - choď do priečinka
              • cd .. - choď o úroveň vyššie
              • mkdir techlab - vytvor priečinok
              • cd techlab
            • Vytvor pracovný priečinok pre projekty
          2. Prvý Python program (20 min)
            • Otvor editor: nano hello.py
            • Napíš:

          python

               print("Hello, TechLab!")
          • Ulož (Ctrl+O, Enter, Ctrl+X)
          • Spusti: python3 hello.py
          • Vylepši:

          python

               meno = input("Ako sa voláš? ")
               print("Ahoj, " + meno + "!")
          1. Premenné a matematika (10 min)
            • Vytvor calculator.py

          python

             a = 10
             b = 5
             print("Súčet:", a + b)
             print("Rozdiel:", a - b)
             print("Súčin:", a * b)
             print("Podiel:", a / b)
          • Vylepši - zadávanie od používateľa:

          python

             a = int(input("Zadaj číslo: "))
             b = int(input("Zadaj druhé číslo: "))
             print("Súčet:", a + b)

          Samostatná práca (45 min):

          • Urob program na prepočet mien (EUR → CZK)
          • Urob program na výpočet obsahu obdĺžnika
          • Urob "hádaj číslo" hru (if-elif-else)
          • Skús for cyklus (vypíš čísla 1-10)

          Troubleshooting:

          • Príkaz nenájdený → skontroluj preklepy, python3 nie python
          • Chyba v kóde → prečítaj error message, skontroluj odsadenie
          • Terminál nereaguje → Ctrl+C prerušenie

          Sedenie 5.2: Robot - sekvencie z bodu do bodu

          Trvanie: 45 min práca + 45 min samostatne
          Cieľ: Naprogramovať Dobot na pohyb medzi bodmi, použiť gripper

          Potrebné:

          • Dobot Magician
          • Gripper (chapadlo)
          • Notebook s Linuxom
          • Dobot Python knižnica (DobotAPI)
          • Malé predmety na uchopenie (kocky, guľôčky)

          Postup (45 min):

          1. Inštalácia knižnice (10 min)
            • Terminál:

          bash

             cd ~/techlab
             pip3 install pydobot
          • Zapoj Dobot USB
          • Nainštaluj gripper na koncovú časť
          • Test pripojenia:

          python

             from pydobot import Dobot
             
             port = '/dev/ttyUSB0'  # alebo ttyACM0
             dobot = Dobot(port=port)
             dobot.home()
             
             # Test grippera
             dobot.grip(True)   # zavrieť
             import time
             time.sleep(2)
             dobot.grip(False)  # otvoriť
             
             dobot.close()
          1. Prvý pohyb s gripperom (15 min)
            • Vytvor dobot_pick.py:

          python

             from pydobot import Dobot
             import time
             
             dobot = Dobot(port='/dev/ttyUSB0')
             
             # Home pozícia
             dobot.home()
             time.sleep(2)
             
             # Otvor gripper
             dobot.grip(False)
             time.sleep(1)
             
             # Pohyb k objektu
             dobot.move_to(200, 0, 20, 0)  # nízko
             time.sleep(2)
             
             # Uchop
             dobot.grip(True)
             time.sleep(1)
             
             # Zdvihni
             dobot.move_to(200, 0, 80, 0)
             time.sleep(2)
             
             # Presuň
             dobot.move_to(200, 150, 80, 0)
             time.sleep(2)
             
             # Zostup
             dobot.move_to(200, 150, 20, 0)
             time.sleep(2)
             
             # Pusť
             dobot.grip(False)
             time.sleep(1)
             
             # Späť hore
             dobot.move_to(200, 150, 80, 0)
             time.sleep(1)
             
             dobot.home()
             dobot.close()
          1. Nájdenie súradníc (10 min)
            • Ručne pohni Dobot do pozície (gripper vypnutý!)
            • Spusti:

          python

             from pydobot import Dobot
             
             dobot = Dobot(port='/dev/ttyUSB0')
             pose = dobot.pose()
             print("X:", pose[0])
             print("Y:", pose[1])
             print("Z:", pose[2])
             print("R:", pose[3])
             dobot.close()
          • Zapíš si dôležité body (miesto uchopenia, miesto položenia)
          1. Pick and place funkcia (10 min)

          python

             from pydobot import Dobot
             import time
             
             dobot = Dobot(port='/dev/ttyUSB0')
             dobot.home()
             
             def pick_and_place(x1, y1, z1, x2, y2, z2):
                 # Otvor gripper
                 dobot.grip(False)
                 time.sleep(0.5)
                 
                 # K objektu
                 dobot.move_to(x1, y1, z1 + 30, 0)  # nad objektom
                 time.sleep(1)
                 dobot.move_to(x1, y1, z1, 0)       # zostup
                 time.sleep(1)
                 
                 # Uchop
                 dobot.grip(True)
                 time.sleep(1)
                 
                 # Zdvihni
                 dobot.move_to(x1, y1, z1 + 30, 0)
                 time.sleep(1)
                 
                 # Presuň
                 dobot.move_to(x2, y2, z2 + 30, 0)
                 time.sleep(1)
                 dobot.move_to(x2, y2, z2, 0)
                 time.sleep(1)
                 
                 # Pusť
                 dobot.grip(False)
                 time.sleep(1)
                 
                 # Späť hore
                 dobot.move_to(x2, y2, z2 + 30, 0)
                 time.sleep(1)
             
             # Použitie
             pick_and_place(200, 0, 10, 200, 150, 10)
             pick_and_place(200, 50, 10, 200, 200, 10)
             
             dobot.home()
             dobot.close()

          Samostatná práca (45 min):

          • Nakresli štvorec s gripperom
          • Urob sortovanie - 3 objekty na 3 miesta
          • Urob "tower of hanoi" - presúvanie kociek
          • Experimentuj s rýchlosťou pohybu

          Troubleshooting:

          • Dobot nenájdený → skontroluj port ls /dev/tty*, skús ttyACM0
          • Chyba pripojenia → práva sudo chmod 666 /dev/ttyUSB0
          • Gripper nefunguje → skontroluj napájanie, pripojenie
          • Objekt vypadáva → gripper potrebuje kalibráciu, zväčši grip time
          • Robot ide mimo → malé pohyby, skontroluj workspace limits

          Sedenie 5.3: Podprogramy, funkcie, volanie tlačidlom

          Trvanie: 45 min práca + 45 min samostatne
          Cieľ: Používať funkcie a ovládať robot tlačidlami

          Postup (45 min):

          1. Úvod do funkcií (10 min)

          python

             def pozdrav():
                 print("Ahoj z funkcie!")
             
             # Zavolanie
             pozdrav()
             pozdrav()
          • Funkcia s parametrami:

          python

             def pozdrav_meno(meno):
                 print("Ahoj, " + meno + "!")
             
             pozdrav_meno("Peter")
             pozdrav_meno("Jana")
          1. Dobot funkcia - štvorec (15 min)

          python

             from pydobot import Dobot
             import time
             
             dobot = Dobot(port='/dev/ttyUSB0')
             dobot.home()
             
             def stvorec(x_start, y_start, velkost):
                 dobot.move_to(x_start, y_start, 50, 0)
                 time.sleep(1)
                 dobot.move_to(x_start + velkost, y_start, 50, 0)
                 time.sleep(1)
                 dobot.move_to(x_start + velkost, y_start + velkost, 50, 0)
                 time.sleep(1)
                 dobot.move_to(x_start, y_start + velkost, 50, 0)
                 time.sleep(1)
                 dobot.move_to(x_start, y_start, 50, 0)
             
             # Zavolanie
             stvorec(150, 0, 50)
             stvorec(150, 100, 30)
             
             dobot.close()
          1. Funkcia s return (10 min)

          python

             def vypocitaj_bod(x, y, offset):
                 novy_x = x + offset
                 novy_y = y + offset
                 return novy_x, novy_y
             
             x, y = vypocitaj_bod(100, 50, 20)
             dobot.move_to(x, y, 50, 0)
          1. Ovládanie klávesnicou (10 min)

          python

             from pydobot import Dobot
             
             dobot = Dobot(port='/dev/ttyUSB0')
             dobot.home()
             
             def hore():
                 pose = dobot.pose()
                 dobot.move_to(pose[0], pose[1] + 10, pose[2], pose[3])
             
             def dole():
                 pose = dobot.pose()
                 dobot.move_to(pose[0], pose[1] - 10, pose[2], pose[3])
             
             print("w - hore, s - dole, q - koniec")
             while True:
                 prikaz = input("Príkaz: ")
                 if prikaz == "w":
                     hore()
                 elif prikaz == "s":
                     dole()
                 elif prikaz == "q":
                     break
             
             dobot.close()

          Samostatná práca (45 min):

          • Vytvor funkcie pre všetky smery (hore/dole/vľavo/vpravo)
          • Vytvor funkciu kruh()
          • Vytvor funkciu hviezda()
          • Urob menu s možnosťami (1-štvorec, 2-kruh, atď.)

          Sedenie 5.4: Premenné, podmienky, senzory

          Trvanie: 45 min práca + 45 min samostatne
          Cieľ: Použiť RGB a IR senzory Dobotu a reagovať na ne

          Potrebné:

          • Dobot Magician
          • RGB color senzor (pripojený na EIO port)
          • IR infrared senzor (pripojený na EIO port)
          • Farebné predmety (červená, zelená, modrá kocka)
          • Notebook s Linuxom

          Postup (45 min):

          1. Čítanie RGB senzora (15 min)

          python

             from pydobot import Dobot
             import time
             
             dobot = Dobot(port='/dev/ttyUSB0')
             dobot.home()
             
             # RGB senzor na porte EIO12 (uprav podľa zapojenia)
             while True:
                 # Čítaj analógový vstup
                 color_value = dobot.get_io_multiplexing(12)
                 print(f"RGB hodnota: {color_value}")
                 
                 # Určenie farby (potrebná kalibrácia!)
                 if color_value < 100:
                     print("Červená")
                 elif color_value < 200:
                     print("Zelená")
                 elif color_value < 300:
                     print("Modrá")
                 else:
                     print("Žiadna farba")
                 
                 time.sleep(1)
          1. IR senzor - detekcia objektu (10 min)

          python

             from pydobot import Dobot
             import time
             
             dobot = Dobot(port='/dev/ttyUSB0')
             dobot.home()
             
             # IR senzor na porte EIO10
             print("Čakám na objekt...")
             while True:
                 ir_value = dobot.get_io_multiplexing(10)
                 
                 if ir_value == 1:  # Objekt detekovaný
                     print("Objekt detekovaný!")
                     dobot.move_to(200, 0, 50, 0)
                     time.sleep(2)
                     dobot.home()
                     break
                 
                 time.sleep(0.1)
             
             dobot.close()
          1. Kombinácia RGB + Gripper (20 min)

          python

             from pydobot import Dobot
             import time
             
             dobot = Dobot(port='/dev/ttyUSB0')
             dobot.home()
             dobot.grip(False)
             
             # Pozície pre farby
             RED_POS = (150, 100, 10)
             GREEN_POS = (200, 100, 10)
             BLUE_POS = (250, 100, 10)
             
             def detect_color(value):
                 if value < 100:
                     return "RED"
                 elif value < 200:
                     return "GREEN"
                 elif value < 300:
                     return "BLUE"
                 return "NONE"
             
             def sort_by_color(x, y, z):
                 # K objektu
                 dobot.move_to(x, y, z + 30, 0)
                 time.sleep(1)
                 dobot.move_to(x, y, z, 0)
                 time.sleep(1)
                 
                 # Čítaj farbu
                 color_value = dobot.get_io_multiplexing(12)
                 color = detect_color(color_value)
                 print(f"Farba: {color}")
                 
                 # Uchop
                 dobot.grip(True)
                 time.sleep(1)
                 dobot.move_to(x, y, z + 30, 0)
                 time.sleep(1)
                 
                 # Polož podľa farby
                 if color == "RED":
                     target = RED_POS
                 elif color == "GREEN":
                     target = GREEN_POS
                 elif color == "BLUE":
                     target = BLUE_POS
                 else:
                     dobot.grip(False)
                     return
                 
                 dobot.move_to(target[0], target[1], target[2] + 30, 0)
                 time.sleep(1)
                 dobot.move_to(target[0], target[1], target[2], 0)
                 time.sleep(1)
                 dobot.grip(False)
                 time.sleep(1)
             
             sort_by_color(200, 0, 10)
             dobot.home()
             dobot.close()

          Samostatná práca (45 min):

          • Urob automatické triedenie - IR + RGB + gripper
          • Pridaj počítadlo farieb
          • Urob "quality control" - len zelené ďalej
          • Kombinuj RGB + pozíciu

          Troubleshooting:

          • RGB nevráti hodnotu → skontroluj port EIO, zapojenie
          • Hodnoty nestabilné → kalibruj, konštantné svetlo
          • IR nereaguje → vzdialenosť 1-10cm
          • Farby sa menia → rekalibruj thresholdy

          Sedenie 5.5: Podprogramy ovládané senzormi + posuvný pás

          Trvanie: 45 min práca + 45 min samostatne
          Cieľ: Automatizované správanie s posuvným pásom, RGB a IR senzormi

          Potrebné:

          • Dobot Magician
          • Posuvný pás (conveyor belt)
          • RGB senzor
          • IR senzor
          • Gripper
          • Farebné objekty
          • Notebook s Linuxom

          Postup (45 min):

          1. Ovládanie posuvného pásu (10 min)

          python

             from pydobot import Dobot
             import time
             
             dobot = Dobot(port='/dev/ttyUSB0')
             
             # Zapni pás (motor na EIO porte)
             dobot.set_io_multiplexing(13, 1)  # port a smer
             time.sleep(3)
             
             # Vypni pás
             dobot.set_io_multiplexing(13, 0)
             
             dobot.close()
          • Rýchlosť pásu:

          python

             # PWM ovládanie rýchlosti (0-100)
             dobot.set_io_pwm(13, 50)  # 50% rýchlosť
             time.sleep(3)
             dobot.set_io_pwm(13, 100) # 100% rýchlosť
             time.sleep(3)
             dobot.set_io_pwm(13, 0)   # stop
          1. Production line - základná linka (20 min)

          python

             from pydobot import Dobot
             import time
             
             dobot = Dobot(port='/dev/ttyUSB0')
             dobot.home()
             dobot.grip(False)
             
             # Pozície
             PICKUP_POS = (200, -50, 10)  # nad pásom
             RED_BOX = (150, 100, 10)
             GREEN_BOX = (200, 100, 10)
             BLUE_BOX = (250, 100, 10)
             
             def detect_color(value):
                 if value < 100:
                     return "RED"
                 elif value < 200:
                     return "GREEN"
                 elif value < 300:
                     return "BLUE"
                 return "NONE"
             
             def wait_for_object():
                 """Čakaj kým IR detekuje objekt"""
                 print("Čakám na objekt...")
                 while True:
                     ir = dobot.get_io_multiplexing(10)
                     if ir == 1:
                         return True
                     time.sleep(0.1)
             
             def pick_from_belt():
                 """Zdvihni objekt z pásu"""
                 dobot.move_to(PICKUP_POS[0], PICKUP_POS[1], PICKUP_POS[2] + 30, 0)
                 time.sleep(1)
                 dobot.move_to(PICKUP_POS[0], PICKUP_POS[1], PICKUP_POS[2], 0)
                 time.sleep(1)
                 dobot.grip(True)
                 time.sleep(1)
                 dobot.move_to(PICKUP_POS[0], PICKUP_POS[1], PICKUP_POS[2] + 30, 0)
                 time.sleep(1)
             
             def place_object(x, y, z):
                 """Polož objekt na pozíciu"""
                 dobot.move_to(x, y, z + 30, 0)
                 time.sleep(1)
                 dobot.move_to(x, y, z, 0)
                 time.sleep(1)
                 dobot.grip(False)
                 time.sleep(1)
                 dobot.move_to(x, y, z + 30, 0)
                 time.sleep(1)
             
             # HLAVNÁ SLUČKA
             print("Produkčná linka spustená!")
             dobot.set_io_pwm(13, 60)  # Zapni pás
             
             try:
                 while True:
                     # Čakaj na objekt
                     if wait_for_object():
                         # Zastav pás
                         dobot.set_io_pwm(13, 0)
                         time.sleep(0.5)
                         
                         # Zdvihni objekt
                         pick_from_belt()
                         
                         # Detekuj farbu
                         color_value = dobot.get_io_multiplexing(12)
                         color = detect_color(color_value)
                         print(f"Detekovaná farba: {color}")
                         
                         # Zosortuj
                         if color == "RED":
                             place_object(RED_BOX[0], RED_BOX[1], RED_BOX[2])
                         elif color == "GREEN":
                             place_object(GREEN_BOX[0], GREEN_BOX[1], GREEN_BOX[2])
                         elif color == "BLUE":
                             place_object(BLUE_BOX[0], BLUE_BOX[1], BLUE_BOX[2])
                         else:
                             print("Neznáma farba, preskakunjem")
                         
                         # Spusti pás znova
                         dobot.set_io_pwm(13, 60)
                         time.sleep(2)  # Čakaj kým ďalší objekt príde
             
             except KeyboardInterrupt:
                 print("\nUkončujem...")
                 dobot.set_io_pwm(13, 0)  # Vypni pás
                 dobot.home()
                 dobot.close()
          1. Počítadlo produktov (10 min)

          python

             # Pridaj do kódu vyššie:
             
             counter = {"RED": 0, "GREEN": 0, "BLUE": 0, "TOTAL": 0}
             
             # Po detekcii farby:
             counter[color] += 1
             counter["TOTAL"] += 1
             print(f"Spracované: {counter}")
             
             # Na konci (Ctrl+C):
             print("\n=== ŠTATISTIKY ===")
             print(f"Červené: {counter['RED']}")
             print(f"Zelené: {counter['GREEN']}")
             print(f"Modré: {counter['BLUE']}")
             print(f"Celkom: {counter['TOTAL']}")

          Samostatná práca (45 min):

          • Urob quality control - nepresné farby vyhoď bokom
          • Pridaj druhý pás pre expedíciu
          • Urob "assembly line" - viac krokov (pick, process, place)
          • Pridaj buzzer pri chybe
          • Urob automatickú kalibráciu RGB (priemeruj 10 meraní)

          Troubleshooting:

          • Pás nejde → skontroluj port EIO, napájanie
          • Objekt spadne → synchronizuj IR + pás stop presnejšie
          • Robot nestíha → zrýchli pohyby, optimalizuj cesty
          • Kolízie → nastavuj bezpečné výšky, vyhýbaj sa pásu
          • Pás ide len jedným smerom → zmeň polaritu, skús opačný port
    • Kontakty

      • Základná škola s materskou školou
      • 0915 880 931 - ZÁKLADNÁ ŠKOLA
        0911 348 727 - MATERSKÁ ŠKOLA
        0915 595 176 - ŠKOLSKÁ JEDÁLEŇ
        0908 030 931 - RIADITEĽ
        0940 629 872 - EKONÓMKA
      • Šarišské Dravce 20
        082 73 Šarišské Dravce
        Slovakia
      • sardravce.ms@gmail.com
        sardravce.sj@gmail.com
      • 37876856
    • Prihlásenie