Colțul radioului amator

Predăm drona autonomiei, controlul vocii și recunoașterea feței.

În virtutea profesiei sale, eu de multe ori nu uit doar pentru evenimente de profil înalt din lumea IT, dar, de asemenea, exploatează un simplu amatori de radio (și aceștia, la rândul lor, trebuie să fie mai mult și programatori). Recent am dat peste un articol pe Lucas Bivolda O''Reilly portal, în care a descris în detaliu modul în care drone de 200 $ (în Rusia, acest lucru costă aproximativ 20 de mii de ruble) pentru a colecta dispozitivul de cel puțin 5 ori mai scump decât o magie simplu calculator. Iată traducerea articolului.

Alegerea unui dronă gata făcută

Cea mai dificilă etapă în procesul de rupere a dronei este cea inițială. Primul meu proiect a fost un drone, pe care mi-am asamblat-o din diferite părți și, ca orice alt proiect realizat de noi, mi-a costat mult mai mult decât să cumpăr o dronă gata făcută. Sincer vorbind, drona mea de sine statatoare nu a zbura foarte bine. Cu siguranta, cumpararea gata este mult mai usoara si mai ieftina.

Majoritatea producătorilor de dronați promite să furnizeze o interfață de programare (API), dar printre ei nu există lideri care să ofere un ecosistem pentru fani. Majoritatea dronilor cu o interfață prietenoasă au costat mai mult de 1.000 de dolari, ceea ce reprezintă un obstacol serios.

După câteva căutări, am reușit să găsesc Parrot AR Drone 2.0. care, în opinia mea, este o alegere bună dacă aveți nevoie de un dronă ieftină și ușor de programat pentru divertisment. Poți să cumperi unul nou pentru 200 de dolari, dar ținând cont de numărul de persoane care le cumpără și nu le folosește niciodată, este mai bine să cumperi o mână de mâna a doua pe eBay pentru mai puțin de 130 de dolari.

Colțul radioului amator

Parrot AR nu este la fel de stabile ca zboara mult mai scumpe (aproximativ 550 $), noul Parrot Bebop 2. dar Parrot AR biblioteca client pe node.js sub numele nodului-ar-dronă. Este ideal ca bază pentru programarea unui dronă.

Un alt avantaj al Parrot AR este greu de rupt. Când testarea codului modului offline, drone-ul meu sa prăbușit de mai multe ori în pereți, mobilier, ghivece de flori și oaspeți, și încă zboară perfect.

Una dintre problemele cu robotii în comparație cu roboții de la sol este durata scurtă de viață a bateriei. Reîncărcarea poate dura câteva ore și va dura aproximativ 10 minute. Vă recomandăm să cumpărați 2 baterii suplimentare și să le modificați în timpul testelor.

Programarea dronului

arhitectură

Am decis să rulez un algoritm logic pe laptop, iar sistemul de învățare a mașinilor este în nor. O astfel de schemă a permis reducerea timpului de așteptare în comparație cu lansarea rețelei neuronale direct pe computerul Raspberry PI. și cred că este potrivit pentru proiectele de drăgălași amatori.

Microsoft, Google, IBM și Amazon oferă interfețe de învățare de mașină bazate pe cloud-uri ieftine. Am ales Serviciul Cognitiv al Microsoft pentru acest proiect, deoarece aceasta este singura interfață care acceptă recunoașterea personalizabilă a feței.

Colțul radioului amator

Începeți configurarea

În mod implicit, Parrot AR 2.0 își distribuie propria rețea fără fir a clientului. Acest lucru complică improbabil hacking-ul dispozitivului. De fiecare dată când faceți ceva, trebuie să vă deconectați de la rețea și să vă conectați la rețeaua dronului. Din fericire, există un proiect foarte util numit ardrone-wpa2. care vă va ajuta să configurați telefonul pentru a vă conecta la rețeaua dvs. Wi-Fi.

Este foarte distractiv să folosiți protocolul Telnet și experimentați, Parrot începe să semene cu o versiune trunchiată de Linux. Când v-ați conectat ultima oară la ceva prin Telnet? Iată un exemplu de deschidere a unui terminal și intrarea directă în sistemul drones.

% script / connect "Laboratorul de optică" -p "particleorwave" -a 192.168.0.1 -d 192.168.7.43

Gestionarea liniei de comandă

După instalarea bibliotecii de noduri, puteți face un ciclu cum ar fi citirea-calcula-scriere (REPL) și, astfel, începeți să controlați drone-ul.

var arDrone = cer ("ar-drone");

