corso sistemi di governo dei robot lezione n.7 un simulatore

25

Upload: britanni-lowe

Post on 03-Jan-2016

38 views

Category:

Documents


2 download

DESCRIPTION

CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore lezione tenuta dalla d.ssa Mariacarla Staffa prof. Ernesto Burattini. Guida all’utilizzo di Player e Stage. Dott.ssa Mariacarla Staffa Dipartimento di Informatica e Sistemistica University of Naples “Federico II” - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore
Page 2: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Guida all’utilizzo di Player e Guida all’utilizzo di Player e StageStage

Dott.ssa Mariacarla Staffa

Dipartimento di Informatica e SistemisticaUniversity of Naples “Federico II”

Naples, [email protected]

Page 3: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

SommarioSommario

Mariacarla Staffa [email protected] 3

Il Progetto Player/StageIl Progetto Player/Stage Player/Stage/GazeboPlayer/Stage/Gazebo Il modello Client/ServerIl modello Client/Server

Scaricare Player/StageScaricare Player/Stage Installazione Player/StageInstallazione Player/Stage

Creazione del file di ConfigurazioneCreazione del file di Configurazione Creazione del file .worldCreazione del file .world Scrittura del Codice Client e Scrittura del Codice Client e

compilazionecompilazione

IntroduzioneIntroduzione

SettingSetting

TestingTesting

Page 4: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

IntroduzioneIntroduzioneSettingSettingTestingTesting

Il Progetto Player/StageIl Progetto Player/StagePlayer/Stage/GazeboPlayer/Stage/GazeboIl modello Client/ServerIl modello Client/Server

Mariacarla Staffa [email protected] 4

Player/Stage è un framework open source per la robotica scritto in C/C++ e sviluppato principalmente dallo Stanford AI Lab, dall’USC Robotics Research Lab e dal Simon Fraser Autonomy Lab con il contributo della comunità open source.

Il suo obiettivo è quello di sostenere la ricerca nell’ambito di sistemi robotici e/o sistemi di sensori.

Player è probabilmente il server di controllo per robot maggiormente utilizzato nel mondo e si sta diffondendo sempre piu’ anche l’utilizzo delle sue interfacce di simulazione Stage (2D) e Gazebo (3D).

E’ possibile scaricarlo gratuitamente e consultare la documentazione dal/sul sito ufficiale di Player/Stage: http://playerstage.sourceforge.net/

IntroduzioneIntroduzione

Page 5: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 5

IntroduzioneIntroduzioneSettingSettingTestingTesting

Il Progetto Player/StageIl Progetto Player/StagePlayer/Stage/GazeboPlayer/Stage/GazeboIl modello Client/ServerIl modello Client/Server

Player: fornisce un’interfaccia estremamente semplice verso i sensori e gli attuatori del robot.

Stage: è in grado di simulare un ambiente bidimensionale (bitmap) in cui si muovono e agiscono popolazioni di robot, con i loro particolari sensori e attuatori.

Gazebo: è una interfaccia grafica di simulazione simile a Stage, ma in 3d.

Page 6: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 6

IntroduzioneIntroduzioneSettingSettingTestingTesting

Il Progetto Player/StageIl Progetto Player/StagePlayer/Stage/GazeboPlayer/Stage/GazeboIl modello Client/ServerIl modello Client/Server

Sensori

Attuatori Sistema di Controllo

ServerSistema Robotico

Client

Page 7: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 7

IntroduzioneIntroduzioneSettingSettingTestingTesting

Il Progetto Player/StageIl Progetto Player/StagePlayer/Stage/GazeboPlayer/Stage/GazeboIl modello Client/ServerIl modello Client/Server

Sistema di Controllo

Player Client Library

C/C++C#

JavaTcl

PythonLisp

Player Server

Page 8: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 8

IntroduzioneIntroduzioneSettingSettingTestingTesting

Il Progetto Player/StageIl Progetto Player/StagePlayer/Stage/GazeboPlayer/Stage/GazeboIl modello Client/ServerIl modello Client/Server

Player Client Library

C/C++C#

JavaTcl

PythonLisp

Page 9: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 9

IntroduzioneIntroduzioneSettingSettingTestingTesting

Scaricare Player/StageScaricare Player/StageInstallazione Player/StageInstallazione Player/Stage

Prima di procedere all’installazione occorre preparare il sistema in modo da non avere spiacevoli errori in fase di compilazione (devono cioè essere installati alcuni pacchetti e alcune librerie utilizzare: Synaptic )

Per i dettagli consultare guida all’installazione che sarà fornita col materiale del corso.

Si consiglia comunque di considerare come punto di riferimento:• il sito: http://playerstage.sourceforge.net/

• e la relativa mailing list: http://sourceforge.net/mail/?group_id=42445

n.b.: E’ necessario avere i diritti di amministratore per poter procedere con l’installazione

Il download di Player /Stage e Gazebo può essere eseguito dal sito: http://sourceforge.net/project/showfiles.php?group_id=42445

SettingSetting

Page 10: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 10

IntroduzioneIntroduzioneSettingSettingTestingTesting

