Bags em arquivos do tipo launch

Em adição ao comando rosbag que nós já vimos, ROS também fornece executávies chamados record e play que são membros do pacote de rosbag. Estes programas têm as mesmas funções e aceitam os mesmos parâmetros de execução que rosbag record e rosbag play, respectivamente.

Isso significa, primeiramente, que é possível - entretanto desnecessariamente abundante - gravar ou reproduzir arquivos do tipo bag utilizando rosrun, dessa forma:

rosrun rosbag record -O filename.bag topic-names
rosrun rosbag play filename.bag

Mais importante, esses executáveis tornam fácil para incluir os arquivos do tipo bag em arquivos do tipo launch, incluindo os elementos de cada nó. Por exemplo, um nó do tipo record deve ser desta forma:

<node
pkg="rosbag"
name="record"
type="record"
args="-O filename.bag topic-names"
/>

De mesma forma, um nó do tipo play deve ser desta forma:

<node
pkg="rosbag"
name="play"
type="play"
args="filename.bag"
/>

Apesar de precisar de argumentos para as linhas de execução, esses nós não precisam de outra particularidade por roslaunch.

⚠️ Neste ponto, você deve estar surpreso em ver um capítulo terminando sem qualquer discussão sobre como utilizar arquivos do tipo bag em programas feitos em C++. Na verdade, existe uma API para ler e escrever arquivos do tipo bag. Entretanto, essa API é apenas necessária para aplicações específicas. Para apenas gravar e reproduzir operações, a interface do comando rosbag é suficiente.