2009-02-12 14 views
22

Ancora prima di apprendere la programmazione sono rimasto affascinato dal modo in cui i robot potevano funzionare. Ora so come verranno scritte le istruzioni di programmazione sottostanti, ma quello che non capisco è il modo in cui quelle intruzioni sono seguite dal robot.Come creare robot reali?

Per esempio, se ho scritto questo codice:

object=Robot.ScanSurroundings(300,400); 
if (Objects.isEatable(object)) 
{ 
    Robot.moveLeftArm(300,400); 
    Robot.pickObject(object); 
} 

Come questo programma sia seguito dalla CPU in un modo che renderebbe il robot fare l'azione fisica di guardare a sinistra, spostando il braccio , e simili? È fatto principalmente in linguaggio binario/ASM?

Infine, dove andrei se volessi imparare come creare un robot?

+1

Vai al negozio Lego NXT. –

risposta

5

Nella maggior parte dei robot moderni si avrebbe un modello cinematico inverso del meccanismo, in questo caso il braccio, che converte le coordinate spaziali in posizioni per le articolazioni del braccio. Questi giunti vengono solitamente spostati da servomotori. Per muovere dolcemente il braccio, hai bisogno di una serie di posizioni intermedie che definiscano il percorso da seguire per il braccio. Devi anche preoccuparti delle velocità delle articolazioni, che insieme controllano la velocità della "mano" all'estremità del braccio.

Mentre il braccio si sposta, il sistema servo riceverà un feedback sulla sua posizione effettiva. I semplici servosistemi possono utilizzare un circuito di feedback PID di base per regolare i motori. I sistemi più complessi includeranno parametri feed-forward che compensano l'inerzia, la gravità, l'attrito e così via. Questi possono diventare molto sofisticati.

Il vero divertimento inizia quando devi consentire ostacoli nello spazio attorno al robot. Devi percepire l'ostacolo e capire come evitarlo e raggiungere comunque la destinazione.

1

Dovreste avere un driver che si interfaccia con l'hardware (molto probabilmente un STAMP o FPGA con motori ecc ...). Chiameresti quindi la funzione me.moveLeftArm (x, y); e il guidatore dovrebbe sapere che moveLeftArm() significa spostare un attuatore per X secondi/millisecondi/gradi.

Sono sicuro che è possibile trovare un kit per la programmazione dei robot.

0

È probabilmente più facile ottenere un linguaggio di livello più alto per descrivere i comportamenti e l'intelligenza del robot e lasciare che il linguaggio di basso livello alle azioni (muovere il braccio, camminare, fermarsi). C'è molta ricerca in quella che viene chiamata architettura BDI per agenti intelligenti, google per esso.

È possibile trovare ulteriori informazioni a questo site, è un DSL per descrivere il comportamento degli agenti realizzato in Java. Si chiama interprete Jason e la lingua è AgentSpeak (L).

3

I robot funzioneranno interagendo con l'hardware. Il bridge dal tuo codice viene spesso eseguito attraverso diversi tipi di porte I/O. Ad esempio, potrebbe essere semplicemente un cavo RS232 (conosci le vecchie porte COM1). Le parti hardware saranno composte da motori (come servo motors) e sensori (come ultrasuoni per percepire ostacoli, laser per ottenere distanza o interruttori).

Non è necessario utilizzare l'assemblatore per farlo, ci sono molti linguaggi (se non la maggior parte) che possono farlo ma richiede conoscenze su come interagire con l'hardware. Come scrivere un autista. Richiede almeno un'elettronica di base anche se si vuole costruire il robot da soli.

Se ti interessa, ti suggerisco di dare un'occhiata a this book che è un buon primer.

Inoltre, è possibile provare a programmare uno Basic stamp, è molto semplice seguire le esercitazioni e ti darà un buon inizio su come costruire i robot. Non è troppo costoso e interagirai con l'hardware in pochissimo tempo.

Buona fortuna e buon divertimento!

3

Se sei abbastanza bravo in programmazione, potresti scoprire che non hai nemmeno bisogno di un robot per testare gran parte del codice più difficile che dovrai scrivere ... (IE, far vedere e riconoscere un robot una scena mi ha sempre affascinato ... Ma ad un certo punto mi sono reso conto che il robot fisico richiesto per questo problema è la parte facile ... Il software è la parte difficile!) ...

+0

come è la parte facile? –

17

Alla fine, qualcosa deve suddividere i comandi di alto livello in comandi di livello molto basso. Qualcosa deve tradurre "Pick up the cup" su come spostare il braccio (a che angolazione dovrebbero essere le articolazioni) ai comandi hardware che effettivamente ruotano i motori.

Ci sono quadri che cercano di fornire una certa quantità di questa traduzione, tra cui (ma non solo):

Tuttavia, poiché la ricerca sulla robotica è interessata a ogni livello del sistema, non ci sono molti sistemi che forniscono l'intero stack di traduzione. Se stai cercando in ricevendo in robotica, ci sono diversi sistemi che tentano di rendere questo (ancora una volta, un campione casuale) facile:

