21章ロボットの振る舞いをデバッグする

ここまで読んで気づいたと思いますが、ロボットのアプリケーションは複雑になりがちです。通常のソフトウェアシステムで見られるような複雑さに加えて、センサーやアクチュエーターは複雑な物理世界(もしくはシミュレーションされた世界)と不確かな方法で情報のやり取りをしています。さらに、少なくともROSシステムでは、たくさんの独立したプロセスを持つ分散処理グラフが存在し、これらのプロセスはメッセージパッシングを用いてやり取りを非同期で行っています。つまり、事態を悪化させる要素はたくさん存在し、問題を見つけ出しにくくしているのです。

もし、すべてがそろって、[Go]ボタンを押しても、何も起こらなかったらどうすればいいのでしょうか?

幸いなことに、ROSはアプリケーションのデバッグを手助けする強力なツールを提供しています。本章では、最もよく使われるツールを扱い、その中で、いくつかのデバッグテクニックについて説明していきます。

21.1 ログメッセージ:/rosoutとrqt_console

ROSシステムが正しく動いていない場合は、他のソフトウェアの場合と同様に、最初にすべきことはエラーメッセージの確認です。運が良ければ、システムがその原因を教えてくれています。もちろん、ROSシステムは分散システムなので、単一のシステムを使っている場合よりもエラーメッセージが若干複雑になっています。

単一のシステムを動かしている場合は、システムからのエラーメッセージをダイアログボックスにポップアップ表示させたり(Webブラウザーのような、グラフィカルなアプリケーションの場合)、プログラムを実行しているターミナルに表示させたりしたい(コンパイラーのようなコンソールアプリケーションの場合)と思うかもしれません。しかし、ROSは分散コンピューティング環境であり、通常は数十個の独立したプロセスからなる複数なアプリケーション(そのほとんどは、グラフィカルインタフェースを持たない)が動いています。どうしたら、これらのプロセス全部からエラーメッセージを受け取ることができるのでしょうか? ...

Get プログラミングROS ―Pythonによるロボットアプリケーション開発 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.