New in Electric
Note: This tutorial assumes that you have completed the previous tutorials: ROS Tutorials. |
Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
インタラクティブマーカ: 準備
Description: このチュートリアルは、インタラクティブマーカが何であるかと、いくらかの基本的な概念を説明しますTutorial Level: BEGINNER
Next Tutorial: Interactive Markers: Writing a Simple Interactive Marker Server
Contents
イントロ
インタラクティブマーカは、以前のチュートリアルで説明されている通常のマーカとよく似ていますが、それらはユーザに形や回転をクリックや、それぞれのマーカに割り当てられたコンテクストメニューなどを選択することで変更することが可能になっています。
それらは、コンテキストメニューといくらかのコントロール(visualization_msgs/InteractiveMarkerControl)を含むvisualization_msgs/InteractiveMarkerのメッセージによって表現されます。 コントロールは、異なるインタラクティブマーカの可視化パーツを定義し、いくらかの通常のマーカ(visualization_msgs/Marker)を含むこともでき、異なる機能を持たせることもできます。
もしインタラクティブマーカのセットを提供するnodeを作りたいときは、InteractiveMarkerServerオブジェクトをインスタンス化する必要があります。これは、クライアントへの接続を(通常は RViz)行い、与えた変更をすべて伝え、アプリケーションにインタラクティブマーカに対して行ったのユーザのアクションを知らせます。
さらに詳しいドキュメント
インタラクティブマーカを使う方法について探したいときは、これとこのあとのチュートリアルを参考にしてください。使われているソースコードは、interactive_marker_tutorialsパッケージの中で確認できます。
インタラクティブマーカを使用したアプリケーションを書くときには、interactive_markersパッケージで提供されるインターフェースをもっとも使用することになるでしょう。さらなる情報のためにはCode APIを参照してください。
インタラクティブマーカ自体を表記するために使われるメッセージは全てのパラメータの詳細な記述を含んでいます。そのうち、大切なのは、visualization_msgs/InteractiveMarker, visualization_msgs/InteractiveMarkerControl や visualization_msgs/InteractiveMarkerFeedbackです。コンテクストメニューを作成する推奨された方法は、MenuHandlerインターフェースを使うことなので、潜在的なメッセージを処理する必要がありません。
interactive_marker_tutorials パッケージ
インタラクティブマーカが何をするかを理解する最善の方法は、interactive_marker_tutorialsパッケージの中に含まれるサンプルを試してみることです。以下の5つのサンプルを使用します。: simple_marker, basic_controls, menu, pong, cube.
チュートリアルの実行の仕方
チュートリアルを実行する過程は、基本的にどれも同じです。例えば、basic_controlsを実行するためには、ターミナルを開いて以下をタイプします。
rosrun interactive_marker_tutorials basic_controls
これは、インタラクティブマーカサーバを含むnodeを立ち上げます。そしたら、以下のコマンドを別のターミナルで実行することでRVizを立ち上げます。:
rosrun rviz rviz
RVizでは以下のことを行ってください:
- fixed frame を '/base_link'にセットする。
'Interactive Markers' displayを追加する。 'Displays' パネルの'Add'をクリックすることによって行います。
displayのupdate topicを'/basic_controls/update'に設定する。 これはrvizにいくらかの灰色の直方体をすぐに表示します。
ツールパネルの'Interact'を選択する。 これは、メインビューの付加的な矢や箱の周りのリングなどを表示するすべてのインタラクティブの要素を有効にします。これらのコントロールの上で左クリックをすると、それぞれのインタラクティブマーカの位置を変更できる例もあります。いくらかのマーカでは、右クリックでアクセスできるコンテクストメニューをもつ場合もあります。
'Grid' displayを追加する。 これは、ドラッグをしたときにどのように自分がマーカを動かしたかを見る際に、とても視覚的に便利な機能です。
simple_marker
この例は、RVizでもっともシンプルなマーカです。 This example will display a minimalist marker in RViz. Writing a Simple Interactive Marker Server で詳細を確認してください.
basic_controls
Code (Python): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/scripts/basic_controls.py
異なる方法で操作することができるインタラクティブマーカの選択を表示します。詳しくは、Basic Controlsに記載されています。
menu
Code (Python): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/scripts/menu.py
インタラクティブマーカにあるエントリを非表示にしたりチェックボックスを加えるようなより複雑なコンテクストメニューを管理する方法を提示します。
pong
rvizで、2,3人でできるアーケードゲームをプレイしてみましょう。インタラクティブマーカサーバとクライアント操作の二つの方法による作用のデモをすることができます。
同じpongサーバでつながっている異なるコンピュータで2つのRvizを立ち上げて、お互いに戦うことができます。そうでなければ、コンピュータは、使われていないコントローラを使用します。
cube
Code (Python): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/scripts/cube.py
たくさんのインタラクティブマーカを作成し管理する過程をデモします。