SISO-LAB不定期TOPIC Aug.2004


2004/08/30

TMの.tmkファイル 

.tmkを眺めていたら
昨日、motファイルの作成、書き込みに無事成功したわけですが、TMでプロジェクトを生成すると自動的にできる「.tmk」というファイル、よく眺めていたら、いわゆる「makefile」のようです。よくみたら、「t」の「mk」…名前で気づきなさい〜と言われてしまいそうですが、あまり詳しくないんで…はい。

というわけで、昨日、motファイルのために追加した「$(LMC) $(LMCFLAGS) $(OUTDIR)\$(ABSFILE)」ですが、.tmkファイルの上のほうに、$(LMC)の定義が書いてありました。「LMC30」というプログラムです。ビルドすると、

「LMC30 -L 出力ディレクトリ\ほにゃらら.x30」

というコマンドラインとして実行されると思います。試しては無いですけど、コマンドライン派の方は、よかったらお試しください。

ところで、TWO LEGSさんのところで、「OAKS16-MINIで遊ぶ」というコンテンツが追加されています!おおっ。オークス電子でテクニカルニュースがあるんですね!早速チェックしてみよう。さらに…ネコの顔が丸くなっています。え?え?いつから丸くなってました???(前のも捨てがたい…)

ROBO-ONE DVD
ROBO-ONE DVD届きまして、早速見ています。三月兎さん、ありがとうございます〜。いや〜、興奮します。研究ネタとしても最高です。いろいろわかりますね〜。しかも、J-Classの特典映像が「G-Tune変形」。うれし〜。また、全部観たら感想とかアップしちゃおうっと。

今は、J-Classを観ていますが、自分のケーブルで足を引っ掛けて転んでいると思われるロボットもあったりして、どっかな〜って思うこともしばしば。ケーブルが絡まり気味のときは、レフリーが止めて解かせてくれるとかしたほうが、格闘としては面白いと思います。今度、ROBO-ONE委員会にメールしてみよう。

 

2004/08/29

OAKS16-MINIでフラッシュROM書き込み

フラッシュROM書き込みテスト完了
昨日、デバッガ経由でのプログラム実行ができましたので、今日は、張り切って、ROM書きにチャレンジしました。TMを使って、「プロジェクトの新規作成」から「Flash Starterで書き込み」までやりましたので、簡単にレポートします。

前提としては、OAKS16-MINI付属の、「Man_miniFullKit.pdf」に従って一通りの作業が終わっているものとします。また、実際に実行したプログラムですが、サンプルにあった「mini1.c」を修正して使っています。

■プロジェクトの新規作成とデバッガで実行
TMをインストールすると、「TMユーザーズマニュアル」というのも一緒にメニュー登録されますので、「クイックツアー」(まつしろさんより)を読みながら、新しいプロジェクトを作ります。「アイテムの編集」−「アイテムの追加」にてソースファイルを追加します。この場合、これから作るファイル名でも構いません。

20040829P00.JPG - 19,741BYTES 20040829P01.JPG - 22,432BYTES

次に、「Man_miniFullKit.pdf」の7.1.2.を読むと、「STARTUPファイルはCDからコピーして云々」とあるので、よくわからないのですがCDからコピーします。KD30を使わない場合は不要かもしれません。

そしてプログラムを書きます。今回は、軽く勉強ということで、mini1.cを、sfr26.hにあわせて書き換えたものを使いました。このsfr26.hというヘッダファイル、M16C/26のレジスタ定義等が定義されているヘッダーファイルです。H8/3664とかやられている方ですと、「3664.h」とか言うとわかりやすいでしょうか?

※追記:以下のソースコードですが、後で"sfr26.h"を見直していたら、p7_addr.byteはp7へ、pd7_addr.byteはpd7に#defineされていました。よって、main()関数の中は、特に修正は不要であることに気づいてしまいました。

//--------------------------------------------------------------------------------------
//  ファイル名: LedBlink.c
//  内容:       LED点灯(LED2,3を交互に点灯 ソフトウエイト)
//               OAKS16KITのmini1.cを基本として、sfr26.hを使用するように変更
//--------------------------------------------------------------------------------------

// インクルードファイル
#include    "sfr26.h"

//    プロトタイプ宣言
void _main(void);

//    マクロ定義
#define LED2_on    0xdf             // LED2(p75)点灯
#define LED3_on    0xef             // LED3(p74)点灯
#define LED_off    0xff             // LED消灯

main(){
    unsigned long i;

    p7_addr.byte = LED_off;         // ポート7出力H(LED消灯)
    pd7_addr.byte = 0xff;           // ポート7方向出力

    for(;;)
    {
        p7_addr.byte = LED2_on;     // LED2点灯
        for(i=0x4ffff;;){           // 時間待ち(ソフトウエイト)
            i--;
            if(i==0) break;
        }
        p7_addr.byte = LED3_on;     // LED3点灯
        for(i=0x4ffff;;){           // 時間待ち(ソフトウエイト)
            i--;
            if(i==0) break;
        }
    }
}
      

後はビルドして、とりあえずデバッガ(KD30)でテストしてみましょう。LEDがmini1.cと同じようにチカチカ点滅するはずです。

■TMにMOTファイル作成の設定を追加
さて、どうやってMOTファイルを作成するかというと、「Man_miniFullKit.pdf」の「6.3.8.プロジェクトエディタ概要」をよく読むと、<アイテム情報ビュー>の説明のところに、「Dflashstart(フラッシュROMに書き込むためのソフト)で使用するモトローラsフォーマットのファイルを作成するためのコマンドです。」という説明があります。これを見て「うむ、きっとこれを追加すればいいに違いない」と思って追加してみました。

アイテムの編集」−「コマンド」を選択すると、次のウィンドウが表示されます。これには、ビルドの最後に実行されるコマンドが記述されています。

「新規」ボタンを押して、ここに、「$(LMC) $(LMCFLAGS) $(OUTDIR)\$(ABSFILE)」を追加します。

これでビルドすると、拡張子が「mot」のファイルができあがります。これを「Flash Starter」で書き込めばOKです。

20040829P02.JPG - 18,743BYTES

■SAKURAエディタ
実は、主にSAKURAエディタを使っているのですが、これをTMに登録する場合、行番号の指定も入れると便利です。ビルドでエラーが出た場合、ビルドのウィンドウからダブルクリックしてジャンプすると、ソースファイルを開いて、該当行までジャンプしてくれますので、なかなか便利です。TMの「オプション」で、「EDIT TOOL」にエディタを登録し、その時に、Parameterに「%F -Y=%L」を指定しましょう。

■最後に
最後に、またデバッガを使う予定があるのでしたら、モニタプログラムを書き込みましょう。CD-ROMの「\oaks_mini\Monitor」にあります。これをFlash Starterで書き込めばOKです。

 

2004/08/28

OAKS16-MINIのFull Kit組み立てました。

隙間が多すぎて心が落ち着かない…
20040828P00.JPG - 20,779BYTES20040828P01.JPG - 31,838BYTES

ようやく組み立てました。やっぱ、サラリーマン、どうしても作業は週末になってしまいます。SIPHA COREとかと比べるとものすごく密集度が低いので、どうも心が落ち着きません。きっと、自作コアでサイズにこだわっている方はみんな同じかと。

組み立ては、説明書どおりなんですが、1つだけ替えました。CPUボードのピンフレームをつけるところ、裏をよく見たら、3列全部パターンがつながっていました。というわけで、2列のピンフレームをつけてみました。手元に50Pがあれば楽だったんですが、無かったので、40Pと10Pを2つずつ、削ってつけています。

ピンフレームって、どうして縦方向にきっちり並べられないんでしょうね〜。縦方向に密着してつけるときは、いつも削ってから載せています。

で、これをどう使うかといいますと…(使うかどうかは、実は、全然考えていないんですが…)

20040828P02.JPG - 26,318BYTES20040828P03.JPG - 26,840BYTES

ピンヘッダのほうに電線くっつけて、こんなコネクタのような物を作っておけば、テスト用にCPUのそばから直に信号が取り出せるようになります。

もし、便利そう!と思われた方はトライしてみてください。はい。

というわけで、デバッガ経由でプログラム実行できました。明日は、いよいよ、モニタプログラムをつぶして「ROM書き」しようと思います。さて、この基板、どんな風に使っていきましょう。

 

2004/08/26

さてと。次は…

G-Tune 2004FI詳細
G-Tune 2004FIの詳細をアップしました。今回の機体紹介は、1ページもので作ってみました。海外のホームページ見てたら、1枚もので一気に紹介してるページがあって、なんとなくかっこよかったんでやってみました。SIPHA SYSTEMのところも、不定期TIOPICでアップした内容だけではなく、SIPHA TERMとAction Scriptについて追記していますので、よろしかったら見てください。

動画の方は、またボチボチっと撮って、アップします。

