PDA

View Full Version : Robot: Linguaggi di programmazione


kwb
09-06-2009, 17:17
Sto portando avanti un lavoro sugli androidi e mi domandavo attualmente con quali linguaggi di programmazione si programmino i robot di qualunque tipo, da quello che compri in edicola ai robot industriali.
Mi rendo conto che la domanda potrà sembrare alquanto strana e difficile da rispondere ma su internet ho trovato solo molta confusione a riguardo: volevo capire se si utilizzano i linguaggi base ( C, Java, Pascal ecc... ) o se si sta puntando all'uso di nuovi linguaggi, orientati appositamente per questo tipo di macchine. Alcuni nomi?

Kwb

!k-0t1c!
09-06-2009, 18:13
Linguaggi .NET: http://msdn.microsoft.com/en-us/robotics/default.aspx

PGI-Bis
09-06-2009, 18:19
Non so cosa si usi ma ogni tanto sono veramente tentato di prendere uno di questi affari:

http://www.sunspotworld.com/

e dire addio alla tristissima pratica del taglio dell'erba nel prato.

kwb
09-06-2009, 18:55
Linguaggi .NET: http://msdn.microsoft.com/en-us/robotics/default.aspx
Bene, da quel che mi è sembrato di capire, questa suite non fa altro che unire più linguaggi di programmazione ( Visual C, Visual C++, Js ecc... ) per raggiungere l'obiettivo: quello di creare un'applicazione per robot, ma sembra anche che vi siano implementate delle librerie di programmazione ( tipo CCR ).
Non so cosa si usi ma ogni tanto sono veramente tentato di prendere uno di questi affari:

http://www.sunspotworld.com/

e dire addio alla tristissima pratica del taglio dell'erba nel prato.
Sarebbe veramente bello :D
Comunque, da quel che si evince dal video a scopo dimostrativo, sembra che anche il Java sia impiegato in questo campo

cdimauro
09-06-2009, 19:14
http://www.pycon.it/conference/talks/gui-for-rehabilitation-robotics
http://pyrorobotics.org/
http://en.wikipedia.org/wiki/Python_Robotics

marco.r
09-06-2009, 22:52
Sto portando avanti un lavoro sugli androidi e mi domandavo attualmente con quali linguaggi di programmazione si programmino i robot di qualunque tipo, da quello che compri in edicola ai robot industriali.

Quando si parla di robot ci sono molti aspetti da considerare e molte componenti software che interagiscono. Algoritmi di controllo, pianificazione, IA, visione etc. Ogni aspetto ha problemi differenti e quindi linguaggi differenti sono piu' adatti allo scopo.
Aspetti di basso livello (i controllori ad esempio) sono tipicamente affrontati in C/C++ o comunque linguaggi che permettano il determinismo e il real-time. Discorso analogo per algoritmi come quelli di visione; per aspetti di piu' alto livello o che hanno requisiti temporali piu' rilassati tipicamente ci si appoggia al linguaggio che offre le librerie o i framework che piu' tornano comodi.

gugoXX
10-06-2009, 08:55
Per la gestione del livello di controllo consiglio di dare un occhiata al .net MicroFramework

http://msdn.microsoft.com/it-it/library/cc185077.aspx

Ovvero tutta la comodita' di un linguaggio managed moderno applicato all'ambito embedded.

Tommo
10-06-2009, 09:05
Domanda da noob:
ma perchè quando si parla di robot, si parla sempre di dispositivi embedded, processori a se stanti, etc etc?

Non è possibile usare un normalissimo pc x86 ed attaccarci la parte meccanica con una USB? :stordita:
D'altra parte la stragrande maggioranza dei robots non deve andare in giro, quindi sarebbe una cosa fattibilissima, almeno credo.

cionci
10-06-2009, 09:14
Se si intendono robot autonomi (un mio amico ha fatto un robot che gioca a calcio ed è andato in Giappone a fare il campionato di calcio per robot, un altro mio amico ha fatto un triciclo che tramite una telecamera evita gli ostacoli e raggiunge autonomamente un punto sul GPS), la maggior parte è gestita tramite PIC o da piccole schede ARM-based con un SO realtime (solitamente un Linux), quindi C e assembler per PIC, C, C++ e assembler per le schede ARM-based.

