Armadillo240へのインストール

a220-angle-250.jpg a240-long-150.jpg

Armadillo240は アットマークテクノから販売されている、ARMを搭載したLinux搭載可能な小型CPUボードです。 Atmark Techno, Inc.から、ATDE2(Atmark Techno Development Environment)と、GNUクロス開発ツール、AtmarkDistという3つの開発ツールが提供され、簡単にクロス開発を行うことができます。
ここでは、Armadilloで実行できるRTコンポーネントの実行ファイルをクロス開発します。 その後、Armadillo起動後、RTコンポーネントが自動で起動するイメージファイル(romfs:ルートファイルシステム)を作成します。

作業の流れ

  • クロス開発環境の整備
  • ATDE2の整備 (必要なパッケージのインストール)
  • OpenRTM-aistのクロスコンパイルとインストール
  • RTコンポーネントのクロスコンパイル
  • Armadillo240上で実行ファイルを起動
  • Armadillo240のイメージファイルを作成
  • RtcLink上で動作確認

クロス開発環境の構築

Armadilloで実行できるRTコンポーネントの実行ファイルをクロスコンパイルで作成します。 Atmark Techno, Inc.からArmadilloシリーズの開発環境がVMイメージで配布されており、クロス開発環境に必要なツールが事前にインストールされています。

ATDE2とVMwareのダウンロード

ATDE2
ATDE2(Atmark Techno Development Environment)はAtmarkTechnoから配布されているAdmadilloのクロス開発環境のためのVMware用の仮想PCイメージです。実体はDebian GNU Linuxで、クロス開発に必要なツールチェーンがあらかじめインストールされています。
    • こちらのページから無料で入手できます。
VMware Player
VMware Inc. からフリーで配布されている仮想PCソフトで、VMwareの仮想PCイメージを実行することができます。ATDE2を起動するために必要です。Windows版とLinux版がありますが、以下Windows版のVMware Playerを使用するものとして進めます。
    • こちらのページから無料で入手できます。

ATDE2とVMwareの起動

  • VMwareでATDE2を起動します。

※ATDE2-20071018.zipを解凍し、解凍したフォルダの中のATDE2.vmxをダブルクリック、またはVMwareのfile>Openから解凍したフォルダの中のATDE2-20071018のATDE2.vmxを選択してください。

ATDE.png
VMwareでATDE2を起動

  • ”この仮想マシンを起動”で起動します。
  • ログイン作業は無しで、ATDE2のDesktopが表示されます。

ATDE2開発環境の整備

ATDE2はすでにクロスコンパイル環境が整っていますが、OpenRTMのRTコンポーネントをクロス開発できる環境に整える必要があります。 起動したATDE2上で以下のソースとシェルスクリプトをダウンロードしホームディレクトリ以下の適当な作業ディレクトリに入れておきます。

  • ダウンロード
    • OpenRTMソースコード
    • config100.shconfig042.sh
      • 展開したOpenRTM-0.4.2.tar.gz、又はOpenRTM-1.0.0.tar.gzの中で実行し、クロスコンパイルに必要なオプションを指定してconfigureを行うことができます。
      • OpenRTM-0.4.2対応、OpenRTM-1.0.0対応に分けました。2010/01/21
    • arm-cross-install.sh
      • OpenRTM-1.0.0対応になりました。2009/12/28
      • OpenRTMのARMクロスコンパイル環境をDebianホストに構築します。
  • arm-cross-install.shはapt-getコマンドでdebパッケージをダウンロードします。 debパッケージを置いているURLをsources.listに加えます。suコマンドでroot(パスワード:root)になり、/etc/apt/sources.listに下のURLを加えてください。
     deb http://downloads.pylone.jp/cross-toolchain/deb ./
     deb http://www.openrtm.org/pub/Linux/debian/ etch main
  • rootのまま、apt-getコマンドでパッケージをインストールします。
     # apt-get update
     # apt-get install python-yaml  (yesまたはYを入力してインストールを完了してください。)
    python-yamlパッケージはOpenRTMのインストール後、rtc-templateで必要です。
  • arm-cross-install.shでOpenRTM-aistのARMクロスコンパイル環境を構築します。多数のデータがダウンロードされるので適当な作業ディレクトリを作成しその中でarm-cross-install.shを実行してください。
     # sh arm-cross-install.sh  (yesまたはYを入力してインストールを完了してください。)
    • arm-cross-install.shを実行することでOpenRTM-aistをクロスコンパイルするために必要なパッケージ群がダウンロード・インストールされますが、その副作用としてgdmなどの一部のパッケージが削除されてしまいます。 gdmが削除されるとグラフィカルなデスクトップ画面が出なくなってしまいますので、戻したい場合は以下のようにgdmを再度インストールしなおします。
       # apt-get install gdm   (yesまたはYを入力してインストールを完了してください。)
       # /etc/init.d/gdm start
  • 以上でATDE2環境の整備は完了です。