次期SIPHA SYSTEM
だいぶ基本部分は固まってきたんですが、操作性がイマイチということをだいぶ痛感しました。やっぱ、机上で考えているのと、実際に戦ってみるのでは大違いです。次回は、「状態遷移」処理をいれて、マシーンが「しゃがんでいる」とか「直立している」等の状態をSIPHA COREが認識できる仕掛けを入れようと思っています。

実装方法には、当初、Action Scriptのもう一階層上の「B-Script」というのを考えていたんですが…やりたいことを整理してみたら、「Action Scriptから別のAction ScriptがCall(Jumpでは無く)できればいい」という結論になりました。また、状態遷移も、現状で変数を扱えるので、それをちょっと拡張すればいいかなぁと。SIPHA CORE自身では姿勢までは管理せず、Action Scriptで管理させようかと思います。これによって、今回よくやってしまった「操作ミスでこける」というのを防げるようになるおもいます。

G-Tuneの場合、軽量級でサーボパワーも無いことから、それを補うだけの多彩な動作をする必要があり、どうしてもコマンド数が増えます。これをミスすることなく呼び出していくためには、いろいろプログラムでオペレーションをサポートしていく必要があると思います。

次期G-Tune2004FII構想
ぼちぼちっと次期G-Tuneの構想を考えています。タイトルの通り、また改良でいこうと考えています。また、レギュレーションが変わらなければ、引き続き、J-Classとダブルエントリーで行こうと考えています。また、今回、G-Tune戦法を見せてしまったので、もうヒトネタ入れないとダメですね〜。

まず、今回間に合わなかったポイントとして、以下のものがあります。

  • 決めの大技
  • 操作系プログラムの改善(J-Classの時に問題点に気づきました…)
  • 有線/無線での操作コントローラの共通化
  • 謎のCPU停止対策(完全ではありませんでした)
  • SIHPA TERMへシナリオ機能追加(だたのサーボ位置記憶からAction Scriptを作るのではなく、時間、判定、ループを意識した編集ができるエディタ)

あと、今回やってみて欲しくなったこととしては次のようなものがあります。

  • 攻撃動作の見直し(流れを意識した攻撃動作)
  • 身体の傾きを検知して、動作の安定化する(歩行以外の例で行くと、すくい上げられても尻餅をつかない等)。 これについては、まず、加速度センサだけで、どこまでできるか試してみようと思っています。
  • 足首周りのメカデザイン変更(ピッチ軸にS03Tを持ってこようと思っています)。
  • Action Scriptのさらなる進化
  • SIPHA TERMのソフト整理(結構、わからずにぐいぐい作ったもんで、中身ぐちゃぐちゃ)。

メカ系の改良とAction Scriptの作りこみは、次のROBO-ONEのレギュレーションを見てから始める予定ですが、問題は角度検出です。ジャイロを使うのが一般的なのですが、H8/3664のポートが足りなくなってきますし、値段もやや高め。うぅ、どうしよう。

一番いいのは、現在、R/Cプロポでやっている通信を、KOさんの無線コントロールユニットに変更して、入力をシリアルに変更し、R/C受信機入力に当てているポートを転用してしまうとうのがベストです。これができると、サーボ制御20chを維持したままいけそうなんですけどな〜。

ま、まずは加速度センサの使い方で、なんとか使える程度にできないか、いろいろトライしてみようと思っています。

 

2004/08/24

G-Tune 2004FIの制作費

G-Tune 2004FIの制作費
今回の製作にかかった費用ですが、ROBO-ONEのデモ中で約9万円と言いましたが、大雑把な内訳は以下のとおりです。実際には、ROBO-ONEエントリのために、予備クリスタル、バッテリ等が必要になります。バッテリは4つ持っていったのですが、全部戦っていくことを考えると、ちょっと少なかったかな〜。バッテリパックを増やすか、充電器を増やすかしたほうがいいかな〜って感じでした。J-Classで戦ったら、2ラウンドで1パックぐらい。手持ちに余裕があれば、心の余裕のために毎回変えたいところです。

みなさん、バッテリーの消費量ってどれくらいなんでしょう?同クラスマシンの方で、「こんなもんだった」という方いらっしゃいましたら、情報いただけるとありがたいです。

部品項目 個数 単価 金額
AKI-H8/3664
3軸加速度センサ ACB302
その他 (24C256、抵抗、LED...)
DC/DC (MAX631,コイル,etc...)
距離センサ(GP2D12)
電線 (高屈曲ワイヤ、シリコン)

1式
1式
1式
1式
2個
1式

\1,600
\2,000
約\1,000
約\1,000
\790
約\2,500
\1,600
\2,000
約\1,000
約\1,000
\1,580
約\2,500
プロポ (フタバT4VF)
GWS GWR-4P
クリスタル (1セット)
1個
1個
1式
\4,000
\3,600
\1,850
\4,000
\3,600
\1,850
サーボ GWS MICRO-MG (6個セット)
サーボ GWS S03T (6個セット)
GWS S15用メタルギア
2式
1式
6個
\19,800
\9,800
\1,200
\39,600
\9,800
\7,200
ABS (2,3mm白、黒)
ネジ、スペーサ類
1式
1式
約\2,000
約\3,000

約\2,000
約\3,000

バッテリ (GP-NiMH850)
充電器 (秋月キット)
充電器用電源 (12V2A)
放電器 (秋月キット)
6個
1個
1個
1個
\200
\1,300
\1,100
\1,200
\1,200
\1,300
\1,100
\1,200
合計 約\85,530

次回は、センサをもう少し載せますので、本体で9万円後半、自作コントローラをあわせると、いよいよ10万円!までいきそうです。

 

2004/08/23

SIPHA COREの制御方法