Se si intende invece robot per robotica, anche a livello industriale, anche qui entrano prepotentemente i PIC. Magari l'applicazione di controllo può essere scritta in qualsiasi altro linguaggio, ma l'interfaccia con l'hardware è quasi sempre gestita da un PIC.

cionci
10-06-2009, 09:16
Non è possibile usare un normalissimo pc x86 ed attaccarci la parte meccanica con una USB? :stordita:
D'altra parte la stragrande maggioranza dei robots non deve andare in giro, quindi sarebbe una cosa fattibilissima, almeno credo.
E cosa ci connetti all'usb ? Chi ti decodifica le istruzioni che mandi e le mappa sugli attuatori ? Chi legge l'output dai sensori e te lo invia quando lo richiedi ?

PIC è la risposta ;)
http://en.wikipedia.org/wiki/PIC_microcontroller

pierosa
10-06-2009, 09:53
Se non sei molto esperto potresti dare un'cchiata ad Arduino (http://arduino.cc/), un progetto di hardware "open source" nato in italia.
Si programma in un c/c++ semplificato, rispetto al PIC per chi inizia è più semplice perchè hai una scheda che integra il processore, porta usb per programmarlo e trasferire dati al pc, alimentazione esterna, input output digitali e analogici.
Poi i software per programarlo sono gratuiti, e ci sono molti esempi di codice. Volendo si può anche programmare in Ruby (http://rad.rubyforge.org) (rubyforge oggi non funziona)

kwb
10-06-2009, 15:48
Anzitutto grazie a tutti quanti, ora ho le idee più chiare a riguardo.
In buona sostanza, come già pensavo, si usano più linguaggi, ognuno per raggiungere obiettivi diversi. In linea generale, da quel che ho capito, se si tratta di gestire una parte a basso livello ( quindi molto vicino alla macchina, se ho ben capito ) si usano i linguaggi a basso livello ( C, che ho letto essere il linguaggio più a basso livello tra quelli di alto livello ) e l'assembly ( linguaggio macchina ) assieme ad altri; come supporto hardware, come dice il buon cionci :D , si usano questi PIC che girano fondamentalmente in assembly. Per la gestione degli altri aspetti che si discostano di più dalla macchina, la scelta è molto variegata: linguaggi comunemente conosciuti, ad alto livello, o varianti di questi che sono stati fatti apposta per la programmazione di robot.

Questo è quanto ne ho capito, se ho detto delle vaccate vi prego di correggermi :)

cionci
10-06-2009, 16:15
A parte l'equivalenza linguaggio macchina = assembly che non è vera, per il resto ok. I PIC si possono programmare anche in C, ma dipende sostanzialmente dal supporto del produttore.
Diciamo che attualmente la situazione è questa. Il linguaggio utilizzato per la realizzazione delle applicazioni di backend (quelle che monitorano, comandano ed impostano i vari parametri dell'hardware) lo puoi sostanzialmente scegliere come più ti aggrada.

Prendendo ad esempio i due robot di cui ti parlavo prima:
- il primo era realizzato con PIC e programmato in C
- il secondo monta mi sembra un paio di PIC con in più una scheda con CPU con architettura ARM che permette di processare l'input video e gestisce il collegamento wireless con il PC che lo controlla. La scheda ARM monta un sistema operativo real time, non mi ricordo se si tratta di QNX o RTLinux

In sostanza un buon modo per iniziare ad entrare in questo mondo è prendersi un PIC con qualche sensore a bordo e mettersi a fare prove. Ovviamente è indispensabile anche una buona conoscenza dell'elettronica (ad esempio per collegare il suddetto PIC a qualsiasi altra cosa diversa dal PC) e se si intende realizzare qualcosa di molto complesso servono anche conoscenze discrete di fisica, di teoria dei sistemi, di meccanica razionale e di pneumatica.
E questo senza contare la parte software. Ecco perché solitamente la realizzazione di sistemi molto complessi è affidata ad un team di persone con specializzazioni diverse ;)

PGI-Bis
10-06-2009, 16:20
se si intende realizzare qualcosa di molto complesso servono anche conoscenze discrete di fisica, di teoria dei sistemi, di meccanica razionale e di pneumatica.
E questo senza contare la parte software. Ecco perché solitamente la realizzazione di sistemi molto complessi è affidata ad un team di persone con specializzazioni diverse ;)

Ammazza e che deve fare, robocop?