OpenRTM-aistのクロスコンパイル

OpenRTM-aistのビルド

OpenRTM-aist-0.4.2のソースコードをホームディレクトリなどの適当なディレクトリに展開してください。展開後、作成されたディレクトリに移動します。

 # tar zxvf OpenRTM-aist-0.4.2.tar.gz
 # cd OpenRTM-aist-0.4.2
通常、ここでconfigureを実行しますが、OpenRTMをクロスコンパイルするにはconfigureに適切なオプションを指定する必要があります。上でダウンロードしたconfig.shを使用すると、クロスコンパイルに必要なオプションを指定してconfigureを実行することができますので、ここではconfig.shを使用します。 config.shをカレントディレクトリにコピーし、インストール先ディレクトリを引数に指定して実行します。
 # cp ../config.sh ./
 # sh config.sh /usr/arm-linux-gnu
config.shが正常に終了したことを確認してください。 ビルドが正常に終了したらmakeします。
 # make
インストールするためにはすくなくとも、
 OpenRTM-aist-0.4.2/rtm
 OpenRTM-aist-0.4.2/rtm/idl
 OpenRTM-aist-0.4.2/utils/rtm-config
 OpenRTM-aist-0.4.2/utils/rtm-naming
 OpenRTM-aist-0.4.2/utils/rtc-template
以下のディレクトリが正常にビルドされている必要があります。ビルドが正常に終了したら、ヘッダファイル、ライブラリ、ユーティリティコマンド群をインストールします。

OpenRTM-aistのインストール

config.shで指定した/usr/arm-linux-gnu/にインストールされます。
 # make install
/usr/arm-linux-gnu/share/examples/にサンプル実行ファイルが生成されてます。

RTコンポーネントのクロス開発

以上で、RTコンポーネントをクロス開発する環境が整いました。 ここでは例として、サンプルに含まれるSeqOutCompのソースを使用してクロスコンパイルしてみます。

RTコンポーネントのクロス開発する

  • RTコンポーネントをクロス開発するには、クロス開発用のコマンドを使用する必要があるので、以下のように(/usr/arm-linux-gnu/bin)パスを通します。 パスを通す際に、/usr/arm-linux-gnu/binがPATHの先頭になるよう注意してください。
     > export PATH=/usr/arm-linux-gnu/bin:$PATH

rtc-templateでSimpleIOのRTコンポーネントを生成する。

サンプルを作成するため適当なディレクトリを作成し、そこにOpenRTMのサンプルSeqOutのソースに含まれる以下のファイルをコピーしてください。

 SeqOutComp.cpp        SeqOut.h    SeqOut.cpp    Makefile.SeqOut

 > mkdir test
 > cp (インストールディレクトリ)/OpenRTM-aist-0.4.2/examples/SeqIO/SeqOutComp.cpp ./test/
 (上記のコマンドですべてコピーしてください)

OutPortを八つ持つSeqOutCompというコンポーネントを生成します。

RTコンポーネントのビルド

生成された、Makefile.SeqOutの内容を確認してください。CXX=で始まる行がない場合、コンパイラにクロス用のコンパイラを以下のように指定する必要があります。

 環境変数を設定しmakeする

 > CXX=arm-linux-gnu-g++ make -f Makefile.SeqOut
 又は、
 > export CXX=arm-linux-gnu-g++
 > make -f Makefile.SeqOut

makeが正常に完了すると、SeqOutCompの実行ファイルが生成されます。

