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の
機能には手を加えずに制御に使えるのではないか, と思い立ち, 幾らかの
試行錯誤と, 実際のロボットの制御システムの組み上げを経て,
十分使えるという結論に達したのでした.
この方法の特徴は
- Linux を機能的には変更しないため, 任意のLinuxを使用することが
できます. やる気なら iMac もつかえるはずです.
(RT-Linux などはパッチの形で提供されるため, 適合バージョンを選びます)
- ごくふつうにプログラムを作成すればいいため, 新しい制御環境に
なれる手間がそれほど大きくありません. MS-DOSで制御したことがある
という場合には比較的容易に制御ルーチンが移植できます.
- Linux をそのまま使うので, 日常的に論文作成などに使う環境と
共通化できます. 実際, 私がふだん使っているコンピュータは
数ミリ秒単位の周期ルーチンをいつでも走らせることができる状態です.
- ちょっとしたミスでコンピュータをふっ飛ばす危険性がRT-Linuxに
くらべ低く, 多人数で共用する時の技術レベルの違いによるリスクが
少なくなります
(4年生からD3まで差がある研究室という性格上, 割合と重視しています).
- ただし, 周期精度はRT-Linux,ART Linux には劣ります.
ハードウエアレベルの割り込みによる遅延は受けますし, まれに
1ミリ秒とか周期が遅れることがあります. この遅れた分を
微分制御・積分制御などのサンプリング時間パラメータに反映させることで
制御への影響が食い止められる, また, 間隔が多少狂うよりも,
それ以外の外乱の方が支配的, といった場合には, あまり問題には
ならないとおもいます.
まとめると, 「手を抜きつつ, 安全に, そこそこ十分な性能を得る」と
いうことになります. とある掲示板で「すごーくいい加減な方法」と
酷評されてしまいましたが, それは自覚の上です. きっちり手間をかけて
しっかり修行を積んだ上で完璧に近い性能を出す必要があることもあれば,
手間をかけず, そこそこの性能で満足して, 研究そのものに時間をかける,
というアプローチがあってもいいはずです.
こんな方法で十分な性能が得られるのかどうか, 興味を
持たれましたら, 本ページのデータや実際にご自分でお確かめの上
ご判断下さい. それに必要な情報は公開しております.
手法と実践
実際にどうプログラムをつくれば良いかを含めた, 理論はつっこまない
実践法です.
Linux を制御に使うときに知ってると便利な小ネタです.
ライブラリ
学会発表でもつかった, プロセスがいつ, どのくらいCPUを使っていたかを
監視するためのプログラム群です. 今回の手法とは特に関係なく,
この一式だけで完結しています
履歴
99/9/17 工事を開始しました
99/9/17 プロセススケジューリング監視ソフト(v1.0)を公開しました
99/9/20 第1期工事を終了しました
99/10/15 たまたまみつけた批判文書?にいいわけ
熊谷正朗/くまがいまさあき/kumagai@emura.mech.tohoku.ac.jp