Monthly Archives: March 2006

RoboShellConsole20060330


RSC と サーボコントローラがシリアル通信出来るようになった。これで各値をサーボモータに送り込むことが出来る。現在、使えるコマンドはサーボの設定だけだが、コマンドは増えていく予定。コマンドの増加に伴い、ソフトも大規模になっていく。
ロボットの基本的な設定はこのソフトだけで行えるようにしたいと思っている。

RoboShellConsole20060329


UI 部分は出来上がった。後はシリアル通信用のモジュールを組み込めば完成。パラメータのロード・セーブもできるようになったので、サーボの角度をあらかじめ入力しておけるようになった。ひとつ、詰め切れていないのが、サーボの角度をPWMの直値で持たせるほうがいいのか、抽象化した角度で持たせたほうがいいのか?と言う点だ。PWMの直値だと、より高い分解能を設定できるが、角度だといまいちだ。ただし、角度のほうが直感的でわかりやすい。もう少ししたら、実際にサーボを多数接続出来るようになると思うので、その時に再び、考えることにする。

ジャイロ到着

ジャイロが到着した。3/18 にオーダしたから、10日もかかっていない。素晴らしい!!まだ、A/Dコンバータの読み込みソフトが出来上がっていないので試すことが出来ないが、早晩出来ると思う。しかし、納期が短いね。これはうれしい誤算。実際、もう少しかかるかな?と思っていたから…。更に開発のスピードを高めねば!!

RoboShellConsoleと UI考


PWM の値をシリアルポート経由で設定できる RoboShell は出来たのだが、いちいちキー入力していくのは面倒くさいし直感的ではない。そこでサーボの角度を簡単に設定できるソフトを考えてみた。もちろん、この手のソフトはロボットキット出している各社からもそのロボットキットと一緒に同梱されているが、見た感じ洗練されているUIとは言い難い。と言うのもPWMの設定をただ単に画面上に並べたスライダー(あるいは同等の)コントロールにマッピングしているだけだ。このUIは多分、ボリュームを並べたパネルをイメージして作成されたと思うが、PCの画面上と実際のボリュームパネルとに根本的な違いがある。PCではマウスを使って操作できるのは結局、ひとつのスライダーだけと言うことだ。本物のパネルであれば、両手を使って同時に制御できるのであるが…。
それぞれのサーボの設定を一覧できれば問題無い様に思える。UIのコンポーネントの配置は動線解析して決めた。現在はガワだけだが、中身に関しては今までの開発の蓄積でなんとかなりそうだ。最低限の実装は済ませておこうと思う。

RoboShell

シェル(ターミナル)から各種のコマンドが発行できるようになった。このシステムを RoboShell と名付けた。こうなってくると開発の速度も上がってくるし、各種の実験も非常にやりやすくなる。現在はPWMのデューティを変えるだけだが、早いうちにサーボの位置情報を取得できるキャプチャコマンドも実装しようと考えている。現在のところ、サーボの位置情報を出力するのはレッドバージョンとHMIがある。2機種ともほぼ、同じコマンド体系なのでそのままいけると考えている。特にHMIのサーボはレッドバージョンに比べて安価なので期待している。
キャプチャコマンドまで実現できたら、モーション作成ソフトだな。その後は各種のハードについて、実験を行う予定。

ロボコン基板がスクリプトを多用している理由


Blue Marionette のコントローラのソフトウェア構成をあれこれ検討している。検討に伴い、各社からリリースされているロボのコントローラについて調べている。
各社のコントローラについているのがスクリプト機能だ。これはサーボの制御やセンサからの入力をサポートする、そのボード用の中間言語になる。ネイティブ原理主義者としてはこれはいただけない。やっぱり、ネイティブでしょ?と言うわけで、なぜこの様な言語が必要になるかを考えてみた。




  1. 簡単に動作を記述できる


    ロボットは様々な技術の複合体である。ソフトの処理内容だけでも、かなり複雑になる。この複雑さを緩和できるのはそれだけで価値のあることである。


  2. 内部処理の隠蔽


    こう書くと、上記にダブるようだがネイティブな処理内容を企業的に保護したい場合もあり得る。つまり、第3者にパクラれないようにするためだ。


  3. 技術的な問題


    プログラムをモーションデータを格納する領域がどのメモリ媒体を使っているかによる。フラッシュなどにプログラムやデータを書き込む場合は書き込み回数の制限を受けるが、バッテリバックアップのSRAMなどであれば、実質的に書き込み制限が無くなる。中間言語の形式で格納できるスクリプトはSRAMなどの相性とも良い。





上記のように様々な理由が考えれるが、今回はネイティブ。フラッシュROMの利用を前提にロボットのソフトウェアを構築していく。

リファクタリング

先日、購入したレッドバージョンのサーボの位置情報読み取りルーチンを検討している。この機能を実現するためにCPLDを製作したのだが、ピン数を削減するために処理が少し複雑になった。そして、この機能も当然、シェルに組み込むので、今まで製作したモジュール各部を色々と見直す必要が出てきた。そこで、インテグレーションの前にリファクタリングを始めたというわけだ。
このリファクタリングを通じて、各モジュールの独立性が一気に高まった。特に割り込みルーチンをそれぞれのモジュールに持たせるようにしたので、プログラムの構成がすっきりしてきた。
レッドバージョンの読み込みはPWMを動作させながらのパルスの読み込みを行う多重割り込みになる。かなり、面白そうだ。

コードネーム The Blue Marionette (憂鬱なあやつり人形)

現在、製作中のロボットにコード名を付けることにした。その名は Blue Marionette。 CPLD のIP提供者とチャットしている中から生まれたんだけど、何となくロボのシステムをあらわしているし、作者(俺自身)の心情も表しているので、結構気に入っている。
こんな本もあるみたいだけど、なんか難しそう。The Blue Marionette
読んでみたいけど…。

shell 完成?

最低限の機能を確保したターミナルプログラムが完成した。今まで色々な人がこの手のソフトを作成したと思うが、その中でも最もショボイ部類に入るのではなかろうか?
後で作成するクライアントソフトで隠蔽(頬被り)するしかないな…。
こんな感じ…、
固定長の命令で扱えるデータは 0~9 までの数値のみ。
cccc xxxx yyyy zzzz
cccc はコマンドID、xxxx – zzzz はパラメータ 0000 ~ 9999 まで使える。
次はクライアントソフトだな。

サーボモータ

ロボットのコントローラの仕様やハードも固まってきたので、そろそろサーボを使った実験がしたくなってきた。PWMで普通に制御する分にはまったく問題なさそうだが、気になるのはフィードバック情報の取得だ。これについては、まとまった資料が無いので、手探りかあるいは製造元に訊ねなければいけない。
とりあえずはシェルを完成させて、そこでサーボのコントロールを出来るようにしなければならない。これが出来れば、PCのクライアントソフトを充実させて、ティーチングなどが行えるようになる。で、今回買ったサーボモータは近藤科学のレッドバージョン ICS-2350HV だ。結構、高かったけれど今回のロボにはこのクラスが相応しい。
行くぜ!!