E.Mumolo, DEEI mumolo@units.it Player Stage E.Mumolo, DEEI mumolo@units.it.

Slides:



Advertisements
Presentazioni simili
CUDA & OpenMP parallel programming.
Advertisements

Corso di Fondamenti di Programmazione canale E-O
INFORMATICA Altre Istruzioni di I/O
© 2010 Colt Telecom Group Limited. All rights reserved. Cloud Computing Lapproccio Colt Dionigi Faccedna.
BCX (user guide: cineca
Esercitazioni If nidificati
Preincremento e PostIncremento in C++
Stringhe di caratteri In linguaggio C.
Generazione di numeri casuali in Dev C++
POLITECNICO DI MILANO NERD: Net-based Environment for Reconfigurable Devices Realizzazione di un Framework Distribuito Multi Utente per la Riconfigurabilità
Connessione con MySQL.
1 Player Stage - Programmazione E.Mumolo, DEEI
Giuseppe Fabio Fortugno.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
Programmazione Procedurale in Linguaggio C++
Come programmare servizi di rete?
Microsoft Robotics Studio Marco Petrucco Microsoft Student Partner - Udine.
EJB Enterprise Java Beans B. Pernici. Approccio Java.
Model – View - Controller
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
EJB Getting started Database: MySql Application Server: Pramati Server Ambiente di sviluppo: Pramati Studio 3 Applicazione esempio: Logon Trento, 30/10/2002.
prompt> java SumAverage
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
Laboratorio di Linguaggi note sull'uso dell' IDE DevC++ Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
JAVA C import java.util.*; #include <stdio.h>
1 Esercitazione sui segnali Problema: creare un programma analizzatore di file testuali che prenda come argomenti il nome di un file e una sequenza di.
I Thread.
Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario 2: Microsoft.NET.
1 laboratorio di calcolo II AA 2003/04 ottava settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
Linux firewalls Massimo Ianigro - CNR Area di Ricerca - Bari
Componenti dell’architettura Oracle
ISTRUZIONI PER L’USO.
7 cose da sapere su Volume Activation con Windows 7 © 2009 Microsoft Corporation. Tutti i diritti riservati. Come professionista IT, devi sapere che l'attivazione.
© 2008 WS (WebScience srl) – All rights reserved WS Tech workshop Software Construction.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Gli ambienti di apprendimento Firenze, 3 marzo 2006.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 6 ARGOMENTI: LAVORARE CON CLASSI METODI DELLISTANZA, COSTRUTTORI.
Andrea Petricca Problematiche di rete nella sperimentazione di file-system distribuiti su WAN per applicazioni di GRID-Computing Rapporto trimestrale attività
Attività Formativa Sviluppo di un WORKFLOW ENGINE di Dott. Riccardo Gasperoni Alessandro Caricato Gabriele Trabucco in collaborazione con Progesi S.p.A.
Fabio Cozzolino Vito Arconzo
void binario(int n); …………………
Creazione progetto in C++/DEV
WEB: Progetto: Documentazione: Soluzioni per video streaming.
IIS7 Media Services Piergiorgio Malusardi IT Pro Evangelist
VB.NET Sviluppo Applicazioni Desktop
Visual Studio Tools for Office: Developer Solutions Platform Fulvio Giaccari MCSD.NET / MCT Responsabile Usergroup ShareOffice Blog:
Interoperabilità tra servizi eterogenei M. Missikoff – F. Taglino LEKS, IASI-CNR Una piattaforma inferenziale per il Web Semantico: Jena2 Roma, 2006 Web.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Collection & Generics in Java
Java Enterprise Edition
A WORLD OF TESTING IN AUTOMOTIVE
Azure: Mobile Services e Notification Hub ANDREA GIUNTA.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Sistemi di elaborazione dell’informazione Modulo 4 -Tecniche di programmazione distribuita Unità didattica 1 -Socket library Ernesto Damiani Lezione 1.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 5 -Test e verifica Ernesto Damiani Università degli Studi di Milano.
Office WPC049 Strumenti di supporto e analisi per Office 365
Java World Introduzione.
TITOLO PRESENTAZIONE sottotitolo Autore/i Indirizzo
Corso Java Introduzione.
APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Java Introduzione.
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

E.Mumolo, DEEI mumolo@units.it Player Stage E.Mumolo, DEEI mumolo@units.it

Il problema Molti tipi di piattaforme e controllori È un problema di virtualizzazione per la portabilità del codice

Soluzione Strato di virtualizzazione  Player Server www.playerstage.org Programma utente (client) TCPIP Player Server File di configurazione interfacce Robot Reale

Architettura del Player Computer di sviluppo Robot reale

Simulazione E se non ho il robot?  STAGE (simula il robot e il mondo) Programma utente (client) TCPIP Player Server File di configurazione del player interfacce File di configurazione di Stage STAGE

In definitiva Programma scritto in C C++ Java Pyton … simulazione degli ambienti STAGE (mondi a 2D) tcp/udp Cliente PLAYER GAZEBO (mondi a 3D) Client Programma scritto in C C++ Java Pyton … ROBOT REALE simulazione interfacce del robot

Running Player Building and installation Execution http://playerstage.sourceforge.net ./configure make make install Execution player [–p <port>] <config file> playerv [hostname:port] playerjoy [hostname:port]

File di configurazione del player: *.cfg Server blobfinder:0 ( driver “acts” devicepath=“/dev/video0” channel 0 ) laser:0 ( driver “sicklms200” port “/dev/ttyS1” resolution 50 position:0 ( driver “p2os_position” port “/dev/ttyS0” max_xspeed 500 Camera Laser Motors

Player cfg

Programmazione clienti in C++ Il programma Cliente usa la libreria libplayerc++ La libplayerc++ si basa sul modello “service proxy” Il cliente è implementato includendo oggetti che sono proxy per servizi remoti In definitiva, lo sviluppo del programma si basa sulla desisione dei proxy necessari, e l’uso dei metodi forniti dalla classe I proxy sono gestiti dal Controller Funzioni del Controller: Fornisce un corpo al cliente (Embodyness) Supervisiona il funzionamento Fornisce le funzionalità previste

#include <playerclient. h> #include <stdlib #include <playerclient.h> #include <stdlib.h> int main(int argc, char *argv[]) { PlayerClient robot("localhost"); SonarProxy sp(&robot,0,'r'); Position2DProxy pp(&robot,0,'w'); double newturnrate,newspeed; for(int i=0;i<1000;i++) if(robot.Read()) exit(1); sp.Print(); // print out sonars for fun // semplice algoritmo per evitare gli ostacoli if((sp.ranges[0] + sp.ranges[1]) < (sp.ranges[6] + sp.ranges[7])) newturnrate = DTOR(-20); // turn 20 degrees per second else newturnrate = DTOR(20); if(sp.ranges[3] < 0.500) newspeed = 0; else newspeed = 0.100; pp.SetSpeed(newspeed,newturnrate); //comandi ai motori }

File di configurazione di Stage: world file

Programmazione player Librerie C (libplayerc), C++ (libplayerclient), Tcl (tclPlayer), etc. Passi di programmazione Connessione con il proxy Sottoscrivere I device. Leggi I sensori. Elabora i dati. Invia i comandi agli attuatori.

Position2dProxy: metodi principali Position2dProxy (PlayerClient *aPc, uint aIndex=0)  costrutore ~Position2dProxy ()  distruttore void SetSpeed (double aXSpeed, double aYSpeed, double aYawSpeed)  invia comandi al motore void SetMotorEnable (bool enable)  abilita/disabilita i motori void ResetOdometry ()  resetta l’odometry a (0,0,0). void SetOdometry (double aX, double aY, double aYaw)  inizializza l’odometria alla posizione (x, y, yaw). double GetXPos () double GetYPos (). double GetYaw () double GetXSpeed () double GetYSpeed (). double GetYawSpeed ().

LaserProxy: metodi principali LaserProxy (PlayerClient *aPc, uint aIndex=0)  costruttore ~LaserProxy ()  distruttore uint GetCount ()  numero di punti nella acquisizione. player_point_2d_t GetPoint (uint aIndex)  dati dello scanner: x,y (m). int GetIntensity (uint aIndex)  richiede l’intensità void RequestGeom ()  richiede la geometria del laser player_bbox_t GetSize ()  richiede la dimensione. double GetMinLeft ()  richiede la minima lettura a sinistra. double GetMinRight ()  richiede la minima lettura a destra.

SonarProxy SonarProxy (PlayerClient *aPc, uint aIndex=0)  costruttore ~SonarProxy ()  distruttore uint GetCount () richiede il conteggio delle misure double GetScan (uint aIndex)  richiede una lettura particolare double operator[] (uint aIndex)  richiede un modo alternativo di lettura delle misure uint GetPoseCount ()  numero di posizioni valide player_pose_t GetPose (uint aIndex)  richiede la posizione deòl sonar void RequestGeom ()  richide la geometria del sensore