< [[neurali:ros]] ====== ROS services ====== Tutorial: http://wiki.ros.org/rospy_tutorials/Tutorials/WritingServiceClient Prerequisito: [[neurali:ros nodes]]. Esistono tre modi in cui i nodes possono comunicare tra loro =====Messages===== Ogni processo (node) può ;;pubblicare;; e/o ;;;sottoscrivere;;; dei //messaggi// (originati da altri node o da roscore) ===== Services ===== Ogni processo (node) può ;;fornire;; e/o ;;;richiedere;;; anche dei //servizi// (originati da altri node o da roscore). Pensare ai servizi come a funzioni utilizzabili a distanza da altri processi. ===== Parameters ===== Ogni processo (node) possiede anche dei //parametri// a cui possono ;;;;accedere;;;; a distanza altri processi (node) Pensare ai parametri come alle variabili globali di un programma. http://wiki.ros.org/Parameter%20Server A parameter server is a shared, multi-variate dictionary that is accessible via network APIs ===== Comandi ===== * rosservice list * rosservice type * rossrv show * rosparam list * rosparam get * rosparam set rosservice list >> /rosout/get_loggers >> /rosout/set_logger_level Come si può leggere nell'output del precedente comando, e del prossimo, //rosout// è usato anche come //namespace// rosparam list >> /rosout/run_id rosservice type nome/servizio rosservice type rosout/get_loggers rossrv show tipo_servizio Si possono anche usare insieme rosservice type nome/servizio| rossrv show Richiedere un servizio rosservice call nome/servizio argomenti Per esportare e importare rosparam dump params.yaml rosparam load params.yaml nuovo_namespace