(!) 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.

Rvizをステレオで使う

Description: このチュートリアルではRvizで3Dステレオを描画する方法について学びます

Tutorial Level: INTERMEDIATE

序論

3Dステレオレンダリングはシーンが深さを持って見えるように、違った視点をそれぞれの目に表示します。もしステレオ表示が可能なモニターとステレオ機能を有したグラフィックカードを持っているならば、Rvizにステレオでその視点を描画させることができます。このチュートリアルでは、これを実現する方法について記述します。

ハードウエア要件

ステレオで描画するには。Quad-bufferステレオが可能なグラフィックカードが必要なります。ステレオ表示が可能で120Hzで表示できるモニタも必要となります。

NVIDIAのハードウエアを使う

NVIDIA QuadroカードはLinuxのquad bufferedステレオをサポートしています。どのカードがこの機能をサポートしているかについての情報はこのサイトにあります:here on the NVIDIA website

同様に、http://www.zib.de/durmaz/3dVision.html を参照するか、"quad buffer stereo linux"で他の情報のWeb検索を試してください。

ディスプレイについては、2つの選択肢があるようです:

特別な3Dモニター

3DVisionグラスが同梱されていて、ビルトインの3DVisionIR送信機を備えている特別なモニターを用意してください。私はNVIDIA Quadro K4000グラフィックス・アダプターで、ASUS VG278Hモニターでステレオが動作しています。DVI デュアルリンクケーブルでグラフィックカードにディスプレイを直接接続する必要があります。(シングルリンクのDVIでは動きません。ディスプレイポートからDVIへの変換も動かないでしょう。HDMIは120Hzでは動きません。) モニターはアクティブ3DVisionグラスが同梱でビルトインのIR送信機を備えているので、別々のIR送信機を必要としませんし、グラフィックス・カードに"3ピン mini-din"コネクタを必要としません。

3DVisionグラス

アクティブグラスとIR送信機付きの3DVisionキットを用意してください (または、ラジオ送信機付きの3DVision-Proグラス)。リフレッシュレートが少なくとも100Hz(120Hzがより望ましい)のモニターも必要です。

Linuxでは、直接IR(またはラジオ)送信機をグラフィックカードに接続する必要があります。USBに接続する送信機は、Linuxでは機能しません。(Mac上で動作するかもしれませんが、未確認です)グラフィックカードに直接繋げるために、3DVisionキットに付属されている1/8インチのステレオケーブルに3ピンのmini-dinを使って下さい。

ステレオをサポートしている多くのNVIDIAカードは'3ピン mini-din'コネクタを”付属していません”。グラフィックス・カードの裏(DVI/VGA/その他コネクタの隣)に、丸い3ピン'mini-din'コネクタを見つからなければ、別々の"NVIDIA Quadro Stereo Board Connector"を買う必要があります。PNYでこれを扱っています。部品番号"QSP-STRBOARD-PB"で探してください。これはquad bufferステレオをサポートしているQuadroカードでのみ動きます。 ボードコネクタを買う前に、自分のグラフィックカードで確実に動くことをthe NVIDIA websiteで確認してください。

Linux上で、どんなグラフィックス・カードを持っているかについて、次のコマンドを実行することで知ることができます:

   lspci | grep VGA

もし"Quadro"と返ってこなければ、たぶんステレオはサポートしていません。

DVIのデュアルリンクケーブルでグラフィックカードにディスプレイを直接接続する必要があるでしょう。(シングルリンクのDVIでは動きません。ディスプレイポートからDVIへの変換も動かないでしょう。HDMIは60Hzでとても遅いですが動きますが、すぐに頭痛が起きるでしょう。)

AMDのハードウエアを使う

いくつかのハイエンドなAMDグラフィックカードはquad-bufferステレオをサポートしていると思っていますが、どれがそうなのかが私はわかっていません。もし情報をお持ちでしたら、こちらに追記してください。

ステレオをサポートするためのX(Linux)のセットアップ

NVIDIA

バイナリのドライバをインストールする

NVIDIAのバイナリドライバを使っていることを確認し、以下を実行します:

  sudo apt-get install nvidia-settings
  nvidia-settings

もしNVIDIAのバイナリドライバを使っているなら、上記の処理が上手くいくので、次のステップに進みます。もし処理がうまくいかない場合は、使っているのはNVIDIAのバイナリドライバではない旨を、プログラムが通知してくるでしょう。

正しいドライバをこのWebから探し、インストールしてください:Install NVIDIA drivers

解像度、リフレッシュレート、ステレオモードの設定

以下を実行します:

  nvidia-settings

"X Server Display Configuration"をクリックします。もしマルチモニタになっているなら、ステレオを設定したいディスプレイを一つ選びます。解像度を選択します("Auto"を選んではいけません)。リフレッシュレートを選びます(解像度に合ったものを選ぶ)。少なくとも100Hzのリフレッシュレートが必要です(120Hzかそれ以上速いほうがよい)。"Apply"をクリックします。

