Q.bo je štandardná robotická platforma vyvinutá spoločnosťou TheCorpora. Q.bo obsahuje pokročilé technológie, ktoré umožňujú skúmať, experimentovať, vytvárať a rozvíjať množstvo zaujímavých projektov okolo tejto platformy.
V roku 2008, Francisco a Carlos Paz založili spoločnosť TheCorpora, ktorá v súčasnosti združuje všetky roky osobitného vývoja spolu so skupinami odborníkov v oblasti robotiky, priemyselného dizajnu, elektroniky a programovania. Tým sa začal formovať projekt Q.bo.
Spoločnosť TheCorpora verí, že inovácie a budúcnosť robotiky iba prostredníctvom rozvoja, propagácie a vytvorenia open source komunít, ktoré umožňujú prijatie robotických technológií a pozitívneho sociálneho dopadu. To je dôvod, prečo sa v priebehu celého procesu vytvárania projektu Q.bo pracovalo s otvorenými platformami. Hlavné komponety predstavujú distribúcia Ubuntu operačného systému Linux, robotická vývojová platforma ROS (Robot Operating System) od spoločnosti Willow Garage a platforma Arduino ako nástroj pre navrhovanie a implementáciu elektroniky.
Robot Q.bo sa štandardne vyrába v troch hlavných vyhotoveniach: Basic kit, Comlete Lite, Complete pro. Nazývajú sa taktiež aj Q.bo Basic Platform, Q.bo Lite Evo, Q.bo Pro Evo.
Q.bo Basic Kit slúži ako montážna základňa. Táto sada obsahuje plastové kryty, oceľový rám, mechanické diely, webové kamery a wifi anténu. Je možné doplniť ho pomocou servomotorov, radičov dosiek (Q.boards), základných dosiek, mikroprocesorov alebo pamätí podľa vášho výberu, čím je možné vytvoriť úplne vlastného Q.ba. Podľa Assembling Instructions a Qbo Wires je možné postupovať pri montáži dielov. Aktuálna cena na stránkach výrobcu je 755.00 €.
Toto vyhotovenie predstavuje zostaveného robota Q.bo, ktorý však nezahŕňa mechanizmus pre viečka. Aktuálna cena na stránkach výrobcu je 2,845.00 €. Obsahuje:
Vyhotovenie Q.bo Complete Pro je plne zostavený robot Q.bo. Aktuálna cena na stránkach výrobcu je 3,795.00 €. Obsahuje:
Základom Q.bo robota je PC podľa jednotlivých vyhotovení ako bolo spomenuté vyššie. Ďalšie časti sú tzv. Q.boards1 - periférne zariadenia, ktoré umožňujú robotovi komunikovať s okolím. Predstavujú sady niekoľkých senzorov a akčných členov, ktoré sú navrhnuté tak, aby sprostredkovávali dáta pre PC. Na stránkach výrobcu sa nachádzajú podrobné zapojenia a zoznam súčiastok pre jednotlivé dosky.
Q.board1 je základným ovládacím panelom. Jeho hlavné funkcie sú nasledovné:
Doska je vybavená rýchlym mikroprocesorom ATmega1280, ktorý je kompatibilný s Arduino IDE. Hardvérový regulátor motora je integrovaný do dosky. Tento regulátor je schopný riadiť dva 12V/2A DC motory. Odporúčané motory sú EMG30.
Signály z enkóderov (z obidvoch motorov) sú pripojené na piny vnútorného prerušenia na ATmega1280, takže je možné vytvárať rôzne softvérové PID regulátory.
Konektor zbernice I²C je tiež vyvedený na doske, takže je možné pripojiť ďalšie senzory a zariadenia. Ultrazvukové snímače SRF10 sa používajú na detekciu prekážok v okolí. LCD03 doska sa používa na výpis informácií o stave robota. Štandardne sa zobrazuje meno robota v sieti, sieťová IP adresa a stav batérie. Na I²C zbernicu sa pripája Q.board4 ako inerciálna meracia jednotka (IMU) pre detekciu pádu robota a pre zlepšenie navigačného systému.
Na sériovú zbernicu ATmega1280 je pripojený prevodník Serial_to_USB. Vďaka Arduino bootloader-u je doska jednoducho naprogramovateľná a ovládaná počítačom. Program pre riadenie motorov a senzorov je kompletný, ale tiež je možné modifikovať ho, a tým zmeniť alebo prispôsobiť jeho funkčnosť vlastným potrebám.
Doska má taktiež integrovaný audio zosilňovač. Zvukový výstup pre tento zosilňovač má 3-pinový konektor na doske. Tieto signály musia byť analógové.
Q.board2 je umiestnená na čele Q.bo a je kompatibilný s Arduino Duemilanove. Má integrovaný posuvný register, ktorý riadi LED na doske Q.board5. Má 3 elektretové mikrofónne vstupy, ktoré pripojené na analógové piny mikroprocesora ATmega328. Doska má jeden prídavný analógový vstup. Tento vstup je pripojený na základný zvukový výstup počítača pre detekciu výstupu, ale môže byť použitý pre iné účely. Ďalej sú vyvedené štyri konektory, kde sú pripojené k servo motorom určeným na otáčanie a nakláňanie hlavy robota a očných viečok. Program pre ovládanie všetkých týchto zariadení je už dokončený, ale môže byť modifikovaný pre rozšírenie jeho funkčnosti.
Táto doska predstavuje napájací zdroj pre ostatné periférie a PC. Jej cieľom je dosiahnuť čo najlepšiu energetickú náročnosť pre Q.bo robota. Doska umožňuje úplne vypnúť PC a ďalšie periférie. Taktiež obsahuje elektroniku pre nabíjanie batérie. Základom dosky je mikroprocesor STM32f103 32bit Cortex-M3 od spoločnosti STMicroelectronics. Doska má konektor pre batériu a externé napájanie. Ak nie je pripojený žiadny napájací zdroj, doska začne automaticky využívať napájanie z batérie. Maximálny výkon dosky je 150W. Doska má tiež konektor I2C, takže je možné čítať úroveň nabitia batérie a stav napájania dosky inými mikroprocesory.
Táto doska obsahuje gyroskop a akcelerometer. Oba sú prístupné prostredníctvom zbernice I²C.
Posledná doska tvorí ústa robota pomocou LED matice. Obsahuje 20 štandardných LED, ktorými je možné znázorniť rôzne výrazy tváre a trojfarebnú LED, ktorá predstavuje nos robota.
Open Q.bo1 je jedna z hlavných komunít okolo platformy Q.bo. Táto komunita sa venuje softvéru, hardvéru a rôznym aplikáciam pre Q.ba. O týchto a mnohých iných témach môžete diskutovať na zriadenom fóre2. Tiež je tu možné nájsť rôzne návody pre demo aplikácie s Q.bom, postupy pre kalibráciu kamier, IMU senzorov a rôzne ďalšie ukážky.
Názov aplikácie | Autor | Dátum vytvorenia | Krátky popis |
---|---|---|---|
qbo_arduqbo | Miguel Angel Julian Aguilar | 2012-04-09 | Komunikácia s Q.boards |
qbo_audio_control | Sergio Merino | 2012-02-17 | Ovládanie audio podsystému |
qbo_brain | Arturo Bajuelos, Sergio Merino | 2012-02-28 | Demo qbo_brain |
qbo_camera | Miguel Angel Julian Aguilar | 22012-04-10 | Spúšťanie a kalibrácia kamier |
qbo_cereal_port | Gonçalo Cabrita, Miguel Angel Julian Aguilar | 2012-04-10 | Komunikácia cez sériový port |
qbo_face_following | Arturo Bajuelos | 2012-02-22 | Detekcia a sledovanie tváre |
qbo_face_msgs | Arturo Bajuelos | 2012-03-26 | Msgs pre qbo_face_vision stack |
qbo_face_recognition | Arturo Bajuelos | 2012-02-23 | Rozpoznávanie tváre |
qbo_face_tracking | Arturo Bajuelos | 2011-11-24 | Detekcia a sledovanie tváre |
qbo_internet_service | Sergio Merino | 2013-01-02 | Demo internet_service |
qbo_joy_ctrl | Martin Zidek | 2013-05-09 | Ovládanie joystikom |
qbo_launchers | Miguel Angel Julian | 2012-12-04 | Spúšťače ROS skriptov |
qbo_linphone | Sergio Merino | 2012-02-20 | Demo qbo_linphone |
qbo_listen | Sergio Merino | 2011-12-12 | Rozpoznávanie hlasu |
qbo_music_player | Arturo Bajuelos | 2012-02-28 | Rozpoznávanie gest a ovládanie prehrávača hudby |
qbo_object_recognition | Arturo Bajuelos | 2012-02-28 | Rozpoznávanie objektov |
qbo_pymouth | Miguel Angel Julian Aguilar | 2012-04-10 | Ovládanie výrazov tváre |
qbo_questions | Sergio Merino, Arturo Bajuelos | 2012-02-20 | Jednoduché otázky a odpovede |
qbo_random_move | Miguel Angel Julian Aguilar, Arturo Bajuelos | 2012-04-10 | Detekcia prekážok a náhodný pohyb |
qbo_self_recognizer | Arturo Bajuelos | 2012-02-28 | Rozpoznávanie iného Q.ba v zrkadle |
qbo_stereo_selector | Arturo Bajuelos | 2012-02-28 | Demo qbo_stereo_selector |
qbo_system_info | Sergio Merino | 2012-02-16 | Poskytovanie systémových informácií |
qbo_talk | Miguel Angel Julian Aguilar | 2012-04-10 | Syntetizácia reči cez Festival |
qbo_webi | Sergio Merino, Daniel Cuadrado, Miguel Julián, Arturo Bajuelos, Daniel Julián | 2012-11-20 | Webové rozhranie qbo_webi |
qbo_face_vision | Arturo Bajuelos | 2012-02-20 | Rozpoznávanie a sledovanie tváre |
ROS (Robot Operating System) je flexibilný framework pre písanie softvér určeného pre robotiku. Ide o súbor nástrojov, knižníc a konvencií, ktoré majú za cieľ zjednodušiť úlohu vytvárania komplexného a robustného správanie robota v širokej škále robotických platforiem.
Vzhľadom na to, že vytváranie robustného a všeobecne použiteľného robotického softvéru je náročné, sa ROS využíva ako middlevér medzi hardvérovou vrstvou a aplikačnou vrstvou. Poskytuje hardvérovú abstrakciu, ovládače zariadení, knižnice, vizualizéry, odovzdávanie správ, správu balíčkov a ďalšie. V nasledujúcich častiach sú popísané niektoré z hlavných rysov ROS platformy.
ROS je distribuovaný framework, ktorý môže byť spustený na viac počítačov, takže výpočtový výkon robota môže byť rozdelený na rôzne stroje, pričom jednotlivé počítače spolu komunikujú. Výhodou je zníženie výpočtových nárokov priamo na robotovi.
Opätovné použitie kódu umožňuje nový výskum a vývoj komunity po celom svete. Spustiteľné súbory v ROS-e sa nazývajú uzly (nodes). Tieto spustiteľné súbory sa zlučujú do ROS balíčkov (packages). Skupina balíčkov je volaná stack. Tieto stacky môžu byť zdieľané alebo ďalej distribuované.
Framework ROS je možné naprogramovať pomocou rôznych populárnych jazykov (ako sú Python, C++ a Lisp). Uzly môžu byť napísané v akomkoľvek z týchto jazykov a môžu komunikovať prostredníctvom ROS správ (messages) bez akýchkoľvek problémov.
ROS má rôzne vstavané jednotky a integračné testy, ktoré sa nazývajú rostest. Tie umožňujú testovať ROS balíčky a ich správne funkcionality. rostest je rozšírením roslaunch, ktorý umožňujú launch súbory(spúšťače), ktoré sa v tomto prípade používajú na skúšobné účely. V plne funkčnom systéme vám umožní vykonať kompletné integrácie naprieč rôznymi uzlami.
ROS je efektívny na single machine rovnako ako aj pre veľké runtime systémy, vývojové procesy alebo rozsiahle priemyselné použitie.
Zdrojový kód ROS je otvorený a je to úplne zadarmo na použitie. Ústrednou časťou ROS je licencovaný pod BSD licenciou, a to môže byť opätovne použité v komerčných a uzavretých produktov. Hlavným cieľom spoločnosti Willow Garage je umožniť vývojárom vytvárať ďalších schopných robotov a aplikácie ľahko a rýchlo na spoločnej platforme.
ROS bol postavený od základu tak, aby podporoval spoluprácu pri vývoji robotiky a robotického softvéru. Napríklad jedno laboratórium môže mať odborníkov na zmapovanie vnútorného prostredia, a môže prispieť systémom pre vytváranie máp. Ďalšia skupina môže mať odborníkov na využitie máp pre navigáciu, a ešte jedna skupina by mohla riešiť prístup počítačového videnia, ktorý spoľahlivo rozpoznáva malé objekty v okolitom prostredí. ROS bol navrhnutý špeciálne pre takéto výskumné skupiny, ktoré môžu spolupracovať a nadväzovať na dielo inej skupiny.
S pomocou medzinárodných komunít v oblasti vývoja robotiky sa v súčasnosti pracuje na rozvíjaní jadrového softvéru ROS-u pre ďalšie platformy. To zahŕňa nové ovládače a algoritmy, rovnako aj integráciu mnohých populárnych open source knižníc v tejto oblasti ako sú napríklad OpenCV, OpenNI.
ROS distribúcia je sada ROS balíčkov. Účelom distribúcií je umožniť vývojárom pracovať na relatívne stabilnom codebase, kým nie sú pripravení presunúť všetko na vyššiu verziu. V súčasnosti vychádza nová distribúcia každý rok v máji.
Názov distribúcie | Release dátum | EOL dátum |
---|---|---|
ROS Kinetic Kame (Odporúčaná) | 23. máj 2016 | máj 2021 |
ROS Jade Turtle | 23. máj 2015 | máj 2017 |
ROS Indigo Igloo | 22. júl 2014 | apríl 2019 (Trusty EOL) |
ROS Hydro Medusa | 4. september 2013 | máj 2015 |
ROS Groovy Galapagos | 31. december 2012 | júl 2014 |
ROS Fuerte Turtle | 23. apríl 2012 | --- |
ROS Electric Emys | 30. august 2011 | --- |
ROS Diamondback | 2. marec 2011 | --- |
ROS C Turtle | 2. august 2010 | --- |
ROS Box Turtle | 2. marec 2010 | --- |
Nasledujúce robotické hardvérové platformy využívajú ROS alebo je v nich možné použiť ROS softvér.
Všeobecné robotické manipulátory | Mobilné robotické manipulátory | Mobilné roboty | Humanoidné roboty |
---|---|---|---|
Baxter | Mobility base pre robota Baxter | Austrobotics Outdoor Robot | Aldebaran NAO |
Open Unit Robot (OUR) | Care-O-Bot 4 | Crab (Hexapod robot) | Aldebaran Pepper |
Kuka youbot | iRobot B21r | Aldebaran Romeo | |
Q.bo | Pal Robotics REEM | Pal Robotics REEM-C |
roscpp/rospy
), aby mohli komunikovať s ostatnými uzlami. Uzly môžu publikovať (publisher node) alebo zbierať(subscribers node) dáta z témy(topic). Uzly môžu tiež poskytovať alebo využívať službyPríkaz roscreate-pkg
slúži na vytvorenie kostry nového ROS balíčku podľa vopred definovanej súborovej štruktúry. Názov balíčka musí byť jedinečný, aby bolo možné jednoznačne pristupovať k jeho uzlom. Všetky ROS balíčky sa skladajú z niekoľkých podobných súborov: manifest.xml, CMakeLists.txt, mainpage.dox a makefiles. Tento nástroj eliminuje bežné chyby spôsobené ručným písaním konfiguračných súborov a manifestov.
Pre vytvorenie nového balíčka v aktuálnom adresári použijeme nasledujúci zápis:
$ roscreate-pkg [package_name]
Taktiež môžeme už pri vytváraní balíčka definovať ďalšie závislosti, ako sú knižnice klienta (roscpp/rospy
), iné balíčky potrebné pre správne fungovanie(std_msgs
) a ďalšie prídavné knižnice (napr. open-cv
):
$ roscreate-pkg [package_name] [depend1] [depend2] [depend3]
V dalších ukážkach budeme používať balíček simple_ros_demo, ktorý vytvoríme nasledovné:
$ roscreate-pkg simple_ros_demo rospy roscpp std_msgs
Nasledujúcim zápisom si vieme zobraziť závislosti daného balíčka:
$ rospack depends [package_name]
V tejto ukážke si vytvoríme dva jednoduché uzly talker.py a listener.py, ktoré si budú vymieňať informácie cez tému /chatter
. Ako prvý si vytvoríme adresár scripts, kde budú uložené naše python skripty.
$ mkdir scripts
V tomto adresári vytvoríme súbory talker.py a listener.py s obsahom podľa prílohy v adresári ROS/simple_ros_demo/scripts. Následne zmeníme atribúty týchto súborom, tak, aby boli spustiteľné.
$ chmod +x talker.py $ chmod +x listener.py
Na to, aby sme mohli spustiť uzly, potrebujeme mať spustený ROS master príkazom roscore
. Ak už je spustený predošlý ROS master, tak nový sa spúšťať nebude.
Posledným krokom je spustenie uzlov v dvoch samostatných oknách pomocou príkazu rosrun
podľa nasledovného zápisu. Vidíme ako talker.py publikuje správy a listener.py ich prijíma.
$ rosrun [package_name] [node_name]
V predchádzajúcej ukážke sme si ukázali ako sa dajú vymieňať informácie cez tému /chatter
. Ďalej môžeme vidieť, že s témami sa dá manipulovať aj priamo cez príkaz rostopic
.
Spustíme uzol talker.py a následne zadáme tento príkaz:
$ rostopic echo /chatter
Vidíme, ako dostávame informácie , ktoré zverejňuje talker.py. Podobným spôsobom vieme do témy zapisovať. Spustíme uzol listener.py a následne zadáme tento príkaz:
$ rostopic pub -r 10 /chatter std_msgs/String 'test'
Vidíme ako v listener.py zbierame informácie s -r 10
(rate 10 Hz). Tieto spôsoby výmeny informácií sú mimoriadne užitočné pri jednoduchom testovaní.
ROS služby definované v srv súboroch sa používajú podobne ako ROS správy na komunikáciu medzi uzlami. Odlišnosť je v tom, že správa obsahuje definíciu žiadosti a definíciu odpovede. Knižnica rospy
prevedie tieto srv súbory na python kód a vytvorí tri triedy podľa nasledovného štandardu:
Pre použitie v rospy
je možné definovať uzol pre server a pre klienta. V prípade servera je potrebné importovať srv súbor a zavolať inicializačnú funkciu:
import my_package.srv s = rospy.Service('service_name', my_package.srv.Foo)
Na strane klienta sa taktiež importuje srv súbor a zavolá inicializačná funkcia:
import my_package.srv s = rospy.ServiceProxy('service_name', my_package.srv.Foo)
Rqt_graph je GUI nástroj, ktorý sa používa na monitorovanie ROS komponentov. Na nasledujúcom obrázku vidíme ako talker.py zverejňuje informácie do témy /chatter a následne ich odtiaľ číta listener.py. Taktiež sa často používa pri testovaní a debuggovaní.
Rqt_plot1 je GUI nástroj, ktorý sa používa pre vizualizáciu číselných hodnôt v 2D sústave s použitím rôznych vykresľovacích techník.
Pre pohyb robota je potrebné zapísať objekt Twist
z geometry_msgs do témy /cmd_vel
. Je možné použiť príkaz rostopic
s atribútom pub
podľa nasledovného príkladu:
$ rostopic pub -1 /cmd_vel geometry_msgs/Twist [2,0,0] [0,0,0.5]
Taktiež sa dá použiť knižnica rospy
:
import rospy from geometry_msgs.msg import Twist def move_base(publisher,linear,angular): rospy.loginfo("Moving base at [%f , %f]", linear, angular) speed_command=Twist() speed_command.linear.x=linear speed_command.linear.y=0 speed_command.linear.z=0 speed_command.angular.x=0 speed_command.angular.y=0 speed_command.angular.z=angular publisher.publish(speed_command) if __name__ == "__main__": move_base_pub=rospy.Publisher('/cmd_vel', Twist) move_base_pub.queue_size=10 move_base(move_base_pub,2, 0.5)
Pre pohyb servo motorov na hlave robota je potrebné zapísať objekt JointState
z sensor_msgs do témy /cmd_joints
. Je možné použiť príkaz rostopic
s atribútom pub
podľa nasledovného príkladu:
$ rostopic pub /cmd_joints sensor_msgs/JointState [0,0,'test'] ['head_pan_joint','head_tilt_joint'] [0.5,-0.3] [] []
Taktiež sa dá použiť knižnica rospy
:
import rospy from sensor_msgs.msg import JointState def move_head(publisher,pan_joint,tilt_joint): rospy.loginfo("Moving head at [%f , %f]", pan_joint, tilt_joint) position_command=JointState() position_command.header.seq=1 position_command.header.stamp = rospy.get_rostime() position_command.header.frame_id='test' position_command.name=['head_pan_joint','head_tilt_joint'] position_command.position=[pan_joint, tilt_joint] position_command.velocity=[] position_command.effort=[] rate = rospy.Rate(10) # 10hz publisher.publish(position_command) rate.sleep() def move_eyes(publisher,left_eye,right_eye): rospy.loginfo("Moving eyes at [%f , %f]", left_eye,right_eye) position_command=JointState() position_command.header.seq=1 position_command.header.stamp = rospy.get_rostime() position_command.header.frame_id='test' position_command.name=['left_eyelid_joint', 'right_eyelid_joint'] position_command.position=[left_eye,right_eye] position_command.velocity=[] position_command.effort=[] rate = rospy.Rate(10) # 10hz publisher.publish(position_command) rate.sleep() if __name__ == "__main__": move_joints_pub=rospy.Publisher('/cmd_joints', JointState) move_joints_pub.queue_size=10 move_head(move_joints_pub, 0,5,-0.3) move_eyes(move_joints_pub,-0.5,-0.5)
import rospy from sensor_msgs.msg import PointCloud def initSensors(): rospy.Subscriber('/distance_sensors_state/front_left_srf10', PointCloud, leftSensorCallback) rospy.Subscriber('/distance_sensors_state/front_right_srf10', PointCloud, rightSensorCallback) rospy.Subscriber('/distance_sensors_state/floor_sensor', PointCloud, floorSensorCallback) def leftSensorCallback(data): print data.points[0].x def rightSensorCallback(data): print data.points[0].x def floorSensorCallback(data): print data.points[0].x if __name__ == "__main__": initSensors()
OpenCV1 (Open Source Computer Vision Library) je knižnica, ktorá obsahuje niekoľko stoviek algoritmov počítačového videnia. Knižnica je voľne dostupná pod licenciou BSD. OpenCV vytvoril Gary Bradsky v spoločnosti Intel v roku 1999 a prvé vydanie vyšlo už v roku 2000. Neskôr jeho aktívny vývoj pokračoval za podpory Willow Garage, pričom Gary Bradsky a Vadim Pisarevsky boli vedúci projektu. V súčasnej dobe je v podpore celý rad algoritmov týkajúcich sa počítačového videnia a strojového učenia, ktorý sa každým dňom rozširuje.
V nasledujúcom príklade môžeme vidieť jednoduchý príklad zachytávania obrazu a jeho vykresľovania. V prvom rade sa importuje OpenCV verzie 2 a knižnica pre prácu s maticami. Následne sa vyberie kamera pre zachytávanie obrazu a v cykle sa vyberajú jednotlivé obrázky zo streamu.
import cv2 import numpy as np cap = cv2.VideoCapture(0) while(True): # Capture frame-by-frame frame = cap.read() # Display the resulting frame cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break # When everything done, release the capture cap.release() cv2.destroyAllWindows()
S takto pripraveným objektom frame
je možné robiť rôzne úpravy, kedže už pracujeme s bitovou mapou v podobe matice. Napríklad odfarbenie alebo vyhľadávanie hrán objektov pomocou gradientných filtrov, ktoré využívajú funkcie laplacian a sobel
.
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) laplacian = cv2.Laplacian(frame,cv2.CV_64F) sobelx = cv2.Sobel(frame,cv2.CV_64F,1,0,ksize=5) sobely = cv2.Sobel(frame,cv2.CV_64F,0,1,ksize=5)
Výsledkom je bitová mapa, ktorá má jasne určené hrany objektu ako je vidno na obrázku:
Festival je slobodný softvér pod licenciou, ktorá umožňuje neobmedzené komerčné i nekomerčné použitie. Systém je napísaný v jazyku C ++ a používa Edinburgh Speech Tools knižnicu. Umožňuje syntetizovanie ľudskej reči v angličtine (britskej aj americkej) a španielčine. Je to štandardný nástroj pre syntetizáciu hlasu na platforme Q.bo.
Ďalšou možnosťou je použiť nástroj espeak, ktorý podporuje vyšší počet jazykov a medzi nimi aj slovenčinu. Syntetizácia reči je postačujúca a môže byť použitá aj pri vysokých rýchlostiach, ale nie je tak prirodzená alebo hladká ako pri väčších syntetizátoroch, ktoré sú založené na nahrávkach ľudskej reči.
V prílohách môžete nájsť ROS balíček espeak, ktorý zbiera String
data z témy /espeak
a zabezpečuje syntetizácia hlasu.
V oblasti rozpoznávania hlasu máme na výber z mnohých druhov softvéru. Ako prvý spomenieme Julius.
Julius je vysoko výkonný nástroj malého rozmeru s veľkým slovníkom pre rozpoznávanie súvislej reči (LVCSR) pre účely výskumníkov a vývojárov. Vďaka svojej technike rozpoznania v reálnom čase je vhodný pre rôzne počítače a tiež je možné použiť zariadenia v podobe mikropočítačov v klientskom móde a cloud v móde serverovom. Najnovšia verzia podporuje Hlbokú Neurónovú Sieť (DNN) pre dekódovania v reálnom čase.
PocketSphinx je jeden z open source nástrojov s veľkým slovníkom na rozpoznávanie súvislej reči vyvíjanej na Carnegie Mellon University. PocketSphinx sa najčastejšie používa v kombinácii s modulom GStreamer pre streamovanie médií. To znamená, že PocketSphinx možno považovať za koncový element pre dekodér zvuku do textu a GStreamer ako spracovateľské médium.
Google Cloud Speech API umožňuje vývojárom previesť audio na text za použitia výkonných modelov neurónových sietí v ľahko použiteľnej API. API podporuje viac ako 80 jazykov a variantov, medzi nimi aj slovenčinu. Je možné použiť priamo vstup z mikrofónu danej aplikácie alebo dekódovať vopred pripravenú zvukovú vzorku. Rozpoznanie zvuku začína hneď po nahratí žiadosti na úložisko v Google Cloud Storage. Rovnakú technológiu je možné použiť v kombinácii s ďalšími Google Cloud platformami a napájať ich na vlastné produkty.
[1] ROS dokumentácia .: http://wiki.ros.org/
[2] Open Q.bo dokumentácia .: http://openqbo.org/wiki/doku.php
[3] Oficiálne stránky platformy Q.bo .: http://thecorpora.com/
[4] Learning Robotics Using Python .: Lentin Joseph : PACKT publishing
[5] ROS answers .: http://answers.ros.org/
[6] OpenCV .: http://opencv.org/
[7] Festival .: http://www.cstr.ed.ac.uk/projects/festival/
[8] Espeak .: http://espeak.sourceforge.net/
[9] PyJulius .: https://pypi.python.org/pypi/pyjulius
[10] PocketSphinx .: https://pypi.python.org/pypi/pocketsphinx
[11] Google speech API .: https://cloud.google.com/speech/