過去文書

rtshell のインストール

はじめに

このドキュメントでは、Windows で rtshell のインストール方法について説明します。

rtshellとは

rtshell はネームサーバー上に登録されている RTコンポーネントを、シェル (コマンドプロンプト) から管理することができるツールです。 コンポーネントを activate/deactivate/reset したり、ポートの接続を行うことができます。RTシステム全体を管理することも可能です。

インストールの流れ

  • OpenRTM-aist Python版と PyYAML のインストール
  • rtctree(支援ライブラリ)のインストール
  • rtsprofile(支援ライブラリ)のインストール
  • rtshell のインストール
  • 実行確認

OpenRTM-aist Python版 と PyYAMLのインストール

rtshell の一部の機能(システム管理)には OpenRTM-aist-Python が必要です。

OpenRTM-aist-Python のインストールドキュメントに従って Python 2.6 または 2.7と OpenRTM-aist-Python をインストールします。 ドキュメント を参照してください。

PyYAML はPyYAMLのウェブサイト からダウンロードしてインストールします。バージョンは一番最新でも大丈夫です。

rtctree のインストール

openrtm.org のダウンロードサイトから rtctree-3.1 のパッケージ (rtctree-3.1.0.win32.exe) をダウンロードします。

パッケージを実行すると、以下のようなダイアログが表示されるので、[次へ] をクリックします。

rtctree_installer_1.png

Python のバージョンを選択するダイアログが表示されます。Python の正しいバージョンが選択されていることを確認し、[次へ] をクリックします。 以下の例では Python2.6 が選択されています。

rtctree_installer_2.png

「インストール準備完了」ダイアログが表示されます。さらに [次へ] をクリックします。

rtctree_installer_3.png

インストールが行われます。終わったら、[完了] をクリックしてインストールを終了します。

rtctree_installer_4.png

rtsprofile のインストール

openrtm.org のダウンロードサイトから rtsprofile-3.1 のパッケージ (rtsprofile-3.1.0.win32.exe) をダウンロードします。

パッケージを実行すると、以下のようなダイアログが表示されるので、[次へ] をクリックします。

rtsprofile_installer_1.png

Python のバージョンを選択するダイアログが表示されます。Python の正しいバージョンが選択されていることを確認し、[次へ] をクリックします。 以下の例では Python2.6 が選択されています。

rtsprofile_installer_2.png

「インストール準備完了」ダイアログが表示されます。さらに [次へ] をクリックします。

rtsprofile_installer_3.png

インストールが行われます。終わったら、[完了] をクリックしてインストールが終了します。

rtsprofile_installer_4.png

rtshell のインストール

openrtm.org の ダウンロードサイト から rtshell-3.0.0 のパッケージ (rtshell-3.1.0.win32.exe)をダウンロードします。

パッケージを実行すると、以下のようなダイアログが表示されるので、[次へ] をクリックします。

rtshell_installer_1.png

Python のバージョンを選択するダイアログが表示されます。Python の正しいバージョンが選択されていることを確認し、[次へ] をクリックします。 以下の例では Python2.6 が選択されています。

rtshell_installer_2.png

「インストール準備完了」ダイアログが表示されます。さらに [次へ] をクリックします。

rtshell_installer_3.png

インストールが行われます。終わったら、[完了] をクリックしてインストールを終了します。

rtshell_installer_4.png

実行確認

実行確認のために、rtshell のコマンド群のうち rtls コマンドを実行して rtshell が正しくインストールされているかどうかをテストします。

はじめに、OpenRTM-aist の ネームサービスを起動して、ConsoleIn を起動します。

コンポーネントを起動したら、Windows のコマンドプロンプトを起動します。

start_command_prompt.png

コマンドプロンプトで以下のコマンドを実行します。

  set RTCTREE_NAMESERVERS=127.0.0.1
  rtls -R

1行目は環境変数を設定します。「RTCTREE_NAMESERVERS」は、rtshell の支援ライブラリ rtctree が使う変数で、rtshell が見るネームサーバーを指定します。

2行目はすべてのネームサーバーに登録されているコンポーネントを表示します。成功の場合は以下のように表示されます。

rtls_output.png

動かない場合

コマンドが見つけられない場合は、PATH が設定されていない可能性があります。 PATH 環境変数に以下のような二つのパスを追加すると動きます。(例は Python 2.6がインストールされている場合です。)

  C:\Python26
  C:\Python26\Scripts

