neurali:ros_file.msg_file.srv
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
neurali:ros_file.msg_file.srv [2016/07/04 19:16] – profpro | neurali:ros_file.msg_file.srv [2020/06/08 22:20] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | < [[neurali: | ||
+ | ====== File .msg e .srv ====== | ||
+ | |||
+ | Le librerie ROS per client, permettono di creare dei generatori di messaggi senza dover scrivere tutto il codice in C++, basta fornire le informazioni dentro dei file di testo .msg e .srv | ||
+ | |||
+ | Vedere [[neurali: | ||
+ | |||
+ | esempio http:// | ||
+ | |||
+ | ===== Comandi utili ===== | ||
+ | |||
+ | |||
+ | * rosmsg | ||
+ | * rossrv | ||
+ | * roscp | ||
+ | * catkin | ||
+ | |||
+ | ===== Sottocartelle ===== | ||
+ | |||
+ | |||
+ | Quando si crea un package si devono creare alcune sottocartelle | ||
+ | |||
+ | * msg | ||
+ | * srv | ||
+ | |||
+ | ====Esempio prova.msg==== | ||
+ | I file.msg servono a descrivere il nome e il tipo di dato di ogni messaggio. Ogni file contiene righe composte da solo due parole (separate da uno spazio) | ||
+ | |||
+ | tipo_topic nome_topic | ||
+ | |||
+ | esempio | ||
+ | |||
+ | int64 numero | ||
+ | |||
+ | NOTA: Tutti i campi di un messaggio sono automaticamente inizializzati a zero (o a stringa vuota) | ||
+ | |||
+ | Altri tipi utilizzabili | ||
+ | |||
+ | < | ||
+ | int8, int16, int32, int64 (plus uint*) | ||
+ | float32, float64 | ||
+ | string | ||
+ | time, duration | ||
+ | other msg files | ||
+ | variable-length array[] and fixed-length array[C] | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ====Esempio prova.srv==== | ||
+ | |||
+ | Il file.srv serve a descrivere il contenuto della richiesta e della risposta dei Services, senza bisogno di scrivere codice. Si separa la richiesta dalla risposta con tre segni meno %%---%% | ||
+ | |||
+ | < | ||
+ | int64 primo_operando | ||
+ | int64 secondo_operando | ||
+ | --- | ||
+ | int64 risultato | ||
+ | </ | ||
+ | |||
+ | Il codice è generato automaticamente | ||
+ | |||
+ | per vedere il precedente codice | ||
+ | |||
+ | rossrv show beginner_tutorials/ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Esempio di codice (msg) ===== | ||
+ | |||
+ | esempio http:// | ||
+ | |||
+ | In tal caso il file [[neurali: | ||
+ | |||
+ | < | ||
+ | < | ||
+ | |||
+ | Anche il file [[neurali: | ||
+ | |||
+ | add_message_files(FILES prova.msg) | ||
+ | add_service_files(FILES prova.srv) | ||
+ | generate_messages(DEPENDENCIES std_msgs) | ||
+ | |||
+ | ===== Esempio di codice (srv) ===== | ||
+ | |||
+ | http:// | ||
+ | |||
+ | da finire | ||
+ | |||
+ | http:// | ||
+ | |||
+ | da finire | ||
+ | |||
+ | Per editare un file all' | ||
+ | |||
+ | esempio (preceduto da configurazione) | ||
+ | |||
+ | export EDITOR=' | ||
+ | | ||
+ | rosed package_name file_name | ||
+ | |||
+ | ====buone pratiche==== | ||
+ | |||
+ | * prevenire la proliferazione di nuovi .msg usando quelli esistenti | ||
+ | * costruire messaggi complessi attraverso la // | ||
+ | * Prima progettare i node e successivamente i messaggi | ||
+ | * Cercare di evitare messaggi non completamente filled out | ||
+ | * |