Software robot

Il software robot è l’insieme di comandi codificati o istruzioni che comunicano a un dispositivo meccanico e a un sistema elettronico, noti insieme come un robot, quali compiti eseguire. Il software robot viene utilizzato per eseguire attività autonome. Sono stati proposti molti sistemi software e framework per rendere più semplici i robot di programmazione.

Alcuni software per robot hanno lo scopo di sviluppare dispositivi meccanici intelligenti. Le attività più comuni includono loop di feedback, controllo, ricerca del percorso, filtraggio dei dati, individuazione e condivisione dei dati.

introduzione
Mentre è un tipo specifico di software, è ancora abbastanza vario. Ogni produttore ha il proprio software robot. Mentre la maggior parte del software riguarda la manipolazione dei dati e la visualizzazione dei risultati sullo schermo, il software del robot è destinato alla manipolazione di oggetti o strumenti nel mondo reale.

Software per robot industriali
Il software per robot industriali è costituito da oggetti dati e elenchi di istruzioni, noti come flusso di programma (elenco di istruzioni). Per esempio,

Vai a Jig1

è un’istruzione al robot per passare ai dati posizionali denominati Jig1. Naturalmente i programmi possono contenere anche dati impliciti, per esempio

Dire all’asse 1 di spostarsi di 30 gradi.

Dati e programma di solito risiedono in sezioni separate della memoria del controller del robot. Si può cambiare i dati senza cambiare il programma e viceversa. Ad esempio, si può scrivere un programma diverso usando lo stesso Jig1 o si può regolare la posizione di Jig1 senza cambiare i programmi che lo usano.

Esempi di linguaggi di programmazione per robot industriali
A causa della natura altamente proprietaria del software per robot, la maggior parte dei produttori di hardware per robot fornisce anche il proprio software. Sebbene ciò non sia inusuale in altri sistemi di controllo automatizzati, la mancanza di standardizzazione dei metodi di programmazione per i robot pone alcune sfide. Ad esempio, ci sono oltre 30 diversi produttori di robot industriali, quindi sono richiesti anche 30 diversi linguaggi di programmazione dei robot. Ci sono abbastanza somiglianze tra i diversi robot che è possibile ottenere una comprensione ampia della programmazione dei robot senza dover imparare il linguaggio proprietario di ciascun produttore.

Un metodo per controllare i robot di più produttori consiste nell’utilizzare un software di programmazione Post processor e Off-line (robotica). Con questo metodo, è possibile gestire il linguaggio di programmazione del robot specifico del marchio da un linguaggio di programmazione universale, come Python (linguaggio di programmazione). tuttavia, la compilazione e il caricamento di un codice off-line fisso su un controller di robot non consente al sistema robotico di essere consapevole dello stato, quindi non è in grado di adattare il suo movimento e di ripristinarlo man mano che l’ambiente cambia. Il controllo adattativo unificato in tempo reale per qualsiasi robot è attualmente possibile solo con Actin.

Di seguito sono riportati alcuni esempi di linguaggi di programmazione dei robot pubblicati.

Compito in inglese semplice:

Passa a P1 (una posizione di sicurezza generale)
Passare a P2 (un approccio a P3)
Passare a P3 (una posizione per selezionare l’oggetto)
Pinza stretta
Passare a P4 (un approccio a P5)
Passare a P5 (una posizione per posizionare l’oggetto)
Pinza aperta
Passare a P1 e finire
VAL era uno dei primi “linguaggi” del robot ed era usato nei robot Unimate. Le varianti di VAL sono state utilizzate da altri produttori, tra cui la tecnologia Adept. Attualmente Stäubli utilizza VAL3.
Programma di esempio:

PROGRAMMA PICKPLACE

