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.
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.
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.