drone> client.animate ("yawDance, 1.0)

Dacă urmați instrucțiunile mele, în acest moment v-ați aruncat deja dronul de mai multe ori. Am re-lipit cadrul de protecție de o mie de ori înainte de a se prăbuși și a trebuit să cumpăr un altul. Mă îndoiesc dacă merită spus, dar Parrotul zboară mult mai bine fără cadru. Dar zboară fără ea, lamele se pot prinde și sparge ceva, strică mobilierul.

Gestionarea zborurilor de pe o pagină web

Creați o interfață web pentru controlul zborului - plăcută și ușoară. Platforma express.js simplifică foarte mult crearea unui mic server web:

var express = necesită ("expres");

app.get ('/', funcție (req, res)

app.get ('/ land', funcție (req, res)

app.get ('/ takeoff', funcție (req, res)

dacă (răspuns.length> 0)

Am folosit biblioteca excelentă ImageMagick pentru a eticheta fețe pe PNG. În acest stadiu, puteți utiliza numeroase extensii diferite, de exemplu, o interfață pentru interfața emoțională emoțională API.

Instalarea sistemului de recunoaștere vocală

Cea mai dificilă parte a instalării unui sistem de recunoaștere a vorbirii nu este recunoașterea vorbirii în sine, ci traducerea piesei audio de la o pagină web la serverul meu local în formatul cerut de API-ul Speech Microsoft. iar acest lucru, la rândul său, are ca rezultat un cod prea lung. După ce salvați fișierul audio într-un format cu un singur canal și cu frecvența corectă de eșantionare, puteți începe să utilizați interfața cu ușurință și cu succes. Costul a 1000 de solicitări este de 4 USD, deci pentru proiectele de amatori serviciul este practic gratuit.

Serviciul RecordRTC are o bibliotecă excelentă și este perfect pentru înregistrarea audio inițială a clientului. Din partea clientului, putem adăuga un cod care să salveze fișierul audio:

app.post ('/ audio', funcție (req, res)

var form = nou formidabil.IncomingForm ();

// specificați că dorim să permitem utilizatorului să încarce mai multe fișiere într-o singură cerere

form.uploadDir = path.join (__ dirname, '/ uploads');

form.on ('fișier', funcție (câmp, fișier)

fs.rename (fișier.path, path.join (form.uploadDir, nume fișier));

// înregistrați orice erori care apar

console.log ('A apărut o eroare: \ n' + err);

// odată ce toate fișierele au fost încărcate, trimiteți un răspuns clientului

// analizați cererea de intrare care conține datele formularului

Am folosit utilitarul FFmpeg pentru a reduce calitatea sunetului și a-l aduce la același canal pentru descărcarea la serviciul Microsoft.

exports.parseWav = funcție (wavPath, apel invers)

var cmd = 'ffmpeg -i' + wavPath + '-ar 8000 -ac 1 -y tmp.wav';

exec (cmd, funcție (eroare, stdout, stderr)

console.log (stderr); // ieșirea comenzii este în stdout

În această etapă, puteți utiliza și interfața Microsoft pentru conversia text-la-vorbire. astfel încât drone-ul să vă poată răspunde.

Rută de acces autonomă

Am folosit biblioteca ardrone-autonomie pentru a programa un traseu autonom de acces pentru dron. După numeroase întâlniri cu mobilier de uz casnic și culori în camera de zi, soția mea ma invitat politicos să se mute testarea mea de proiect în garaj, în cazul în care există o cameră mai mică, care poate fi rupt, dar mai puțin de manevră.

Colțul radioului amator

Când am extinde spațiul laboratorul său, voi studia mai îndeaproape de algoritmi de căutare inteligente, dar în acest stadiu, se va limita ceea ce drona va decola și să se întoarcă în căutare de dușmani și prieteni.

var autonomie = necesită ("ardrone-autonomie");

console.log ("Aici mergem!")

zero () // Setează starea curentă ca referință

Odată ce ați instalat totul și ați putea controla dronul prin API, toate acestea vor aduce distracție incredibilă. Cu noul sistem de recunoaștere a imaginilor, există multe caracteristici noi, de la explorarea aspectului camerelor până la pictarea pereților. Parrot nu a fost creat inițial pentru zboruri sigure în case mici cum ar fi a mea, dar un drone mai scump este capabil să-l traducă în realitate. În cele din urmă, dronii vor deveni mai stabili, mai ieftini, iar numărul de modalități de a le folosi în viața de zi cu zi va crește foarte repede.

Interfața de programare Microsoft Cognitive Service bazată pe cloud este foarte ușor de utilizat și costuri incredibil de mici. La început am fost îngrijorat de faptul că un aparat de fotografiat neobișnuit de larg-dronă poate interfera cu recunoașterea feței normală, și că sunetul puternic de lame va preveni sunetul, dar în realitate este mult mai bine decât mă așteptam. Timpul de așteptare nu este o problemă, pe care am presupus că ar putea fi. Lucrarea tuturor calculelor din cloud în modul de transmisie a imaginilor în timp real pare mai degrabă o alegere ciudată de arhitectură, dar probabil va deveni standard pentru multe aplicații în viitor.

Articole similare