banryu79
10-06-2009, 16:48
Ammazza e che deve fare, robocop?
Beh, nel primo post parlava di un "lavoro sugli androidi". Suona complesso :D

cionci
10-06-2009, 16:52
Ammazza e che deve fare, robocop?
Te pensa che per la prima cosa a cui si pensa quando si pensa a qualcosa che riguarda la robotica, cioè un braccio che prende qualcosa in mano, servono tutte queste conoscenze ;)

PGI-Bis
10-06-2009, 16:55
Massì, perchè tu stai lì a guardare la differenza tra una stretta di mano e una frattura al metacarpo. Ma se non fai lo schizzinoso secondo me qualcosa lo cavi anche con l'intuito :D.

cionci
10-06-2009, 16:59
Ma se non fai lo schizzinoso secondo me qualcosa lo cavi anche con l'intuito :D.
Sicuramente qualcosa lo puoi cavare, ma senza numeri alla mano ci metti molto di più ;)
I calcoli ti devo aiutare a dimensionare le componenti meccaniche, la potenza dei motori passo passo, la reazione alle sollecitazioni esterne...etc etc

gugoXX
10-06-2009, 17:01
Un mio amico, ing. Meccanico, come tesi di laurea e' riuscito a costruire e a fare camminare un ragno.
Effettivamente nel gruppo di lavoro erano in 3. Un meccanico, un elettronico e un informatico.

Hanno anche provato a fare un robot da mandare a quella trasmissione dove i robottini si picchiavano fra di loro, ma non sono riusciti a finirlo.

PGI-Bis
10-06-2009, 17:05
gesummaria, sto scherzando. Mi raccomando, gente allegra il ciel l'aiuta! :cry:

kwb
10-06-2009, 18:10
Ammazza e che deve fare, robocop?

Beh, nel primo post parlava di un "lavoro sugli androidi". Suona complesso :D

Effettivamente mi sono spiegato male, si tratta di un discorso che sto preparando tra cui tratto anche la programmazione, la base per far funzionare un robot, niente di pratico insomma :D .
Solo ora capisco il perchè di tutte queste spiegazioni pratiche/tecniche, credevo di essermi spiegato ma c'è stato un fraintendimento :D . Ciò non implica che quello che avete detto non mi serva a nulla anzi, è stato tutto molto utile! :D

tomminno
10-06-2009, 20:18
Linguaggi .NET: http://msdn.microsoft.com/en-us/robotics/default.aspx

:asd:
E da quando si fanno robot con Windows installato?

banryu79
11-06-2009, 08:18
Effettivamente mi sono spiegato male, si tratta di un discorso che sto preparando tra cui tratto anche la programmazione, la base per far funzionare un robot, niente di pratico insomma :D .

Bene allora non dimenticarti di citare le Tre Leggi della Robotica (http://it.wikipedia.org/wiki/Tre_leggi_della_robotica) :D Buon lavoro! :)

kwb
11-06-2009, 11:23
Bene allora non dimenticarti di citare le Tre Leggi della Robotica (http://it.wikipedia.org/wiki/Tre_leggi_della_robotica) :D Buon lavoro! :)

Tranquillo!! :D
Grazie a tutti! :)

marco.r
11-06-2009, 15:01
Te pensa che per la prima cosa a cui si pensa quando si pensa a qualcosa che riguarda la robotica, cioè un braccio che prende qualcosa in mano, servono tutte queste conoscenze ;)
Beh ma raramente uno si fa un intero braccio robotico :D, a meno che non si trovi un qualche gruppo di ricerca per cui devi farti componenti custom.
Piu' facilmente se lo compera ( visti i prezzi, diciamo che lo fa la ditta per cui lavora) e in quel caso si tratta "solo" di programmare la scheda di controllo assi. Se invece si tratta di robotica mobile, e' piu' facile il fai da te, perche' li' volendo si riesce comunque a risparmiare, e ti programmi le schedine per controllare i vari sensori, motori etc. Anche qua, se a uno le cose di basso livello non interessano puo' prendersi qualcosa di commerciale e dedicarsi ad altre cose come la navigazione.

gugoXX
11-06-2009, 15:27
Oppure si puo' prendere il Lego Mindstorm, e usare il driver C# :D

http://www.codeproject.com/KB/recipes/driving_lego_bot.aspx