1. SPOSTA P1
2. SPOSTARE P2
3. MUOVERE P3
4. CLOSEI 0.00
5. SPOSTARE P4
6. MUOVERE P5
7. OPENI 0.00
8. SPOSTARE P1
.END
Esempio del programma Stäubli VAL3:
iniziare
MoveJ (p1, tGripper, mNomSpeed)
MoveJ (appro (P3, trAppro), tGripper, mNomSpeed)
MoveL (P3, tGripper, mNomSpeed)
chiudi (tGripper)
MoveJ (appro (P5, trAppro), tGripper, mNomSpeed)
MoveL (P5, tGripper, mNomSpeed)
aperto (tGripper)
MoveJ (p1, tGripper, mNomSpeed)
end
trAppro è una variabile di trasformazione cartesiana. Se usiamo il comando appro, non è necessario insegnare il punto P2 e P4, ma trasformiamo dinamicamente un approccio alla posizione di pick and place per la generazione della traiettoria.

Epson RC + (esempio per un pickup sottovuoto)

Funzione PickPlace
Salta P1
Salta P2
Salta P3
Nel vuoto
Aspetta .1
Salta P4
Salta P5
Fuori vuoto
Aspetta .1
Salta P1
Fend
ROBOFORTH (un linguaggio basato su FORTH).

: PICKPLACE
P1
RITIRO GRIP P3
P5 UNGRIP RITIRA
P1
;
(Con Roboforth puoi specificare le posizioni di avvicinamento per i luoghi in modo da non aver bisogno di P2 e P4.)

Chiaramente il robot non dovrebbe continuare la prossima mossa finché la pinza non è completamente chiusa. La conferma o il tempo consentito è implicito negli esempi sopra riportati di CLOSEI e GRIP mentre il comando On-vacuum richiede un ritardo per garantire un’aspirazione soddisfacente.

Altri linguaggi di programmazione robot

Linguaggio di programmazione visuale
Il linguaggio di programmazione LEGO Mindstorms EV3 è un linguaggio semplice con cui gli utenti possono interagire. È un’interfaccia grafica utente (GUI) scritta con LabVIEW. L’approccio è iniziare con il programma piuttosto che con i dati. Il programma è costruito trascinando icone nell’area del programma e aggiungendo o inserendo nella sequenza. Per ogni icona specifichi quindi i parametri (dati). Ad esempio, per l’icona dell’azionamento del motore si specificano i motori e il loro movimento. Quando il programma è scritto, viene scaricato nel Lego NXT “brick” (microcontrollore) per il test.

Linguaggi di scripting
Un linguaggio di scripting è un linguaggio di programmazione di alto livello che viene utilizzato per controllare l’applicazione software ed è interpretato in tempo reale, o “tradotto al volo”, anziché essere compilato in anticipo. Un linguaggio di scripting può essere un linguaggio di programmazione generico o può essere limitato a funzioni specifiche utilizzate per aumentare l’esecuzione di un’applicazione o di un programma di sistema. Alcuni linguaggi di scripting, come RoboLogix, hanno oggetti dati residenti in registri e il flusso del programma rappresenta l’elenco di istruzioni, o set di istruzioni, utilizzato per programmare il robot.

Linguaggi di programmazione nella robotica industriale
Nome del marchio del robot
ABB RAPID
Comau PDL2
Fanuc Karel
Kawasaki AS
Kuka KRL
Stäubli VAL3
Yaskawa Inform
I linguaggi di programmazione sono generalmente progettati per creare strutture dati e algoritmi da zero, mentre i linguaggi di scripting sono destinati più per collegare, o “incollare”, componenti e istruzioni insieme. Di conseguenza, il set di istruzioni del linguaggio di scripting è in genere un elenco semplificato di comandi di programma che vengono utilizzati per semplificare il processo di programmazione e fornire uno sviluppo rapido delle applicazioni.