RTコンポーネントの実行

クロス開発した実行ファイル、ライブラリ、などをUSBメモリにコピーし、Armadillo240上で起動します。

USBフラッシュメモリの準備

Armadillo240上でRTコンポーネントを実行するのに必要なファイルをUSBメモリにコピー・生成します。

実行ファイル
Armadillo240上で実行したいRTコンポーネントの実行ファイル。

この例では、先ほどクロスコンパイルしたSeqOutCompを使用します。 SeqOutCompをUSBメモリの適当な場所(ルートディレクトリ等)にコピーします。

ライブラリ
ATDE2の/usr/arm-linux-gnu/lib以下にはARM用のライブラリが格納されています。

このディレクトリ内のライブラリのうち、以下のものをUSBメモリにコピーします。  USBフラッシュメモリにライブラリを置くディレクトリlibを作成します。

 >mkdir lib
 又は、
 GUIの場合、右クリックでフォルダを作成します

/usr/arm-linux-gnu/libのライブラリをコピーする際に、以下の通りに名前を変更してください。

  • OpenRTM-aist-0.4.2の場合
    • ライブラリ名変更  コピーする際に、以下の通りに名前を変更してください。
ライブラリ名 ライブラリ名変更後
libomniDynamic4.so.0.6 libomniDynamic4.so.0
libomniORB4.so.0.6 libomniORB4.so.0
libomnithread.so.3.1 libomnithread.so.3
libRTC-0.4.2.so.0.0.4 libRTC-0.4.2.so.0
librt.so.1 librt.so.1(変更なし)
libACE.so.5.4.7 libACE.so.5.4.7(変更なし)
  • OpenRTM-aist-1.0.0の場合
    • ライブラリ名変更
ライブラリ名 ライブラリ名変更後
libm-2.3.6.so libm.so.6
libomiDynamic4.so.0.6 libomniDynamic4.so.0
libomnithread.so.3.1 libomnithread.so.3
librt.so.1 librt.so.1(変更なし)
libRTC-1.0.0.so.0.0.4 libRTC-1.0.0.so.0
libstdc++.so.6.0.8 libstdc++.so.6
libuuid.so.1.2 libuuid.so.1
rtc.conf
以下のようなrtc.confをテキストエディタなど使用して作成してください。

Armadillo上ではネームサーバを起動しませんので、別のPC上でネームサーバを起動しておいてください。 rtc.confのcorba.nameservers のオプションにはそのネームサーバを起動したPCのアドレスを指定します。

 corba.nameservers: 192.168.100.1 (自分のネームサーバーのIPアドレスを入力)
 naming.formats: %n.rtc

※ ATDE2でのUSBメモリのマウント
VMware(ATDE2)を起動中にPCにUSBフラッシュメモリを差し込むと、自動でマウントされDesktop上で確認できます。

自動でマウントされないときはVMware(ATDE2)の端末でsuコマンドでrootになりmountをし直します。

  • USBメモリのマウント
     > su
     # mkdir /mnt/(適当なディレクトリ)
     # mount -t vfat /dev/sdb1 /mnt/(上で作成したディレクトリ)
  • USBメモリのアンマウント
      Desktop上にUSBメモリのアイコンが表示されてるときは、右クリック>アンマウントしてください。
      または、コンソールからコマンドでアンマウントできます。
     # umount /mnt/(上で作成したディレクトリ)

USBフラッシュメモリのディレクトリ構造

USBフラッシュメモリの準備を終えると、USBメモリは下のようなディレクトリ構造になります。

  • OpenRTM-aist-0.4.2

  USBメモリー -+- lib --+- libomniDynamic4.so.0
                |     +- libomniORB4.so.0
                |     +- libomnithread.so.3
                |     +- libRTC-0.4.2.so.0
                |     +- librt.so.1
                |     +- libACE.so.5.4.7
               |
               +- SeqOutComp 
               |
               +- rtc.conf

  • OpenRTM-aist-1.0.0

  USBメモリー -+- lib --+- libm.so.6
                |     +- libomniDynamic4.so.0
                |     +- ibomnithread.so.3
                |     +- librt.so.1
                |     +- libRTC-1.0.0.so.0
                |     +- libstdc++.so.6
                |     +- libuuid.so.1
               |
               +- SeqOutComp 
               |
               +- rtc.conf