Scaricare Player/StageScaricare Player/StageInstallazione Player/StageInstallazione Player/Stage

Una volta eseguite le operazioni preliminari è possibile installare i pacchetti relativi rispettivamente a Player Stage e Gazebo , attraverso la seguente sequenza di comandi:

1.Decomprimere il file scaricato eseguendo da terminale: $sudo tar xjvf player-<version>.tar.bz2

2.Spostarsi nella directory sorgente di Player: $cd player-<version>

3.Configurare attraverso il comando $sudo ./configure

4.Compilare attraverso il comando $sudo make

5.Installare Player attraverso il comando $sudo make install

Page 11: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 11

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

Per far invocare un server player bisogna:1.aprire un terminale2.posizionarsi nella cartella contenente il file di configurazione 3.e digitare il comando: $ player [options] <configfile> Dove il <configfile> è un file di testo che descrive l’insieme dei dispositivi che si vogliono istanziare.

TestingTesting

Page 12: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 12

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

Per esempio, se si vuole creare un interfaccia per un sistema robotico caratterizzato da una piattaforma

“Pioneer-ActivMedia” e un laser “range finder-SICKLMS200,” la struttura del file

di configurazione sarà la seguente:

Questo file istruisce il server a creare due dispositivi:

•Un driver Pioneer P2OS, che supporta l’interfaccia position.•Un driver SickLMS200 che supporta un’interfaccia laser.

Il programma Client può connettersi così a questi dispositivi, leggere i dati, inviare comandi e così via.

Page 13: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 13

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

driverInterfaccia + dispositivo

Page 14: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 14

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

Player Server

Player Client (user program)

<.cfg> <.world>

<.cfg>

Environment description?

sim

ulaz

ione

real

e

Page 15: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 15

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

Insieme di “modelli”

<.world>Caratteristiche generali dell’ambiente

predefiniti: predefiniti: Blobfinder, bumper ,

gripper, position, laser, Ptz, ranger,

speech, ecc.

creati dall’utente: creati dall’utente: attraverso un

modello di base chiamato “Model”

La parola chiave “define” viene utilizzata per creare un nuovo modello a partire da uno già esistente”

Positionsize

velocitycolor

visibility etc.

Page 16: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 16

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

include "pioneer.inc“ include "pioneer.inc“ include "map.inc“ include "map.inc“ size [20 20]size [20 20]resolution 0.01 resolution 0.01 gui_interval 10 gui_interval 10 window( window( size [ 800.000 800.000 ] size [ 800.000 800.000 ] center [ 0.0 0.0] center [ 0.0 0.0] scale 0.028 scale 0.028 #size of each bitmap pixel in metres#size of each bitmap pixel in metres) ) map ( map ( bitmap "lab.png"bitmap "lab.png" size [20 20]size [20 20] name "lab"name "lab") . . . ) . . .

Inclusione della libreria che contiene le Inclusione della libreria che contiene le definizioni relative al robot pioneerdefinizioni relative al robot pioneer

Inclusione della libreria Inclusione della libreria che contiene le direttive che contiene le direttive per utilizzare immagini per utilizzare immagini esterne come sfondoesterne come sfondo

Grandezza del mondo in metri Grandezza del mondo in metri

Risoluzione del modello Risoluzione del modello

Velocità di aggiornamento dello Velocità di aggiornamento dello schermo di simulazione in msschermo di simulazione in ms

Configurazione della Configurazione della finestra di interfaccia finestra di interfaccia

Definizione della mappa Definizione della mappa che funge da sfondoche funge da sfondo

Page 17: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 17

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

. . .. . .define pioneerblob pioneer2dx (define pioneerblob pioneer2dx ( ptz( blobfinder(ptz( blobfinder( channel_count 2channel_count 2 channels ["red" "green"]) )channels ["red" "green"]) )))pioneerblob (pioneerblob ( color "blue"color "blue" name "Robot"name "Robot" pose [-4 7 0]pose [-4 7 0]))define puck model (define puck model ( size [ 0.40 0.40]size [ 0.40 0.40] blob_return 1blob_return 1 obstacle_return 1obstacle_return 1))puck( pose [-8 -2 0 ] color "red" )puck( pose [-8 -2 0 ] color "red" )puck( pose [-7 -7.5 0 ] color "green" )puck( pose [-7 -7.5 0 ] color "green" )

Estenzione del modello di base Estenzione del modello di base definito dal device pioneer2dx definito dal device pioneer2dx conuna camera blobfinder, che conuna camera blobfinder, che

riconosce due colori riconosce due colori

Definizione del robot:Definizione del robot:(possibili campi della struttura:(possibili campi della struttura:

name - color - size - pose - ecc.)name - color - size - pose - ecc.)

Definizione di un modello di Definizione di un modello di oggetto chiamato puck:oggetto chiamato puck:

(possibili campi della struttura:(possibili campi della struttura:name - shape - color - size - pose name - shape - color - size - pose - obstacle return - gripper return - - obstacle return - gripper return -

ecc.)ecc.)

Istanziazione di due puck di colori Istanziazione di due puck di colori diversi e in diverse posizionidiversi e in diverse posizioni

Page 18: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 18

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

Attivare/disattivare la simulazione

help

Visualizzare componenti statiche (griglie di

riferimento, mappa, oggetti) e dinamiche (trace del robot

velocità, posizione, ecc.)

Salvare l’ambiente, resettarlo o acquisire

screenshot dello stesso a diversi

intervalli di tempo

Settare preferenza di simulazione

(velocità, passi di simulazione,ecc.)

Page 19: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

#include <stdio.h>#include <stdio.h>#include "playerc.h"#include "playerc.h"

int main(int argc, const char **argv){ int main(int argc, const char **argv){ playerc_client_t *client; playerc_client_t *client; playerc_position_t *position;playerc_position_t *position; . . .. . .

Mariacarla Staffa [email protected] 19

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

Include la libreria “player.h” contenente i prototipi delle funzione

e i tipi di player

Player Client (user program)

Player Server

<.cfg> <.world>

<.cfg>

sim

ulaz

ione

real

e

Definisce un particolare proxy per il programma client

Definisce un dispositivo di tipo position

Page 20: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 20

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

1) Creazione del client e connessione:

La funzione create crea un nuovo Client proxy e restituisce un puntatore che può essere usato nelle future chiamate di funzione (localhost può essere rimpiazzato con l’hostname di rete del robot).

La funzione connect notifica al server player che un nuovo Client desidera ricevere dati.

Si procede secondo la seguente sequenza di passi:

client = playerc_client_create(NULL, "localhost", 6665);client = playerc_client_create(NULL, "localhost", 6665);playerc_client_connect(client);playerc_client_connect(client);

Page 21: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 21

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

2) Creazione e connessione del dispositivo proxy:

La funzione create crea un nuovo dispositivo proxy e restituisce un puntatore attraverso il quale il proxy può essere richiamato in altre funzioni. La funzione subscribe notifica al server player che un nuovo Client sta utilizzando il dispositivo position, e che il client si aspetta di poter sia inviare comandi che ricevere dati (PLAYER_MODE_ALL).

position = playerc_position_create(client, 0);position = playerc_position_create(client, 0);playerc_position_subscribe(position, PLAYER_ALL_MODE);playerc_position_subscribe(position, PLAYER_ALL_MODE);

3) Configurazione del dispositivo e invio dei comandi:

La funzione enable invia una richiesta di configurazione al server, cambiando lo stato del motore del robot da off a on, consentendo in tal modo al robot di muoversi. La funzione setspeed invia una nuova velocità al motore.

playerc_position_enable(position, 1);playerc_position_enable(position, 1);playerc_position_set_speed(position, 0, 0, 0.1);playerc_position_set_speed(position, 0, 0, 0.1);

Page 22: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 22

4) Lettura dei dati dal dispositivo:

