富士通画像処理モジュールでRTCを動作させる方法

バージョン:1.0.0
最終更新日:2011/12/16
著作権:Copyright 2011, SEC CO.,LTD.

はじめに

富士通九州ネットワークテクノロジーズ株式会社から販売されている 画像処理モジュールは、小型、低消費電力で高度な画像認識性能を持つ モジュールです。(http://jp.fujitsu.com/group/qnet/release/2009/0724.html)

本ドキュメントでは、画像処理モジュール上で、独立行政法人産業技術総合研究所が 開発しているRTミドルウェア実装であるOpenRTM-aist(http://openrtm.org/)を 動作させる方法を説明します。

ライセンス

本ドキュメントはCC BY-SA 2.1ライセンスの下で提供されています。 ライセンスの内容は以下をご確認ください。

作業の大まかな流れ

  1. 画像処理モジュールのCPUはPowerPCですので、OpenRTM-aistをPowerPC向けに クロスコンパイルします。
  2. PowerPC向けのOpenRTM-aistを使って、PowerPC向けのRTCを作成します。
  3. PowerPC向けのOpenRTM-aistとRTCを画像処理モジュールに転送してRTCを起動し、 利用します。

必要なもの

  • 画像処理モジュール

    NTSC版とIEEE1394版のどちらでも構いません。

  • Ubuntu PC

    OpenRTM-aistやRTCをPowerPC向けにクロスコンパイルするために使います。 また、画像処理モジュール上で動作しているRTCにを活性化したり非活性化したり するためにも使います。 本ドキュメントではUbuntu 10.04で動作確認をしています。

  • 必要なソフトウェア

    • GNU Make

      makeコマンドです。 Ubuntu 10.04にプリインストールされているGNU Make 3.81で 動作確認をしています。

    • Embedded Linux Development Kit(ELDK) 4.1

      クロスコンパイラです。 以下のサイトを参照して、Ubuntu PCにダウンロード、 インストールしてください。 なお、インストールする際には、cpu_familyに ppc_4xxFP を 指定してください。

      http://www.denx.de/wiki/DULG/ELDK

    • omniORB 4.1.6

      OpenRTM-aist C++版で利用しているCORBA実装です。 PowerPC向けにクロスコンパイルするので、ソースコードが必要です。 以下のサイトからソースコード(omniORB-4.1.6.tar.bz2)を ダウンロードしてください。

      http://sourceforge.net/projects/omniorb/files/omniORB/omniORB-4.1.6/

    • g++

      omniORBをクロスコンパイルする過程で、一部、Ubuntu PC向けに 通常のコンパイルをする必要があり、その際に利用します。 Ubuntu 10.04のSynaptic パッケージマネージャでインストールできる g++ 4.4.3で動作確認をしています。

    • Python

      omniORBをクロスコンパイルする過程で、一部、Ubuntu PC向けに 通常のコンパイルをする必要があり、その際に、Pythonの ヘッダファイルとライブラリが必要になります。 Ubuntu 10.04のSynaptic パッケージマネージャでインストールできる Python 2.6(python-dev)で動作確認をしています.

    • OpenRTM-aist C++ 1.0.0-RELEASE

      OpenRTM-aistのC++実装です。 PowerPC向けにクロスコンパイルするので、ソースコードが必要です。 以下のサイトからソースコード(OpenRTM-aist-1.0.0-RELEASE.tar.bz2)を ダウンロードしてください。

      http://www.openrtm.org/openrtm/ja/node/849

    • RTC Builder

      RTCのソースコードの雛形を生成するコードジェネレータです。 OpenRTM-aistのサイトを参照して、Ubuntu PCにインストールしてください。

    • RT System Editor

      画像処理モジュール上で動作しているRTCの活性化や非活性化に使います。 OpenRTM-aistのサイトを参照して、Ubuntu PCにインストールしてください。

OpenRTM-aistをPowerPC向けにクロスコンパイルする方法

画像処理モジュール上でRTCを動作させるために、omniORBとOpenRTM-aistを PowerPC向けにクロスコンパイルをする方法を述べます。 なお、ここでの作業はすべてUbuntu PC上でおこないます。

  1. 作業ディレクトリの作成

    1. 任意の場所に作業ディレクトリを作成します。 ここでは例として、ユーザのホームディレクトリにvision_buildという ディレクトリを作成することにします:

      $ cd ~/
      $ mkdir vision_build
    2. クロスコンパイルしたライブラリを格納するディレクトリを作成します。 ここでは例として、ユーザのホームディレクトリにvision_moduleという ディレクトリを作成することにします:

      $ cd ~/
      $ mkdir vision_module
  2. omniORBのクロスコンパイル

    1. omniORBのソースコード(omniORB-4.1.6.tar.bz2)を 作業ディレクトリに置いて、展開します:

      $ cd ~/vision_build
      $ tar xjf omniORB-4.1.6.tar.bz2
    2. omniORBをクロスコンパイルする際に、Ubuntu PCで動作するIDLコンパイラが 必要になるので、クロスコンパイルの前に、IDLコンパイラだけ 通常のGCCでコンパイルします:

      $ cd ~/vision_build/omniORB-4.1.6
      $ ./configure --prefix=${HOME}/vision_module
      $ make -C src/tool export
      $ make -C src/tool/omniidl install
      $ make -C src/lib/omniORB/omniidl_be install
    3. クロスコンパイルをします:

      $ cd ~/vision_build/omniORB-4.1.6
      $ ./configure --host=ppc-linux --prefix=${HOME}/vision_module --disable-longdouble
      $ make EmbeddedSystem=1
      $ make EmbeddedSystem=1 install
  3. OpenRTM-aistのクロスコンパイル

    1. OpenRTM-aistのソースコード(OpenRTM-aist-1.0.0-RELEASE.tar.bz2)を 作業ディレクトリに置いて、展開します:

      $ cd ~/vision_build
      $ tar xjf OpenRTM-aist-1.0.0-RELEASE.tar.bz2
    2. クロスコンパイルをします:

      $ cd ~/vision_build/OpenRTM-aist-1.0.0
      $ ./configure --host=ppc-linux --prefix=${HOME}/vision_module --with-omniorb=${HOME}/vision_module
      $ make -C src install
      $ make -C utils/rtcd install

RTCをPowerPC向けにクロスコンパイルする方法

画像処理モジュール上で動作するRTCを動作させるために、RTCをPowerPC向けに クロスコンパイルをする方法を述べます。 RTCをクロスコンパイルするためには、PowerPC向けにコンパイルされた OpenRTM-aistが必要なので、先に用意しておいてください。 なお、ここでの作業はすべてUbuntu PC上でおこないます。

  1. RTC BuilderでRTCのコードの雛形を作成します。 RTC Builderの使い方はOpenRTM-aistのサイト(http://openrtm.org/)を 参照してください。

  2. RTCのコアロジックを実装します。

  3. RTC Builderで生成されたMakefileを以下のように修正します。 なお、PowerPC向けにコンパイルされたOpenRTM-aistは $HOME/vision_moduleにあると仮定しています。

    • Makefileの先頭に以下の2行を追加:

      VISION_MODULE_DIR = $(HOME)/vision_module
      CXX = ppc-linux-g++
    • Makefileで定義している変数CXXFLAGSを以下のように修正:

      CXXFLAGS = -Wall -fPIC -O2 \
                 -I${VISION_MODULE_DIR}/include \
                 -I${VISION_MODULE_DIR}/include/rtm/idl -I.
    • Makefileで定義している変数LDFLAGSを以下のように修正:

      LDFLAGS = -export-dynamic -Wl,-z,defs -L$(VISION_MODULE_DIR)/lib \
                -lpthread -luuid -ldl -lomniORB4 -lomnithread \
                -lomniDynamic4 -lRTC -lcoil
  4. makeを実行します。

画像処理モジュール上でRTCを動作させる方法

PowerPC向けにコンパイルされたRTCを画像処理モジュール上で 動作させる方法を述べます。

  1. Ubuntu PCと画像処理モジュールを同じLANに接続します。

  2. Ubuntu PC上でネーミングサービスを起動します。

  3. RTCを動作させるために必要な以下のライブラリをUbuntu PCから FTPなどで画像処理モジュールに転送します。

    • PowerPC向けにコンパイルされたomniORB

      • lib/libomniORB4.so
      • lib/libomnithread.so
      • lib/libomniDynamic4.so
    • PowerPC向けにコンパイルされたOpenRTM-aist

      • lib/libcoil.so
      • lib/libRTC.so
      • bin/rtcd
  4. 動作させるRTCをUbuntu PCからFTPなどで画像処理モジュールに転送します。

    • RTCのバイナリ。RTCの名前がSampleの場合は以下のファイル:

      • Sample.so
      • SampleComp
    • rtc.conf

      ネーミングサービスはUbuntu PC側で起動するので、rtc.confに Ubuntu PCのIPアドレスを書いておきます。 IPアドレスが192.168.0.1の場合:

      corba.nameservers: 192.168.0.1
  5. 画像処理モジュールのLinux上で、3.で転送したライブラリが 格納されているディレクトリを環境変数LD_LIBRARY_PATHに追加します。

  6. 画像処理モジュールのLinux上でRTCを起動します。

  7. Ubuntu PCでRT System Editorを起動すると、ネーミングサービス上に 画像処理モジュール上で起動しているRTCが見えます。 通常のRTCと同様に、RTCを活性化して動作させます。

謝辞

本ドキュメントは、独立行政法人新エネルギー・産業技術総合開発機構(NEDO) の委託事業である次世代知能化技術開発プロジェクトの支援を受けて作成されました。 ここに感謝の意を表します。

更新履歴

Version 1.0.0

  • 新規作成