はじめに

[| ]  最終更新: 2023/02/14 18:28:00

このページについて

このページは 1999年9月9日〜11日にわたって行われた、 「第17回日本ロボット学会学術講演会」において発表した (11日セッション3C3)、 「非RT-Linux を用いたロボット制御法に関する提案」をより実践的に解説・情報提供していくページです。
対象は です。 すでに RT-Linux, ART-Linux, VxWorks等 を使いこなして、現状に不満が無い方には、そのままご使用を続けることをおすすめします。 ここで解説する方法は、「導入・慣れのための手間」・性能比には優れますが、性能そのものは当然 RT-Linux, ART-Linux より多少は劣ります。 これから始める、という方には選択肢のひとつとして、おすすめの方法です。 そのへんのLinux系雑誌を一冊買ってくるだけで、制御環境が整うかもしれません。

はじめに

そもそも、研究室のロボットの制御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の機能には手を加えずに制御に使えるのではないか、と気付きました。 幾らかの試行錯誤と、実際のロボットの制御システムの組み上げを経て、十分使えるという結論に達したのでした。

この方法の特徴は

まとめると、「楽をして、安全に、そこそこ十分な性能を得る」ということになります。 RT-Linux や ART-Linux を使用している方々やリアルタイムOSの専門家の方々にはいい加減な方法と映ると思いますが、 「目的に十分な性能なら、楽なほうがいいじゃないか」がこの手法のポリシーです。 OSなどという、多くの研究者にとって学術研究の土台にしかならない部分で「はまる」ことは時間の無駄と思います。 そういう意味からもRT-Linux や ART-Linux を簡単に使いこなせる、という場合には、それらを使用することを推奨しておきます。

こんな方法で十分な性能が得られるのかどうか、興味を持たれましたら、本ページのデータや実際にご自分でお確かめの上でご判断下さい。 それに必要な情報は公開しております。不明な点は、ご質問を受け付けております。


制御するということ

なんらかのハードウェアを制御するというとき、コンピュータのすべき仕事は、 です。 これらの仕事はいかなるコンピュータを使おうとも、いかなるOSを使おうとも必要となる機能で、 どんなコンピュータでも性能さえ足りていれば、やればできます。 もちろん、ハードウェアとのやり取りは、OSによって難易度が様々です。 その点、Linuxについては デバイスドライバなしでも かなりのことが可能 ですし、デバイスドライバをつくることも難しくありません。 (くわしくはデバイスドライバの作り方参照)。

次に問題になってくるのは

ということです。 近年の制御手法の多くは一定周期で制御則を実行するものが一般的です。 OSなしのシステムやMS-DOSのようなシングルタスクのOSでは、CPUを自由に使用できるため、この点問題がありません。 それに対して、マルチタスクのOSではCPUを使える時間が原則として不定であるため、うまくいかない可能性があります。 リアルタイムOSといわれるOSは、マルチタスクでありながら、この点を考慮して、ある仕事を確実にある時刻に(一定間隔も当然可)で こなしたりすることが可能なようになっています。

RT-LinuxやART-LinuxはLinux本体を改造することで、リアルタイムOSとして使うことが出来るようにしたものです。 オリジナルのLinuxには、リアルタイムOSとしての機能がありません(一部、便宜は図ってくれますが)。
しかし、このことだけではLinuxがこのような制御に使えないということにはなりません。 RT-Linux, ART-Linux は「リアルタイム機能をつけて実行タイミングを保証」するものです(保証するよう努力)。 保証されなくとも、使える可能性はあるわけです。

事実、多少の周期のばらつきを容認できれば、十分つかえます。 このページは 「どのくらいつかえるか」を示し、多くの方の手間を省くことを目的としています。


情 報

ご注意

本手法は、熊谷自身はこれで十分やっていけると信じて、実際につかって成果を出した方法です。 ですが、上述の通り、確実さは保証されていません。 ディスクアクセスが頻繁であるなど、Linuxそのものへの負荷が大きい環境では十分な性能が出ないことも予想されますので、 大規模システムや信頼性重視のシステムに使用する場合はご注意下さい。

本ページの情報の利用について

情報公開のためにつくったページですので、本ページの情報のご利用に制限はございません。 ご利用に関する詳細につきましては、こちらをご覧下さい。 また、本ページの情報が研究上重要な意義を持つ場合がございましたら、 成果発表の際に引用などでご紹介いただければ幸いです。


発表済文献等:

履 歴

03/08/31 移転作業により一部修正。
03/08/31 「Linuxカーネル」によると、Linux2.6になると最初からHZ=1000で、カーネル再構築の手間も要らなくなるようです。 確認がとれ次第、報告します。



熊谷正朗 [→連絡]
東北学院大学 工学部 機械知能工学科 RDE
[| ]