Serwisy partnerskie:
Close icon
Serwisy partnerskie

Dron sterowany komendami głosowymi

Article Image
Elmax
Dzięki przełomowemu postępowi w technologii UAV, drony są teraz chętnie przyjmowane i wdrażane do wielu zastosowań. Jednak pomimo postępu, wiele osób niepełnosprawnych fizycznie nie jest w stanie ich obsługiwać ze względu na pewne ograniczenia w utrzymaniu stabilności drona w powietrzu. Teraz i one mogą sterować dronem za pomocą poleceń głosowych. A najlepsze jest to, że polecenia głosowe mogą być wydawane w języku angielskim lub dowolnym innym.

Do tego fascynującego projektu autor wykorzystał Raspberry Pi z AIY Voice Bonnet jako stację kontroli naziemnej (GCS). Można zbudować GCS z wykorzystaniem dowolnego komputera PC z systemem Linux. Wspomniany GCS (lub komputer PC) używa komend głosowych do sterowania dronem Tello. Gdy system drona rozpozna komendę głosową, zostanie nawiązane połączenie, za pomocą którego można sterować dronem.

Używany przez autora dron Tello przedstawiony jest na fotografii otwierającej artykuł. Moduł Voice Bonnet zamontowany na płytce Raspberry Pi jest pokazany na fotografii 1.

Fotografia 1. Moduł AIY Voice Bonnet podłączony do Raspberry Pi

Wymagania wstępne

Zalecane jest użycie Raspbian opartego na Raspberry Pi, ponieważ jest przenośny, mały i może być łatwo użyty do sterowania dronem. Należy zainstalować następujące moduły:

  • Speech_recoginition
  • PyAudio
  • TelloPython

Moduły Speech_recognition i PyAudio pomagają w przechwytywaniu głosu i rozpoznawaniu komend głosowych. TelloPython służy do nawiązywania połączenia z dronem Tello. Umożliwia również sterowanie dronem i przechwytywanie wideo.

TelloPython ułatwia wykonywanie następujących funkcji:

  • Start drona za pomocą drone.takeoff()
  • Nawigacja drona w kierunku do przodu za pomocą drone.forward(cm)
  • Obracanie drona o 90 stopni w kierunku zgodnym lub przeciwnym do ruchu wskazówek zegara za pomocą drone.cw(90)
  • Przerzucanie drona do przodu, do tyłu, w lewo lub w prawo w powietrzu za pomocą drone.flip('l')
  • Strumieniowanie na żywo wideo z kamery drona do komputera za pomocą drone.streamon()
  • Lądowanie drona za pomocą drone.land()

Kodowanie

AIY Voice Bonnet z modułem rozpoznawania mowy umożliwia przechwytywanie i rozpoznawanie komend głosowych. Aby to umożliwić, należy zaimportować dwie powiązane biblioteki w kodzie Pythona (dronevoicecontrol.py). Aby sterować dronem, należy zaimportować bibliotekę TelloPython w kodzie pokazanym poniżej.

## dronevoicecontrol.py
from aiy.board import Board,Led
import speech_recognition as sr
from tello_python import tello

import math
import time
import time
r = sr.Recognizer()
drone = tello.Tello()

def main():
    print('LED is ON while button is pressed (Ctrl-C for exit).')
    with Board() as board:
        while True:
            board.button.wait_for_press()
            with sr.Microphone() as source:
                r.adjust_for_ambient_noise(source)
                print("Say something!")
                audio = r.listen(source)
                command=str(r.recognize_google(audio))
                print("Google Speech Recognition thinks you said " + command)
                if (command=="Take off"):
                    print("taking off drone")
                    drone.takeoff()

                if (command=="move forward"):
                      print("landing drone")
                      drone.forward(100)

                
                if (command=="move backward"):
                      print("landing drone")
                      drone.backward(30)

                
                if(command== "Move right"):
                      print("Moving drone right")
                      drone.right(70)

                if(command== "move left"):
                      print("Moving drone left")
                      drone.forward(70)

                if(command== "move up"):
                      print("moving drone up")
                      drone.forward(100)
 
if __name__ == '__main__':
    main()

Po wykonaniu wszystkich powyższych czynności należy utworzyć pętlę while, która będzie działać nieprzerwanie aż do zatrzymania. Pętla while pomoże w sprawdzeniu, czy po naciśnięciu przycisku modułu rozpoznawania mowy komenda głosowa zostanie przetworzona.

Aby wykonać akcję zgodnie z poleceniem wydanym przez użytkownika, utwórz kilka warunków if. Załóżmy więc, że użytkownik chce, aby dron zaczął latać. Wydając komendę głosową, powiedzmy "take off", żądanie jest dopasowywane do warunku if. Jeśli pasuje ono do akcji określonej w kodzie, do drona Tello wysyłany jest sygnał, aby zaczął latać.

Podobnie można ustawić wszystkie inne funkcje tak, aby nakazać dronowi wykonanie odpowiednich czynności, takich jak poruszanie się w górę, w dół, w prawo, w lewo, do przodu, itp.

Testowanie

Podłącz moduł AIY Voice Bonnet do płytki Raspberry Pi. Następnie podłącz Raspberry Pi do wyświetlacza HDMI i Internetu za pomocą kabla Ethernet lub tetheringu USB. (Płytka Raspberry Pi autora podłączona do laptopa przez kabel Ethernet jest pokazana na fotografii 2). Włącz urządzenie sterujące dronem (Raspberry Pi), a następnie podłącz je do Tello Wi-Fi. Teraz można sterować dronem Tello poprzez sieć Wi-Fi.

Fotografia 2. Raspberry Pi podłączone do laptopa przez kabel Ethernet

Po wykonaniu wszystkich połączeń, uruchom kod Pythona. Na ekranie monitora Raspberry Pi zostanie wyświetlony film z otoczenia drona. Teraz możesz nacisnąć przycisk Bonnet na płytce AIY Voice Bonnet i wydawać komendy głosowe dronowi sprawiając, że będzie latał bez pilota.

Gratulacje! Udało Ci się stworzyć drona, który może być sterowany za pomocą komend głosowych.

Wykaz elementów
Ilość
Symbol
Nazwa/opis/gdzie kupić
Do pobrania
Download icon Dron sterowany komendami głosowymi - kod źródłowy
Firma:
Tematyka materiału: Engineering Projects For You, 1001+ Electronics Projects For You, Advanced Projects, Raspberry Pi DIYs
AUTOR
Źródło
www.electronicsforu.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"