« 2006年02月 | メイン | 2006年04月 »

2006年03月30日

RoboShellConsole20060330

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

2006年03月29日

RoboShellConsole20060329

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

2006年03月28日

ジャイロ到着

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

2006年03月25日

RoboShellConsoleと UI考

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

2006年03月23日

RoboShell

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

2006年03月22日

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


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




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


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


  2. 内部処理の隠蔽


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


  3. 技術的な問題


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





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

2006年03月21日

リファクタリング

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

2006年03月20日

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

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

読んでみたいけど…。

shell 完成?

最低限の機能を確保したターミナルプログラムが完成した。今まで色々な人がこの手のソフトを作成したと思うが、その中でも最もショボイ部類に入るのではなかろうか?
後で作成するクライアントソフトで隠蔽(頬被り)するしかないな…。
こんな感じ…、

固定長の命令で扱えるデータは 0〜9 までの数値のみ。
cccc xxxx yyyy zzzz
cccc はコマンドID、xxxx - zzzz はパラメータ 0000 〜 9999 まで使える。

次はクライアントソフトだな。

2006年03月18日

サーボモータ

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

行くぜ!!

ジャイロ

ロボットの姿勢制御にはやはり、ジャイロだと言うことで、オーダーしてみることにした。ムラタ製作所のジャイロ ENC-03R をオーダすることにした。問い合わせ→見積もり→発注が大変スムースに行えた。この会社のプロセスが、うまい証拠だろう。これで、納期どおりに納入されたら、本当に凄いことだ。
ジャイロでは色々と実験してみたいことがあるので、各種の実験を行う予定。ただ、ジャイロは戦略物資に相当するので、誓約書の提出が求められる。この辺、注意が必要だ。

到着が本当に楽しみだ。

2006年03月16日

Shell

ガテンな組込み機器の場合は単機能になり、人間は制御にあまり介在しない。パラメータを変えた場合でも再ビルドだ。でも、開発の初期にこれでは面倒くさい。そこで簡単なターミナル機能(シェル)を搭載することにした。参考にしたのはこのコードだ。割り込み駆動のシリアル制御のプログラムなのだ。シェルにより対話形式でコントローラに指示を与えることが出来る。もちろん、専用のクライアントを装備すればかなりUIが改善される。現在はまだ、シェルの枠組みを作っただけでコマンドなどは決めていないが、試してみたい動作はそれなりにあるので、順番に実装していこうと思う。

ゲーム(機)離れ

先日、ゲーラボの元編集長とゲーム機改造を生業としている某氏とお茶した。PS3をはじめとしたゲーム機でどういう改造が出来るか?と言うものだった。あまり、なさそうだな?と言うのが各氏の結論。そこで、おいらはロボット、そうロボット。

で、そこから遡ること、さらに数日。ゲーラボの現編集長と飲みに行ったんだけど、新しいゲーム機で何をやりますか?って話になった。PS3はスパコンを家庭に持ち込んだもので、SCEもスパコンのエンジニアを募集していた時期があった。
スパコンの使用を前提とした利用方法を読者に提案すればよいのでは?と言ってみた。具体的に言うと、各種のシミュレーションなどをご家庭で行うのだ!!
例えば、「天気予報」とか「自動車の衝突時の乗員挙動解析」とか「原爆」とかだ。出来の良いシミュレーションはゲームと区別がつかないのだ。一級のおもちゃなのだ。
まぁ、PS3にLinuxが搭載されれば、早晩そういうアプリケーションが出てくると思うのだ。

俺もかなり、期待しています。

2006年03月15日

PWM-SDC

Board

写真は サーボコントローラのファンクショナルプロトタイプ。これが実際のロボットに載るのではなくて、制御ソフト制作、検討用のハードウェアだ。もちろん、ロボットに搭載してもOKだが、2足歩行ロボットではなくて、もう少しガワの大きいロボットになるだろう。EIA-232Cの信号変換モジュールはBluetoothのモジュールと換装できるようになっている。