全てがうまくいったら、その設定を保存する必要があります。"Save to X Configuration File"のボタンをクリックし、 /tmp/xorg.confとしてファイルを保存するために、表示の指示に従って下さい。

これでステレオの設定が追加出来ました。ターミナルを開いて以下のコマンドを走らせて下さい:

  cd /tmp
  nvidia-xconfig -c xorg.conf -o xorg.conf --stereo=10

Note: "10"は"NVIDIA 3D VISION"を意味しています。もし"NVIDIA 3D VISION PRO"なら"11"を使います。その他の設定については、man nvidia-xconfigを実行してステレオについて調べて下さい。

  sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.original-no-stereo
  cp xorg.conf /etc/X11/xorg.conf

では、ログアウトしログインし直して、Xを再起動します。

ステレオが有効であることを確認するには、以下を実行します:

   nvidia-settings

"X Screen 0"をクリックし、"Stereo Mode"設定を見ます。"NVIDIA 3D Vision Stereo"と出ているはずです。

動作確認済みのステレオハードウエア

もしあなたのシステム環境でステレオが動いているのであれば、このセクションに追加してください。 * WORKS: NVIDIA Quadro K4000, ASUS VG278H monitor (comes with 3DVision glasses), DVI dual-link cable. IR transmitter is built into the monitor.

Testing stereo hardware

ステレオハードウエアのテストをする

ステレオのハードウェアが動作しているかを確認するには、以下を実行します:

   sudo apt-get install mesa-utils
   glxgears -stereo

もし複数のモニターがある時は、ギアウインドウをステレオをサポートしているモニタにドラッグします。二重の画像が見えるはずです。3Dグラスをかけます。イメージがステレオで見えるはずです。もっとよく見えるようにするには、ウインドウをリサイズ(大きくみえるように)し、ギア周りで回転させるために矢印キーを使います。見え方がおかしいようなら、以下を実行します:

   nvidia-settings

"OpenGL Settings"をクリックし、"Exchange Stereo Eyes"ボタンをチェックしてください。

トラブルシューティング

ステレオで描画するRvizをビルドする

ステレオのためのOgreをビルドする

まずOgreを自分の環境から外します。

  sudo apt-get remove libogre-1.7.4 libogre-dev 

Note:これは同時にrvizも外すことになります。(rvizがlibogre-1.7.4に依存しているため)

ソースを取得し、ビルドしてインストールします。

    cd $HOME
    mkdir my-ogre
    cd my-ogre
    hg clone https://bitbucket.org/acornacorn/ogre
    mkdir build
    cd build
    cmake -DOGRE_FULL_RPATH=ON -DOGRE_BUILD_STEREO_SUPPORT=ON ../ogre
    sudo make install

Note:これはOgre/usr/localにインストールします。もしogreのこのバージョンを削除してdebianバージョンを再インストールするなら、以下を実行します:

   cd $HOME/my-ogre/build
   for i in $(<install_manifest.txt); do sudo rm -f $i ; done
   sudo apt-get remove libogre-1.7.4 libogre-dev

ステレオのためのRvizをビルドする

まず、Rvizをビルドするためのワークスペースを作ります。(もしすでにワークスペースがあるなら、新しく"my-rviz-workspace"ワークスペースを作る代わりに、今あるワークスペースを使うことができます。)

    cd $HOME
    mkdir -p my-rviz-workspace/src
    cd my-rviz-workspace/src
    git clone https://github.com/ros-visualization/rviz.git
    cd ..
    catkin_make

Rvizを通常通り実行します。例えば:

    roscore & rosrun rviz rviz

何か見るものがあるように、表示物を追加します。(例えば Axis Display)

もしハードウェアがステレオをサポートしているなら、二重の画像が見えるはずです。眼鏡をかけてステレオで表示物を見ます。

Rvizのステレオプロパティを調節する

ViewControllerパネルのプロパティは瞳孔間距離、焦点距離を設定し、左右視点を入れ替えて、ステレオを無効にできます。

目を交換するために、目-分離(焦点距離)をセットして、ステレオを無効にするのに、ViewControllerパネルの特性は、用いられることができます。

"Views"パネルが見えていない時は(デフォルトでは右上部)、"Panels"メニューアイテムをクリックし、"Views"をチェックしてください。

"Current View"の中で、ステレオ描画を調整することができるいくかのプロパティが見えるでしょう:

  • Enable Stereo Rendering: チェックを外すとステレオがオフになる

  • Swap Stereo Eyes: もしRvizが混乱して左右の視点が入れ替わった時にチェックをいれる

  • Stereo Eye Separation: ステレオの効果を強くするには大きな値を使う。理想的には、使用者の目の間の距離(単位はメートル)

  • Stereo Focal Distance: ここを目とモニター間の距離に設定する。小さめの値は、より強いステレオの影響を生じる傾向があります。

Wiki: ja/rviz/Tutorials/Rviz in Stereo (last edited 2014-09-08 14:51:42 by Moirai)