Armadillo240で実行ファイルを起動

USBメモリのマウント設定、ライブラリPATHの設定を変更し、実行ファイルを動かします。 PCとArmadilloをシリアルケーブルで接続し、Armadillo上のLinuxのシリアルコンソールからログインすることでArmadillo上のLinuxを操作することができます。 以下のやりやすい方法で進めてください。

ATDE2上からminicomで操作する

ATDE2上から端末エミュレータのプログラムminicomで操作します。 PCのシリアルポートとArmadilloのシリアルポートをシリアルケーブルで接続してください。 シリアルポートがないPCの場合はUSB-シリアル変換ケーブルなどを使用する必要があります。 Armadilloのシリアルケーブルの接続方法に関しては、Armadilloのマニュアルを参照してください。

※VMwareの仮想マシンのデバイスの設定を以下のように行ってください。

 メニューバー>VM>設定>ハードウェアタグ
  (VMwareWorkstationとVMwareConsoleで設定できます。)
VMwareUseSerialSetting.png
VMwareのUSBシリアルポート設定

接続のチェックを確認してください。

VMwareComSeting.png
VMwareのシリアルポート設定

デバイスステータスのチェックと、接続>物理シリアルポートを使用でポートを確認してください。 ATDE2の端末から、端末エミュレータminicomを起動します。

 > minicom
enterを押下するとArmadillo240のlogin画面になります。 以降は共通の操作に進んでください。

Windowsから端末エミュレータ(teraterm)で操作する

Windowsから、TeraTermなどの端末エミュレータを使用してArmadilloのシリアルコンソールと接続することもできます。TeraTermはこちらから無料でダウンロードできます。 以下の設定で起動してください。

  • メニューバー>設定>シリアルポート設定>
    • ポート/任意
    • ボーレート/115200
    • データ/8bit
    • パリティ/none
    • ストップ/1bit
    • フロー制御/none

上記の設定で起動すると、Armadillo240のログイン画面が表示されます。 ※表示されないときはEnterを押下してください。 以降は共通の操作に進んでください。

共通の操作

USBメモリをArmadilloに差してください。 Armadilloのログイン画面で、root(パスワード:root)でログインしてください。 デフォルトのmountはオプション(umous=111)で、どのユーザーも実行のできないパーミッション設定です。

一度アンマウントしてから、書き込み・実行可能な-o rwオプションでリマウントします。

 # umount /dev/sda1
 # mount -t vfat -o rw /dev/sda1 /home/www-data/storage/
ライブラリパスを通すため、コマンドでゲストになりUSBメモリに移動します。
 # su guest
 > cd /home/www-data/storage
ライブラリのパスを通します。(ライブラリの置いてあるディレクトリを指定してください。)
 > export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/www-data/storage/
 > ./SeqOutComp (実行ファイルが実行されました)
RTコンポーネントが起動がします。

※RtcLinkからも確認できます。

この方法ではArmadilloの起動の度に設定を修正しなくてはなりません。 次の章では、Armadilloの起動後RTコンポーネントが自動で起動するイメージファイルを作成し、Armadilloにダウンロードします。

Armadillo240のイメージファイルを作成する

これまでの方法だと、Armadilloの起動ごとに端末エミュレータで設定を変更する必要があります。ここでは、AtmarkTechno,Inc から提供されているatmark-distを使い、Armadillo240の起動後RTコンポーネントが自動で起動するイメージファイルを作成し、Armadilloにダウンロードします。

開発環境の整備

 RTコンポーネントをクロスコンパイルしたATDE2の環境をそのまま使います。ATDE2上に以下の項目をダウンロードしてください。

Atmark-dist
Armadilloのuserlandのイメージファイルを作成します。
    • こちらから無料で入手できます。
Linuxカーネル
Atmark-distでイメージファイルを作成する際必要です。
    • こちらから無料で入手できます。(Armadillo240の場合)
    • openrtm_new.patch, Atmark-dist(2009/03/18)のverアップに伴いpatchファイルを修正しました。(2010/02/12)