ONOさんのホームページを見ていたら、王国でKRS-784ICS10個セット40,000円!おお、すごい太っ腹!一個あたり、約4,000円ですか〜。そう思いながらKOさんのホームページ見ていたら、KRS-784ICS 12個セットが\52,500というのを発見!おお、セットで買うと2個おまけつきですか。う〜ん、う〜ん。MICRO-MGが6個で19,800円(1個あたり、3,300円)ですから、徐々に移行していくには、いい価格かも。う〜ん、う〜ん。でも、この先、ジャイロとか載せると制作費が10万円越えちゃうかな〜。とりあえず、今はお小遣いが足りないから、まあいいや (^^;。

J-Classで戦って思いましたが、KRS-784ICS、すごくいい感じのサーボです。イメージ的には、「安いサーボ作りました」じゃなくて、「ハイスペックサーボからコストダウンサーボを作りました」って感じです。うまく伝わりますか???

さて、ようやくSIHPA COREの制御方法についてまとまりましたので、アップします。基本的には、前回のものを機能アップしたような形になっています。

制御方法概要
基本的にはサーボ制御周期である20msec(本当はもう少し速くして16msecぐらいにしたいんですが…)を基準として、R/C受信機パルス、各センサーの値の読み込みを行い、それに応じてAction Scriptを実行するようになっています。それがグルグルまわっているだけです。今のところ、すべての動作はAction Scriptによって設定しています。

1制御周期は、20msecで実行しており、サーボ制御信号出力フェイズと軌道計算フェイズに分かれています。サーボ制御信号は、TimerWの割り込みを使用して出力しています。また、プロポ入力はパルス値ですのでカウントする必要がありますが、これは、TimerVの0.128msecのカウントアップによって行っています。後で説明しますが、TimerVの割り込みとTimerWの割り込みが同時に発生すると、サーボの位置決めが狂いますので、TimerVの割り込みは、実際には軌道計算フェイズでしか使用していません。さらにこれにシリアルEEPROMの読み込みが入るわけですが、これは、読み込み中はプロポ入力信号の解析を中止して、読み込みを行っています。

GT2004FI_SIPHA_CORE_SOFTCYCLE.JPG - 55,606BYTES

  • サーボ制御信号出力フェイズ
    TimerWを使用した、4本1セットのサーボ制御信号出力です。アナログサーボは、どうも制御信号を入れたタイミングでモータに電流を流すようなので、0.5msecで2本ずつに分散するようにしています。モータってのは、起動させる瞬間がかなり電流食いますので、 これの対策です。たぶん、デジタルサーボではあまり意味が無いと思います。
    サーボ制御信号は0.6〜2.4msec程度、これに0.5msecのずらしが入りますので、4本のサーボ制御信号は3msecで一通りの仕事が終わることになります。これを5回繰り返して20サーボの制御信号出力を行っています。
    現在、全体で、20msecの制御周期になっていますので、できればこれをもう少し短くしたいと考えています。アナログサーボの場合、若干ですが、20msecより15msecの方がトルクアップするからです。
  • 軌道計算フェイズ
    残りの5msecで、R/C受信機からの信号による次動作の決定、サーボ軌道計算(角度補間、座標補間)を行います。座標補間の方が結構ヘヴィで、登録時、角度情報から現在の座標を計算しているのですが、 全てのサーボ+脚の座標登録を行うと、5msecで納まらなくなってしまいます。このため、Action Scriptの方で、1Clock(=20msec)ずらして登録してごまかしています。より使いやすいシステムを目指すため、このあたりの処理速度改善も今後の課題です。
  • R/C受信機の信号検出
    R/C受信機信号はサーボ制御信号同様、パルスです。これをTimerVを使って0.128msec毎にカウントしています。ただし、普通に割り込みでやってしまうと、サーボ制御信号処理とぶつかった時に、ジッタのモトになります。そこで、サーボ制御信号出力フェイズでは、メインルーチンのほうでぐるぐる回ってTimerVのオーバーフローを監視してカウントアップ実行し、起動計算フェイズでは割り込みを使ってカウントアップをしています。
  • シリアルEEPROMの読み取り
    それでは、シリアルEEPROMはどうやって読み取っているかといいますと…っと、その前に、いつ、シリアルEERPOMを読み取っているかですが、「起動時に初期設定パラメータを読む時」、「R/C受信機から新しいAction Script動作指示が出た時」、「実行中のAction Scriptから、Action Scriptのジャンプ命令が実行された時」というタイミングになります。
    通常の制御中は、Action Script絡みのみ発生します。Action Scriptデータは、もっとも大きいもので1KByte程です。
    で、読み始めたら…思い切って、サーボ制御信号処理以外の処理はすべて停止し、シリアルEEPROM読み込み処理に集中します。実際、最大で30msec程度ですので、操作上、気になるようなことは無いです。R/C受信機処理が、誤操作防止のため、最短で60msecでシステムに反映されますので、これ以下ならば、影響はありません。このあたりの割り切り方が、妙に自分らしいと思ってしまったりします。
  • 加速度センサ、距離センサの読み取り
    今回、どちらのセンサもアナログですので、先のR/C受信機信号検出で使用しているオーバーフロータイミングでスキャンモードを切り替えて読み取りをしています。H8/3664には、アナログ変換をモジュールで自動的にやっておいてくれるスキャンモードとう機能があります。ただ、このスキャンモード、一度に4chしかできません。この場合、加速度センサ3ch、距離センサ2chということで、5chとなり、泣く泣くこうやっています。
    実際には、加速度センサ、2ch分(前後左右)しか使用していなかったりするので、これをはずしてもいいかな〜と思ってたりもします。もともとの予定では、倒れ判定の正確度を上げるために上下方向の値も読み取っていました。

 

2004/08/22

お買い物…OAKS16-MINI

OAKS16-MINI
20040822P00.JPG実は、ここ一週間、オークス電子ルネサスのホームページからマニュアルをダウンロードして眺めていたんですが、OALS16-MINI、1つ買ってみました。購入先は、ROBO-ONEにもエントリーされているチャーリーさん会社です。

考えてみるとOAKS16-MINI、なんとなくですが、AKI-H8/3664より安くてパフォーマンスがいいような気がします。I/O数はほぼ同じ(1本だけOAKS16-MINIの方が多い)ようですし、ROMはH8/3664の倍、クロックもちょっと速いです。

今回、フルキット(テスト用マザーボードからコンパイラ、本体、電源まで一通りついている)を購入したので、5000円越えましたが、CPUボード単体でみたら1500円ぐらいです。またフルキットも、秋月で出ている「H8/3664開発キット」より1000円ほど高いのですが、電源も同梱されているので、比較しても高いものではないと思います。

ただ、箱の写真には、「LCDがついたボード」が載っていますが、中身には含まれていませんので、要注意です。事前に、オークス電子からマニュアルを落とせれますので、これでチェックしておけばわかることなのですが、オプションです。でも、「無いと思っていた」のに、「箱にLCDの写真がついていて、FullKitと書いてあった」ので、ちょっと期待してしまいました。

OAKS16-MINIのピン

20040822P01.JPG - 16,297BYTES 20040822P02.JPG - 10,541BYTES

さて、「あのボードについているピンは、特殊なものなのではないだろうか?」ということがずっと気になっていたんですが、手元にあった秋月で購入した26Pのものと比較してみたら、ぱっと見とか、挿してみた感じとかはそんなに差はありませんでした。手持ちの部品でも使えそうです。

次期コアにしようかどうか、まだそこまでは考えていませんが、最近、だいぶマイコンプログラミングに慣れてきましたので、「ローコスト、ハイパフォーマンス」なものがあれば、いろいろ試して、公開していきたいと思っています。ま、まずはコテ試しに、LEDの点滅でもやってみることにします。

 

2004/08/21

SIPHA COREのソフトウェア

例によって出張していました。やれやれって感じですが、ま、ROBO-ONEでぶつからなくてよかったということで…。ふう。

SIPHA COREのソフトウェア構成
これまたあまり変わり栄えしませんが、SIPHA COREのソフトウェア構成はこんな感じです。マルチタスク風に書いてありますが、実際にはシングルタスク+割り込み処理です。ただ、こういうふうに整理して作ると、何かとメンテナンスとかチューニングがしやすいので、いつもこのように作っています。前回、完成し切れなかった部分が、ようやく完成しました(ついでに悪いところも見つけてしまったけど)。

センサ処理系を除くそれぞれのモジュールは、サーボ制御周期を基本として逐次呼び出すようになっています。ほら、サーボ補間計算とかって、次にサーボ制御信号を出す時までに計算すればいいですよね。また、Action Scirpt実行処理もそうです。で、センサとかR/C受信機処理を逐次行っているという感じでプログラムされています。

GT2004FI_SIPHA_CORE_SOFTSTRUCTURE.JPG
クリックで拡大

  • RCI (R/C receiver Command Interface)
    R/C受信機からの信号処理は、IDSによって処理されてプロポのスティック位置として保存されます。このモジュールは、その情報を元にして次に実行するAction Scriptを決定します。前回、モードなどを意識した、ちょっと凝ったつくりにしていたのですが、今回はシンプルにコマンド毎に実行するAction Scirpt番号を固定し、ただ単純に、条件がそろっていれば新しいAction ScriptをASMに要求するという構造にしました。ただ1つ、実行レベル(プライオリティ)制御が入っており、現在実行中のAction Scirptの実行レベルが、新たに実行するAction Scriptのレベルよりも高いときのみ上書き(オーバーライト)実行します。
    この、「実行レベル」は、Action Scriptにあらかじめ定義してあるものです。これによって、「待機中ループ処理」から「歩行」などへの動作へ移行できるようにしてあります。また、「歩行」などの動作が完了したときは、当然、プロポのスティックはセンターに戻っているわけで、これによって、また「待機用Action Script」を実行開始します。「待機用Action Script」の中には、前の姿勢からの移行処理や、待機中に行う処理(今回はカラですが、次回は自動バランスとか書きたいです)が書いてあり、ループして待つようになっています。
    もし、姿勢移行などでどうしても他のAction Scriptからの上書きを許可したくない場合は、動的にAction Scriptの中で実行レベルを操作することができますので、「待機ループのところは実行レベルを低く」して「姿勢移行中の時は実行レベルをあげる」ということができます。ここが今回、手を抜いたというか、後で気がついて、操作ミスに泣かされたところです。
  • SOI (SCI Operation Interface)
    SCI通信モジュールです。SIPHA TERMからのコマンド解析が主な仕事で、 メモリの読み書き、シリアルEEPROMとの読み書きを中心として、SIPHA CORE自体のモード変更機能などを持っています。上のソフトウェア構造図を見ていただくとわかりますように、各モジュール間のインターフェイスは、メモリで介在するようになっています。つまり、このメモリエリアにデータを書き込むことにより、別モジュールから要求したが如く振舞えます。SIPHA TERMからサーボを動かしたりする場合、本来、SPCからSPGに要求することでサーボ動作するようになっているところを、このSOIモジュールを介して、メモリに要求内容を書き込むことで動作させれるようになっています。
    また、極力サーボ制御周期などに影響が無いようにするために、送信処理などは結構、複雑になってしまいました。
  • DAL (Device Access Library)
    シリアル通信などのライブラリです。
  • IAL (I2C EEPROM Access Library)
    シリアルEEPROMアクセス用のライブラリです。前回、H8/3664に内蔵されているI2Cモジュールを使用してシリアルEEPROMにアクセスするようにしていたのですが、今回は自前で用意しました。結果として、ぐっと通信速度は下がりましたが、サーボ制御信号生成などの割り込み処理と併用しても問題が発生しなくなったため、「隙間を縫ってアクセス」等の処理が不要となりました。 今回、やり忘れたのですが、次回はDALに統合される予定です。
  • ASM (Action Script Manager)
    Action Scriptの管理モジュールです。実行要求に従って、シリアルEEPROMからメモリにAction Scriptデータをロードし、コマンドを解析しながら実行します。電源電圧によるAction Scriptの切り替えや、加速度センサによる姿勢判定等もここで行い、Action Scriptの中でジャンプしたりするようになっています。
    メモリのロードエリアは、250レコードで、大体、事前審査動作の起き上がりを除いた全ての動作が一発で動作させれるぐらいです(もちろん、カウンタによるループも可能なので、それも併用しての話ですが)。Action Scriptから別のAction Scirptにチェーンすることも可能なので、長いAction Scriptを書く場合でも、Action Scriptが別れるだけで、問題になることはありません。また、フルにロードしても、数十msec程度でロードしますので、見た目には、ほとんどわかりません。
    現在、32KバイトのシリアルEEPROMを実装していますが、約7000レコード記録可能で、今回のG-Tuneの動作でも5000レコード使用しているだけです。
  • IDS (Input Device Scanner)
    R/C受信機、加速度センサ、距離センサ、電源電圧の情報を、SIPHA CORE内で扱えるようにするためのモジュールです。実体は、通常の関数として呼ばれる部分と、TimerVによる0.128msecの割り込みよって動作する部分に別れており、サーボ制御信号生成中は通常の関数として呼ばれて信号解析を行い、軌道計算などをしているときは割り込み処理によって信号解析を行います。これについては、後で、全体の制御周期の説明をしますので、そこで切り替わりポイントを説明します。
    また、SOIからの要求により、R/C受信機取り込み処理を中止し、変わりに、SOIからダミーのデータを設定することで、ROIやASMがチェックする「プロポのスティック位置」をSOIからコントロールできるようにすることができます。J-ClassでシリアルコントロールでG-Tuneを動作させたときは、この機能を使用しました。
  • SPC (Servo Position Controller)
    サーボの補間動作が主な仕事です。ASM等から、「何度から何度まで、何クロックで動作」という形で指示が入りますので、これに応じて補間計算、及びサーボの角度からパルスへの変換、XZ座標系からのパルスへの変換を行います。
  • HIP (High-speed Integer Proccessor)
    sin、cos、atan、rootの計算を行うモジュールです。三角関数については、テーブルによって計算を行っています。また、rootについてはニュートン法を使って計算してます。このモジュールによって、「XZ座標から各サーボの角度計算」などを行っています。
  • SPG (Servo Pulse Generator)
    サーボパルスを発生するモジュールです。実際にはTimerWの割り込みルーチンです。例によって、4本で1処理としているのですが、2本づつ、0.5msecずらして出力するようになっています。これは、突入電流を減らす対策です。G-Tune 2004FIは単4×6セルで動作させるので、どうしても同時に取り出せる電流最大値が低くなります。そこで、もっとも電流が流れる「起動の瞬間」を少しでも小さくするために、このようにしました。
    基本的なプログラム自体は、「最初に信号ON」しておいて、「GRA〜Dのコンペアマッチで信号OFF」するものです。完全ではないのですが、サーボジッタを極力減らすようになっています。具体的には、この4つのサーボ制御信号のOFFタイミングをあらかじめチェックし、前の割り込み処理によって、次の割り込み処理が遅れる可能性のある割り込みを探します。で、もし遅れる可能性がある場合(OFFタイミングが近い場合)、前の割り込み処理の中で次の割り込み条件が成立するのを待ち、条件成立したらそのまま処理するようにしています。よって、次の割り込みは、前の割り込みに吸収された形になります。

と、まあ、基本的なオペレーティングシステムをプログラムで構築しておき、後は、Action Scriptでなんとかするという形で実装しています。それだけに、今回は、さらにAction Scriptの機能を追加して、「距離センサ」、「電源電圧」、「加速度センサによる姿勢」、「変数」を扱えるようになっています。

気になるプログラムサイズですが、オプティマイズレベル2で25Kバイトほどです。まだまだ余裕がありますよ〜(これを余裕があるといっていいものかは疑問だけど…)

 

2004/08/17

SIPHA COREのハードウェア

SIPHA COREの回路図
あまり変わり栄えしませんが、SIPHA COREの回路図はこんな感じです。今回も例によってすべてソフトドライブで、サーボ制御に始まってR/C受信機取り込み、各種センサ取り込み、全部H8/3664でやることができました。後、いろいろありまして、サーボとの間には1.5KΩの抵抗が入っていますが、次回作る時は、多分、5KΩぐらいにしようと思っています。この件に関しては、現在、調査中で、またそのうちアップします。

GT2004FI_SIPHA_CORE_CIRCUIT_S.JPG - 33,906BYTES
クリックで拡大

  • 電源回路
    このレギュレータ、秋月電子で購入したのですが、なぜかカタログページの5Vから検索すると出てきません。「レギュレータ」で検索をかけると出てきます。今は、表面実装で低損失のものもあるので、そっちの方がいいかもしれません。また、0.1μFのコンデンサはチップ部品を使っています。実際に使ってみて思ったのですが、チップ部品、結構、ユニバーサル基板と相性が良くて使いやすいです。
  • 昇圧回路
    実戦時には結局使用しなかったんですが、今回、MAX631というICを使ってステップアップ回路を組みました。部品一式は「若松通商」でそろえることができます。以前、レポートしましたが、入力が3.5Vぐらいでも5V出力、2.5Vでも3.7V(30mA時)でますので、H8/3664を動かすぐらいなら大丈夫そうです。回路図をを見ていただくとわかりますが、マイコン、加速度センサ、R/C受信機は昇圧後の電源を使っており、距離センサはレギュレータから直接取っています。これは、距離センサが結構電気を食うためです(MAX100mAぐらいかな?)。
    実戦で使用しなかった理由なんですが、以前、原因不明のCPUハングアップが発生した時にはずしてそのままにして忘れていたのが理由です。晴れてハングアップの原因ではないことがわかったので今後、生かして使ってみようと思っています。でも、無くて問題が無かったといことは、必要ない? (やっぱりはずそうかな…)
  • 電源電圧監視回路
    4.7KΩの抵抗で生電圧を1/2にしてH8/3664のAD端子に入力しています。0.1μFのコンデンサは必ずつけましょう。前回、これを付け忘れて読み取りができませんでした。今回は、ちゃんと忘れずにいれました。今回は読み取って、スクリプト処理の時に使っているだけですが、動作作成時など、急激な電圧変化を監視していれば、サーボロック等の症状を発見できるようになるかもしれません。
  • 3軸加速度センサ
    前回、ADXL202を使っていて今回、ACB302に変更した理由ですが、実は「ADXL202を水平に取り付ける場所が無かった」からです。そのため、どの向きでも取り付け可能な3軸が必要になり、これをつけました(G-Tuneサイズならではの理由)。アナログ入力はやったことがなかったので、いろいろ不安でしたが、起き上がり判定ぐらいには使えています。起き上がり操作は、どんな向きに倒れていても同じ操作で、SIPHA COREが判定して起き上がってくれます(えらい!)。
    配線取り回しの関係か、未だに信号が結構大きくフラフラしています。これでいいんでしょうか…。
  • PSD距離センサ
    G-Tuneの両腕についているやつですが、10μFがかましてあるのは、千石電商のホームページで「入れたほうがいい」と書いてあったので、アナログに弱いSISOとしては、「ま、悪いことはなかろう」ということで入れてます。
  • R/C受信機
    前回使っていたGWSのを使いまわしています。
  • シリアルEEPROM
    シリアルEEPROMは、H8/3664が持っているI2Cモジュールを使用せずに使っているため、普通のポートに接続されています。なぜか本来モジュールがついているP56、P57に接続するとうまく通信できません。1つの理由としては出力電圧が他のポートより低いというのがあげられると思うのですが、だからと言って…ね〜?そんなわけで、P56、P57は、入力ポートとして使っています。

 

2004/08/15

ABS加工レベル

G-Tune2003Aのバラシ
ようやく、G-Tune2003Aをばらしました。前からバラしたかったのですが、開発の方を優先していたら、なかなか時間が取れませんでして…。GWSの超軽量サーボが10個あるので、SIPHA CORE開発用に、「マジ手の平ロボ」を作りたいと思っているのですが、どっかな。ギアが欠けやすいですが、小型で格闘無しなら問題無いでしょう。

20040815P00.JPG - 23,684BYTES

ABS加工の進歩

20040815P01.JPG
クリックで拡大

会場でG-Tune2004FIを披露させていただいた時、ABS加工のことを誉めていただきまして、とてもうれしかったです。でも、実は、最初からここまでできたわけではないですし、これといって、何か経験があったわけでもないです。上の写真が、左から2003A、2004F、2004FIで使用したパーツでして、拡大してみると、加工のデキの良さの差が一目瞭然だと思います。

左のパーツ、ほんとひどいですね〜。使っている工具はほぼ同じなんですが…。さすがに3台目ともなると、かなり上達しているのがわかると思います。アルミ加工なんかもきっとそうだと思いますが、同じ工具、同じ環境でも、だんだん上手になっていくもんだと思います。

これからスタートする人、今、なかなかきれいに加工できなくて困っている人、あせらずに頑張ってくださいね!

たまには他のマイコンでも
なんだか心に余裕ができたところで、H8/3664以外のマイコンもたまにはチェックしてみる。

対抗馬といえば、やっぱりオークス電子で発売されているOAKSあたりでしょうか。サンプル(実際には売られているみたいですが)のOAKS8っていうのが小さくて面白そうです。これでもSIPHA-COREの基本部分ぐらいなら動きそうです(全部はちょっとつらい)。シリアルも2本ついているみたいだし。また、OAKS16-MINIってのもおもしろそうですね〜。あ、これ、姫路ソフトワークスさんのSCC-02のマイコンですね。スペック的には現行SIPHA COREを遥かに上回る能力のような気がするのですが…。

で、あるすごいことに気が付きました。

SCC-02の地球は回っている!

姫路ソフトワークスさんのホームページにアクセスすると、「姫路ソフトワークス+地球」のロゴが表示されると思うのですが、あの地球は回りません。しかし、SCC-02の紹介ページを見ると、回ってます、地球。あれ、かっこいいんで、全部回るやつにした方がいいと思うのですが、どうでしょう?

この事実を発見しただけで、すごく満足してしまったので、マイコン調査はおしまいです。では、焼肉食べに行ってきます。ではでは!

 

2004/08/14

ミスオペレーションを誘うプログラム

今回の敗因の1つに、ミスオペレーションがあります。ミスオペレーションにもいくつかの種類があるのですが、「プログラムによって然るべく誘発されたミス」についての話をします。このあたりのプログラムをオリジナルでやられている方への参考になれればと思います。

SIPHA COREので動作決定の仕組み
SIPHA COREでは、プロポからの信号状態を読み取り、対応するAction Scriptを実行するようになっています。このとき、プライオリティ制御が働くようになっていて、例えば、パンチ実行中に直立姿勢コマンドを入れても、パンチを続行するようになっています。

具体的なものとしては、次のようなスクリプトが書いてあります(実際には、SWITCH/CASEは使えないので、条件付きJUMPで記述しています)。これが待機姿勢のコマンドごとに書いてあり、前状態を意識しながら待機状態を変更していきます。

直立待機Action Script
SWITCH(前待機姿勢)
  CASE 直立
    何もせずに待機ループへジャンプ
  CASE しゃがみ
    しゃがみから直立へ動作、待機状態フラグを「直立待機」
    待機ループへジャンプ
  CASE 格闘待機
    格闘待機から格闘立ちへ動作、待機状態フラグを「格闘立ち」
    先頭から再実行(状態が「格闘立ち」なので、下のCASE文が走る)
  CASE 格闘立ち
    格闘立ちから直立へ動作、待機状態フラグを「直立待機」
待機ループ

失敗点…急ぎすぎた次コマンド実行
んで、今回、「失敗したな〜」と思ったのが、先のプライオリティ制御を使ってオーバーライト(スクリプトの上書き実行)機能を、中途半端にいれてしまったことです。

コンセプトから説明しますと、例えば、直立から格闘待機に移行しているときに急いでパンチを出したい場合、遷移中にパンチコマンドを入れても、パンチ動作自体が格闘待機状態とほぼ同じですから、問題になりません。それよりパンチが早く出せるという、メリットがあります。

ところが…上記のAction Scriptをよく読むとわかるのですが、立ち上がり動作の始めなどでオーバーライトすると現在の状態が更新されず、実は立っているのに「しゃがみ」と記憶していたりすることが起きたのです。また、別の問題点として、パンチなどのコマンドを入れている状態で待機状態の切り替えを行った時に、遷移動作をせずに移行してしまう(これが狙いだったのですが)ために転んだりしてしまうのです。

というわけで、オペレーションに関するプログラムは…

安全第一

が一番であるということを、勉強しました。G-Tuneとのシンクロ率は、まだまだ低く、きわどいタイミングを狙えるほどのものではないというのを再認識したので、オペレーションについては、次回に向けてぜひ改善したいと思っています。

 

2004/08/12

ROBO-ONE参戦記〜本戦トーナメント


というわけで、中村さんも予選通過されていたので、今夜も、例によって「ゴットン、ゴトゴト」。おいらも負けずに「かたことかたこと」。J-Classのときに学んだことをSIPHA COREに教え込む。大技も行きたいところだったんだけど、イマイチ命中精度が悪い。なかなか難しいです。そんなわけで、基本動作と操作入力パターンの見直しに注力しました。ま、オペミス防止のためにも睡眠が必要だろうということで、今日は2時間程睡眠をとりました。

資格審査
朝一番、ネジあさいさんにお会いできました。いいなぁ、あのTシャツ。ご自分で作られたんでしょうか?うちもまた「G-Tune」っていうやつを作ろうかな。あ、そういえば、浅草ギ研のぴしいさんは「普通の格好」でした。「浅草ギ研」夏仕様を楽しみにしていたのに〜。ま、そんなこんなで資格審査を済ませ(資格審査は寸法チェックだけです)、トーナメントの順番も結構前の方だったので、そのままバッテリ電圧チェックなどの、準備に入りました。


第一戦目
20040812P00.JPG - 13,046BYTES一昨日、報道の方から「J-Classの時、飛行モードで登場して欲しかった」というリクエストもあり、せっかくなので、飛行モードで登場、まずは一発変形。おお、ウケた。実況の方もしっかりとフォロー解説入れてくださっています。

初戦はエントリー120のSunny。ぱっと見、Dynamixel DX-116満載のロボット。ま〜、G-Tuneにとっては、大した問題ではないっす。どのサーボにしたって、パワー比は速度も考慮すると3〜4倍以上はありますんで。もともと格闘の上で考慮しているパラメータなんで、どうでもいいです。またフレームは少なくともFREEDOM IIIのアレではない。煮つめが足りないのか何気に動きがよくない感じ。それとも、あまりにもG-Tuneが小さいのでびびったのか?(んなこたぁ無いっすね〜)

緊張のあまり、作戦も立てずに近づいていったら、軽く腕に引っ掛けられて「コロン」あらら。やっぱ、作戦無しはいけません。そんなわけで、横から回り込んであれやこれやしてみるけど、なかなか倒れません。実は、倒せる可能性のある決定打技、未完成ながら持っていたのですが、すっかり忘れていました。また、動画アップしますね。それでも、わずかながらに押せています。うむうむ。G-Tune仕上がり良好。そうこうしているうちに、相手が何を迷ったか、多分オペミスでダウン。さらに起き上がりでリングから落下!判定で初勝利!いや〜うれしい。棚からボタ餅のような勝ち方でしたが、きっと、G-Tuneに

「相手のミスを誘うほどの気迫があった」

ということにしておこう…。

控え室に戻るとき、エレベータで、Sunnyのオーナや他の韓国選手と一緒になったんですが、他の韓国選手の方で、G-TuneがSunnyを押していたのに気づいたようで、足裏を触らしてくれとお願いされてしまいました。韓国選手のロボットは全般的に、何も処理していないようです。


第二戦目
20040812P01.JPG - 13,037BYTESなんと、あの坂本さんの操縦するHAJIME ROBOT。G-Tuneの場合、押しと踏ん張りの点でこだわっているので、ぜひとも善戦したい相手です。そんなわけで、逃げとかは打たずに、正面からガチンコする作戦。

さてと、始めの合図とともにぐいぐいと進めて、ガチンコ!ぐいぐい押してみる。意外にG-Tune踏ん張っているが、HAJIME ROBOTの方がパワー上か。想像以上です、あの粘り。

それにしても、なんと、HAJIME ROBOTの攻撃がG-Tuneに届かない!良く見ると、G-Tune、幅が狭いのでちょうど真中に入り、腕がまったく届かない模様。

アッパー攻撃でひっくり返すのをあきらめたのか、HAJIME ROBOTが押し出しにかかったので、さらに腰をさげてふんばったら…あのHAJIME ROBOTが、

つまづいて転びました。

しかし、ここですでに緊張しまくりのワタクシメ、次の操作がよくわかりませぬ。なぜかというと、HAJIME ROBOTに対して、攻撃姿勢が逆になってしまったのです。どうやったらターンできるかとかも忘れてしまい、徐々にリング端に押されていくとともに、さらに自分で端に行ってしまい、なんと、リングから落ちた…。ああ、このあたり経験の差か、度胸の差か。

というわけで、しっかりとHAJIME ROBOTに負けましたが、自爆するまで2分59秒間、フルに戦いました。HAJIME ROBOTの粘り強さというか、押し強さは、自分が想像していた理屈とちょっと違っていることがわかり、すごく勉強になりました。次回は、こちらもちょっとアルゴリズム改良して挑みます。

ランブル
さて、お楽しみのランブルですが、快調にスタートするも、頭をボコボコ殴られる。結構、おいしいところをもらったような気がするので、頭を殴るモーションを作っておいてくれた韓国選手に感謝!あんまりみんなが相手にしてくれないので、横から倒れているのを押してみたりしたけど、最後はなぜかパワーダウン。妻に撮ってもらったビデオを何度か見直しましたが、理由は…バッテリ切れでも、リセットでも、誤操作でもなさそうです。たぶん、アレです。もう少し調べたら、対策方法をアップします。

ランブルでもそうだったんですが、ミスオペ多いです。

ランブル中、たぶん3回ぐらい飛行機になりました。

このあたり、練習、もしくは改善していかないといけない部分ですね〜。

終わって退場しようとしたら、リング脇で、小さな子供が目を輝かせて見上げているのに気が付きました(2回戦の後だったかもしれませんが)。本当に輝いているように見えました。お父さんと一緒だったみたいですが、どこかのチームのお子さんだったんだろうか?G-Tuneを少し触らせてあげ、握手をしました。なにか、こう、胸が熱かったです。

そして、ホールを出ると、周りに、J-Classの日から会っている人たちが結構いることに気がつきました。インタビューなんて受けたりして楽しく喋らしてもらいました。でも、本音は…やるだけやりましたが、すいません、負けました。そんな気持ちでした。頭の中では、既に改良したいところが一杯。

その後
その後は、G-Tuneの改良ポイントなどを考えながら、みなさんの戦い振りをしかと拝見させていただきました。Zipponさんも結局、3日間ずっと観に来てくださっていて、緊張している身としてはとてもありがたかったです。あと、今回、たくさんお話させていただいたといえば、チャーリーさんです。J-Classから一緒だったこともあって、いろいろ話をさせていただきました。それと、ちょっとだけですが、クロイノの高橋さんと少しお話させて頂いて光栄!吉野さんも1Fで少しお会いできました。

今回、トーナメントで実際に戦ったことで、いろいろなことがわかりました。そんなわけで、次回G-Tuneは、今回のマシーンベースで、さらに操縦者との親和性を高めたマシーンにしていこうと思っています。ま〜、ラッキーとはいえ、総制作費9万円の小型軽量非力ロボットが、トーナメントでそれなりに善戦できたというのが、何よりでした。

きららRさんいずみかわさん、小さいもの倶楽部の一員として頑張ってきましたよ〜!次回は「ここ一発のパワー」を完成させて行きます。

というわけで、「お父さんのお小遣いで、勝てるかもしれないロボットを作る」という夢へ向かうための道は、間違っていないということが確信できた大会でした。

20040812P02.JPG - 24,643BYTES
クリックで拡大

20040812P04.JPG - 23,174BYTES

おまけ
中村さん、次回に向けて、G-Tuneを掴み上げるモーション作ってきてくれるそうです。データ収集中の写真です。次回もトーナメント進出できるよう、がんばります〜。

20040812P05.JPG - 19,347BYTES

 

2004/08/11

ROBO-ONE参戦記〜本戦デモンストレーション

ONOさんのところで紹介してもらったときに「ROBO-ONE参戦記」とありました。これを見た瞬間、「これだ!」と思い、タイトル修正しました。ONOさん、どうもありがとう!でも、今回もお会いできなくて残念です。

デモプログラム作りこみ
といわけで、まずは前日の話から。J-Classが終わって宿に向かうと、なぜか中村さんの姿が。聞くと同じホテルだそうで。さらにチェックインしてみると、うちらは下の部屋でした(これが、後の気力維持に大変貢献してくれる)。んで、眠くてしょうがないので、まずは近くのファミレスで食事をとり、飲み物などを買い込んでデモプログラム作成開始!うぉぉぉ、ぎっこんばったん。借りた部屋が和室で大きなテーブルがあり、助かりました。ただ、あんまり傷つけると申し訳ないので、G-Tuneにはいつもより多めにゴムパッドを貼ってやりました。基本的にはABSで作ってありますので、そんなに傷はつかなかったと思うのですが、念のためということで。

やっている最中、何度も、「まあいいや」という気持ちになりました。そんな時、耳を澄ますと…「ごっごっごっ、ごとん、ががっ」という音が上から…中村さんです。おお、まだ頑張っていらっしゃる。ならば、SISOも!というわけで、再び気力アップ。みなさん、あの方は本当に一晩中がんばっていました。それでも昼間はニコニコされていました。すごいです。

朝方、一通りの動作を繋げて時間調整。よしよし。というわけで、結局一睡もできず。


事前審査
会場に行くと、おお、いつもの顔ぶれがいますいます。今日はさすがに人数が多いので、座席指定です。我がSISO JUNK STUDIOの後ろには、「佐藤慎士(さとう のりひと)と愉快な仲間たち」のみなさん、移動ロボット製作委員会(第4回の時も前後に座っていました)、前にはほりさん、さらにその前にはFさん、横の方にはKenjiさん、また、まつしろさんも近くの席で、なんだか知った顔ぶればかりで和やかな雰囲気で準備をできました。

まずは2325-RVの大きさにびっくり!九州大学ヒューマノイドプロジェクトの新型はでかいです。あの、CUTEな抱きしめたくなるような可愛さはどこへ???あまりにもでかいので、比較写真を取らせてもらいました。G-Tuneは、膝の少し上ぐらいまでしかありません。左の方に写っているのはレイターです。レイターが直立しても、座った2325-RVぐらいです。

20040811P00.JPG - 21,181BYTES

サーボは独製のアレ。聞くと、大きくはなったけど、スピードは前以上かも、とのこと。すごい。やっぱり彼らはすごい。何がすごいって、こんなパワーのあるサーボで従来どおり動かしてしまうこと。サーボのパワーがあればあるほど楽な面、ごまかせない部分も多々でてくるわけで、そのあたりの難しさをさらっとこなしているあたり、やっぱりタダ者では無いと思います。

さて、自分の方ですが、事前審査は一発合格!よしよし、今回もいいぞいいぞと。…で、予選デモの順番はくじ引きなんですが、「1」でした。一番だよ、一番。これで、もう、何も調整しないことを決めました。というわけで、本日はデモのみ、つまり、もう何もしないということで、のんびりと楽しむことにしました。

さて、至福の一枚を紹介しましょう!レイターに積載されたG-Tuneです。

20040811P01.JPG - 20,423BYTES

さてさて、今回もいろいろな方にお会いできたのですが、なんと、ちょこぱさん、三月兎さんにお会いして感激!三月兎さんは、前日、ビデオを撮って下さっている人の中から、ひょっとしてあの方かな〜と思っていたのですが、やっぱりそうでした。ちょこぱさんは、以前より一度、お話してみたかったんです。すいません、すごく緊張していました。次回は、もっといろいろな話を聞かせてください。他にも、えんぱくの石川さんにお会いできましたパンダムでエントリーされている浅草ギ研のぴしいさんも、お元気そうです。前回、お隣さんだった西さんも、今回は奥様と!参加されていました。席が遠かったので、予選日はあまりお話できなかったのがちょっと残念でした。西さんのJOE2はかわいい!すごくきれいに作ってあります。トーナメント日に見せてもらったのですが、すごくスムーズに動作します。「ひょいひょい」と歩く、といったらいいんでしょうか…。あと、UE村さんのTia.は、実物はもっとかっこいい!自分にはなかなかできそうもないです。

デモンストレーション
というわけで「1番」です。いつものようにはりきって「キーンゴゴゴ!」。今回は、針金でG-Tuneを吊って登場(本当は釣り糸の予定だったのだが、忘れたのでスズメッキ線)。距離センサでリング面を検知して変形させるというアクションでスタートしました。挨拶、基本性能、そしてハデ目な180度ターンまではよかったのですが、本が登れない…。どうしたんだ?登れないというか、登る前に倒れてしまう。左足首のサーボがおかしい。倒れても、自動復帰機能と、距離センサに手をかざすことで機体の向きを変えることができるので、これで再チャレンジ。3回ほどやったところで時間ギレ…。うぅぅ。絶対ダメだ。デモの半分もできていない。しかも本が登れていない。予選落ちた…。

20040811P02.JPG - 10,675BYTES

デモンストレーション後
というわけで、開き直って、控え室前方の1/4リングが開いているのを見計らって、デモしまくり(相変わらず、本を登る前に倒れるけど)。今回、G-Tuneの機動性をめいっぱいアピールするようなデモなので、ハデ目なせいか、結構、ウケました。よかった。やりたいことは正しかった。ここでなんと、九州大学ヒューマノイドプロジェクトの網野さんと孫さんに、G-Tuneのデモを見ていただいて、しかもG-Tuneも興味深げに見ていただいて、とても感激です。なぜか足首回りをよく見られていたように思えますが、何を見ていたんでしょうか…。後に、志々目さんからもいろいろ話を伺って「古賀さん、網野さんはすごい」とのことで。いやいや、みなさん、すごいです。

そうこうしているうちに、暫定リザルトがでてきて…なんと、「予選通過する可能性」がでてきました。なんと、まだ20番台にいます。おお、これはいったいどうしたことだ???おいらってゲンキン。ナゲヤリモードからユメミルショウネンモードへチェ〜ンジ!もう、どきどきはらはら。

そして、最後…通りました、予選。どうやら、センサー動作をわかりやすくやっていたのと、意地でもロボットに触らずに復旧を試みていたのがよかったのか。さて、今夜もまた眠れなくなりました。おほほ。でも、次はセンサー入力で、動作キャンセルモードもつけよう。

20040811P03.JPG - 25,823BYTES
クリックで拡大

 

2004/08/10

ROBO-ONE参戦記〜J-Class

朝のひと時
8/6の早朝、車で一気に川崎に移動して、とりあえずホテルに車を預けて予定通り会場入り!1FでKenjiさんとイトウさん発見。ちょっと時間も早かったので、少しだべってから4Fで受け付け。んで荷物をごそごそと広げて、レイター達と記念撮影しました。びっくりしたのですが、レイターって、結構大きいんですね!その後、マリモトチームの中村さんに、今回のマシンを見せてもらいました。やっぱり全部、片持ちでした。す、すごい。

20040810P00.JPG - 20,933BYTES20040810P01.JPG - 16,333BYTES

今回、マシーンのデキは、思ったよりは完成しているので、ま、調整は特にせず、資格審査へ。資格審査は一発でパス!こりゃ縁起がいいっす。

席を陣取って(J-Classは自由)ゴソゴソしていると、いずみかわさんきららRさんが後ろに来てくださって、マシンをいろいろ見せてもらいました。うげげ、きららRさんのマシーン・リトル・トライダーG1、写真とるの忘れた〜。すごいきれいに作ってあるんですよ〜、サーボの裏蓋削ってあります。その後、Kenさんにも声をかけてもらい、せっかくなので、写真を頂いてきました。う〜ん、かっちょいい。今回もしっかりスーパーロボットしています。

20040810P02.JPG - 17,166BYTES20040810P03.JPG - 18,153BYTES

そうこうしているうちに、Zipponさんが手ぶらで…。コアの復帰ができず、今回は棄権とのことで、すごく残念でした。以前使っていたコアを載せかえるにも、サーボのコネクタとかも相当交換してしまっているので、時間的に無理だと言っておられました。このあたり、軽量化をしていくに当たって「どこまで標準品でいくか?」という、難しさを持っていると思います。

なんか、J型装備extLくんが動かず苦労しているのを見かけ、話を聞くとどうも単4の電流不足っぽい(このあたり、すぐわかるのがなんだかんだいって、経験を積んできたのだな〜と思ってしまう)ので、動作データデバッグ用の単3ニッケル水素を渡しました。経験上、電流が問題になる場合、単3を4本にした方が、良く粘って動くことが多く、また4本なら重量もなんとかなりそうですし。マジな話、G-Tuneでも、単4を6本でいくか、単3を4本で行くかは、悩みどころです。後で聞いたら無事予選通過した模様。よかったよかった。アクリル板の加工がきれいなロボットでした。でも手加工と言ってました。うちももっとがんばろう。

また、マジンガアJr.のゆみさん達ともお話できました。いつもそうなんですが、やっぱ、チームで沢山いらっしゃると、なかなか声がかけづらくて。今日は、お子さんといらっしゃったので、勇気を出して声をかけてみました。マスタースレーブシステムを装着した姿がとてもりりしい!です。

20040810P04.JPG - 19,511BYTES

予選
予選は歩行競技です。一台ずつ、リングの赤コーナーから青コーナーへ、青コーナーから赤コーナーへと、2回計測します。うちのは9位でした。なかなかまっすぐ歩かないです。うぅぅ。そこへ、なれない操作が加わって、向きを変えるにも結構時間がかかってしまいました。このあたり、やっぱなんとかしないといけません。つっちーさんから「変形できる?」リクエストがあったので、ここで一発やりました(笑)。

細かい順位は置いといて、すごかったのがリトル・トライダーG1です。速い!というか、スムーズ!です。同じMICRO-MGで動いているロボットとは思えません。正直、G-Tuneの歩行速度は、現状であきらめていましたが、この瞬間、自分の精進が足らなかったことを知りました。

全般的に見て、結構ハイレベルな気がします。1つはKHR-1がレベルを引き上げているという見方がありますが、KHR-1が出てくることを想定しているのか、他の自作ロボットも同様に、KHR-1並にレベルアップしています。

トーナメント
20040810P05.JPG - 12,194BYTES第一回戦は、なんと予選1位の「さまーばけーしょん1」です。KHR-1ベースに見えますが、なんとなく、自分にはKHR-1ベースのベースに見えました。

自分にとって、トーナメント戦は、まともに戦うのはこれが初めてです。めちゃくちゃ緊張…。最初、引っ掛けられてダウンを取られましたが、後は、もう、押しまくり。相手の方がサーボパワーがあるとか、メカのデキがいいとか、そんなことはまったく無視して、押してみる。うふっ。やっぱり。押せました。そして、リングから押し出しました。最後は判定にもつれこんだのですが、無事、初戦突破しました。

このとき、実はオペミス多発でやばかったです。

というわけで、第二回戦まで、オペトレ。でも、どうしてもリリース用のボタンを押すのを忘れるんですよね〜。コマンド入力リリース用のキーを押さずにモード移行すると、「ごろん」。運良く、その操作のキャンセルが間に合えばまだいいんですが、緊張のせいか、なかなかできませんでした。

 

20040810P06.JPG第二回戦は「CT3」です。

脚のヨー軸にギヤードモータを装備し、くるくると回ることができます。長いくちばし状のもので相手をひっくり返すのが基本格闘パターンの模様。

とはいえ、G-Tuneの方もかなりしゃがめるので、そんなには苦労しないハズ…だったんですが、いやいや、オペミス続発。自爆も連発。練習不足がここへ来てでまくりです。いや〜、練習は大事です。そんなわけで、2回リングから押し出すも、結局勝てずでした。

ま、そんなわけで残念な結果だったんですが、トーナメント戦は初めてだったので、かなりいろいろな情報を得ることができました。人様の戦いを見るだけではわからないことって多いですね〜。「もし、明日、予選を通ったら、動作見直しだな〜」なんて思いながら、J-Classは終わりました。なぜ、その日にやらなかったかって?J-Classの夜は、予選デモを作らなくてはいけなかったからです。ハイ。また、オペミス対策は大事です。

 

というわけで、実戦から学んだことは、

  • オペミスは必ずするから、操作プログラムは手を抜くな
  • 動作データは、攻撃、防御、移動のすべてをバランスよく配置すべし
  • G-Tuneの構成ならば、単4・6本で、3分2セットはフル稼働できる

などなどです。

 

20040810P07.JPG - 19,430BYTES
クリックで拡大

それから、結構、「あ、ホームページ見てますよ〜」と声をかけてくださる方が多く、とても「しあわせ〜」でした(笑)。オリジナルマインドさんからも声をかけていただきました。うれし〜。

20040810P09.JPG

そういえば、リトル・トライダー・G1の写真ですが、集合写真から切り抜いたものをアップしておきます。ほら、顔とかもちゃんとあるんですよ。ラジコンの方をやってらっしゃるとのことでしたが、初物とは思えないです。ちなみにマイコンは、姫路ソフトワークスのものを背中イッパイに搭載していました。もう少し小さくなるといいですね〜。

 

2004/08/09

帰宅しました。

20040809P00.JPG - 17,875BYTES本日、やっと帰宅しました。ROBO-ONEが終わってから、せっかくなのでと思い、富士山のあたりをうろうろしていました。いや、何はともあれ、ROBO-ONE関係者のみなさま、お疲れ様でした!今回は「台風」等の問題も無く、無事、ROBO-ONEに行ってきました(第4回大会の時は、すごい雨だったのを覚えていますか?)。

大雑把にG-Tuneの結果報告ですが…
J-Class…予選無事通過(9位)。決勝ベスト8(CT3に敗れる)。
ROBO-ONE…予選ギリギリ通過(30位)。決勝ベスト16(HAJIME ROBOTに敗れる)。

さっきから、気が付けば寝ていた…を繰り返しています。あ〜疲れた…。そんなわけで、詳しい話はまた後ほどということで。今回は、会場ではほとんど調整作業をしなかったので、たくさんの方とお話できました。また、今回、初めて「トーナメントでまともに戦った」ので、とてもいい勉強になりました。そんな話をいろいろ書きたいな〜と思っています。

そして、次へのアプローチはだいたい決まりました。

今回は、前回以上に気分良く帰ってきました。とても面白かったですよ。おほほ。今でも時々思い出してはニンマリしてますもん。みなさま、ほんとお疲れ様でした!またお会いしたいです。

ではでは!

 

2004/08/05

いよいよ明日だ〜

明日はROBO-ONE、J-Class
うごごご。もう明日だよ〜。こりゃ参った。歩行もイマイチだし、J-Classの予選、残れるかな〜。それも心配だけど、またまた問題発生で大変でした。スケジュールが押しているってイヤですね〜。

SERIAL COMMANDERイマイチ
作った時から「操作感がイマイチだな〜」と思っていましたが、SIPHA CORE側のプログラムもできて(オイオイ)試してみたら、相当イマ〜イチでした。誤操作がでるでる。ダメだ、こりゃ(古い)。いくらか練習はしてみたんですが、やっぱダメです。これでは使えません。

大丈夫。大会は明日。時間はまだある!

奥の手
ならば、「プロポからシリアル送信してしまえ〜」ということで、土壇場ではじめてしまいました。先に言っておきますが、これも失敗しました。

20040805P00.JPG - 19,131BYTES20040805P01.JPG - 14,895BYTES

この写真は、自分が使っているフタバのプロポです。裏をみると、こんな端子がついてます。この「TRAINER」ってなんだかご存知ですか?

これは、簡単に言うと、別のプロポからこのプロポを操作するためのものなんです。本来の使い方としては、ラジコンの先生と生徒のプロポをケーブルで繋いでおいて、先生のプロポで操作したり生徒のプロポで操作したりするためのものです。

ネットで調べるといろいろ出てきますが、入力と出力があって、「高周波回路を動作させずしてプロポ操作信号を出力する」ことができます。信号は、4ch分、まとめて一本でして、これをマイコンで解析することで「プロポ操作」を直接マイコンに取り込むことができます。

こんなコネクタは持っていないので、直接中にハンダ付けして、マイコンの電源もついでにプロポから取ってと改造して、プログラムも「えいや〜」で作って…。

 

とぅりゃぁぁぁぁ!

 

うまくいきませんでした。信号そのものは5V弱なんですが、どうも信号が「ふらふら〜」な感じがします。トランジスタを噛ますとか、シュミットトリガなどで整形しないときついかもしれません。

ただ、この機能、非常に面白そうなので、また話をアップします。入力もありますので、うまくいけばマイコンからコントロールできる「81コマンド送信機」になりそうです。このプロポの場合、送信機、受信機(しかも超小型)あわせて8000円もしませんので、これにマイコン+オリジナルコントローラをプラスしたら、結構使えるかもしれませんね!

それに、プロポの中身って、2/3がスティックなんですよ。だから、バラすと、かなり小さくなります。
(ばらすのは電波法上、まずそうです。よくみると、型式認定のシールはケースに張ってありますんで…)

奥の手・レベルB
というわけで、こんなこともあろうかと、会社の後輩(ありがとう!)から借りておいた「USBジョイスティック」を使うことにしました。プログラムを組むのも大変なので、JoyToKeyを使わせていただくことにしました。これまた、こんなこともあろうかと、以前、いしかわさんの掲示板でよしむらさんがかかれていたのを覚えていました。これでジョイスティックのボタンにキーボードを割り当てて、シリアル端末ソフトに文字を送ります。

おお、簡単!しかし、借りてきたジョイスティックでは、プロポ動作をエミュレートするにはボタンが足りない!「方向キー」、「正面ボタン6個」、「セレクタ風ボタン1個」、「背面ボタン2個」です。「方向キーがセンターのときに文字出力」というのができないみたいなので、「方向キー」(プロポの左スティック相当)、「背面ボタン1個」(左スティック操作キャンセル用)で使ってしまうと、残り8個!G-Tuneには9個のモードと、それぞれに8個のコマンドがあります。この体系を維持しようとすると、キーが足りません。

ところが、このJoyToKey、すごい便利な機能がついていて、ボタンで設定が切り替えられるんです。つまり、今まで、「A」とかに割り当てていたボタンを、設定変更機能を使って「B」に替えれるんです。こりゃすばらしい!これで、「正面ボタン6個」に、二通りの使い方ができるようになります。これで操作を補います。

SIPHA CORE側の方のプログラムも、またまた改造し始めて…

 

ふんぬぅぅぅ、うぉりゃぁぁぁぁぁぁ

 

できました。うん、パソコンが必要なのが難点ですが、これでいくことにします。

ちなみに、「奥の手・レベルC」は、「Wide Studioで専用ソフトを作る」でした。そんなにすぐにできるもんなんでしょうか?実はできます。WideStudio、すばらしいです。これを先に選択しなかったのは、「操作中にマシーンから目を離してはいけない」、「操作中も適正なポジションで操縦できないといけない」という、マイルールのためです。やっぱ、マシーンと一心同体で操縦しないと。

というわけで、そろそろ荷物をまとめよう。

 

それではみなさん、会場でお会いしましょう〜!

 

それにしても、ROBO-ONEって、なんでお盆休みの前なんだろう?休みが取りにくいです。

2004/08/04

速い歩行は難しい

新アルゴリズム調整時間切れ…
今回、J-Class参戦ということもあって、歩行速度を改善しようと思い、新アルゴリズムにチャレンジしていたのですが、どうしても安定性が得られず、あきらめることにしました。とはいっても、、このまま埋もれるにはもったいないので、動画アップします。

20040804P00.JPG - 12,110BYTES
クリックで動画再生

一見、普通の歩行ですが、よく見ると、「腰を落としていない」ことに気づかれると思います。そう、これは腰を落とさずに歩行する、「SHIN-Walk」ならぬ「SISO-Walk」です。いや、冗談です。うちのは名前をつけるほどのものではありません。実は、脚が接地しているときは、膝をまったく曲げずに歩行しています。

ま、これは次回にすることにして、今回は従来と同じアルゴリズムで行こうと思います。

従来のアルゴリズムは…上体等速運動アルゴリズム(あまりこれをやっている人はいないような気がしますけど)でやっていまして、G-Tune 2004Fの方でアップしている動画のものです。これを少しチューニングして使おうと思います。

 

2004/08/03

動作調整最終フェイズ

基本の動作作成完了
スケジュールは、先週末までのSIPHA CORE怪現象のため非常に遅れておりますが、ようやく4セル(4.8V)での基本的な動作、攻撃の小物、事前審査動作、予選用動作の難しそうな部分のテストが終わりました。 大物とかは、あきらめモードで少しだけ作ってあとは後回し、今夜から6セル(7.2V)での最終調整に入っています。 最近はこんなふうにやっています。

  1. 4セル(4.8V/単3)で動作を作成
    最初は4セルを外部から供給して動作を作成しています。本番用バッテリは重りとして搭載しています。4セルで始める理由は2つあります。
    1つはサーボ保護目的です。やり始めというのはどうしてもミスが多く、サーボロックさせたりすることは多々ありますし、また、知らないうちにロックさせていて、気が付いたら焼けていたなんてこともあったりします。
    2つめは、電圧が下がった時でも動作できるような動作データも欲しいからです。
  2. 6セル(7.2V/単3)で動作調整
    静的な動作はほとんどそのままで動作できるのですが(6セルだと、もっと速く動かせるとかありますけど)、勢いのある動作はどうしてもオーバーアクションで動作してしまい、転倒したりします。これを、速度、指示値等を調整して、6セルでも動作できるようにします。
    G-Tuneの場合、消費電流が結構少ないので、単4でも単3でも、元気なうちはあんまり傾向は変わらないので、これで大方の調整が終わります。
  3. 4セル(4.8V/単3)で再動作調整
    「また〜?」という感じですが、もう一度、変更した動作を、4セルで動作確認をします。4セルで、どうしてもうまくいかない動作がある場合、ここではあきらめて、両方使うことにします。SIPHA COREは、電源電圧でスクリプト内をジャンプする機能があるので、「電源電圧6V以上の場合はコレ、未満の場合はアレ」みたいなスクリプトにして一本化します。
    このあたりは、次回実装予定の「B-Script」でもっとスマートなやり方にしたいと思っています。「A-Script」は「Action Script」、「B-Script」は「Brain Script」の略(仕様はまだ秘密って…わかりやすい名前ですね。^^;)で、 SIPHA CORE、次回に向けて構想練り中です。
  4. 本番実装
    というわけで、最後は6セル単4で動作させてテストです。これで問題がなければ「完成」です。

ここまで書いていて、すごいことに気が付きました。

それは…

「G-Tuneは、4セルでも一通りの動作ができる」

う〜ん。つ、つまり6セルも必要ないってこと??? いやいや、気を取り直して。ロボット製作(どころかこの手の工作も)始めて1年の自分が言うのも恐縮ですが、ミスはサーボ破損につながりますので慎重にやってます。

 … あれ?

 いつのまにかこのホームページも1年経ってました。2003/07/03から始めてました。あらら。そうか、一周年記念の時は、出張してたんだった。

みなさま、今後ともよろしくお願いいたします。

 

2004/08/01

苦悩解決!(したかも…)

20040801P00.JPG - 11,424BYTES
クリックで動画再生

 

SIPHA CORE 調査状況
昨日の夜、サーボ出力端子の保護抵抗をすべて1.5KΩに変えました。あれから数時間以上稼動させていますが、今のところ問題は発生していません。もちろん、意地悪に、サーボ電源を入れたままリセットするなどの操作もしてみましたが、今のところ大丈夫です。う〜む、何かサーボにばらつきがあるのかな〜。大会が終わったら、追跡調査したいと思います。

というわけで、皆様、いろいろありがとうございます。なんとかなりそうです。

 


Back Number of SISO-LAB FUTEIKI TOPIC
2004 Jan. Feb. Mar. Apr. May. Jun. Jul. Aug. Sep. Oct. Nov. Dec.
2003 Jan. Feb. Mar. Apr. May. Jun. Jul. Aug. Sep. Oct. Nov. Dec.

Top Page