Mbed

rosserialのmismatch protocol versionエラーの対策

rosserialのmismatch protocol versionエラーの対策

前回のこれ.に引き続き、mismatch protocol vesionのエラー対策方法

文字通りのエラーでない場合があることは前回の通り。

前回のbuffer sizeの変更で解決しない場合には以下の検討もする。

1. 割り込み処理をプログラムに含む場合

  *****.publish( &***** );
  nh.spinOnce();

でpublishする際に、割り込み処理が発生するとこのエラーが発生する場合があるらしい。

解決方法は次のようにpublishする際に割り込みを禁止し、publish後に割り込みを許可する。

   __disable_irq();
   *****.publish( &*****);
   nh.spinOnce();
   __enable_irq();

2. エラーに混ざってwrong checksum for topic id msg のINFO情報を含む場合

while(1)で処理を繰り返している処理が早くtopicが正常に送信されていない。

while(1)の最後に次を追加する。

   wait_ms(1000);

なぜ1000msなのかはなぞ。100msや10msだと改善しない。

comments powered by Disqus