CPLDのIPは、鬼吸い の共同開発者が作成してくれた(多謝)。これで、緑色の部分まで対応したPWM−SDCが出来たことになる。ただし、CPLDの規模の関係で、16ch までしか装備していないが、今後は基板を製作して、CPLDをより大規模なものに付け替える予定である。幸いCPLDのリソースはまだ十分あるのでより便利な制御に必要なファンクションを追加することも可能だ。SDCはSignal Distribution & Capture の略称である。現在はPWMの分配までしかソフトを作成していないので、Red バージョンの信号取り込みプログラムの作成が急務となる。

うーむ、そろそろ研究用のサーボを購入するかな…?

2006年03月14日

Origami

今まで、色々とロボットのコントローラについて研究したけど、そろそろ決定版が出るような感じ。この機械ではないかもしれないけど、両手でしっかりホールドした時にちょうど親指が画面(タッチパネル)の左右に触れるようになり、これをキーボードの代わりにすることが提案されている。これぞ、まさしく今まで求めてきたUIだと思う。画面にコントローラを仮想的に出すことにより、手の大きさや状況に応じた(コンテキストセンシティブ)キーの組み合わせを実現できるからだ。

機体製作を急がねばっ!!!

2006年03月13日

PWM-SD on CPLD ??

PWM-SD を CPLD 化すべく、色々とやっているんだけど、とりあえず、VHDLで図の赤色の部分は出来た。
Xilinx 用のツールをダウンロードするところから始めて、VHDLの文法を確認しながら、シミュレータにぶち込んでみた。
何度か VHDL やシミュレーション用のタイムテーブルを書換えているうちに、シミュレータにうまく結果が出力されないなどのトラブルはあったが、なんとかシミュレータの動作確認まで出来た。
実機に焼き込もうと思うのだが、けっこうリソースを食潰しているような感じ…。最終的にはもう少し、大きいCPLDかFPGAになるかもしれないな。

2006年03月11日

本末転倒?

生CPLDに挑戦すべく、秋月電子で Xilinx の XC9572XL を買ってきた。価格は300円。これは0.65mm の表面実装デバイスなので、使いやすくするために変換基板に実装する。変換基板の価格は 510円。デバイスより高い…。どういうこと?試作だと大変だよね。早く、ロボット専用基板が欲しくなったよ。

PWM-SD CPLD 化

トランジスタ技術の付録である CPLD 基板を早速、使ってみた。何を隠そう、CPLDを本格的にやるのはこれが初めてなのである。もちろん、ソフト開発で言うところの HelloWorld チックなことは…そう、LEDの点灯とかはやったことがあるけど〜。
パーツは全部、揃ったので一気に組み立てて動作確認までやってみた。問題ない。サクサク進む。
調子に乗って、PWM-SD の中核部品である 74HC237 を入力した。ライブラリにあるかな?と思って探してみたんだけど、無さげな様子。気合の回路図入力(HDLをまだ、マスターしていないんです。)でなんとか出来上がった。早速、昨日作ったプログラムを走らせると…。「動く、動く〜♪♪やったぁー一発だぁー!!」
かなり、モチベーションが沸いてきた。付録の基板は Altera の CPLD ベースなんだけど、入手性で言ったらXlinx も良いのかな?って気がする。
とりあえず、秋月電子で Xilinx かな?変換基板も一緒に買って、生CPLDに挑戦してみるつもり。これが出来たら、いよいよ基板化だな。

2006年03月10日

PWM-SD 基礎実験成功

ここ数日、テンパッていた PWM-SD だがとうとう動き出した。ハードの変更は無し。ソフトもPWMの割り込みを用いているので、以前のより、コンパクトになった。前に使っていたタイマは別の用途に使うことにしよう。
4月号のトランジスタ技術の付録はCPLDの評価基板
どのCPLD/FPGAを今回のロボットに使うかはまだ、未定だが手元のパーツを確認すると、DB25の♀コネクタやら♂−♂のケーブルなんかも出てきたので、HDLの勉強を兼ねて今回の評価基板を使ってみようと思う。
端子さえ合わせておけば今回作成したソフトでそのままCPLDの動作確認も出来るので便利なのだ。以前に検討した回路は色々と調べてみると、マルチプレクサとデマルチプレクサとカウンタの組み合わせで実現できそうである。これらはHDLの教科書にサンプルが載っているので色々と都合が良い。なんとかなりそうな予感。

2006年03月09日