mancanza questo, siti come Make forniscono anche guide per la costruzione di progetti di robot da cui partire. La sfida è trovare un progetto di cui sei entusiasta e vai in città!

+1

+1 per Lego Mindstorms come punto di partenza – lpfavreau

1

Se si desidera un'alternativa Java, posso consigliare il libro Linux Robotics. Ha molte buone informazioni su dove trovare kit, parti e sensori, oltre a elenchi completi di codice sorgente in Java.

2

Trova una squadra di robotica locale FIRST e fai volontariato come mentore. PRIMO è un concorso di robotica per bambini delle scuole medie e superiori. L'obiettivo è che i ragazzi facciano tutto il lavoro per costruire, programmare, testare ed eseguire il robot, ma avrete comunque molte opportunità di approfondire e imparare davvero il software. Stanno usando LabView da National Instruments e, a partire dall'8 febbraio, hanno appena iniziato la competizione regionale per quest'anno. LabView è un ambiente di programmazione grafico che si interfaccia con l'hardware NI per consentire la programmazione di motori, attuatori e sensori.Il materiale NI è piuttosto scorrevole ed è piuttosto facile da usare, in più è fornito gratuitamente a ogni squadra, quindi non devi acquistare l'hardware e il software da solo (almeno per iniziare). Inoltre, ottieni il bonus aggiuntivo di aiutare una nuova generazione di ingegneri a iniziare.

1

Condivido lo stesso prurito .. Sto per acquistare il mio primo Beagle Board e alcuni sensori/servi che possono utilizzare il bus I2C. Userò un design guidato da eventi e un'implementazione grezza delle fibre (fibrille, se lo farete) che sono thread di userspace.

Fondamentalmente il mio progetto richiede un processo, che avvia un thread per gruppo di servi. Ogni thread del gestore di gruppo avvierà x # di fibrille, 2 per servo (probabile). Una fibrilla viene usata per controllare il servo, l'altra fibrilla gestisce gli eventi da quel servo (cioè, un oggetto è troppo pesante per essere raccolto, un oggetto è caduto, ecc.).

Il processo principale ha il compito di ascoltare gli eventi da qualsiasi altra cosa e accertarsi che la "mano destra sappia ciò che la mano sinistra sta facendo" mentre si muove in avanti e negoziando gli ostacoli.

Mi prenderà la parte migliore di due anni per ottenere qualcosa che funzioni al punto che ne sono fiero .. ma prevedo molte serate piacevoli che arrivano a quel punto.

Molto probabilmente userò un Microkernel, non Linux.

sto facendo questo tanto per affinare me stesso con metodi event-driven e il mio desiderio di fare il mio R2 :)

1

Inizia con Phidets se si ha familiarità con .Net. È possibile effettuare il checkout TrossenRobotics.com per le parti.

Il kit di interfaccia di Phidgets è un buon punto di partenza. Da lì puoi ottenere un servocontrollo e iniziare a costruire cose che si muovono.

I forum Trossen sono anche un buon posto per rivedere i progetti di altre persone. Hanno anche un nuovo Data Center con esempi di codice/progetto. Non lavoro per loro ... solo un cliente felice.

0

molte buone risposte qui. il tuo pezzo di codice fantasy non è lontano da come faresti in un linguaggio di livello superiore come C# su MS Robotics Studio. Tieni a mente che anche le cose semplici (come "sposta il braccio a sinistra") sono molto cariche di "distorsioni informative".

fino al metallo, un braccio robotico è un insieme di collegamenti e [possibilmente] giunti motorizzati. Pertanto "spostare il braccio a sinistra" (o qualsiasi punto in coordinate) è già un compito molto complesso da calcolare (cercare D & Tabella H, cinematica in avanti e inversa per i manipolatori).

C'è anche il concetto che sposta il braccio a sinistra presuppone che non ci sia nulla in quello spazio e che non si verificherà una collisione. Se l'ambiente non è vincolato, è necessario implementare un sistema di rilevamento delle collisioni, spesso basato su una sorta di algoritmo di sensore (fotocamera) e visione artificiale.

In sintesi, il linguaggio e l'interfaccia hardware sono spesso banali rispetto alla modellazione del sistema per ottenere il comportamento desiderato.

4

Devo solo aggiungere qualcosa su Arduino projects a questo perché non lo vedo menzionato sopra.

C'è una barra molto bassa per l'ingresso nei progetti di robotica basati su Arduino.I programmi "sketch" che scrivi per l'hardware sono molto facili da riprendere e simili alla sintassi C. Se non si conoscono i transistor dalle resistenze, queste schede consentono comunque di fare molto con l'hardware plug-in e ulteriori "shields" che estendono la scheda del computer di base.

È molto divertente, molto flessibile e qualcosa per far interagire il codice con il mondo reale. Inoltre il suo "Open Hardware" molto simile alle linee del software open source.

Problemi correlati