NXTRTC

このサンプルは、OpenRTM-aistのPython版に付属しています。 C++版、Java版には付属していませんのでご注意ください。

概要

NXTRTC.pyは、LEGO Mindstorm NXTのモーター制御や、センサーデータを出力するコンポーネントです。

起動画面

NXTRTC.png
NXTRTC実行例(NXTRTC)

TkMotor.png
TkMotorComp実行例(TkMotorComp)

NXTRTC_example_rtse_ja.png
NXTRTC 実行例(RTSystemEditor)


使い方

GUIをもったTkJoystick(入力デバイス)と、TkMotor(出力デバイス)に接続し、LEGOのモータ制御と値の確認をします。

※詳細はRTコンポーネント作成(LEGO Mindstorm編)マニュアルでごご覧ください。


  • 手順
    • RTSystemEditorを起動し、新規SystemEditorを開きます。RTSystemEditorの使用方法の詳細についてはRTSystemEditorを参照
    • こちらを参考にPCとLEGO MindstormをBluetooth、又はUSB接続してください。
    • NXTRTC.py、入力デバイスTkJoyStickComp.py、TkMotorComp、各コンポーネントを起動します。
    • RTSystemEditorのName Service Viewにコンポーネントが表示されるので、それらをSystemEditor上にドラッグします。
    • 両コンポーネントの対応ポートを結びます。(上図SystemEditor実行例を参照)
    • どちらかのコンポーネントを右クリックし、[Activate Systems]を選択します。

玄箱HGへのインストール

kuro-box_hg.jpg

玄箱/HGスペック

CPU PowerPC 266MHz
RAM 128MB
Flash ROM 4MB
LAN 1000BASE-T/100BASE-TX/10BASE-T×1ポート
外部IO USB2.0×2ポート
HDD 3.5インチUltraATA 1個を別途用意.
OS デフォルトではMontavista Linux(Kernel2.4.17)

インストールの流れ

Debian、Vine、GentooLinux が動作するようであるが、パッケージの豊富さ、アップグレードのしやすさから Debian が最適でしょう。 大まかな手順は以下の通りです。

  1. 玄箱うぉううぉう♪から Debian イメージをダウンロードする
  2. 玄箱付属CDに同封されている KuroBoxSetup.exe を使ってイメージを玄箱へ展開する
  3. この段階では Debian3.0 (Woody) なので、Debian3.1(Sarge) へアップグレードする
  4. pkg_install_debianSarge.sh でパッケージをインストールする
  5. OpenRTM-aist-0.4.0 をビルド、インストールする

このように、Debian インストール後は、i386 の Debian と同じ手順でインストールすることができます。

OS の入れ替え

カーネルイメージの入手

OS の入れ替え方法については、以下からダウンロードしてください。

ダウンロードしたイメージを、この後の手順で必要な名前にリネームしてZIP圧縮したものを以下に置きます。

インストーラの準備

玄箱付属 CD-ROMの内容を適当なディレクトリーにコピーします。 KuroBoxSetup.exe が存在する場所(CD-ROMのルート)にある image.zip を image.zip.org などにリネームし、上記でダウンロードした image.zip を代わりにここに置きます。

EMモードにする

玄箱を EMモードにします。参考

EMモードはインストーラが認識可能なモードで、KuroBoxSetup.exe を使ってイメージを転送するにはこのモードにする必要があります。 購入直後、HDDを繋いだばかりのときはこのモードになっています。

すでに玄箱付属の Linux をインストールしてしまっている場合は、以下のように EMモードにすることができます.

 EMモードにする
 # echo -n 'NGNG' > /dev/fl3
   もしくは
 # /usr/bin/write_ng
 # reboot
 電源を切り, 再度電源を入れる

 EMモードから戻る
 # echo -n 'OKOK' > /dev/fl3
   もしくは
 # /usr/bin/write_ok
 # reboot

 あるいは、HDDのファイルシステムを破壊することで強制的に EMモードにすることができます。
 # rm -rf /
   あるいは
 # dd if=/dev/zero of=/dev/hda bs=1024 count=1024

イメージの転送

玄箱が EMモードになったら, 先ほど Debian のイメージに入れ替えた玄箱インストーラの KuroBoxSetup.exe を起動して、新しいイメージでセットアップします。 KuroBoxSetup.exe を起動しても「玄箱が見つかりません」というメッセージが表示されたら、EMモードになっていない可能性があります。 何事もなければ、セットアップは完了して、玄箱再起動後, 使用可能になります。