atmark-distのビルドと設定

ここでは、Armadilloのuserlandのイメージファイルを作成します。 ここで作成するイメージファイルを使用すると、USBメモリにあらかじめインストールされたRTコンポーネントを、自動的に起動できるようになります。

RTコンポーネントの起動の仕組み

USBメモリを/home/openrtm/にマウントし、Armadilloの起動後/home/openrtm/boot.shを起動させます。 boot.shは、USBメモリ内のライブラリパスを通し、実行ファイルを起動します。
  • OSの設定
    • USBメモリを書込、実行可能で/home/openrtm/にマウントする。
    • USBメモリマウント時に、USBメモリ直下のboot.shを起動する。
  • USBフラッシュメモリの内容
    USBメモリに以下のファイルを用意してください。
boot.sh
Armadillo240起動後、起動するシェルスクリプトです。USBメモリの直下に下のようなboot.shを用意してください。ライブリPATHを通し、実行ファイルを起動します。
    • ※rtc.confをUSBメモリ直下に、ライブラリをlibディレクトリに置いた時の設定です。USBメモリのディレクトリ構造に応じて修正してください。

 #!bin/sh
 . /etc/default/openrtm.conf
 export LD_LIBRARY_PATH=$LIBPATH:/home/openrtm/lib/
 /home/openrtm/SeqOutComp(実行ファイル名)  -f  /home/openrtm/rtc.conf

atmark-distビルド

ATDE2上で、atmark-distとlinuxカーネル、openrtm.patchをダウンロードし展開してください。

 > tar zxvf atmark-dist--20090318.tar.gz
 > tar zxvf linux-2.6.12.3-a9-15.tar.gz
展開されたatmark-distのディレクトリに移動し、linuxカーネルのシンボリックリンクを張ります。   ※リンク名は、linuxのverにかかわらず ./linux-2.6.x にしてください。
 > ln -s ../linux-2.6.12.3-a9-15 ./linux-2.6.x 
make configします。 以降の質問には下のように入力してください。
 > make config
 Select the Vendor you wish to target  :Atmarktechno(入力)
 Select the Product you wish to target  :Armadillo-240.Recover(入力)
 Kernel is linux-2.6.x            :default(enterでもOK)
 defined CONFIG_DEFAULTS_CROSSDEV_DEFAULT:none(enterでもOK)
 Default all settings            :y(入力)
 Customize Kernel Settings          :n(enterでもOK)
 Customize Vendor/User Settings       :n(enterでもOK)
 Update Default Vendor Settings       :n(enterでもOK、終了)

openrtm.patchをコピーし以下の手順でパッチを当ててください。

 > cp openrtm.patch /atmark-dist-YYYYMMDD/vendor/AtmarkTechno/Armadillo-240.Recover/openrtm.patch
 > cd /atmark-dist-YYYYMMDD/vendor/AtmarkTechno/Armadillo-240.Recover/
 > patch -p1 <openrtm_new.patch
  (パッチ終了)
atmark-dist-YYYYMMDDディレクトリまで移動し、 make dep all してください。
 > cd ../../../
 > make dep all
