そもそも、研究室のロボットの制御OSとして、それまで使用していたMS-DOSに別れを告げたことからすべては始まりました。
すでに、メジャーになっていた RT-Linuxを採用することを当初検討していたのですが
(当時、ART Linuxについてはまだ存在を知りませんでした)、
制御ルーチンをカーネル内で実行する、という点にある種の恐怖(食わず嫌い?)を抱いていました。
MS-DOS 時代にもプログラムのミスで、気付いたらハードディスクのランプが光りっ放しになってて、
あわててリセットしたけれどディスクの一部壊れていた、という経験をしていました。
RT-Linux の利点として、カーネル空間でプログラムを作成するため、ハードウェアに自由にアクセスできる、というものがありますが、
逆にいえば、ミスをすればいつでもシステムを破壊する危険性がある、ということです。
それに比べ、Linux をそのまま使う分には、メモリの扱いをミスしても、Segmentation fault で止まるので安全です。
(当然、I/Oの扱いを間違ったときにはだめですが、ポインタをミスってメモリを壊すことが失敗例として多いのではないでしょうか。
メモリ保護についてはART Linux でもその利点のひとつにはいっており、事前に存在を知っていたらいまごろは ART Linux を使っていたかもしれません)
当時、私の制御対象だった2脚歩行ロボットはいまだ発展途上であり、
時間にクリティカルな部分で行っている脚の運動制御アルゴリズムを頻繁に書き換えていました。
すでに実時間部分が固まっている用途ならまだしも、このような頻繁に変更する必要がある場合、危険性は高いものとなります。
さらに、大学の研究室というところは、プログラム作成の熟練者から、はじめてCのプログラムをつくるという初心者までが共同で実験を行う場です。
このような環境ではいくら上が注意しても、「巻き添え」という不幸が付き物です(一人ロボット1台なら別ですが...)。
それを考えるとRT-Linuxの採用にはためらいがありました。
そんなある日、カーネルのソースを眺めていて、もしかしたら、Linuxの機能には手を加えずに制御に使えるのではないか、と気付きました。
幾らかの試行錯誤と、実際のロボットの制御システムの組み上げを経て、十分使えるという結論に達したのでした。
この方法の特徴は
- Linux を機能的には変更しないため、任意のLinuxを使用することができます。
モトローラ系やSPARC系、組み込みのSH4系など、Linuxがサポートする全アーキテクチャが対象です。
また、最新のカーネルでも大丈夫(なはず)です。
(RT-Linux などはLinuxの改造という形で提供されるため、一部対象を追い掛けて提供になります)
- ごくふつうにプログラムを作成すればいいため、新しい制御環境に慣れる手間がそれほど大きくありません
(Linuxの使用経験があれば、手間は実質0)。
MS-DOSで制御したことがあるという場合にも比較的容易に制御ルーチンが移植できます。
- Linux をそのまま使うので、日常的に論文作成などに使う環境と共通化できます。
実際、論文執筆などで使っているコンピュータが制御システムの開発実験機だったこともあります。
- ちょっとしたミスでコンピュータをふっ飛ばす危険性がRT-Linuxにくらべ低く、
多人数で共用する時の技術レベルの違いによるリスクが少なくなります
(4年生からD3までいる研究室など)
- ただし、周期精度はRT-Linux,ART Linux には劣ります。
ハードウエアレベルの割り込みによる遅延は受けますし、まれに1ミリ秒とか周期が遅れることがあります。
この遅れた分を微分制御・積分制御などのサンプリング時間パラメータに反映させることで制御への影響が食い止められる、
また、間隔が多少狂うよりも、それ以外の外乱の方が支配的、といった場合には、あまり問題にはならないとおもいます。
まとめると、「楽をして、安全に、そこそこ十分な性能を得る」ということになります。
RT-Linux や ART-Linux を使用している方々やリアルタイムOSの専門家の方々にはいい加減な方法と映ると思いますが、
「目的に十分な性能なら、楽なほうがいいじゃないか」がこの手法のポリシーです。
OSなどという、多くの研究者にとって学術研究の土台にしかならない部分で「はまる」ことは時間の無駄と思います。
そういう意味からもRT-Linux や ART-Linux を簡単に使いこなせる、という場合には、それらを使用することを推奨しておきます。
こんな方法で十分な性能が得られるのかどうか、興味を持たれましたら、本ページのデータや実際にご自分でお確かめの上でご判断下さい。
それに必要な情報は公開しております。不明な点は、ご質問を受け付けております。