設定

上記の Debianイメージに入れ替えた玄箱のデフォルトの設定は以下のようになっています。

デフォルトユーザー
ユーザー名 tmp-kun
パスワード tmp-kun
root
ユーザー名 root
パスワード root
ネットワーク設定
IPアドレス 192.168.0.100
Gatewayアドレス 192.168.0.1
DNSアドレス 192.168.0.1

IPアドレスは固定です。 設定を行う PC にはターミナルソフトをインストールして、IPアドレスを玄箱につながるように(192.168.0.1 mask 255.255.255.0 など) 設定して LAN で接続します.

 telnet 192.168.0.100
 Debian GNU/Linux 3.0 KURO-BOX
 KURO-BOX login: tmp-kun
 Password: tmp-kun
 中略:
 Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 permitted by applicable law.
 KURO-BOX:~> su
 # 

アカウント tmp-kun でログインし、rootになり設定を行います。

たとえば、IPアドレスを設定するには、# vi /etc/network/interfaces

 IPアドレスを編集
 
 # vi /etc/hosts.allow
 hosts.allowを編集

 IPアドレスを変更したとき、hosts.allowも忘れずに変更します。 これを忘れてデフォルトと違うネットワークアドレスにすると二度とログインできなくなります。

Sargeをアップグレード

 この段階では Debian3.0(Woody) がインストールされている。  現行バージョン Debian3.1(Sarge) にアップグレードする。

/etc/apt/sources.listの編集

デフォルトの/etc/apt/sources.lismaruiha\tはsources.list.orgなどにリネームし、以下の2行をsources.listに新たに記述する。

 deb http://cdn.debian.or.jp/debian/ sarge main contrib non-free
 deb-src http://cdn.debian.or.jp/debian/ sarge main contrib non-free

編集が終わったら、

 apt-get update
 apt-get dist-upgrade 

アップグレードの際、いろいろと聞かれるが基本的にデフォルトでよい。 ただし、/etc/init.d/haltが書き換えられてしまい、電源ボタンによる shutdown が無効になってしまうので、 /etc/init.d/haltのPATH の次の行に

 PATH=/sbin:/bin:/usr/sbin:/usr/bin
 echo -n "EEEE" > /dev/ttyS1
 sleep 3

のように2行追加する.

TIPS

xterm、kterm をインストールしておくと、リモートからアクセスするとき便利なのですが、デフォルトのままでは xterm、kterm ともに pty 周りのエラーで立ち上がりません。 /etc/fstab を以下のように変更する必要があります。

 /etc/fstab
 none   /dev/pts     devpts  gid=5,mode=20           0 0
 ↓このように変更
 none   /dev/pts     devpts  gid=5,mode=620          0 0

xterm、kterm をインストールする。XLib 関係も同時にインストールされるので、容量に注意すること。

 # apt-get install xterm
 # apt-get install kterm

OpenRTM-aist のビルド

パッケージのインストール

パッケージのインストールには OpenRTM-aist-0.4.0 付属の Debian用パッケージインストーラ(pkg_install_debianSarge.sh)がそのまま使えます。 OpenRTM-aist-0.4.0 のソース展開後、root になり build ディレクトリーの下の pkg_install_debianSarge.sh を実行するだけです。

 > tar xvzf OpeNRTM-aist-0.4.0.tar.gz
 > cd OpenRTM-aist-0.4.0
 > cd build
 > ls
 略
 README.Debian  makewrapper.py             pkg_install_vl32.sh
 autogen        pkg_install_debianSarge.sh  pkg_install_vl4.sh
 略
 > su
 # ./pkg_install_debianSarge.sh

これでパッケージのインストールは完了です。

OpenRTM-aistのビルド

以降は通常のPCと全く同じです。

 > cd OpenRTM-aist-0.4.0
 > ./configure
 > make
 > su
 # make install

ただし、ビルドにはかなりの時間(1時間45分前後)を要します。

 > time make
 6048.130u 156.950s 1:43:36.53 99.8%     0+0k 0+0io 762267pf+0w

謝辞

