前作 Weird-7 で第3回 ROBO-ONE に出場してから、はや1年...
TVのインタビューで「もう二度と来ません!」と言ったことなんかすでに忘却の彼方 ---
そして時が流れ ---
「木製」のアイツが、「3万円」のアイツが帰ってきた!
その名も(ジャジャーン)「Weird-72」ウィアード・セブンティートゥーだぁぁぁ〜〜〜
くっそ〜、大晦日はKTSF日本語放送の「NHK紅白歌合戦」を見るハズが、夜7時になってもスタートしないので「ん〜?じゃぁ8時からかなぁ」って油断してたら、実は実は「第一部」は夕方やってたんやんけっ!
って去年のことで騒いでも仕方が無いので、あらためまして「新年あけましておめでとうございます」。今年も皆様、ウィア〜ドなワタクシのロボットで一挙に盛り上がりましょ〜!って盛り上がってんのはオレ一人か...
で、肝心な Weird-72 の方ですが、クリスマス4連休(12/25〜12/28)で何とかサーボモーターからマイコン基板までの配線を終えて、何とか動かす所まで行くハズだったのが、実際は配線にめちゃめちゃてこずってしまい、結局マイコン基板まで引き回した段階でタイムアップ。
それで今日は、マイコン基板を手にあーでもない、こーでもないと、22本の線と格闘しながら、どのポートにどの線を入れるかレイアウトを決めてました。あと、無線モジュールを載せる方法とか、その他のチップの載せる場所とかも決めてました。っていうか、決めようとしてました。結局決まらなかったんですけどね...
ったって、別に自分で基板起こしたりした訳じゃなくって。
昨日の続きで、マイコン基板への配線レイアウトを考えていたんだけど、よ〜く考えたらマイコンのフラッシュ書き込むのに、外部でシリアル→TTL レベル変換が必要だって思い出した。ん?秋月の AKI-H8/3664FP って ADM232 内蔵してるじゃん、って思ったアナタは秋月なヒトォ〜、秋月のプロォ〜ですな。その通りでございます。しかし今回は訳あって ADM232 もその周辺のチップコンも 32.768KHz のクリスタルも取っぱらったのでございます〜。
だもんで、外部にレベル変換が必要になっちゃった訳。手持ちの MAX232 も無いので、仕方なくマイコン基板から はぎ取ったフラットパッケージ&チップコンをユニバーサル基板の上でチマチマはんだ漬け。はい、付けじゃなくってまじで部品が小さすぎてハンダに漬かっちゃいました。うっき〜!自分で基板起こしちゃってるキミキミチミィ〜!いったいどうやってこんな小さい部品ハンダ付けしちゃってるわけ???一度技術的ご指導を賜りたいっ!
こうやって苦労の末、お手製とりあえずレベル変換基板は無事、動いたのでした。しかし、まだ肝心なマイコン周りの配線をどうしようか決まってない〜。うぅ。
というわけで、悩みに悩んだ末、結局マイコン基板への配線は「とりあえずやってみよう」になりました(笑)「これ切ったら後戻りはできないぜ」などと思いつつ、余裕をもって今まで引っぱり回してきた配線一本一本をブチッ、ブチッっと切りながらハンダ付け。あ〜あ、これで何か起こったら最後、最初からやり直し...ってことはないか。配線なんてイザとなりゃ継ぎ足しゃ何とかなるよね〜。
マイコン基板への配線が終わり、ビヨンビョンと四方八方に伸びていた線が無くなった瞬間、おぉ〜かっちょえぇやんけぇ〜。ついに最終な姿とあいなったのでございます。
さっそく Weird-7 で使ってたソフトを書き直してサーボ数を増やし、サクッと動かしてみやした。おぉ、ちゃんと動いた動いた。まずは、どのポートにどのサーボが繋がってるかを動かしながら調べて(って、そんなことすら設計無しでやっとるんかいっ!ってそうなんです。だって実際に配線してみて一番綺麗に並ぶように付けてったんだもん)図面に書き込んで。全サーボのセンターポジションと Max ポジションを調べて、まともに全サーボが動くようになった所で、サクッとモーション作成。屈伸?歩行?そんなもんすっ飛ばして、いきなり「必殺ワザ」モーション作成じゃぁ〜!
結果: あかん。「必殺ワザ」失敗っす...
しかし、この WebRemote、公開してからはや9ヶ月が経過したけど、今回のようなマイナートラブル(断線とか)のみでずっと動きつづけてるのね。しかもこの機体って、まさに第3回 ROBO-ONE に出場した時の機体そのものなんすよ。目指せギネスビ〜ル!じゃなかったギネスブック〜!
って、そんなことしてる場合だろうか...早く Weird-72 の必殺ワザを仕上げないといけないのに。うーん、現実逃避だな。
原因なんて、いくらでも考えられる。Weird-7 用に作った、このあまりにもいい加減なソフト。それをベースに適当にサーボ数増やしたので、制御パルスの周期が 20mSec より大幅に長くなっちゃってるわ、複数サーボ間のシンクロもめちゃめちゃだわで、速い動きに再現性が無いのだ。
ってことは試す前からわかってたこと。これでうまくいけば(とりあえず proof of concept は完了したってことで)後がラクだなぁって思ってたんだけどねぇ。というわけで、このワザが出来ることを当面の目標としま〜す。歩行や起き上がりやロボコンマガジン昇り降りはその後ということで。
しかし、そもそもこの機体で、このワザって可能なのか???トルク 4.1kg-cm の S3003 で...
やはり日付が古い順に、上から下に進むように並べ替えました。とりあえず cgi で最新の日付に飛ぶようにしときやした。あ、それよか cookie で前回読んだ所覚えとく方がいいかも。
しかし、なんで最近こうクソ寒いんだ!きっと外気温は10度切ってる〜!って、そんなに寒くないじゃんとお思いでしょうが、ここシリコンバレーじゃぁこの気温はめちゃめちゃ寒い。
さすがに今日はロボット部屋(WebRemote が置いてあるため年中無休で蛍光灯が点いてて外から見ると不気味な部屋)に入るのも躊躇するなぁ。このままダイニングテーブルでノートPCのバッテリ切れるまで作業ということで。
う、もしかして、1月末の東京ってもっと寒い???
正月に日本に行っていた友人に頼んでいたロボマガを受け取りました!心配していた「厚さ」もそんなに無くて、よかったよかった。
しかし、練習用に買ったハズがついつい読みふけってしまい、すでに表紙が閉じてくれない〜。うぅ...
ロボマガ読んでても一向に前には進まないので(笑)ようやくマイコン側ソフトのスペックを一通り書き出してみた。今回はさすがにフルアセンブラってのは止めて(笑)早いとこ作っちまって自律動作を完成させないと、事前審査すらパスしない〜。
今回のソフトは割り込み処理がいっぱい必要なので超ウレシイっす。やっぱマイコンは割り込み処理っすよね〜!20ms 周期で 32ch 分のサーボパルス出したりとか、挑戦の死骸、いや、し甲斐がありますなぁ。ん?ならやってみせろよ?って???う〜ん、以前フルアセンブラで組んだのだったらありますけど...ポイントだけ抜き出すとこんな感じ:
RAM_TIMERW_RING_BUFFER .EQU H'FD00 ; 256 bytes : : MOV.L #GRA,ER3 MOV.L #H'FF00,ER5 MOV.L #RAM_TIMERW_RING_BUFFER,ER6 : : ; state ; ---------- ; interrupt process 14 (+ 1~13) INT_TIMERW: MOV.W @ER6,R4 ;4 MOV.B R4H,R5L ;2 BNOT R4L,@ER5 ;8 ADD.B #2,R6L ;2 MOV.W @ER6,R4 ;4 MOV.W R4,@ER3 ;4 ADD.B #2,R6L ;2 BCLR IMFA ;8 RTE ;10 ; ---------- ; Total 58 (3.625uSec + 0.0625 ~ 0.8125)
あとはメインループの中で、ER6 に追いつかれないように(笑)RAM_TIMERW_RING_BUFFER にどんどん値を計算して4バイト単位で追加していけばOK。正確には追加じゃなくって、時間でソートかかるように挿入処理してやって、あ、その前に(Pulse Off する時点 +- 5uSec)以内に他の奴がすでに居たら、自分の Pulse On する時点をちょっと前後にずらしてやって(すると正確には 20mSec 周期じゃなくなるけど、+-10uSec 以内くらいなら無視してもOKでしょ?)、それに合わせて Pulse Off 時点もずらせば、パルス幅は全くブレませ〜ん。
ちなみにこの方式だと、パルス幅のみならず周期も自由に変えられますよ〜ん(笑)
でも実際に周期変えて色々とやってみましたけど、ゆっくりにしたら「カッカッカッ」みたいに、いかにもタマにしかトルクかかってまへんでぇ〜みたいな感じになっちゃったので、ぜんぜん使いものになりまへんでした(笑)
モーションマクロを読むインタープリタ部分がようやく完成。しかし、マイコン側を完成させても、さらにPC側ソフトの改造も必要なので、まだまだ先は長い〜。何とかこの週末中には自立動作させたいぞ!
前回読んだ所から開くように変更しました。ってこんなことに凝ってる場合かよ(笑)
昨日はナゾの頭痛でダウン〜。たぶん目の使いすぎですな。いくら液晶ディスプレイだからって、ずっと見てたらやはり疲れ目になるらしい(笑)
今回は割り込み処理がいっぱいなので、AKI-H8/3664FP な皆様が苦労されている「TIMERW 使って PWM 出した場合のジッタ」で困る前に、対策を考えてみました。
って言ってもまぁ方針は簡単で:
- 割り込み処理はできるだけ短くする
- 長くなるんだったら、多重割り込みを許可させる
ってことだけです。う〜ん、なんて基本的な。
というわけで、割り込み処理は当然アセンブラでバリバリに組むことに決定。しかし、Cと混ぜて作る時には、レジスターの退避とかで時間かかるんだよね〜。
で、できた INT_TIMERW_ROM はこんな感じ:
; state ; ---------- ; interrupt process 14 (+ 1~13) INT_TIMERW_ROM: BTST IMFB ;6 BEQ INT_TIMERW_IMFC ;4 BCLR #0,@PDR5 ;8 BCLR IMFB ;8 ANDC #H'7F,CCR ;2 ; Clear I flag RTE ;10 ; ---------- ; Total 52 (3.25uSec + 0.0625 ~ 0.8125) INT_TIMERW_IMFC: BTST IMFC ;6 BEQ INT_TIMERW_IMFD ;4 BCLR #1,@PDR8 ;8 BCLR IMFC ;8 ANDC #H'7F,CCR ;2 ; Clear I flag RTE ;10 ; ---------- ; Total 62 (3.875uSec + 0.0625 ~ 0.8125) INT_TIMERW_IMFD: BTST IMFD ;6 BEQ INT_TIMERW_IMFA ;4 BCLR #1,@PDR5 ;8 BCLR IMFD ;8 ANDC #H'7F,CCR ;2 ; Clear I flag RTE ;10 ; ---------- ; Total 72 (4.5uSec + 0.0625 ~ 0.8125) INT_TIMERW_IMFA: BCLR IMFA ;8 ANDC #H'7F,CCR ;2 ; Clear I flag JMP @INT_TIMERW_IMFA_ROM INT_TIMERW_ROM_END:
まぁ実際には ANDC の直後に、必要であれば多重割り込みが発生するので、最悪でも 62ステート(3.875uSec)の遅れ(IMFD の直後に IMFB が入った場合)で済むハズ。
当然、これ以外の割り込みもかかり出すと、もっと遅れますな。
ん?パルス OFF 用の BCLR が常に同じポートを指定してるから、最大3サーボまでしかサポートしてないやんけ〜って???うへへ、実はこのルーチンはRAM上で動かすのだ。ほんでもって BCLR 命令は自己書き換えでバリバリっと...
って、「今回の ROBO-ONE 再出場にあたって、自分に課していた超難題クリアへの突破口が開けたよぉ〜」記念日だぁ〜!!あぁ、めちゃめちゃうれし〜〜っす!!前回の Weird-7 で初めて「前転」が出来た時よりもウレシイのよぉ。ううぅ、うれしい。
しかし今日は、昨日作った割り込みルーチンで少しハマってしまった(笑)
というのも、アセンブラ側からC側のポインター変数にアクセスするのに、すっかり 32bit 長だと思い込んでいたから。こんな感じ:
.IMPORT _g_pCurrServoTime : MOV.L @_g_pCurrServoTime,ER5 :
何とか 16bit 長に修正して動き出した後でも、実はまだバグ予備軍が...:
PUSH.W R5 MOV.W @_g_pCurrServoTime,R5 : MOV.W @ER5+,R0 : MOV.W ER5,@_g_pCurrServoTime POP.W R5
たまたま動いていたのは、まだ 32bit 演算関係をやらせる前で、常に E5 が 0x0000 だったから。いやぁ、バカですな(笑)しかし、こういうバグって、トラブりだしたらぜんぜん見つからないんですよね〜。特に今回のは割り込みルーチンの中だったので、メイン側が複雑になっていく前に見つかっててよかったよ、ホント。
しかし嬉しいなぁ。今日はきっとグッスリ眠れるよ〜。
明日からは、これを励み(心の支え?)として、迷うことなく前に進めそう。
って、なんか言葉が変だな。まぁ意味は通じるかな?
実は前作の Weird-7 では、加減速を考慮した(つまり加速度が一定の)動きをすれば、サーボは滑らかに動くだろうってことで、モーションの定義は何と、
- 現在の位置から一定の加速度で、指定した角度に動き、その角度で停止
- 現在の位置から全速力で、指定した角度に動き、その角度で停止
- 現在の時間から、指定した時間だけスクリプトの実行を停止(その間もサーボは動いてます)
という3つの指定のみしかできなかったのだ。つまり、サーボを動かすという指示の中に、「時間」の概念が全く無かったのだ〜。よくぞこんなんで動いてくれていたもんだ(笑)
これは、超いいかげんにお気軽に動かすにはもってこいだが(笑)2つ以上のサーボを違う速度でシンクロさせることができない、という致命的な欠点があるのだ!よって、普通の足首・ヒザ・股関節のあるロボットでは屈伸すらできない。(足首とヒザが同じ速度で曲がるので前にコケる)
そこで、皆さんがされているように、直線補間やらスプラインやらが出てくるんだけど、う〜ん、なんかいまいち気乗りがしなくって...もっとこぅ、なんかテキトーに動く方法がいいなぁ(笑)というわけで、今それを考え中。
何時間も考えた末に(ってウソです、さっきまでカノープスのY社長とかと飲んでました(笑))パッと悟りました。やはり今まで通りにやろう!と(笑)
というわけで、今までのにもう一つ、
- 加速度を指定できるようにする
ってのを追加して終わりです。な、なんて安易な...
しかし、これだったら今現在完成してる自立動作ルーチンでほぼ完成じゃん〜。極端に作業量が減ったね、ラッキー!この浮いた時間で...ゆっくり寝よう(笑)
いやいや、一旦やることが決まると、気持ちいいほどバリバリ進むなぁ(笑)
明日中にマイコン側はケリつけて、金曜日はPC側のコンパイラールーチンを完成させよう。そんでもって今週末はモーション作成開始じゃ!
しかし、今積んでる小型化した(って言ってもただ単にカッターで切っただけ...)AKI-H8/3664FP 基板が、小型化の影響でちょっとヤバい状態なので(笑)新たにカットし直した基板に交換する作業もあるなぁ。うぅ、あれだけ高密度配線をもういっかいひっぺがすのは、かなり勇気のい...
...て、停電じゃぁ〜〜〜〜〜〜〜〜〜!!!現在夜の11時半ですが、停電なので寝ます(笑)
後日談: って、結局今朝(15日)になってもまだ停電は復旧せず。なんなんだかなぁ。というわけなので、本日は WebRemote お休みっす。停電でハードディスクがふっ飛んでなければいいが...
停電はどうやら夕方復旧したらしい。WebRemote も生き返りました。またコカしたり壁に突進させてイジめてあげてください(笑)
そういやどっかの掲示板で「ブルーになったり、イライラしたり、無気力になった」「そんな方にピッタリ」「凄いスピードで癒されていきます」って書かれているのを読んで、おぉ、WebRemote は「癒し系」(笑)としても、世のため人のために役立ってるじゃん〜!ってちょっと感動したっけ。
さて、ようやくロボット側のソフトが書き上がりやした。しっかしこれ、動くのかね?PC側のコンパイラーをまだ作ってないので、テストすらできまへん。明日金曜の夜が勝負じゃ!
あ、そうそう、Digi-Key に注文しておいた追加分の送・受信モジュールとともに、試しに買ったテフロンワイヤーが届きました。しか〜し、残念ながら高屈曲ワイヤーではなかったっす。くっそ〜、今使ってるジャンク屋でたまたま発掘してきた高屈曲ワイヤー(90m で $6.00)は、Weird-72 にはちょっと太すぎて不恰好なんだよなぁ。そういや夢さん、送ったワイヤーは使ってくれたかなぁ。電流いっぱい流せるので「鬼河童」殿には似合いそう。
やはり、昨日書いたファームウェアにはバグがいっぱいでした(笑)
ようやくバグが取れて、ROM 上に置いた自律動作用モーションスクリプトを実行できるようになりました。やったね!
しかし、デバッガが無い環境ってやっぱツラいっすね。まぁ今日の部分は全てCだったので、目視デバッグでも何とかなりましたが。最低10回は Flash 書き換えたなぁ...
つづけてPC側のコンパイラー作ろうかと思ったけど、眠いのでまた明日ってことで(笑)
コンパイラーって言っても、ただ単に今までPC側に載ってたモーションスクリプトのインタプリタルーチンを改造して、バイトコード吐かせるようにするだけです。
おぉ〜、3月20〜21日にサンフランシスコで開催される、ロボットのオリンピック「ロボリンピックス」http://www.robolympics.net/ のサイトで ROBO-ONE を発見しましたっ!という情報を ちょこぱ 氏からいただきました。
確かにエントリーのページに、「ROBO-ONE」がカテゴリーとして追加されましたね。
いやぁ〜、当然私はエントリーします。ROBO-ONE 参加するのに飛行機乗らなくていいなんて、なんかトクした気分〜(笑)ウチからだと車1時間で行けるのだぁ〜。
日本の ROBO-ONE 参加者のみなさ〜ん、一度ご自慢のロボット持って、サンフランシスコに来てみませんか!!!
って、来る訳ないか...
今日は何とか、PC側のモーションスクリプトコンパイラーが完成して、PCで作ったモーションをマイコンのRAMに送り込んでは動かす、ってのができるようになりました。
あとはこれでモーションを1つ1つ作ってって、全部が完成したらそいつをマイコンのROMに焼いてやれば自立動作はOK!
さて、いよいよ明日からモーション作成に入りま〜す!
いざモーション作り始めたら、色々とバグが出てきて(笑)結局バグフィックス&機能拡張(っていうか、ただ単に仕様に含めるの忘れてた機能です)だけで夜までかかってしまった。
おまけに、昨年の反省から、ちゃんと今回は散髪してサッパリしてから参加しよう(笑)ってことで、時間も無いのにわざわざサンフランシスコ(往復 180km)の美容院まで行ってたので、更に時間がなくなったのでした。
しか〜し、ようやく最初のモーションが完成。はい、「屈伸」でございます(笑)
これがまた超微妙で、サーボの初期角度を前後に1度動かしただけでコケやがるのよね〜。こりゃ当日ちょっとセンター狂っただけでコケまくるな。うぅむ、いかん。どうにかせねば...
おまけに、今回はモーションスクリプトをバイトコードに落とす関係上、角度指定を今までのような「意味不明な5ケタ(16bit)の数字」から「角度(-110 〜 +110度)」に変えたのだが、結局指定数値角度に対してリニアに実角度が変化する訳ではないので、スクリプト上で誤差を吸収した結果「88度」とか「91度」などの中途半端な数値になってしまうんですな。
まぁもち論、その辺までちゃんとテーブルで変換してやれば、数値角度指定だけでバッチリ動くんでしょうけど、こいつでそこまで厳密にやらす意味は無し...
しかし、こんなようなこと一切気にせずともテキトーに動いてくれた Weird-7 って、やっぱ凄いのかも(笑)あ、ただ単に足裏がデカかったからか。今回のは、足裏最大長が「脚がロボットの胴体から離れて前後左右に動く軸の地面よりの高さ」の 50% も無い(前回は 98% でした)もんなぁ。
というわけで、本格的なモーション作成は明日から、ということにしましょう。
あぁそうだ、昨日も今日も「参考&調査」と称して夕方から第4回 ROBO-ONE の DVD(ちょこぱ 氏の奥方 三月兎 殿の作品でござる、毎度感謝!)を予選から本戦まで、おまけにジュニアまで見入ってしまったのだった。おいおい、時間無いねんから、もうちょっと集中せ〜よっ!>ワシ
昨日「屈伸」モーションやってて、どうも安定しないなぁ、やっぱこの足裏じゃこんなモンかなぁと思ってたんだけど、昼間ふと思いついた姿勢でふたたび「屈伸」やらせてみたら、なんとえらい安定してるではないか〜!おぉ、ちょっと姿勢を正すだけでこの違い!これは凄いぞ。
これを応用すれば、これから始める地獄の歩行モーションも、実は簡単に完成しちゃうとか???って、そんな甘いことは無いか...
で結論。そんなに甘くは無かったです(笑)
とりあえず起き上がりモーションが完成。結構簡単に出来たのでちょっと拍子抜け〜。
やはり、各サーボがちゃんとシンクロしてると、こんなにもスムースに動くんですなぁ。等加速度で動かしても、バッチリシンクロしてくれてます。何よりも嬉しいのは、何度実行させても全く同じ動きをしてくれる所です!!って今までのソフトがいいかげんすぎたのか...
じゃ次のモーションいってみよ〜!ってところで残念ながら電池切れ。もう一組のと交換したけど、ん?動かんぞ。調べてみると、なんと基板のパターン(NMI)が切れてました(笑)あぁついに来たか、この瞬間が。
って、14日にも書いたけど、今載せてるマイコン基板は、小型化のためにカッターで切っちゃってて、スルーホールが半円になってる部分からポロポロと取れちゃってきてるんですな。
なので、新しい基板(すでに切断済み)と入れ替えないといけないんだけど、なんせコネクター無しで直接配線してるもんだから、入れ替えるのが超大変なのだ(笑)で今まで避けてたんだけど、仕方ないなぁ〜今から気合入れて交換します!
ん〜、もう 23:00 かぁ、終わり次第即寝ようっと...
夜家に帰ってきたら、なんかホンノリと頭が痛い。い、いかん、今日はやること山盛りなんだから、ナゾの頭痛になっててはいか〜ん!というので、さっさと Advil(こっちの頭痛薬です)飲んでスッキリ。
昨日はあれから気合を入れてサクサクッと、元に戻せなくなると困るので(笑)デジカメで撮影しながらマイコンボードから配線を外していきました。で、新しいボードにジャンパー飛ばすのを忘れていたことに気付き、まずはジャンパー飛ばし(って言っても3本だけね)を終え、ふと見ると、おぉ、こんなところに角加速度センサーICが転がっているではないか〜!
実はコレ、古いマイコンボードに後から取り付けようとして用意してたけど、先にサーボの配線をやっちゃったもんだから、気付いた時にはすでに取り付ける場所が無かった(笑)ので放っておいたやつなんです。
おぉ!今ならまだ取り付けれるじゃん〜って思ってしまったのが運の尽(笑)それからえんえんとチップ部品使った空中配線レイアウト(笑)を考えてしまい、気付いた時には既に夜中の1時をまわっておりました。
昔ならこれから「オールナイトニッポン」が始まって、そんでもって夜食(当然インスタントラーメン、なにわの中華ソバ「好きやねん」って知ってます???)食いながら PC-8001 でひたすらソフト作っていたんですけどね、って何十年前の話しとんじゃ?(はい、20年前ですな)
そんなこんなで、結局昨晩は古いマイコン基板を外した所で作業が終わってしまいました。
で、今日ですが、今また夜中の1時です(笑)
よぉ〜〜〜やく、全ての配線が完了しましたっ!!!そして動作テストも全てパス!!!昨日作った起き上がりも、屈伸も、全て問題ナシ。やったね。角加速度センサーは、まだソフト書いてないので、動いてるのかどうかは不明。おぉそうか、オシロであたればいいのか。どれどれ...
げっげ〜、オシロの電源が入らん...壊れた???と思ったらそうか、停電の時にサージ対策でコンセントから抜いたままでした(笑)
どれどれどれ、ん、おぉ〜、動いてる動いてる!大成功ですっ!
確認ついでに、CPUの「対電圧変動」テストも行いました。っていうか、瞬間的にサーボ側に電流が食われて電圧降下した時にリセットかかっても平気かどうかのテストです。
今回はちゃんとその辺を考えて作ったので(って、前回のが全く考えてなかっただけじゃ)うまく動くハズ...おぉ〜!ホントに動くわ。こりゃ凄い。動いてる最中にリセットかけても、一瞬ピクッとなるだけで後は何ごともなかったかのように動き続けます。これで瞬停対策もバッチリ(って、普通は電源電圧の安定化を先に試みるやろが!!)あとは念のためウォッチドッグタイマーかけておけばカンペキだな。
というわけで、1日予定より遅れましたが(って予定なんて立てて無いやんけっ!)無事角加速度センサーを搭載することができました。でもこれがあったところで、せいぜい出来て「自動起き上がり」くらいだろうなぁ。でもいいの。なんかハイテク積んでるっぽくて自己満足度 500% だから〜。
そうそう、ついでに「顔」も作りました。なんかいきなしキャラクター化してるんですけど(笑)しかし、なんかマヌケな顔だな...
今日はいくつか基本的なモーションを作りました。
で、いよいよ歩行のモーション作りに入ったんですが、途端に破綻(笑)
というのも、「足踏み」モーションを作ってその場足踏みさせてみたところ、どんどんどんどんサーボ間の動きがバラバラになっていくではないか。うげげげげ、なんなんじゃこれは!
で、よ〜く考えたら、超マヌケなことしてました。
というのも、モーションは1度単位での指定で作っていて、実際に等加速度で動かす時には、それを TIMERW のカウント値(16MHz クロック時の)に変換してから動かしてるんですが、私の作ったバカ正直な等加速度ルーチン君は、例えば2つのサーボを同じように90度動かす時、サーボによって90度動かすのに必要なカウント値の差は違う(個体差がある)ので、当然各サーボが動いて止まるまでの経過時間まで正確に違わせてくれていたのです。って説明しにくいなぁ。とにかくうき〜っ!!こりは大変じゃぁ。
あまりの事の重大さに、ちょっと気絶状態。って昨日2時過ぎまで起きてたから眠いだけじゃん(笑)
あ、そうそう、結局 Weird-72 の総重量は
になりました。勿論、電池も無線も全部込み込みでの重量です。ちゃんと電子ハカリで量ったよ〜ん。
果たして、ROBO-ONE 史上最軽量機体となれるか???この軽さを生かした「あの技」(ってバレバレやんけ)は完成するのか???
あ、ちなみにサーボは今回もまた全て Futaba S3003、サーボ数は Weird-7 の9個よりも多くなってしまいました〜(笑)当然、制作費は今回も3万円以下で〜す。
前作 Weird-7 の時にも「これじゃダメだ。まず顔が無いのがダメ。目は絶対に必要!」と厳しいご指摘をいただいた、いとこで漫画家の まつむら まきお 氏と電話でお話。
ウェブカムで様々な角度から Weird-72 をお見せしながら、色々とアドバイスをいただ...く予定でしたが、あまりの低解像度のため断念(笑)
さっそく、あらゆる角度からの高解像度写真を撮り、まつむら氏にお送りしました。
私は完全に「デザイン?よくわかりませ〜ん、動きゃ何でもいいじゃん〜」派なので、どうしても芸術方面な方々のご協力が必要となる訳です。うぅ〜情けない(笑)
モーションですが、明日からの土日2日間で集中的にやる、ということで、今日はひたすらTV観ながらロボットに色々なポーズを(電源オフ状態で)させていました。で、めぼしい動きをメモしながら、モーションのネタ作り(笑)重量が軽いお陰で、重心さえちゃんと考えてやれば、、電源オフ状態で思い付いたどんなポーズでも実際にモーション化が可能なのだぁ〜!
私も「ONOの電脳壁新聞」の「不定期日記」と並んで毎日利用させていただいている、人形つかい さんとこの「ROBO-ONEアンテナ」に私のページも載せていただきました〜。感謝感謝!
今日はソフトウェアの微調整をやって、昼から新しくオープンしたというラーメン屋へ。なかなかおいしいトンコツでした。去年の暮れからここシリコンバレーでは3件ほど立て続けにラーメン屋がオープンしました。なんかうれしいなぁ〜。
というのはどうでもよくて、で、昼メシ食った後から、いつものジャンク屋 HSC でアンテナ用の線を探して(結局手ごろなのは無かった)いつもの FRY'S Electronics で予備の NiMH 電池と充電器を買って、それから、ジャンク屋にも FRY'S にも無かった「ビニールテープ」を探して色々な店をめぐりめぐってなんと3時間!!どこにも無い〜!
そう、私が探していたのは、日本で使われているような、引っぱればビヨーンと伸びる、剥がしたらベトベトになるあのビニールテープなのです。それもサーボと同じ色の黒。これがどこ探しても無いのだ。あるにはあるけど、もっと薄くて、ビヨーンと伸びないやつばっかり。おまけに(ここが肝心)表面がツルツルしてるのだ。
そう、手抜きな私は、ビニールテープを足裏に貼って滑り止めにしようとしていたのでした(笑)
で、いくら探しても見つからないので、9店目でついにあきらめて夕方帰宅。仕方ない、とりあえず家にある(日本で買った)白のビニールテープでモーション作っておいて、日本に着いてから黒のを買って貼り替えることにするかぁ。
あぁ〜、貴重な時間が無駄になってしまった...
とは全然思わないのだ。なる程、最近運動不足だったので、ちょっとは歩けよお前!ってことかなぁ〜(笑)と一人ナットク。
で、体力もついたことだし(笑)モーションじゃぁ〜。で、ここで大問題が。そう、足ウラに白のビニールテープ貼っただけなのに、起き上がりモーションが変になってしまったのだ...Weird-72 危うし!もしかしてこれは事前審査落ちかっ???
今日はヤルぞ〜、という気合とともに、朝から歩行モーションに取り組む。
まずはキチンと各サーボのセンターおよび90度ポジションを微調整。そう、悪夢はすでにその陰を、この時点から落としていたのだよ...ピクピクッ...
そして、いよいよ歩行へ。
フィードバックやフォワードの無い私のロボットの場合、歩行は基本的には同じ動作の繰り返しとなる。しかし、ここで問題(大問題ではない)発生。私のモーションスクリプトには「繰り返し」命令が無いのだ〜(笑)で10分で急いで for-loop を追加。これはすぐ動いた。
で、ずっと前から考えていた歩行方法(私のロボットの軸構成からは、この方法しか考えられん)をカルく試す。むむぅ、この周期では遅すぎてダメか...
おまけに、1月22日に発見された問題のため、速く動かすとよけい out of sync になってしまう、という二重の問題に。
で、仕方無いので、等加速度なんて甘っちょろい考え(?)は捨てて、常に全速力で動かすことに決定。
なななんと、この方針が功を成し(だっけ?日本語がアヤしい)いきなり歩行っぽいのができたのです!!おぉ〜!!
それから何度か試行錯誤の末、ついに「後ろ歩行」に成功〜やったぜ!これで事前審査は突破できる〜。
が、しかし。
この歩行動作をやっている時に、たまに左脚のヨー軸サーボがピクピクッと動くのを目撃したんだけど、「たまたま、たまたま動いただけだよ〜ん」って自分に言い聞かせていたのだが、実は実は、すげぇヤバいことになっていたのだ。
うげ〜〜、まじですか...どうやら最初に組み立てた時、ここのサーボのポテンショメータのハンダがうまく付いてなかったせいで変になってしまったのが、今ごろになって顕れてきたみたい。あぁ〜、こないだマイコンボード載せ換えた時に気付いていれば、ついでに交換できたのに...
などと後悔したところでどうにもならんので、まぁ目標の歩行動作も(まがりなりにも)出来たことだし、意を決して
...きっと8時間はかかるな...(ってメンテナンス性悪すぎ〜)
これも当日になって動かない〜ってのを防ぐためだす。
というわけで、17:10 現在、ようやくサーボ基板交換が終わり、全ての配線が収まり、テスト用マイコンに繋いでのサーボ動作確認も終了。単4電池ボックス(改)の接着がはがれてきていたので、現在接着中。固まり次第、組み上げてマイコンの配線をやる。
何とか予想時間の半分(4時間)程度で完成しそうだ!それなら今日モーションの続きが出来る〜!
18:40、ついに完成!!動作確認も終わり、センターポジションと90度ポジションを調整後、恐る恐る歩行モーションを実行...
す、素晴らしい〜、起き上がりも屈伸も全て問題なし。左脚ヨー軸のプルプルは完全になくなった。これで当日「さっきまで動いてたんですが...」なトラブルからは開放だぁ!(ホントか?)
では、今から「横歩き」と「ロボマガ昇り降り」モーション作ります。
むむぅ、横歩きがなんかめちゃめちゃ不自然。いかんなぁ、これじゃ。
まずは、この不自然な横歩きをどうにかしないといけないのだが、とりあえず全く手をつけてない「ロボマガ昇り降り」の方を先に着手することにしよう。
ソフトウェアの方で残っていた、モーションスクリプトをコンパイルした結果をCのヘッダファイルとして出力する部分もさっき完成させました。これでモーションがマイコンのフラッシュに焼けるので、いよいよ完全自律動作が可能となります。
あ、もしかして完全自律動作用のスイッチが必要??ちなみに今回は(前回も)リセットなどのスイッチ類は一切付いてませ〜ん。
あ〜あ、今日を含めてあと3日しか残されてないのねぇ〜。
私は木曜日の朝サンフランシスコ空港を発って成田に金曜日の夕方着くので、あぁそうか!!金曜日の夜ホテルにチェックインしてから土曜日の朝までは作業できるなぁ(笑)そのためにも飛行機の中で映画なんか観ないでしっかり寝ておこう。
そうなるとやっぱ水曜日の夜も徹夜だな。第3回に参加した時も前日は徹夜したしなぁ。あの時は階段昇りのモーション作ってたんだっけ。(そんでもって脚のサーボ1個がおかしくなって日本着いてから慌てて交換した)
そうそう、昨日ちょっと部品を追加したら、前回量った時よりも 10g も重くなってしまいました。現在
です。
そうだ、J-class と Jr. が日曜日にあったんですよね〜。
J-class で優勝した機体が「ちょんまげの啓三 − 100グラム」っていうんですよね〜。それを見た時、「うげっ、完全にワシのとコンセプトかぶってるじゃん!!」ってすげ〜あせりました。っていうか、いったいどうやったら100グラムで2足歩行ロボット作れるんじゃ??ってだいぶ悩んでしまいました。(でも考えてたらひょっとしてこうやってこうやってこうやれば可能かも?とかってあらぬ方向に空想が膨らんでたりして...)
が、写真見たらどうやら100グラムではないようなので一安心(笑)。ROBO-ONE J-class のエントリーでは 1.2kg になってますね。実際はどうなんだろ?
って、なんでそんなに他のロボットの重量を気にしてるかというと、まぁこれは私のエントリーにも書きましたが、今回は「ROBO-ONE 史上 最xxx」を3つ目指しているからで〜す。
3つのうちの1つ目はわかり易く「ROBO-ONE 史上最軽量」で、あとは「最小(身長が)」を狙っていたのですが、どうやら HSWR-K01 の方が小さいようなので、これは変更して何か別のにします(笑)
今日ロボットの重量をもう一度量ったら
でした。これで最終です。たぶん(笑)
いかん、ロボマガ昇り降りがうまくいか〜ん。う〜〜〜煮詰まる〜〜〜。
で、またアホなこと考えたりして...でもこのやり方で実行しちゃったら、周りから非難ご〜ご〜だな(笑)
しかし、その他のモーションは着々と完成しておりま〜す。デモのシナリオも着々と。
自分で言うのも何ですが、コイツかな〜り頑丈です。無理な体勢とかとらせて5分くらい(忘れて)放っておいても、全く問題ありません。まぁこの重量なら当然っちゃ当然か。
バッテリーも、フル充電で30分は動きます。素晴らしい〜。
残る作業は全てモーション作成だけだし、明日の徹夜にそなえて、今晩は早目に寝ますかぁ〜(笑)
残り作業の ToDo リストは完璧だ。これで作業が完璧なら本当に完璧なのだが(笑)
今日はさすがに早く帰ってきて、モーションづくりに励もう...と思っていたのだが、なななんと、ここにきて
今日、みんなの前でお披露目した時にはちゃんと動いていたのに、家に帰ってから動かしてみると、全く動かない...うげげぇ。
まずは無線系のチェックということで、有線で動かしてみた。おぉ、動くじゃん!ということは、最悪の「マイコンが壊れた」ってことじゃなさそう。これでちょっと安心。
で、次はロボット側の受信モジュールからマイコンに入ってる信号。オシロであたったけど、とりあえず信号は来ているらしい。(と判断してしまったのが実は大間違いでした)
ということは、いったい何???もしかして、何らかの電気ショック(?)で、シリアル入力の端子のスレッシュホールドが変わってしまったとか?じゃぁってんで、プルアップ抵抗を入れてみたり、プルダウン抵抗を入れてみたり、はたまた、受信モジュールの電源を別の所から取ってみたり、とにかく色々と試したけど、一向に動かない。
いかん。このままではいかん。みるみるうちにモチベーションレベルが低下していくのがわかる。いか〜〜〜んっ!!!
ヤバいことに、このモジュール、DigiKey に在庫が無くて、いまだにバックオーダーかかったままなんだよな...もし無線モジュールの不良だったら...テが無いよぉ〜。
ふと、そういえば送信機のアンテナをさっきハンダ付けしなおしたことを思い出す。念のため予備の送信機(こないだまで WebRemote で使用していたやつ)に取り替えてみると...
そう、送信モジュールのアンテナ部分が壊れてただけでした...
じゃぁなんでさっき受信モジュール側でちゃんと信号が出てたの?と思ったら、どうやら最初のビットを送信した段階で、アンテナが繋がっていないために送信モジュールが自動的に出力をシャットダウンしていたらしいのです。うへぇ〜、あせったぁ!!
というわけで、なななんと2時間もロスしてしまいました(笑)さぁ〜て、今からやるでぇ〜。
======== 日付変更線 ========
というわけで、先ほど日付変更線を超えました〜(笑)
トラブルが解決してから、あれよあれよという間に4時間が経過。現在夜中の2時です。家を出るまであと5時間半あるぜ〜。
いつもは12時をまわると自動的に眠くなるんですが、今日はテンパッてる関係か(笑)全く眠くなりません!どんどん ToDo リストが消化されていきます〜。
現在、朝の4時半です。まだ大丈夫です(笑)
事前審査用の自立動作が完成しました。ホッと一息。そろそろ夜食にするか〜。
で、それ食ったら荷物をまとめはじめよう。
6時15分。ようやくカバンに入れる物が集まった。さぁ今からパッキングだぁ(笑)
6時50分。ほぼパッキング完了。
とにかくアヤしい。線類が大量に入ってるし...
さて、あとは髭剃りとか入れたら完了。おぉ、このPCも忘れないようにしなきゃね(笑)
というわけで皆様、土曜日にお会いしましょう〜!
今、同宿の ROBO-ONE な方々といっしょに食事に行ってまいりました〜。
今回はしっかり8時間近くも飛行機で熟睡しました。さぁ〜て、今晩も徹夜かぁ?(笑)
とりあえず荷物の中身も大丈夫でした。ロボットは手荷物で機内に持ち込んでいたので安心でした。モーションも全て動いたし、いよいよ明日、あ、今日か(笑)みなさまにお会いできるのを楽しみにしております!現在朝の4時。さすがに今日は徹夜はしませ〜ん。
今日の作業は、デモ用の残りのモーションを作ったのと、無線系のプロトコルがヨワヨワでノイズ乗るとエラいことになっちゃいそうだったので、ちょっとしたエラー検出を追加してました。
さっき廊下を歩いていると、どこからともなく「きーん、かしゃ、かしゃ」という音が。おぉ、これは Jin さんの部屋ではないか!まだ起きているのかぁと思い、覗いてみました。「デモ用のモーションできたよ。見てく?」おぉ〜〜!!みたいみたい!!というわけで、ナイショで見せてもらいました。明日来る方、Jin さんのデモは(も)必見っすっ!!
さて、ちょっとでも寝て、明日への体力を残しておかないとね...ヲヤスミナサイ〜
予選終了後に、西村ボスの粋な計らいで、私専用「特別枠」を設けていただきましたぁ〜。
というのも、結局デモンストレーションではPC側の不具合(っていうか、私のオペレーションミスが原因だよなぁ)で、予定していた3分の1くらいの動作までしかできなかったからです...情けなや〜、ロボマガ昇り降りすらでけんかった。
で、特別枠を用意していただけたのは、まぁ私が今大会で2番目に遠い所からやってきた(笑、一番は当然 Jin さん)ということと、デモの最後で「え〜『縄跳び』やりたかったんですけど...」の一言からです。はい、今回用意していた「大技」は、
でした(笑)とうわけで、特別枠では大成功!まぁこれで、次回「規定演技」は「縄跳び」で決定だな(笑)
というわけで、私のロボットの画像&動画は(ちょっと古いやつだけど)ここに置いてあります〜。
で、終わった後、同宿の方々&西村ボスと飲みに行きました。こっちの方はまた別の意味でめちゃめちゃ面白かったっす〜。時代を動かすのは、こういう人たちなのかなぁって感じました(大袈裟〜)。
さて、明日(実はもう今日なんだけど)はトーナメントだぁ〜楽しみ!
皆様、お疲れ様でした〜!
さて、私の予選の動画と、その後に行った特別枠でのジャンプの動画をアップしました:
予選
ジャンプ
容量が大きいので、恐らく期間限定公開(1週間とか?)となりますので悪しからず〜。
今夜だけはみんな、ゆっくり眠れますよね〜。おやすみなさい。
私は明日の夕方の飛行機でアメリカに戻ります。
いやいや皆様、本当にお疲れ様でした!
特に毎度のことながら主催者側スタッフの方々、このような素晴らしい大会を開催していただき、心からお礼申し上げます。
さて、次なるターゲットですが、3月20・21日に開催される「ROBO-ONE イン ROBOlympics イン サンフランシスコ」です!
Jin Sato 氏もカナダから駆けつけて下さるそうですし、西村ビッグボス殿は「ベスト8ランブルでの勝者を送り込むっ!」(ということはあの「HAJIME ROBOT」が来るのかっ???)と宣言してくださいましたので、今からとても楽しみです。
2月2日の日記を最後に、ここ2週間ほど気絶(笑)してました。
やはり、予選の途中で失敗してしまったということが、自分の中でかなぁ〜り尾を引いていたようです。
予選が終わった直後は「あぁあぁ〜」で済んでいたものが、こっち戻ってきてから時々突発的に「あぁ〜うぅ〜」と思い出し笑い、じゃなくって思い出し後悔(笑)がこみ上げてきたりして、その「症状」がまるまる1週間ほど続きました。
私の場合、観客の皆さんが大笑い&ビックリしてくれる姿を想像しながら、そのことだけを「鼻先のニンジン」として今まで苦しい練習...じゃなくて(笑)短い睡眠時間にも耐えてきたのですが、それが不完全に終わってしまったことで、完全に「つぎ込んだエネルギー」と「還ってきたお笑いエネルギー」の作用・反作用(?)のバランスが崩れてしまい、「こころ」サーボのギアが「折れて」しまったのでした...
なぜ失敗したかってのは、まぁ色々と理由が重なってる訳でして、ソフトのバグだの、バッテリーを間違って満充電じゃないやつ使ってただの、モーション作りの最後のツメが甘かっただの、そりゃ探せばいくらでも出てくるんですが、その根底にあった最大の理由は:
ってことでした。
そう、日本に飛ぶ前日に徹夜して「縄跳び」を完成させた時点が、まさに今回のクライマックス(?)だった訳です。
しかぁ〜し、あれから2週間、今はもぉ完全復活!全ては、この記事が出てくれたお陰です:
第5回ROBO-ONE詳細レポート(3)
|
何が素晴らしいかって、タイトルも凄いけど、この中の Weird-72 の最初の動画でしょう。
というのも、今回の大失敗の一つが、本当は予選の最初に
とアナウンスしなきゃいけなかった所を、すっかり忘れていたってこと。
そのため、ビデオ撮影されていた方の中には、ダミー(笑)のウィアード・セブンの方に気を取られて、肝心な「ロボコンマガジンから飛び出してくるシーン」を撮り逃がした方(館内中継のカメラさんからも「だめだよぉ〜、事前に言っておいてくれなきゃ〜」って言われてしまった...)が多かったようなのです。
そんな中、ITmedia の「こばやしゆたか」さんのカメラはこの場面をちゃんと押さえていてくれたんです!いやぁ〜素晴らしい!この記事が無かったら、私のロボットは
で終わっていたことでしょう(笑)
さてさて、その後のお話。
色々とウェブを見ているうちに、実は素晴らしいお店が近所にあるということを発見し、さっそくウワサの「GWSのサーボ」やら「リチウムポリマー」充電池&充電器を買っちゃいました(笑)
いやぁ〜リチウムポリマー、素晴らしいっす。何とロボットの重量が
になってしまいました!これで正真正銘「1パウンド級 ROBO-ONE ロボット」(1パウンド = 約454g)になりました。ROBO-ONE 主催者殿、ぜひ「超ライト級1パウンドクラス」っての作ってください〜(笑)
ちなみに3月20日・21日の ROBOlympics には、この1パウンド級ウィアード・セブンティトゥで出場します。
果たして日本のお笑い(?)がアメリカ人にも通じるのかっ!!こうご期待〜
2004年1月31日、2月1日に行われます第5回ROBO-ONE大会参加者を紹介します。ここに掲載されている方はまだ書類審査を通過していません。無事何とか書類審査を通過しました。
エントリーNo. | ロボット名 | ロボット製作者の名前 | ホームページ |
ロボットの写真・図面・スケッチ | ロボットの身長と重量 | ROBO-ONEへの参加目的や意気込みなど | 製作者のプロフィール、戦績など |
0111 | Weird-72 | かづひ | Homepage |
身長:234mm 幅:154mm 厚さ:22mm 重量:486g 自由度:10 アクチュエータ:Futaba S3003 CPU:AKI-H8/3664FP 加速度センサー:ADXL202 電源:単4NiMH800mAh x 6 材料:バルサ 得意技:走り(12.5歩/秒),ジャンプ(2cm),縄跳び |
「木製」のアイツが、「3万円」のアイツが帰ってきた! アメリカ・カリフォルニアはシリコンバレーからの参加です。The "Woody", "$220" bipedal robot is back! I am from Silicon Valley, California U.S.A. |
第3回 ベスト16&バンダイ賞受賞 The 3rd ROBO-ONE Best 16 & BANDAI prizeThe concept is low-cost, easy to build and has "a character". For this time, I am challenging to become a number one in 3 different dimensions in the ROBO-ONE history. |
エントリーNo. | ロボット名 | ロボット製作者の名前 | ホームページ |
ロボットの写真・図面・スケッチ | ロボットの身長と重量 | ROBO-ONEへの参加目的や意気込みなど | 製作者のプロフィール、戦績など |