make dep all中、以下のようなエラーメッセージが表示されますが、romfsは正常に生成されます。
 /bin/sh: extensions/.dccp-test: 許可がありません
 /bin/sh: extensions/.layer7-test: 許可がありません
 /bin/sh: extensions/.statistic-test: 許可がありません
 make[2]: ディレクトリ `/home/atmark/Desktop/foratde/forkernel/atmark-dist-200807 17/user/iptables' に入ります
 romfs-inst.sh /bin/iptables
 romfs-inst.sh -l /bin/iptables /bin/iptables-save
 ln: `/bin/iptables' にアクセス中: そのようなファイルやディレクトリはありません
 romfs-inst.sh -l /bin/iptables /bin/iptables-restore
 ln: `/bin/iptables' にアクセス中: そのようなファイルやディレクトリはありません
make終了後、imagesディレクトリに4つのファイルが生成されます。
 > ls images
  linux.bin linux.bin.gz romfs.img romfs.img.gz
次の章でromfs.img.gzをArmadilloに書き込みます。

イメージファイルをArmadillo240にダウンロードする

生成したuserlandのイメージファイルromfs.img.gzをArmadillo240にダウンロードします。 Armadilloはジャンパピン(2)をショートして、電源を入れておいてください(Armadilloハードウェアマニュアルのp.16を参考にしてください)

VMware(ATDE2)、Windowsどちらからでもダウンロードできます。

ATDE2上からダウンロードする

こちら でVMwareの仮想マシンのデバイス設定を行ってから進めてください。

  • Armadillo-240とPCをUSBシリアルケーブル(又はシリアルケーブル)でつなぎます。
  • ATDE2の端末コンソールからhermitでimages/romfs.img.gzをダウンロードします。
     > hermit download -i images/romfs.img.gz -r userland --port /dev/ttyUSB0 (または、/dev/ttyS0) 
     ダウンロードには8分ほどかかります。
  • completedと表示されたら完了です。
     serial: completed 0x004455fd (4478461) bytes. (完了)

       

    Windows上からダウンロードする

Armadillo240に同梱されているCD-ROMのdownloader>win32>Hermit.zipをWidows上に置いてください。

  • Windows上にHermit.zipを解凍し、Hermit.exeをダブルクリックで起動します。
    hermit.png
    Windows上のHermit
  • Armadillo240をPCをシリアルポートで接続してください。
  • ATDE2に生成されたromfs.img.gzをwindows上に移動してください。
  • 表示されたダイアログでシリアルポートを設定し、Downloadを押下します。images で作成した romfs.img.gz を、Region で userland を設定し実行ボタンを押下してダウンロードします。(8分くらいかかります。)
  • ダウンロードが完了すると、Hermitに表示されます。

RTコンポーネントの実行・確認

RTCLinkを起動し、RTコンポーネントの起動を確認します。

  • イメージファイルのダウンロード完了後、Armadilloのジャンパピン(2)のショートを外し、電源のプラグを差し直し再起動します。
  • RTコンポーネントを実行する際、rtc.confで指定したネームサーバーを起動します。
    • Windowsの場合
      • プログラムメニューの「OpenRTM-aist」→「example」→「NameService.bat」を実行します。
      • あるいは、OpenRTM-aist\binにあるrtm-naming.batをダブルクリックして起動します。
    • linuxの場合
      • suコマンドでrootになり、ネームサーバーを起動します。
         > su
         # /etc/init.d/omniorb4-nameserver start
  • RTCLinkを起動し、ネームサーバーにコンポーネントが生成されているのを確認してください。
    • ※ネームサーバーが表示されていない時は、Connect Name Serverボタンを押下しネームサーバーを追加接続してください。

応用例

Armadillo+URGセンサ

Armadilloと北陽電機URGセンサと組み合わせ、分散センサシステムを簡単に構築するためのユニットです。 Armadillo上ではURGセンサRTコンポーネントが動作します。(Armadillo電源投入と同時にRTCが自動起動します。) PoE (Power over Ether) 対応のArmadilloを使用することで、LANケーブルのみで通信・給電が可能です。 URGセンサも PoE からの電源供給で動作します。 ケーブル1本のみでセンサ配置が可能ですので、分散センサシステムを容易に構築できます。

Armadillo_URG.png
分散LRFユニット

Armadillo_URG3.png
PoE (Power over Ether) HUBにより電力供給が可能

 

最新バージョン

初めての方へ

Windows msi(インストーラ) パッケージ (サンプルの実行ができます。)

C++,Python,Java,
Toolsを含む
1.1.2-RELEASE

RTコンポーネントを開発するためには開発環境のインストールが必要です。詳細はダウンロードページ

統計

Webサイト統計
ユーザ数:1620
プロジェクト統計
RTコンポーネント286
RTミドルウエア21
ツール20
文書・仕様書1

Join our slack

Enter email address for slack invite.

旧Webサイト

OpenRTM.org旧Webサイト

OpenHRP3

動力学シミュレータ

Choreonoid

モーションエディタ/シミュレータ

OpenHRI

対話制御コンポーネント群

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク

VirCA

遠隔空間同士を接続し、実験を行うことが可能な仮想空間プラットホーム