< 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 roscpp tutorial

esempio http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29

  • rosmsg
  • rossrv
  • roscp
  • catkin

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/AddTwoInts

esempio http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28c%2B%2B%29

In tal caso il file ros package.xml deve contenere due righe in più

<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>

Anche il file CMakeLists.txt andrà modificato…

add_message_files(FILES prova.msg)
add_service_files(FILES prova.srv)
generate_messages(DEPENDENCIES std_msgs)

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
  • neurali/ros_file.msg_file.srv.txt
  • Last modified: 2018/04/25 07:55
  • (external edit)