Control robots with non-RT Linux

非RT Linux によるロボット制御

→ライブラリ
本ページは 1999年9月9日〜11日にわたって行われた, 「第17回日本ロボット学会学術講演会」において発表した (11日セッション3C3), 非RT Linux を用いたロボット制御法に関する提案を より実践的に 解説・情報提供していくページです.


そもそも, 研究室のロボットの制御OSとして, それまで使用していた MS-DOSに別れを告げたことからすべては始まりました. すでに, メジャーになっていた RT-Linuxを 採用することを当初検討していたのですが(当時, ART Linuxについてはまだ存在を知りませんでした), 制御ルーチンを カーネル内で実行する, という点にある種の恐怖(食わず嫌い?)を 抱いていました. MS-DOS 時代にもプログラムのミスで, 気付いたら ハードディスクのランプが光りっ放しになってて, あわててリセット したけれど, 一部壊れていた, という経験をしていました. RT-Linux の利点として, カーネル空間でプログラムを作成するため, ハードウェアに自由にアクセスできる, ということがありますが, 逆にいえば, ミスをすればいつでもシステムを破壊する危険性がある, ということです. それに比べ, Linux をそのまま使う分には, メモリの扱いをミスしても, Segmentation fault で止まるので安全です (当然, I/Oの扱いを間違ったときにはだめですが. メモリ保護については ART Linux でもその利点のひとつにはいっており, 事前に存在を知っていたら いまごろは ART Linux を使っていたかも知れません)

今回の対象だった2脚歩行ロボットはいまだ発展途上であり, 時間にクリティカルな部分で行っている脚の運動制御アルゴリズムを 頻繁に書き換えます. すでに実時間部分が固まっている用途ならまだしも, このような頻繁に変更する必要がある場合, 危険性は高いものとなります.

そんなある日, カーネルのソースを眺めていて, もしかしたら, Linuxの 機能には手を加えずに制御に使えるのではないか, と思い立ち, 幾らかの 試行錯誤と, 実際のロボットの制御システムの組み上げを経て, 十分使えるという結論に達したのでした.

この方法の特徴は

まとめると, 「手を抜きつつ, 安全に, そこそこ十分な性能を得る」と いうことになります. とある掲示板で「すごーくいい加減な方法」と 酷評されてしまいましたが, それは自覚の上です. きっちり手間をかけて しっかり修行を積んだ上で完璧に近い性能を出す必要があることもあれば, 手間をかけず, そこそこの性能で満足して, 研究そのものに時間をかける, というアプローチがあってもいいはずです.

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


手法と実践

非RT Linux による制御法の実際

実際にどうプログラムをつくれば良いかを含めた, 理論はつっこまない 実践法です.

Linux を制御に使うためのテクニック

Linux を制御に使うときに知ってると便利な小ネタです.

ライブラリ

プロセススケジューリングプロファイラ

学会発表でもつかった, プロセスがいつ, どのくらいCPUを使っていたかを 監視するためのプログラム群です. 今回の手法とは特に関係なく, この一式だけで完結しています

履歴

99/9/17 工事を開始しました
99/9/17 プロセススケジューリング監視ソフト(v1.0)を公開しました
99/9/20 第1期工事を終了しました
99/10/15 たまたまみつけた批判文書?にいいわけ

熊谷正朗/くまがいまさあき/kumagai@emura.mech.tohoku.ac.jp