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

イントロ

インタラクティブマーカは、以前のチュートリアルで説明されている通常のマーカとよく似ていますが、それらはユーザに形や回転をクリックや、それぞれのマーカに割り当てられたコンテクストメニューなどを選択することで変更することが可能になっています。

それらは、コンテキストメニューといくらかのコントロール(visualization_msgs/InteractiveMarkerControl)を含むvisualization_msgs/InteractiveMarkerのメッセージによって表現されます。 コントロールは、異なるインタラクティブマーカの可視化パーツを定義し、いくらかの通常のマーカ(visualization_msgs/Marker)を含むこともでき、異なる機能を持たせることもできます。

The structure of an <<MsgLink(visualization_msgs/InteractiveMarker)>> message

もしインタラクティブマーカのセットを提供するnodeを作りたいときは、InteractiveMarkerServerオブジェクトをインスタンス化する必要があります。これは、クライアントへの接続を(通常は RViz)行い、与えた変更をすべて伝え、アプリケーションにインタラクティブマーカに対して行ったのユーザのアクションを知らせます。

interactive_marker_architecture.png

さらに詳しいドキュメント

インタラクティブマーカを使う方法について探したいときは、これとこのあとのチュートリアルを参考にしてください。使われているソースコードは、interactive_marker_tutorialsパッケージの中で確認できます。

インタラクティブマーカを使用したアプリケーションを書くときには、interactive_markersパッケージで提供されるインターフェースをもっとも使用することになるでしょう。さらなる情報のためにはCode APIを参照してください。

インタラクティブマーカ自体を表記するために使われるメッセージは全てのパラメータの詳細な記述を含んでいます。そのうち、大切なのは、visualization_msgs/InteractiveMarker, visualization_msgs/InteractiveMarkerControlvisualization_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

Code (C++): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/src/simple_marker.cpp

Code (Python) https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/scripts/simple_marker.py

この例は、RVizでもっともシンプルなマーカです。 This example will display a minimalist marker in RViz. Writing a Simple Interactive Marker Server で詳細を確認してください.

simple_marker.png

basic_controls

Code (C++): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/src/basic_controls.cpp

Code (Python): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/scripts/basic_controls.py

異なる方法で操作することができるインタラクティブマーカの選択を表示します。詳しくは、Basic Controlsに記載されています。

basic_controls.png

Code (C++): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/src/menu.cpp

Code (Python): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/scripts/menu.py

インタラクティブマーカにあるエントリを非表示にしたりチェックボックスを加えるようなより複雑なコンテクストメニューを管理する方法を提示します。

menu.png

pong

Code (C++): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/src/pong.cpp

rvizで、2,3人でできるアーケードゲームをプレイしてみましょう。インタラクティブマーカサーバとクライアント操作の二つの方法による作用のデモをすることができます。

同じpongサーバでつながっている異なるコンピュータで2つのRvizを立ち上げて、お互いに戦うことができます。そうでなければ、コンピュータは、使われていないコントローラを使用します。

pong.png

cube

Code (C++): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/src/cube.cpp

Code (Python): https://raw.github.com/ros-visualization/visualization_tutorials/hydro-devel/interactive_marker_tutorials/scripts/cube.py

たくさんのインタラクティブマーカを作成し管理する過程をデモします。

cube.png

Wiki: ja/rviz/Tutorials/Interactive Markers: Getting Started (last edited 2014-10-21 10:41:55 by Moirai)