玄箱への OpenRTM-aist のインストールにあたり、(株)前川製作所 技術研究所 基盤技術開発G 山下智輝氏の OpenRTM-aist-0.2.0 インストールレポートが大変参考になりました。また、下記の Webページの参考にさせていただきました。ありがとうございました。

リンク

玄箱PROへのインストール

kuro-box_pro.jpg

玄箱/PROスペック

CPU Marvell88F5182 (ARM9Core/400MHz)
RAM 128MB(DDR2)
Flashメモリ 256MB(NAND)/Linux2.6.12.6
LAN 1000BASE-T/100BASE-TX/10BASE-T×1ポート
外部IO USB2.0×2ポート, S-ATA×2, PCIex1×1, UART×1, GPIO×2, I2C×1, JTAG(ARM20pin)
HDD 3.5インチS-ATA 1個を別途用意.

インストールの流れ

玄箱PROのDebian化については、幾つか例があるのですが、sushi-k日誌2さんのところが最も楽にDebian化できるようでした。
  • sushi-k日誌2さんのところの手順に従ってDebian化する。
  • 必要なパッケージをapt-getでインストール(もしくはインストールスクリプトを使用)
  • OpenRTM-aistのビルド
  • インストール

OS入れ替え

sushi-kさんのところの手順そのまま。 使用するハードディスクは未フォーマットの物である必要があります。

tarの入れ替え

BusyBoxのtarは使えないらしいので、tarを入れ替えます。

 # wget http://w3.quake3.jp/sushi-k/pool/kuropro/debian/gnutar_kuropro.gz
 Windowsからsamba経由で玄箱に転送しても構いません
 # gzip -dc gnutar_kuropro.gz >/bin/tar
 # chmod a+x /bin/tar [Enter]

Debian化キットのインストール

Debian化キットをダウンロードしてルートに展開します。

 # wget http://w3.quake3.jp/sushi-k/pool/kuropro/debian/debian_kit.tar.gz [Enter]
 # tar xvzpf debian_kit.tar.gz -C / [Enter]

Debianイメージの転送

玄箱PROは共有ディレクトリのmtd device (/mnt/mtd) に
  • uImage.buffalo
  • hddrootfs.tar.gz
  • ChangeMeDevHDD
  • ChangeMyUbootEnv

を入れて、背面のリセットスイッチを長押しすると、HDDブート用のシステム構築を自動で開始します。(マニュアルに記述あり) そこで、Debianのディスクイメージをここからダウンロードし、これらのファイルをmtd deviceに置きます。 Windowsからsamba経由でもいいですし、wgetで取得してもOK。

HDDブート環境構築

 背面のリセットスイッチを5秒くらい長押しします。  すると、前面のオレンジのinfoランプが点滅してHDDのパーティショニング、フォーマット、イメージの展開などが行われます。  これらの作業中もログインしたままで中の様子を見ることができるので、あえてログアウトする必要はありません。 infoランプの点滅が消えたら作業が終了しているはずです。 再起動すればDebian化された玄箱が起動するはずです。

設定

 再起動直後、このシステムは以下の設定になっています。

IP アドレス 192.168.1.81
rootパスワード kuroadmin

ログインはsshでのみ可能ですので、適当なsshクライアントからログインして設定します。

OpenRTM-aistのビルド

パッケージのインストール

パッケージのインストールにはOpenRTM-aist-0.4.0付属のDebian用パッケージインストーラ(pkg_install_debianSarge.sh)がそのまま使えます. OpenRTM-aist-0.4.0のソース展開後, rootになりbuildディレクトリの下のpkg_install_debianSarge.shを実行するだけです.

 > tar xvzf OpenRTM-aist-0.4.0.tar.gz
 > cd OpenRTM-aist-0.4.0
 > cd build
 > ls
 略
 README.Debian  makewrapper.py             pkg_install_vl32.sh
 autogen        pkg_install_debianSarge.sh  pkg_install_vl4.sh
 略
 > su
 # ./pkg_install_debianSarge.sh

これでパッケージのインストールは完了です.

OpenRTM-aistのビルド

 以降は通常のPCと全く同じです.

 > cd OpenRTM-aist-0.4.0
 > ./configure
 > make
 > su
 # make install

ただし, ビルドにはかなりの時間(1時間45分前後)を要します.

 > time make
 5898.850u 251.470s 1:43:47.10 98.7%     0+0k 0+0io 278pf+0w

玄箱HGとあまり大差なし。

リンク

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 により電力供給が可能