■
■　大経路計画モジュール  解説書
■　(GlobalNavigationRtc, MapViewerRtc)
■　
■　LastUpdate: 2012-01-12 NEC Soft, AOKI
■　

■はじめに
　本文書は、次世代ロボット知能化技術開発プロジェクトの一環として開発した
　大経路計画モジュール(以後、本モジュール)について記載した文書である。

■動作環境
　本モジュールを動作させるにあたって前提とするLinux環境を以下に示す。
    ・Ubuntu 8.04(hardy)
    ・OpenRTM-aist-0.4.2
    ・Qt4 SDK (qt-sdk-linux-x86-opensource-2009.04.1.bin)
    ・Boost
    ・Xerces-C++
    ・FreeType
    ・GLib
    ・libsm
    ・XRender
    ・Fontconfig
    ・libxext
    
  本モジュールは、環境GIS研究所が開発したRgisOperatorコンポーネント
  を利用するため、以下のモジュールを別途入手しておく必要がある。
    ・RgisOperator-v0.2-r3  [RgisOperatorTest20090112.zip]
  ★RgisOperatorの動作環境はWindowsである。本モジュールと連携して
    動作させるにはWindows PCが必要となる。詳細はRgisOperatorを参照。

  また、移動ロボット系ソフトウェアの共通化を進めており、一部で千葉工大
  が実装した共通ライブラリ(common)を利用している。

■関連文書
　[1] RgisOperator README, 環境GIS研究所, 2009/9
　　　(再利用WebのRgisOperator付属文書)

■環境構築
(1) Ubuntu 8.04環境の構築
　OSのインストールは本文書では扱わない。
　以下、サイトからVMWareイメージを入手して使うことも可能。
　<http://www.ubuntulinux.jp/products/JA-Localized/vmware>

(2) OpenRTM-aist-0.4.2環境の構築
　OSにOpenRTM-aist-0.4.2の動作に必要なパッケージ群をインストールする。
　インストール手順や注意点はOpenRTM-aist公式サイトの記述に従う。

　・apt設定
　　基本的にOpenRTM-aist公式サイトの手順どおりで問題ないが、0.4系の
　　バージョンが自動でアップグレードされるのを防ぐために、以下の設定
　　をしておく。/etc/apt/preferencesが存在しない場合は新規作成する。
　　---- /etc/apt/preferences ----
　　Package: openrtm-aist openrtm-aist-dev openrtm-aist-doc openrtm-aist-example
　　Pin: version 0.4.*
　　Pin-Priority: 989
　　----
　　詳細は以下を参照(インストール済パッケージを特定バージョンのまま保持する方法)。
　　<http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.ja.html#s-pin>
　
　・パッケージのインストール
　　以下、公式サイトに掲載されている手順をもとにインストールする。
　　<http://www.openrtm.org/openrtm/ja/node/639>
　　ホーム >> OpenRTM-aist (C++版) 0.4系のインストール
　　
　・OpenRTM Eclipse tools 0.4.2のインストール
　　OpenRTM-aistの公式ページから「UNIX用全部入り」をダウンロードする。
　　（RTSystemEditor、RTCBuilder、依存プラグインが同梱されたeclipse-3.2が利用可能）
　　ホーム >> ダウンロード >> ツール >> Eclipse tools 0.4.2
　　<http://www.openrtm.org/openrtm/ja/node/76>
　　
　・Java環境のインストール
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージと依存パッケージをインストールする。
　　---- Install ----
　　sun-java6-jdk