あぁ、カン違いのカン違い?

うまく、動作しなかったことで若干の視野狭窄に陥っていたようだ。ちょっと、ソフトを工夫すればいけそうな感じだ…?
具体的なアイデアはPWMのMatch0で割り込みを発生させて、そこでポートのOn/Offを行えばいいはず?
レスポンスの時間とか、実際のPWMの値の書き換えなどが絡んでくるので、実験してみるまではなんとも言えない。ちょっと、試してみよう。

2006年03月08日

あぁ、カン違い

PWM-SD の実現方法で、思いっきりカン違いがあった。元々、この辺はあまり自信があって実装したものではないけれど動かないのはやっぱり悔しい。
カン違いは LPC2138 のタイマの取り扱いだ。PWM, Timer0(MAT0) ともてっきり、同じ TC を使っていたかと思っていたけど、実は違う。ソフトが組みあがって、ようやくそれに気づいたわけだ。現在はPWMを4ch使って、4x8=32ch のサーボをコントロールできるようにしているけど、PWM をひとつ、ラッチに割り当てる必要があるので、3x8=24ch になりそう。
コントロールできるサーボが少なくなるのは痛いけど、他にやりようが無いので、仕方が無い。ハードの改造、ソフトの変更に少し時間がかかりそうだ。
これも勉強だと思って、甘んじて受け入れよう。

2006年03月07日

LPC2138

mini EZ-ARM 7 のテストソフトがだいぶ、書き溜まってきた。近いうちにページにまとめたいと思っている。 現在は PWM-SD の機能を実現するための実装だが、今後システムを拡張するにつれて他の周辺機器を用いた実装も出てくることが予想される。これらも順次、実装例として紹介したい。 割り込みハンドラなども動作するようになったので、色々と使えそうだ。プログラムで共通に使うファイルはディレクトリを決めて括り出した。同じディレクトリ構成にしてもらえれば、すぐに使えると思う。ディレクトリの設定例はこちらを参考にしてほしい。

2006年03月06日

PWM-SD 動作の為に

PWM-SD 動作の為に必要なMCUの処理内容の理解と整理がほぼ、完了した。MCUのI/O周りの処理を統合すれば、出来そうな感じなのでそろそろ、書き出してみようかと思う。
サーボを効率よく動作させるためには、その他の要因もかなり絡んでくると思うが、まずは PWM-SD の動作からだ。この後に、モーション定義のためのシステム要件である、時間軸の制御(リアルタイム処理)が入ってくるのだ。

2006年03月05日

中学一年の頃を思い出した…

最近は LPC2138 のテストプログラムを書き殴っている。動作を理解するために、サンプルプログラムを解読しているわけだが、その中に出てきている I/O レジスタの名前から動作の理解を深めているところだ。少し見たことがある省略形やそれだけでは意味のわからないレジスタ名などいろいろある。マニュアル片手に意味を解読する作業は、中学一年生以来の作業だな…。
繰り返し、使っているうちに言葉(レジスタ名)と動作(働き)を覚えていくわけだ。

なんか、外国語の勉強をしているみたい…。

最近の組み立て家具って…

エレクタープロ以来、この手の組み立て家具は使ってこなかったんだけど、最近の組み立て家具を見て、驚いた。
専用のCADが用意されていて、それで出来上がりイメージを3Dで見ることができるのだ。で、見積もりまで同時に出せる。
便利な世の中になったものだ…。

近いうちに実践導入だな。

2006年03月02日

NDS Lite

近所のヨドバシに9:00頃、行ったけど凄い混み方だった。聞くところによると、その店では300台出荷で、7:30位に着いても200番台後半だったらしい…。

とりあえず、こんなゲームを作りたい…。


  • カーリングゲーム


    今、旬でしょ?でも、どっかが出しそう。


  • ハンダ付けゲーム


    最初はラグ板とか使って、抵抗の足とかを配線する。最高レベルは1005のチップ部品のハンダ付けとか…。十字ボタンをハンダに見立てて、右手のタッチペンがハンダゴテ。先に左手(ハンダ)をボタンから離さないと、解けすぎるとか、コテを当てすぎると、パターンが剥がれるとか…。引きハンダとかできると良いなぁー。