このページは Friendly ARM で OpenRTMを動かすためのインストールの過程をまとめたものです。
要素としては、X window system、Python、TkInter、omniORB、omniORB-py、OpenRTM-Python版の動作です。
あくまでメモ書きであって、この手順通りに設定することでうまくいく保証はどこにもありませんが、関連する項目をまとめておくので、ネット上で一人くらいの役に立ちそうという期待5%くらいで残しておきます。
(残り95%は自分のメモとしての役割)
最終的な目的は、ロボットの制御システムの一つとして、研究室の標準技術にすることです(極めてローカル)。
用語:
- Friendly ARM:
中国のFriendry ARM社が作っているらしいARM9ベースの組み込みマイコンを搭載した廉価マイコンボード。
マイコンはSAMSUNGの携帯電話向けらしいもので、いろいろと変な周辺回路を内蔵している。LEDを点滅させる回路とか、CMOSカメラを直結できるIFとか。
このFriendly ARM基板は、そのあたりのマイコン本来の持つIF端子を可能な限り拡張端子で引き出した設計なところがとてもナイス。
タッチパネル付き液晶基板を簡単に装着できる(標準装備で3.5inch/7inchがある)。
いまのところ、日本国内における入手経路は極めて限られているものの、某社が日本にローカライズして売り出す計画があると聞いて、そこから購入(いまのところまだ実現にはいたっていないようだけど)。なお、ググると中国から進出した?通販業者が日本語ページで売っている。
熊谷研次期主力大規模制御マイコンに内定(中規模:H8、小規模:PIC、既存:coregaのボード)。
詳しいスペックは本拠地サイト
を参照のこと。
Linux2.6が動いて、ネットワークが使えて、Xが動かせて、USBがついてて、シリアルポートを4本くらい持っていたりする。
ストレージとして、SDカードが使えるので、本体搭載のFlashROMが64Mでも怖くはない。<どころか、カードを差しかえてリブートすれば機能も変えやすい。
- X Window System:
平たく言えば、グラフィック画面を出すのに手っ取り早い方法。
ここで解説するよりもググった方がずっとはやい。むしろ、X Window Systemってなんですか?という方にはこのページの記述はなじまない。
敢えて一言言うと、X Windows でも X Window でもない。ただ X もしくは X Window System。と昔先輩に口酸っぱく指導された(15年以上昔)。
- Python:
あちこちで見え隠れするインタプリタ・スクリプト系言語。
筆者も初心者なので、ググった方が早い。
コンパイル系言語ではないので速度的には不安があるが、移植範囲が広いこと、OpenRTMのサポート言語であること、TkInterと組み合わせれば移植性よくGUIが作れそうなこと、あたりを考えて、採用を決断。
- TkInter:
古くからあるGUI構築系ライブラリであるTcl/TkをPython上から使えるようにしたもの。
これもまた、ググるといろんな例が出てくる。
かっこいい・使いやすい制御系を構築する上で、案外ネックになるのが、GUIである。
数字が出るだけよりビジュアルな表示の方がぱっとみ分かりやすいが
- omniORB/omniORBpy:
CORBAなる、ネットワークベースの処理分散環境構築のための仕掛け、を実装した一つ。CORBA自体は規格なので、それを実装したものが商用、非商用ベースでいろいろあるらしいが、omniORBはOpenRTM指定品なので疑うことなく導入。Linuxディストリビューションでも標準でパッケージがあるらしい。
omniORBpyはomniORBをPythonで使えるようにしたもの。
本家サイト。
- OpenRTM:
環境構築の最終目標である「RTミドルウエア」。
RTミドルウエアも規格であって、実装が二つ以上あるらしいが、ここでは産総研開発のOpenRTM-aistをつかう。
一言で言えば、各種OSの上に積む、ネットワーク重視のロボット技術(Robot Technology)用途向けOSの一種。
「ミドル」というのは、基盤となるいわゆるOS部分とアプリケーションの間にあるという意味合い。
データベースなどもミドルウエアの範疇。そういう「間のソフト」の一種として、大規模ロボット制御・運用ソフトウエアを構築するのを効率化/手助け/再利用性向上などを目的として、国家プロジェクトの一部として開発されたシステム。
なお、ロボット技術はいわゆるロボットにとどまらず計測、制御など、ある意味「物理的実世界と関わり実体を持つコンピュータ応用技術」とも言え、その意味でネットワークベースの広域計測システムに使われることもある。
実装面で注目すべきは、機能を「コンポーネント」と呼ぶソフトウエアのモジュールに分解し、これをRTMを通じてネットワーク経由(もちろん、1台のコンピュータ内のローカルなネットもあり)でリンクして動作させること。
これにより
- 部分ごとに開発が出来る
- コンポーネントの入出力をしっかり規定することで流用性が増す
- 一部分だけをバージョンアップできる
- 実ロボットとシミュレータをつなぎ替えて制御実験することができる(もちろん、相応のシミュレータが必要)
- 一部機能だけを別コンピュータに飛ばせる。例えばコンピュータのスペック的に1台で動かし切れないときにコンポーネントの一部をネットワークで接続された別のPCに移動させられる。(そのほかUIのみ手のひらに、なども<これが今回の目的)
といったことが可能となる。
熊谷研ではこれまで10年前に開発したLinuxのメモリ共有型デバドラによって主に1台のコンピュータ上で似たようなコンポーネント化を行ってきたが、
- デバドラの保守
- Linux限定でWindowsで同じことができない
- 移植性がない
といった問題点があり、移行を決断。デバドラ型はオーバーヘッドが少ないため高速レスポンスが可能であるが、コンピュータがどんどん高速化する今の時代であれば、多少のオーバーヘッドは気にならないとも考えられる。
おおざっぱに、思い当たる必要なもの(ハード)を列挙しておきます。
ネットからダウンロード出来るようなものは、各手順ごとに書きます。
- Friendly ARM mini2440ボード+3.5インチタッチパネルのセット
(ググると国内で買えそう、eBayすると100ドル位で香港から買えそう)
ACアダプタも忘れずに。
- 開発環境をホストするための、余裕のある(CPUパワー、HDD 20G以上) Windows PC。
- インターネット常時接続環境+DHCP(ふつうのブロードバンドルータでOK)。
- シリアルポート、もしくは動作実績のあるUSB-シリアル変換ケーブル
- 余分な有線LANの口@HUB
- シリアルケーブル(クロスケーブル、初期導入セットの類だとついてくるかも)、LANケーブル、USBケーブル(A-B)
- USB-SDカードリーダライタ(+PCに接続するケーブル)
- 2GのSDカード(1Gで容量的にはOK、大きいのも多分OK、クラスは高いほど速そう)
Windows PCは64bitでも大半はOKですが、一部32bit Windows必至な工程があります。
シリアル変換ケーブル、リーダライタはWindowsPCで動作することを確認しておいて下さい。
(手元で、規格が古いのか、そもそもWindowsで読み書きできない事例がさっきあった)
あくまでAS ISです。
本ページを読む人に想定するレベルとして、
- Linuxカーネルの再コンパイルと聞いてピンと来る
- fdiskと聞いてピンと来る
- 書いてある通りのコマンドを打つのではなく、そのコマンドの意味を理解して自分の環境に合わせて、たとえば/dev/以下を変えられる
- ubuntu Linuxを使ってみたことがある
です。
つまり、大学学部生が、突然先生からなんかやれ、といわれてやってみるか、というレベルではいきなりは無理です。
ご注意下さい。
おそらく、ぐぐってここにたどり着いた方は、自動的にこの条件を満たすような経験中だとは思いますが。
質問を頂いても、まったくお答えできない部分があります。
自分の使う技術は可能な限り中身を理解すべきという信念ではありますが、そろそろ「ブラックボックスを信じてつかってもいいかな」と思う程度に年をとりました。
といいますか、理解するのは不可能な規模です。