(3) ライブラリのインストール
　本モジュールが利用しているライブラリ群をインストールする。
　
　・Qt4 SDK (ftp://ftp.qt.nokia.com/qtsdk/)
　　上記サイトからqt-sdk-linux-x86-opensource-2009.04.1.binをダウンロードする。
　　以下の手順で実行するとテキストベースのインストーラが起動する。
　　デフォルトどおりにインストールした場合は /opt/qtsdk-2009.04 に格納される。
　　
　　$ chmod +x qt-sdk-linux-x86-opensource-2009.04.1.bin
　　$ su
　　# ./qt-sdk-linux-x86-opensource-2009.04.1.bin --mode text
　　
　・Boost
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージをインストールする。[X.YY.Z]はバージョン番号を示す。
　　※本文書執筆時点では[1.34.1]だが基本的にこれ以上であれば問題ない。
　　---- Install ----
　　libboost-date-time-dev
　　libboost-date-time[X.YY.Z]
　　libboost-dbg
　　libboost-dev
　　libboost-doc
　　libboost-filesystem-dev
　　libboost-filesystem[X.YY.Z]
　　libboost-graph-dev
　　libboost-graph[X.YY.Z]
　　libboost-iostreams-dev
　　libboost-iostreams[X.YY.Z]
　　libboost-program-options-dev
　　libboost-program-options[X.YY.Z]
　　libboost-python-dev
　　libboost-python[X.YY.Z]
　　libboost-regex-dev
　　libboost-regex[X.YY.Z]
　　libboost-serialization-dev
　　libboost-serialization[X.YY.Z]
　　libboost-signals-dev
　　libboost-signals[X.YY.Z]
　　libboost-test-dev
　　libboost-test[X.YY.Z]
　　libboost-thread-dev
　　libboost-thread[X.YY.Z]
　　libboost-wave-dev
　　libboost-wave[X.YY.Z]
　　----
　
　・Xerces-C++
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージをインストールする。
　　---- Install ----
　　libxerces28
　　libxerces28-dev
　　libxerces28-doc
　　----

　・FreeType
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージをインストールする。
　　---- Install ----
　　libfreetype6
　　libfreetype6-dev
　　----

　・GLib
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージをインストールする。
　　---- Install ----
　　libglib2.0-dev
　　----

　・libsm
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージをインストールする。
　　---- Install ----
　　libsm-dev
　　----

　・XRender
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージをインストールする。
　　---- Install ----
　　libxrender-dev
　　----

　・Fontconfig
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージをインストールする。
　　---- Install ----
　　libfontconfig1-dev
　　----

　・libxext
　　[システム]→[システム管理]→[Synapticパッケージ・マネージャ]を起動して
　　以下のパッケージをインストールする。
　　---- Install ----
　　libxext-dev
　　----

■環境変数
　以下、環境変数を設定しておく。
　
　・PATH
　　Qt4 SDKをインストールしたディレクトリのbinおよびqt/binを環境変数PATHに含める。
　　---- Example ----
　　export PATH=/opt/qtsdk-2009.04/bin:/opt/qtsdk-2009.04/qt/bin:$PATH
　　----
　　which qmakeとしたときに/opt/qtsdk-2009.04/qt/bin/qmakeとなることで確認する。

■モジュールのビルド
(1) GlobalNavigationRtc
　ビルドディレクトリに移動し、makeを実行する。
　ビルドが成功すると実行バイナリ(GlobalNavigationComp)が生成される。
　
　---- ビルドディレクトリ ----
　<base>/src/GlobalNavigationRtc/src
　---- Example ----
　$ cd src/GlobalNavigationRtc/src
　$ make clean
　$ make
　----

(2) MapViewerRtc
　ビルドディレクトリに移動し、qmakeとmakeを実行する。
　ビルドが成功すると実行バイナリ(MapViewerComp)が生成される。
　
　---- ビルドディレクトリ ----
　<base>/src/MapViewerRtc/src
　---- Example ----
　$ cd src/MapviewerRtc/src
　$ qmake           # Qtプロジェクトファイル(*.pro)からMakefileが生成される
　$ make clean
　$ make
　----

■モジュールの実行
(1) GlobalNavigationRtc
　実行バイナリが格納されているディレクトリに移動し、コンポーネントを実行する。
　
　---- バイナリディレクトリ ----
　<base>/src/GlobalNavigationRtc/src
　---- Example ----
　$ ./GlobalNavigationComp &
　----

(2) MapViewerRtc
　実行バイナリが格納されているディレクトリに移動し、コンポーネントを実行する。

　---- バイナリディレクトリ ----
　<base>/src/MapViewerRtc/src
　---- Example ----
　$ ./MapViewerComp &
　----

(3) RgisOperator
　関連文書[1]を参考にRgisOperatorを起動する。

(4) genxml
　実行バイナリが格納されているディレクトリに移動し、コンポーネントを実行する。
　
　---- バイナリディレクトリ ----
　<base>/src/misc/bin
　---- Example ----
　$ ./genxmlComp
　----

(5) strin
　実行バイナリが格納されているディレクトリに移動し、コンポーネントを実行する。
　
　---- バイナリディレクトリ ----
　<base>/src/misc/bin
　---- Example ----
　$ ./strinComp
　----

(6) コンフィグレーションセット
　RgisOperatorのコンフィグレーションセット"sim3"を選択する。

(7) ポート接続
　RTSystemEdirtorを使って、以下のように各コンポーネントのポートを接続する。
　
　[GlobalNavigationRtc]-MapService --> [RgisOperator]-MapServicePortへ接続
　[GlobalNavigationRtc]-RouteService --> [RgisOperator]-RouteServicePortへ接続
　[genxml]-out --> [GlobalNavigationRtc]-in0へ接続
　[GlobalNavigationRtc]-out --> [MapViewerRtc]->in0へ接続
　[MapViewerRtc]->out --> [strin]->inへ接続

(8) アクティベート
　RTSystemEdirtorを使って全コンポーネントをアクティベートする。

(9) genxml0を起動したターミナルから目的地、自己位置を入力する。
　入力例を4パターン示す。
　
　[パターン1]
　Input Command: > dest 16913 -34581 [ENTER]
　selfpos 16905 -34540 [ENTER]
　
　[パターン2]
　Input Command: > dest 16890 -34590 [ENTER]
　selfpos 16930 -34550 [ENTER]
　
　[パターン3]
　Input Command: > dest 16933 -34568 [ENTER]
　selfpos 16923 -34590 [ENTER]

　[パターン4]
　Input Command: > dest 16938 -34553 [ENTER]
　selfpos 16889 -34589 [ENTER]
　　以下、工程(10)(11)を実行した後、MapViewを確認する。
　selfpos 16920 -34600 [ENTER]
　cmd calc_grid [ENTER]
　　MapViewを確認して更新されていることを確認する。
　selfpos 16925 -34580 [ENTER]
　cmd calc_grid [ENTER]
　　MapViewを確認して更新されていることを確認する。
　

　[コマンド説明]
　dest x y
　　目的地(x0; y0) に相当するデータを生成する
　selfpos x y
　　自己位置(x0; y0) に相当するデータを生成する

　注：コマンド実行してもプロンプト"Input Command: >"に戻りません。
　　　そのまま入力を受け付けます。
　　　何もコマンドを入力せずに[ENTER]を実行すると、
　　　unknown commandエラーで
　　　USAGEとプロンプト"Input Command: >"が表示されます。
　
　注：障害物があり到達不可能な目的地や自己位置を指定した場合は、
　　　エラーとして処理されるためMapViewへの反映もありません。


(10) MapViewerCompを起動して開く以下の画面が更新されていることを確認する。
　Layers
　MapViewer

(11) Layersに追加された項目の
　Layer NameがPotential GridのOpacityを50に変更する。

(12) MapViewer画面で右クリックのメニューで現在地、目的地を設定する。
　Set Current Location to ( XXX. YYY)
　Set Destination to ( XXX. YYY)

(13) strinCompを起動したターミナルに値が出力されるのを確認する。

　注：MapViewer側は小数点３桁で丸めた値を表示しています。
　
　[例]上記、(12)の工程の(XXX. YYY)の値が(16922．600. -34590.700)だとしても
　　　<x>16922.600000000002</x>
　　　<y>-34590.70000000004</y>
　　　という値が表示される可能性があります。

■使用方法
各コンポーネントの入出力インタフェース、使い方は以下の文書を参照のこと。

(1)GlobalNavigationRtc
  <base>/src/GlobalNavigationRtc/doc/html/index.html

(2)MapViewerRtc
  <base>/src/MapViewerRtc/doc/html/index.html

[EOF]