Lingue parallele
Un altro approccio interessante è degno di menzione. Tutte le applicazioni robotiche richiedono parallelismo e programmazione basata sugli eventi. Il parallelismo è dove il robot fa due o più cose allo stesso tempo. Ciò richiede hardware e software appropriati. La maggior parte dei linguaggi di programmazione si basa su thread o classi di astrazione complesse per gestire il parallelismo e la complessità che ne deriva, come l’accesso simultaneo alle risorse condivise. URBI fornisce un livello più alto di astrazione integrando parallelismo ed eventi nel nucleo della semantica del linguaggio.

ogniqualvolta (face.visible)
{
headPan.val + = camera.xfov * face.x
& Amp;
headTilt.val + = camera.yfov * face.y
}

Il codice sopra riportato muoverà i motori headPan e headTilt in parallelo per fare in modo che la testa del robot segua il volto umano visibile sul video preso dalla sua telecamera ogni volta che un robot vede il volto.

Software applicativo per robot
Indipendentemente da quale lingua viene utilizzata, il risultato finale del software robot è la creazione di applicazioni robotiche che aiutano o intrattengono le persone. Le applicazioni includono il software di comando e controllo e tasking. Il software di comando e controllo include GUI di controllo robot per robot telecomandati, software di comando point-n-click per robot autonomi e software di pianificazione per robot mobili nelle fabbriche. Il software di tasking include semplici interfacce drag-n-drop per l’impostazione di percorsi di consegna, pattuglie di sicurezza e tour dei visitatori; include anche programmi personalizzati scritti per distribuire applicazioni specifiche. Il software applicativo per robot di uso generale è distribuito su piattaforme robotizzate ampiamente distribuite.

Considerazioni sulla sicurezza
Gli errori di programmazione rappresentano una seria considerazione di sicurezza, in particolare nei grandi robot industriali. La potenza e le dimensioni dei robot industriali significano che sono in grado di infliggere gravi lesioni se programmate in modo errato o utilizzate in modo non sicuro. A causa della massa e delle alte velocità dei robot industriali, è sempre pericoloso che un essere umano rimanga nell’area di lavoro del robot durante il funzionamento automatico. Il sistema può iniziare a muoversi in momenti inaspettati e un umano non sarà in grado di reagire abbastanza velocemente in molte situazioni, anche se è disposto a farlo. Pertanto, anche se il software è privo di errori di programmazione, è necessario prestare la massima attenzione per rendere un robot industriale sicuro per gli operatori umani o l’interazione umana, come il caricamento o lo scaricamento di parti, la rimozione di un inceppamento o l’esecuzione di interventi di manutenzione. Lo standard americano americano ANSI / RIA R15.06-1999 per robot industriali e sistemi di robot – Requisiti di sicurezza (revisione di ANSI / RIA R15.06-1992), libro della Robotic Industries Association, è lo standard accettato sulla sicurezza dei robot. Ciò include le linee guida sia per la progettazione di robot industriali, sia per l’implementazione o l’integrazione e l’uso di robot industriali nella fabbrica. Vengono trattati numerosi concetti di sicurezza come i controllori di sicurezza, la velocità massima durante una modalità di apprendimento e l’uso di barriere fisiche.

Progetti software di robotica
Di seguito è riportato un elenco di software libero e open source per progetti di robotica.

