Implementazione molto basilare del comando ping tra due nodi:
- il nodo Publisher invia un pacchetto al nodo Subscriber e fa partire un timer;
- il nodo Subscriber, una volta ricevuto, invia un altro pacchetto al Publisher;
- una volta che il nodo Publisher riceve il pacchetto di risposta, ferma il timer e calcola l'RTT.
L'RTT viene pubblicato su un topic di telemetria apposito per essere visualizzato dal plotter di default di Ros2 oppure su altri tipo matplotlib o Plotjuggler.
Per compilare, eseguire tutta la prassi già spiegata dal prof tenendo a mente che solo la prima volta è necessario compilare con
colcon build
e poi dalle volte successive è sufficiente
colcon build --packages-select cpp_pubsub
Questo perchè ho definito separatamente dal sorgente del nodo un messaggio custom che deve essere compilato esplicitamente la prima volta; poi dopo si può compilare solo il codice del nodo cpp_pubsub (nel caso vengano fatte delle modifiche al codice di quest'ultimo).
Si può lanciare ogni volta il colcon build
senza parametri ma dovendo ricompilare tutto si perde tempo inutilmente.
Per eseguire è sufficiente lanciare in un terminale
source install/setup.bash
ros2 run cpp_pubsub talker
e in un altro
source install/setup.bash
ros2 run cpp_pubsub listener
Per il grafico, una volta lanciati i nodi di cui sopra, aprire un terzo terminale e lanciare
source install/setup.bash
ros2 run rqt_plot rqt_plot
Una volta aperto, digitare /time/time
come riportato nell'immagine e premere il tasto invio assicurandoti poi di aver selezionato autoscroll altrimenti non vedete il grafico (sì, nell'immagine non è selezionato ma non mi andava di rifare lo screen).