Armadilloの電源を入れてください。
工場出荷状態のArmadilloは起動可能なカーネルおよびユーザランドが書き込まれてい無いことがあります。 アットマークテクノで配布しているデフォルトのカーネルとユーザランドを書き込んで機能可能な状態にしてからご利用ください。
有効なネットワークにLANケーブルを接続してください。
ArmadilloはデフォルトではDHCPでアドレスを取得してネットワークに接続します。 利用しているLAN上にDHCPがない場合、DHCPサーバを立てるか、Armadilloに固定アドレスを振る設定を行ってくださ。
SDメモリカードはArmadilloの起動前にカードスロットに差し込む必要があります。Armadillo動作中、RTC起動中に抜き差ししないでください。
必要なファイルが一つでも欠けている場合コンポーネントは起動しません。 Armadilloにログインし、/mnt ディレクトリを確認してみます。
atmark-dist v1.30.0 (AtmarkTechno/Armadillo-440) Linux 2.6.26-at16 [armv5tejl arch] armadillo440-0 login: root Password: root [root@armadillo440-0 (ttymxc1) ~]# ls -R /mnt /mnt: boot.sh* rtc/ rtc1577.log* rtc1709.log* rtc1747.log* lib/ rtc.conf* rtc1688.log* rtc1728.log* /mnt/lib: libRTC-1.1.0.so* libgcc_s.so.1* libomnithread.so.3* libc.so.6* libm.so.6* libpthread.so.0* libcoil-1.1.0.so* libomniDynamic4.so.1* libstdc++.so.6* libdl.so.2* libomniORB4.so.1* libuuid.so.1* /mnt/rtc: SeqOutComp*
上記の例SeqOutCompを動作させるには、このような構成になっている必要があります。
Armadilloにログインして、マウントポイントを確認します。
[root@armadillo440-0 (ttymxc1) ~]# mount /dev/ram0 on / type ext2 (rw) proc on /proc type proc (rw) usbfs on /proc/bus/usb type usbfs (rw) sysfs on /sys type sysfs (rw) udev on /dev type tmpfs (rw) ramfs on /home/ftp/pub type ramfs (rw) /dev/mmcblk0p1 on /mnt type vfat (rw,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1)
最後の行、/dev/mmcblk0p1 が /mnt ディレクトリにマウントされています。 もし、/dev/mmcblk0p1 がマウントされていない場合、
# mount -t vfat /dev/mmcblk0p1 /mnt
のようにして手動でマウントしてみます。
起動スクリプトにバグがあり、RTコンポーネントが起動できないケースがあります。 起動スクリプト boot.sh に書いてある手順通りに、シリアル端末からRTCを実行してみる。
Armadilloに複数のネットワークインターフェースがあり、PC側から届かない方のアドレス (Unreachable) がセットされている場合、システムエディタがRTCのプロファイル情報を取得できずにゾンビ表示になります。
Armadillo上で実行するRTC用のrtc.confにendpointを設定してください。
corba.endpoints: 192.168.0.10: # 192.168.0.10: はArmadilloのネットワークインターフェースのアドレス
PCとArmadilloの間にファイヤウォールがある場合、またはArmadilloがNATを介してネームサービスに名前を登録している場合、PC側からはArmadilloに到達することができずにゾンビン表示となります。
ArmadilloをPCと同じセグメント(ネットワーク)に接続して起動してください。
ポートの接続をする際にはコンポーネント同士でポートのオブジェクト参照を交換します。 その際、相手のポートのIPアドレスおよびポートを利用して相手のポートの接続しに行くため、両RTC間が相互に到達可能なIPアドレスである必要があります。
特にPC側はVMwareなどがインストールされており、ネットワークインターフェースをたくさん持つ状態になっています。 たとえば、PC側のRTCが持つVMネットワークのプライベートアドレス 192.168.5.10 を、RTC上のRTCのオブジェクト参照内に埋め込むと、Armadillo側のRTCは 192.168.5.10 にポートの接続をしに行こうとします。この192.168.5.10というアドレスは、VMwareの仮想プライベートネットワーク内でのみ有効なアドレスなので、Armadillo側のRTCは到達し得ないポートに接続しに行こうとし、タイムアウトになるまで試行します。 この時、RTSystemEditorはRTCから応答が返ってこないため固まります。
この場合、PC側のRTCが読み込むrtc.confにendopiintを設定する必要があります。 ipconfig 等のコマンドでPCの実際のLAN上でのアドレスを調べ (仮に150.29.123.123とします)、
corba.endpoints: 150.29.123.123:
のようにcorba.endpointsオプションに指定します。最後のコロン「:」は必ず付けてください。
実行しているRTCと、そのRTCが利用しているライブラリ (Linuxでは.so、WindowsではDLL) のバージョンに不整合がある場合、何らかの操作をすると落ちるケースがあります。 RTCとそのRTCが参照しているライブラリのバージョンを確認してください。
自作のRTCの場合、RTCに実装したロジックにバグがあればRTCは落ちます。 OpenRTM-aistに付属のサンプルRTCは簡単なロジックのものしかありませんので、この原因の可能性は低いでしょう。
OpennRTM-aistのバグの可能性がある場合は、
を添えてメーリングリストにて報告してください。
その他、どうしてもうまくいかない場合は、メーリングリスト ( OpenRTM-users ) で気軽に質問してください。