La funzione di lettura read legge blocchi di dati provenienti da uno dei dispositivi sottoscritti o dal server stesso (che invia regolarmente dei messaggi di sincronizzazione a tutti i suoi client). Questa funzione, in particolare, legge i dati in entrata e aggiorna automaticamente gli elementi nell’appropriato dispositivo proxy. La funzione inoltre restituisce un puntatore al proxy aggiornato, così che il programma utente può, se desidera, attivare gli eventi appropriati a seconda dei dati ricevuti.

playerc_client_read(client);playerc_client_read(client);printf("position : %f %f %f\n", position->px, ... );printf("position : %f %f %f\n", position->px, ... );

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

Page 23: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 23

5) Distruzione del proxy:

La funzione di unsubscribe comunica al server Player che il client non utilizzerà più quel dispositivo. La funzione destroy, allora, libera la memoria associata a quel dispositivo proxy e invalida quindi il puntatore al device che da quel momento in poi non può più essere utilizzato.

6) Disconnessione e distruzione del client proxy:

La funzione disconnect dice al server che il client è in fase di arresto e la funzione destroy libera la memoria associata al client.

playerc_position_unsubscribe(position);playerc_position_unsubscribe(position);playerc_position_destroy(position);playerc_position_destroy(position);

playerc_client_disconnect(client);playerc_client_disconnect(client);playerc_client_destroy(client);playerc_client_destroy(client);

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

Page 24: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 24

IntroduzioneIntroduzioneSettingSettingTestingTesting

Creazione del file di ConfigurazioneCreazione del file di ConfigurazioneCreazione del file .worldCreazione del file .worldScrittura del Codice Client e compilazioneScrittura del Codice Client e compilazione

PlayerClientUser

Program

$ gcc -o nomeclient `pkg-config --cflags playerc` nomeclient.c `pkgconfig --libs playerc`$ ./nomeclient

Page 25: CORSO SISTEMI DI GOVERNO DEI ROBOT Lezione n.7 Un simulatore

Mariacarla Staffa [email protected] 25

RiferimentiRiferimenti

http://playerstage.sourceforge.net/http://playerstage.sourceforge.net/http://sourceforge.net/mail/?group_id=42445http://sourceforge.net/mail/?group_id=42445http://www.activrobots.com/http://www.activrobots.com/manuale utente per l’installazione di Player e Stagemanuale utente per l’installazione di Player e Stage