CLARAty – Architettura a strati accoppiati per l’autonomia robotica. Si tratta di uno sforzo collaborativo tra quattro istituzioni: la NASA Jet Propulsion Laboratory, il NASA Ames Research Center, la Carnegie Mellon e l’Università del Minnesota.
dLife – Libreria Java gratuita / open source per robotica, intelligenza artificiale e visione. Supporta Pioneer, Khepera II e amp; I robot II, Hemission, Aibo e Finch così come le simulazioni Player / Stage.
Experimental Robotics Framework – Un software per fare esperimenti con più robot in 3d, con supporto per le ultime tecnologie, che si trova in cima a Player / Stage e Open / CV.
MARIE – Ambiente di integrazione della robotica autonoma e mobile – è un software gratuito che utilizza un approccio basato sui componenti per costruire sistemi software di robotica integrando componenti software già esistenti e nuovi.
Microsoft – Microsoft Robotics Developer Studio
OpenRDK – Un framework software open-source per la robotica per lo sviluppo di moduli liberamente accoppiati. Fornisce una gestione trasparente della concorrenza, inter-processo (tramite socket) e comunicazione intra-processo (tramite memoria condivisa) basata su lavagna e una tecnica di collegamento che consente la progettazione di sistemi concettuali di porte dati input / output. Sono forniti i moduli per la connessione a simulatori e driver per robot generici.
OpenRTM-aist – una piattaforma software sviluppata sulla base dello standard del middleware RT. È sviluppato dall’Istituto nazionale di scienza e tecnologia industriale avanzata in Giappone.
OROCOS – Il progetto Open Robot Control Software fornisce un toolkit di software libero per il controllo in tempo reale del braccio robotico e della macchina utensile.
OPRoS – Open Platform Robotic Services è un progetto open source per lo sviluppo di robot. Fornisce una soluzione che include la piattaforma robotizzata e gli strumenti di sviluppo della GUI con il codice sorgente dei componenti del dispositivo robot.
RoboDK – Una piattaforma di kit di sviluppo robot per simulare robot industriali. RoboDK ti permette di programmare qualsiasi robot usando Python e gestisce la sintassi specifica del marchio a seconda del tuo robot controller.
La libreria di robotica è una libreria C ++ open source che copre la cinematica, la pianificazione, la visualizzazione e i driver hardware per diversi robot.
Robotica Toolbox per MATLAB – questo è Software Libero che fornisce funzionalità per rappresentare pose (trasformazioni omogenee, angoli Eulero e RPY, quaternioni), robot a braccio (cinematica e dinamica in avanti / inversa) e robot mobili (controllo, localizzazione e pianificazione)
Progetto Rossum, G.W. Lucas, progetto di robotica open source.
Player / Stage Project – Un sistema di simulazione e simulazione di robot Free Software molto popolare, utilizzato per la ricerca e l’insegnamento della robotica in tutto il mondo.
Pyro, Python Robotics – Robotica popolare Software libero utilizzato nelle università e nelle università.
RoboMind – Software didattico per apprendere le basi della robotica e della programmazione.
Sistema operativo robot – Robot Operating System è una piattaforma open source per la programmazione di robot con Python e C ++. Java, Lisp, Lua e Pharo sono supportati ma ancora in fase sperimentale.
Kernel Intelligence robot

Programmazione off-line
Visual Components è un software di simulazione di eventi digitali 3D commerciali che consente la simulazione del flusso di materiali e della robotica su un’unica piattaforma. La funzionalità può essere estesa con funzionalità di programmazione off-line e connettività PLC.
“The Basics – Robot Software”. Seattle Robotics Society.
“Software Mobile Autonomous Robot (MARS)”. Georgia Tech Research Corporation.
“Database tecnico”. robot.spawar.navy.mil.
Adaptive Robotics Software presso l’Idaho National Laboratory

Controllo in linea
Energid Technologies sviluppa e vende Actin SDK che è un kit di strumenti di robotica, un motore di ottimizzazione e un sistema di gestione dei vincoli scritto in C ++ che utilizza la cinematica basata su Jacobian per ottimizzare le prestazioni su tutti i tipi di robot. Poiché Actin è venduto come SDK, può essere etichettato in bianco o OEM in altri pacchetti software di controllo robot. Questo approccio consente agli utenti di sviluppare il controllo di un sistema noto in modalità offline tramite una GUI e quindi lasciare che Actin gestisca il controllo online di alto livello per lo streaming di comandi a livello comune costantemente aggiornati al robot / controller in tempo reale per evitare collisioni adattando ai cambiamenti ambientali percepiti.