User Tools

Site Tools


neurali:ros_file.msg_file.srv

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
neurali:ros_file.msg_file.srv [2016/07/04 19:16] profproneurali:ros_file.msg_file.srv [2020/06/08 22:20] (current) – external edit 127.0.0.1
Line 1: Line 1:
 +< [[neurali:ros]]
  
 +====== 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:roscpp tutorial]]
 +
 +esempio http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29
 +
 +===== 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
 +
 +<code>  
 +int8, int16, int32, int64 (plus uint*)
 +float32, float64
 +string
 +time, duration
 +other msg files
 +variable-length array[] and fixed-length array[C] 
 +</code>
 +
 +
 +
 +====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 %%---%%
 +
 +<code>
 +int64 primo_operando
 +int64 secondo_operando
 +---
 +int64 risultato
 +</code>
 +
 +Il codice è generato automaticamente 
 +
 +per vedere il precedente codice 
 +
 +  rossrv show beginner_tutorials/AddTwoInts
 +
 +
 +
 +===== Esempio di codice (msg) =====
 +
 +esempio http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29
 +
 +In tal caso il file [[neurali:ros package.xml]] deve contenere due righe in più
 +
 +  <build_depend>message_generation</build_depend>
 +  <run_depend>message_runtime</run_depend>
 +
 +Anche il file [[neurali:gazebo_box_animato_source#cmakeliststxt|CMakeLists.txt]] andrà modificato...
 +
 +  add_message_files(FILES prova.msg)
 +  add_service_files(FILES prova.srv)
 +  generate_messages(DEPENDENCIES std_msgs)
 +
 +===== Esempio di codice (srv) =====
 +
 +http://wiki.ros.org/ROS/Tutorials/WritingServiceClient%28c%2B%2B%29
 +
 +da finire
 +
 +http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv
 +
 +da finire
 +
 +Per editare un file all'interno di un package non è necessario scrivere il percorso del file, basta il nome del package dove si trova il file
 +
 +esempio (preceduto da configurazione)
 +
 +  export EDITOR='nano -w'
 +  
 +  rosed package_name file_name
 +
 +====buone pratiche====
 +
 +  * prevenire la proliferazione di nuovi .msg usando quelli esistenti
 +  * costruire messaggi complessi attraverso la //composizione// di quelli più semplice
 +  * Prima progettare i node e successivamente i messaggi
 +  * Cercare di evitare messaggi non completamente filled out
 +  *