プログラミングROS ―Pythonによるロボットアプリケーション開発
by Morgan Quigley, Brian Gerkey, William D. Smart, 河田 卓志, 松田 晃一, 福地 正樹, 由谷 哲夫
21章ロボットの振る舞いをデバッグする
ここまで読んで気づいたと思いますが、ロボットのアプリケーションは複雑になりがちです。通常のソフトウェアシステムで見られるような複雑さに加えて、センサーやアクチュエーターは複雑な物理世界(もしくはシミュレーションされた世界)と不確かな方法で情報のやり取りをしています。さらに、少なくともROSシステムでは、たくさんの独立したプロセスを持つ分散処理グラフが存在し、これらのプロセスはメッセージパッシングを用いてやり取りを非同期で行っています。つまり、事態を悪化させる要素はたくさん存在し、問題を見つけ出しにくくしているのです。
もし、すべてがそろって、[Go]ボタンを押しても、何も起こらなかったらどうすればいいのでしょうか?
幸いなことに、ROSはアプリケーションのデバッグを手助けする強力なツールを提供しています。本章では、最もよく使われるツールを扱い、その中で、いくつかのデバッグテクニックについて説明していきます。
21.1 ログメッセージ:/rosoutとrqt_console
ROSシステムが正しく動いていない場合は、他のソフトウェアの場合と同様に、最初にすべきことはエラーメッセージの確認です。運が良ければ、システムがその原因を教えてくれています。もちろん、ROSシステムは分散システムなので、単一のシステムを使っている場合よりもエラーメッセージが若干複雑になっています。
単一のシステムを動かしている場合は、システムからのエラーメッセージをダイアログボックスにポップアップ表示させたり(Webブラウザーのような、グラフィカルなアプリケーションの場合)、プログラムを実行しているターミナルに表示させたりしたい(コンパイラーのようなコンソールアプリケーションの場合)と思うかもしれません。しかし、ROSは分散コンピューティング環境であり、通常は数十個の独立したプロセスからなる複数なアプリケーション(そのほとんどは、グラフィカルインタフェースを持たない)が動いています。どうしたら、これらのプロセス全部からエラーメッセージを受け取ることができるのでしょうか? ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access