開発日誌(27)

トップへ戻る
開発日誌インデックスへ
前のページへ

最新へ↓

9月4日

久しぶりの日誌の更新になってしまいました。

今週は出張があったり、飲み会があったり、忙しかったりで日誌を更新するエネルギーがありませんでした。 ロボット開発は、机上検討が多かったので更新内容がなかったってのもありますが。。。

歩く様子を見ていると、どうも不安定、、というか動作の勢いに負けている感じ。 足上げ動作がよくないのだろうという想定で、足上げカーブの関数を変更してみました。

いままではただのサインカーブ。

なので、足を上げ始める部分は、どかん!と持ち上げて、下ろすときはドスン!下ろすわけです。 こりゃいいわけありません。 そこで、、、

今度はちょっと工夫して、(1-cos( ) ) / 2 です。これだと、関数としては上げるときは加速度0からスタートします。

関節軸に掛かる負荷を比べてみると、まず、サインカーブ

次に改良版

J1で、足を上げるタイミングで出ているノイズは軽減していますね。その他は意外と変化なし。 もっと顕著に差が出ると思ったのだが。

で、この改良版で歩かせてみると、なかなかいい感じで静かに足を上げるのですが、、 2歩目で反対側に吹っ飛んでしまいます。やはり地面近くの質点のキャンセルも組み込まねばならないか。 あまりやりたくないんだけどなぁ。

9月5日

予定していた時期からは、4ヶ月くらい遅れてしまいましたが、一斉バッテリー充電を行いました。 意外と放電していなくて驚いたり。

アイボの動作確認をしてみると、関節がビクビク痙攣しまくり。ポテンショメータのブラシが腐食しているか酸化膜ができてしまったか。グリグリと足の関節を動かしてやると幾分はマシになりました。 やばいなぁと思って他のアイボもチェックしましたが、1台以外は大丈夫でした。ERS-7も首の左右軸がちょっとノイジーになってしまっていた。うむむ。

この先、アイボでロボット開発をする時はこないような気もするけど、一応は保存の方向で。。。

↑この画像はDSiのカメラで撮ったんだけど、画素数低いし、汚いし、パソコンで加工しようとしたらファイルできなくなったり、、使えねぇな。

 

さて、、、接地点近くの質点のキャンセルをやる前に負荷補正をやりましょう。

ある程度以上の負荷が掛かると補正をかけるようにしたいのだけど、境界付近での動きがある場合、不連続点ができてしまうといやなので、あるポイントから急激に立ち上がる関数を適用しようと思います。 横軸の18辺りからはリニアに補正をかけるイメージ。

↓この関数で関節負荷値から補正値を計算してみる。

スパイクがそのまま補正値になってしまっているのはいやなのでフィルターをかけてスパイクを取ります。 ↓こんな感じ。

この補正値を計算して格納する領域を作るために新たにshort[14]の配列をメンバーに持つリストを作ったところ、PC上でのテストプログラムがDUMPしてしまう。エラーの発生個所を調べるとfloat[3]のリストをクリアするところで出ている。ふむぅぅぅ〜と少し悩んだ結果、新しく作ったリストのノードのサイズが36byteであることが問題かも知れないと見当をつけて、ノードサイズを16の倍数である48byteにするとエラーが治まった。 これはSEMB上ではノードサイズが違ってくるので調整せねばならないのか、問題なく動くのか。 プラットフォームの違う環境でデバッグするとなかなか色んな問題が出るもんですね。

 

来週は早稲田で練習会。 再来週の連休は浅草ギ研さんで合宿。 そしてその次の週というか合宿の週末がロボワンと続いてる。 最近平日に進捗ないから、この分だと9月の進捗はしょぼくなってしまいそうです。(^_^;) 合宿楽しみ!

9月6日

軸の負荷値からの補正値算出部分をSEMB側に移植したのだが、また原因の判らないexceptionが発生。 もうイヤになってきた。(>_<)

負荷値の変数を参照しても問題ないのだが、補正値を計算するために補正値計算用関数に引数として参照するととexceptionになる。 更には関数内で参照しなければ問題は発生しない。 わからんなぁ〜。

とりあえず、補正をかけなくても板の上だと足をひきずりながらではあるが歩くので、この状態でコントローラで操縦できるようにしようとしたのだが、、、問題なく通信できていたCSIも不調。 最適化のためかとも思ったがそれも違うらしい。 通信は出来ているらしく、2回に一回の割合ではそれらしいデータが届くのだが、データ並びが違うのでなにかしらおかしいらしい。

 

今回のプログラムはどうやらOSなしで動かすものじゃないのかもしれないなぁと思い始めました。 計算量が多いし、数値演算ばかりだし、パラメータによって使用データ数が変化するので単純な配列にせずにリスト構造にしたりして、OSなしで開発するにはちょっと難しかったのか。。(そんなに難しいことしてるとは思えないが。。) リストでメモリー確保したり開放したりしているのにメモリー管理がされてないわけだから、問題アリアリなのは承知の上なんですけどね。(^_^;)

CSIがうまく行かないのは困ったな。

9月9日

今日は運転免許証の更新のために休暇をとりました。 所要時間は午前半休で間に合うのだけれど、全然休暇をとっていないので全日休暇に。

午後はのんびり昼寝したり、部屋にラックを設置したり(大変だった!!)しておりました。

 

CSI通信がおかしいのでオシロで波形確認。

ぬぉ! 8バイト目のクロックが完了する前にCSが立ち上がってしまっている。 これはおかしい。

8バイト受信処理を行った後にも短いウェイトを入れたら正しく受信できるようになりました。 でも、おかしいなぁ、シグマはこのプログラムで通信できていたのに。。 確かにシグマの開発の時にはオシロで確認していなかったからおかしかったのかも知れないけれど。。

※修正後のオシロ画面も撮影したつもりだったのだが、保存していなかったらしい。 オシロ片付けちゃったので画像なし。

とにかく、コントローラとの通信もうまくいったのでコントローラで操作できるようにしてみましょう。

9月10日

コントローラで操作できるようになったのだけど、やはり板の上ですり足でしか歩けない。 なので、置き去りにしてある補正値計算でのわけの判らないexceptionに再挑戦。

PC上では問題なく動いているようなので十中八九はメモリアロケーションの問題だと思って色々チェックするが問題は見つからない。 色々試したところ、doubleで計算した結果をshortに変換して確保したメモリー領域に格納するとおかしくなる。 直接数値を代入したり、shortの変数を介して値を代入しても問題ない。 うぅ、、わからん。

結局は逃げだけど、shortで十分の変数をdoubleで格納することにした。 リストのノードサイズが、doubleの場合は128byte、shortなら48byte(本当は40byteだが、16の倍数になるように調整した) 座標を格納するのに使っている三次元のdoubleのノードは32byteで問題がないので、shortのノードを32の倍数の64byteにすればいいような気がする。 と思って試してみたがダメでした。orz。。。 今日のところはdoubleのリストで動くのを見て安心して寝床に入ることにしよう。

 画像がないとさびしいので首なしラムダ。 配線きれいにしなきゃなぁ。

9月12日

今日はロボット練習会。 早稲田大学での練習会開催なのですが、朝から雨でどうにも腰が上がらない。 秋葉原で部品購入の予定があったのだけど、部品箱をごそごそすると当面必要な部品は確保できました。 なので、雨が止むのを待ってみたり。

程なく雨は小降りになったので早稲田に向けて出発したのですが、サーボケーブルがみっともなくばらばらなままなのはいやだったので100円ショップで束線バンドを買っていくことにしました。 でも、駅前のCanDoには欲しいサイズのバンドが置いてない。 代わりに、持って出るのを忘れたテーブルタップ(の代わりの三つ又プラグと延長ケーブル)と、足裏にラバーシートを貼る工作のためのカッターナイフを購入。 忘れ物のための出費400円です。

練習会で、なんとか歩かせるテストをしようと、無線コントローラで操作できるようにしたのだけれど、まだトリムが合っていない様子。足裏が床面にフィットしません。

それでも、家ではMDFボードの上ではすり足で歩いていたのだけど、卓球のラバーシートを貼ったところ、なかなかのグリップを発揮してさっぱり歩かなくなってしまいました。 更にはコンソールケーブル外してのテストだったのですが、exceptionが起こってる様子。 なんだかなー。

トリムの再調整をしようと思って、まず、一番トリムがおかしな左肩のサーボのトリム調整をしていたところ、サーボが暴走! 止まらなくなってしまいました。 ポテンショが壊れたのかと思ったが、角度はちゃんと取れている様子。 ICS通信も正常に出来るし、なんか不審だが壊れてしまったのか??

 

どう考えても壊れてしまうような状況じゃないし、動かしてみたところも、回りだすと止まらないこと以外は到って正常。 やっぱりなにかの設定のせいかと考えてROMデータをパラメータ毎にすべてつき合わせてみると、角度の下限値がものすごく大きな値になってしまっている。 これだーーー!

なぜ書き損なったのかはわからないが、トリム値書き換えの際に角度の下限値が書き換わって上限値よりも大きくなってしまったためにおかしな動作になってしまったらしい。下限値を正常に直したら、治りました。 (^。^) よかったー。

人形つかいさんにサーボ買って来てもらわなくて助かりました。 (もし買ってても予備になるからいいけど)

明日はXbeeで無線でコンソールをつなげるようにする予定。

9月13日

トリムにも限界があるだろうと思い、足首のロール軸にストレッチ設定を加えて、ならい制御じゃないけど、路面にならって密着するようにした方が改善しないかな、ということでサーボにストレッチ設定をするプログラムを書く。(いままで書いてなかったのだ)

お約束のように予定を大幅に超えて完成してさっそくストレッチ設定で足首を柔らかくして歩かせてみることに。

デフォルトの設定が60で、カチカチ状態、PWMコントロールの場合はストレッチ1,2,3と3種類のプリセット値が用意されているのだが、ICSの場合は2から254の数値を設定することが出来る。 ちなみにストレッチ1=60 ストレッチ2=30 ストレッチ3=15 という値になっている。

最低の2に設定してみると、指示角度を保持できないくらいにヨレヨレ。 その割りに8くらいで結構いい感じで保持力が出てくる。

ためしにこの「8」で歩かせてみると、どうやら柔らかすぎで歩けない。 こりゃストレッチはさっぱり使えないか?と思ったがとりあえず30くらいに設定したら普通に歩けている。

30だとならい制御ぽくなるかどうかが微妙な固さなので意味は無いかもしれない。

足の関節を再度調整してみる。 調整したつもりだったが意外とずれている。動かしているうちにずれるのか? オートトリム機構が欲しいところだなー。

再度トリムを取ったところ、我が家のMDFボード上だとすり足であるがまぁ歩ける。 早稲田の仮設リングはひっかかってしまってダメだったのか、水平が取れていなかったのか。

↓デジカメで撮ってYOUTUBEにアップ。 ムービーメーカーってMOVファイルは編集できないんですね。編集したいなぁ。

トリムも取れていい感じになってきたからそろそろ補正を掛けてみようと、補正値からノイズを除去する部分をプログラムする。 先日のグラフはエクセル上での計算だったのでまだコーディングしていなかったのです。

ところが、引継ぎモーションの2回目で、同様に補正値を計算すると、とーんでもなくデカイスパイクが出てしまい、ノイズリダクションだと除去できない。これをそのまま補正値として適用するとまともに動かないはずなので、このデカイスパークを排除する手段を考えねば。

デカイってのは、最大でも0.1radian位で考えている補正値、実際に計算してみると大きくても0.05radian位で納まるところが、スパイクから算出した補正値が148radianくらい。 ぐるぐる回っちゃう。(>_<)

9月14日

でかいスパイクの原因は、継続モーションを作る時に加速度計算を行うために作る継続フレーム部分でした。 でも、バグ自体は直進歩行時の目標ZMP生成部分にありました。カーブ歩行では発生しないバグだったようです。

補正値もまともな値にまとまったので、やっと補正をかけて歩かせることが出来ます。 これでさっぱり歩かなかったらショックだなー。(^_^;)

9月15日

来週の合宿用にドンキで寝袋を買ってきました。970円。 透けるほど薄いとか、すぐ破れるとかじゃないだろうなぁ。(^_^;) 合宿の参加表明メンバー見るとなんだか、ロボット研究所とかロボット工房の寄り合い会みたいになってますね。 ロボット開発やる気まんまんなんだけど、ロボットと開発環境持って行っていいのかなーー (^^ゞ 

 

やりました〜、やっと関節負荷の補正を加えた計算歩行にほぼ成功しました。 

まず、補正なしでの計算歩行↓

すり足なので、まっすぐ歩くつもりが曲がっていってしまいます。

次に補正ありでの計算歩行↓

まだ完全なグリップ歩行にはなっておらず、軸足も床面をスリップしつつの歩行なのでダメダメなのですが、まっすぐ歩くようになりました。床に頭をすりつけて足の上がる様子を見ると、まだ完全に体重が移っておらず、調整が必要そうですが、とりあえずは「いい感じ」ですね。 ということで、カーペットの上ではまだ歩けなかったです。

でもまぁ、これで先に進めるかなぁ。 その場旋回と、横歩きの歩容生成関数を作らねばな。 これでやっとオサル親子のプレッシャーを跳ね返すことが出来そうです。

問題はリングの上でも歩けるかどうかですね。

あとは、加速度センサーの搭載とモーション再生のプログラムを組まねば自律歩行ができないですね。 あっと、バッテリー監視も必要。マイコン積まなきゃ♪

9月19日

気がついたら連休に突入。

昨日は朝から金沢へ出張。 今朝の飛行機で戻ってきました。 てっきり朝一番の飛行機を予約したと思ってホテルを8時前に出て空港に着いてチェックインしたら取ってた飛行機は11時半。 眠いけど眠れない。 一人だし、暇だし、腹も減ってないからなんか食べるって話もないし、、キビシー3時間でした。

 

無線操縦やらなんやらを整備する前に、その場回転の歩行生成は作っとくべきかと思い、その場回転の歩行生成に着手。

↓目標ZMP。 スタンスを80o、歩幅を50mmにすると、ほぼ星を描いちゃうんですね。

↓そして重心軌道。

あとはこれに合わせた姿勢生成ルーチンを書けば完成。 それがてこずるのだが。(^_^;)

9月21日

昨日は秋葉原で買い物していた人が結構居たようだけど、誰にも会わなかったなー、 ちょこっと買出しに行っていたのですが。

 

連休も3日目、明日明後日は合宿なので、今日は色々仕上げねば。 一番やりたいのはコンソールケーブルの無線化。 これ、ずーっとやらなきゃと思いつつ、面倒だしあとまわしにしていた。

RS232CのドライバーICも購入したのであとははんだ付け。 3.3V電源を取るのが面倒だとか、ケーシングをどうしようかとかうだうだしていたが、なんとなくXbeeが納まりそうなケースも見つけてきた。重い腰を上げてはんだ付けをすることに。

PC側はXbeeとUSBコンバータなので、ケースに入れてコネクタ穴を開けるだけ。 同じケースの色違いにロボット側のXbeeを収めるつもりだったが、ロボット側はRS232Cドライバー基板、ピッチ変換基板、Xbeeと3層構造なのを忘れていた。 高さがオーバーではいらねー(>_<)

ううむ、ああでもないこうでも無いと考えるうち、RS232Cドライバー基板とピッチ変換基板を並べた感じにすれば収まりそう。 うむ、いい感じだ。

RS232Cドライバーが、また0.635ミリピッチで、配線地獄だったが、なんとか完成。 どっかがショートしているようだが、怪しそうな部分にハンダゴテを当ててみたら治りました。 はんだがはみ出てたかな。

ショートが治ったらすんなりつながりました。 事前にボーレートを合わせておいたりはしたのでつながって当然か。 まぁよかったよかった。

 ← こちらはPC側。 こっちは買ってきたまんまなのでケースに入れただけ。

 ← 画像真ん中のプラスチックボックスにXbeeが入ってる。 腰の部分にいい場所見つけたので押し込んでみた。

さて、明日の合宿の準備だが、、、 明日目が覚めてからだなぁ。 午前中には出発するつもりなのだが、何時に着くのだろう。

ロボットが要るのか?ってのが問題だけど。(^_^;)

9月23日

昨日から今日にかけて、関東組ロボット練習会合宿に行ってきました。 浅草ギ研秘密基地、ステキ過ぎです。 そして一切のまかないを担当してもらったぴしいさん、かっこええです。

楽しかったのですが、、寝袋だけで寝るのは腰が痛くって辛いですね。マットレスも居るな。

今回は泊まりだったので、車で移動したのですが、我が家の車にはナビがついてない。 普段、車を使うのは決まったところの行き帰りだけなので問題ないのだが、今回はさすがにナビが欲しい。そこで、昔使っていたVAIOを引っ張り出してナビン・ユーを出動させました。

川崎からアクアラインを通って、房総半島を縦断して秘密基地に向かおうとしたのだが、木更津に渡った途端にナビが道を見失う。 どうやら誤差が200メートルくらいあってどうしてもマップマッチしないようだ。 ナビらせていると、経路再探索ばっかりやってしまうので、ナビは切って、現在位置確認用にしてなんとか基地にたどり着きました。

帰りは誤差のズレのクセが把握できたので行きよりはすんなりとアクアラインにたどり着きました。 ギ研を出たのが16時、家に着いたのは19時半ってとこでした。

 

合宿前日に一生懸命作ったXbeeの無線コンソールケーブルですが、バイナリーの転送をすると、以降端末側からの送信が受け付けられなくなる問題が発生しています。合宿の場面では断線しちまったかと思ったのですが、違ったようです。 家でやり直してみるとまた送信を受け付けるようになりました。 バイナリー通すためになにかしなきゃならないことあるのか。 まさかバイナリーデータは通せないって事はないと思うのだが。。。

合宿所でおかしくなってその場では直らなかったのに、家に着いたら直ってた。。。 日誌書いてて気がついたが、おかしくなってるのはロボット側じゃなくてPC側では!? ロボットは合宿上でも電源の入れなおしをしたが直らなかった。。 合宿所では電源を入れなおさず、家に帰ってから電源を入れなおしたのはPCだ。 と思って試しにPC側を一度抜いて挿し直してみるとまたコンソールを受け付けるようになりました。 あとはバイナリーを通す方法だな。 これ、もしプログラムを書き込めないのなら全然意味無い。

今回の合宿、一日目は到着するなり、ビールを飲み始めてロボットは全然触らずだったのですが、二日目はまったりとした空間の中で、デバッグしたりコーディングしたりしました。(ものすごく簡単な作業しかしてないですけどね) 調子よかったので、このまま動き出すか!と期待したのですが、そこまでは到らず。 でももうすぐ動く気配だな。

9月24日

Xbeeでの無線コンソールケーブルで、プログラムの転送が出来ない件について、なにか手がかりがないか調べてみたが、とりあえず手がかりなし。 諦めて旋回歩行を進めようとしたのだが、一つ確認したかったことがあったのでそれだけ確認して、、 と思ったらそのまま今夜はXbeeDayになってしまった。 そして成果なし。

いや、PCからの転送は出来ないが、SEMBからPCへの転送は出来ることがわかった。 ガックリ、、、。 これはPC側の転送ソフトの問題なのか? ちなみに使っているのはTeraTerm。 念のためにHyperTermでも試してみたが、変わりなし。 HyperTermの方がリトライの様子がモニターできたりしてよいね。全体として使いにくいけど。

送受信のLEDの点滅具合を見ると、受信側がエラーで再送要求を出しているにも関わらず送信側がそれに応じていない様子。なにか手立てはないですかねぇ。

プログラム転送だけ有線って運用はめんどくさすぎて有り得ないし。。(>_<) あぁ、また無為な時間が過ぎて行く〜。

9月28日

ROBO-ONE富山、行ってきました。 交通費かけるのがイヤだったので夜行バスでの強行軍でしたけど、今日の仕事も無事こなせました。(よかった〜(^。^)

しっかし、前田さんはすっごいですねー。 真似しようとはしない方がいいな。。 オムニボールは誰かが真似してくるだろうから宇宙大会は今回でレギュレーションが変わるだろうと思ったけれど、同じタイプの投げロボは出てこず。 前田さんも第二投を失敗してしまったので、賞金は20万円どまり。 あれ見ると真似して作ってみたくなってしまう。

道楽さんが一生懸命作っていた変態走りは見事なデビュー。 あの速度での自由な走行はかなりすばらしいですね。 なぜかロボカップ4レッグスリーグのアイボの走りを思い出した。 アイボの場合はスタンダードスタイルになったけど、道楽さんのは、、ならないだろうなぁー(^_^;)

今日は飲み会の予定だったけど、金曜日に抜けた差し歯を治しに歯医者へ行くことに。 根っこにひびがはいってますから、、とインプラントのパンフレット出されたり。(>_<)

飲み会の予定だったから今日の作業は諦めていたのだけど、飲まずに帰ってきたのでやりかけだった旋回歩行のデバッグ。

シミュレーションだと問題ないのに実機では変な動きをしてしまう。。 しばし悩んで、ZMPの誤差補正ループでの呼び出し関数が、旋回用じゃなくてカーブ用になっているのに気付きました。あとは既に判っているバグを直せば継続歩行も多分うまく行くはず。 旋回歩行もほぼ完成です。

歩かせてみると、負荷補正なしだと3歩目にふっとんでしまうけど、補正ありだと、4歩のモーションを最後まで歩ききります。負荷補正すげー!

 

西さんがロボット開発の時間が取れたってことで開発作業計画をブログに載せてますけど、 ホントにそんなにタイトに作業できるんですかー! 俺にはできない orz.... ロボワンに出場するみんなは徹夜でモーション仕込んだりしているけど、あれも多分きっと絶対出来ない。 仕事でもほとんど徹夜したことないもんなー。 そんなこんなで自分のヘタレを実感してしまった。。

9月29日

よっしゃー! 旋回歩行完成(だと思う) いま、「完成」って書いて、ええと、、、右足軸足開始で右旋回のパターンしか試してないな、と思いました。 でも、まぁいいや。それくらいは些細な問題。 さらには、まだ歩行開始軸足は決めうちなので、直進歩行と織り交ぜて動かすにはもう少し記述が必要ではあるのだが。

旋回歩行は前進・後退・カーブ歩行と比べると格段に安定している。一番安定していないのが前進(>_<) 後退も旋回歩行もカーペットの上でグリップ歩行できるみたい。前進歩行もパラメータ調整すればグリップ歩行できるんだろうな、きっと。

それにしても負荷補正はなかなかすばらしく働いておるようです。 どの歩行も負荷補正なしでは安定しません。

旋回歩行デバッグ中に見つけてた共通バグを修正して、軸足の調整記述を書き加えて行きましょう。 サイドステップも記述したいところだが、キリがないしなぁ。  コントローラで操作できるようになったら動画アップします。

 

ZMP規範の計算方法は歩行以外にも応用が効きます。 ダンスモーションやキックモーションに対して適用すると、安定した重心位置を得ることが出来ます。 問題はモーション生成側で、これは通常のアニメーションモーションだと計算した重心位置を反映することができないので、代数表現(パラメータ表現)ができている必要があります。まぁ、上半身の動きはアニメモーションで構わないので、重心位置を調整する足の動きだけを逆キネで調整できるようにしておけばいいって話かな。 試しにキックモーションをZMP規範で計算させてみようかな。  でも、、ボールの反動の表現ができないかも。。(^^ゞ

 

今日、出張に行く道すがらの本屋で見つけた筋肉の本。 1500円の割には詳しく記述されている。足回りの筋肉の種類の多様さに驚愕。 膝伸ばし歩きができる関節構造(胴体も、だけど) を目指して購入するか。

10月3日

ロボワン明けの月曜日から、送別会を断って歯医者行って、火曜日は出張、水木と飲みに行って、なんだかくたくたになったので金曜日はまっすぐ家に帰る事に。 ただ、金曜日は本部総会でみーんな飲みに行く日だったので、家に帰ってまったりしていたところに部長から「どこで飲んでる?」と電話が(^_^;) なんだか楽しそうな雰囲気だったのでまっすぐ帰ったのを後悔したり。。。

 

旋回歩行が出来るようになったので、コントローラーで縦横無尽に歩かせるようにする。

コントローラー前後で前後、左右で旋回、斜め押しでカーブ歩行という具合にしてみる。 旋回歩行では、歩行最後に足をちゃんと揃えるという動作を入れていないので、旋回から前進やカーブ歩行に移る場合に姿勢を取り込む必要があったり、 次の出足を左右のどちらにすべきかを決めたりしなければならないので色々と記述を追加。

途中、補正を入れるとゴツゴツ歩くようになり、調べてみると以前の補正5radというのが復活している!? 姿勢を決めてから重心オフセットを決めなければならないところがデタラメになってたせいだとわかるまでに数時間要したが無事解決。

ぼちぼちと歩くようになりました。 なんだかわからんが、時たまうまく歩けていない感じがするのは原因不明なので恐らくどこかにまだバグがあるのでしょう。

たまーに出足を間違えたりするのもバグなのだろうが、たまにしか出ないのはなぜ?そんなに不確定要素あったっけなぁ。 あ、あと、なぜか右に曲がれない。 もちろんバグなのだろう。

本格的に計算しただけあって、いままで作った中では一番歩いているっぽい。 明日くらいに動画アップしたいな。

デバッグを終えたら、モーション再生に取り掛からねばならないな。 今年もあと3ヶ月しかない。年が明けたらすぐに「わんだほー」。 間に合うかなぁ。

10月4日

左右にはカーブ歩行できるようになりました。 バグどころか、回転半径の設定をする記述がなかった。(^_^;)

↓板1枚の中を歩き回るラムダ 変換してキャプションとかつけようとしたけど、AVIに変換したら畳が青くなってしまったので無編集で。

歩行は本当に奥が深くて、いくらやっても終わりがないのですが、ロボットを自律させるのがラムダロボット研究所の目的なので、歩行ばかりというわけにも行きません。
   #といっても、もう3年くらい歩行ばっかりやってますが(^^ゞ

わんだほーで自律でダッシュ2000を1分以内にクリアというのが当面の目標なので、まずはその目標を達成するための最低条件を整えることを先にして行きたいと思います。とりあえず、歩行についてやりたいけど後に回すことを列挙しておこう。

@足裏センサーをつけて、ZMPベースでのフィードバック制御
AZMP規範歩行ルーチンの一般化。 ZMP列を与えればステップ生成 → ダンスモーション・サッカーモーションなどへの適用
B熱ダレによるトルク低下を感知して補正量を調整

・・・もっといっぱい有ったような気がしたが、思い出せない。 思い出したら追記するってことで。

 

ところで、マーキュリー脚とSEMB1200Aで構成されているラムダ・マーキュリーでの計算歩行プログラム。 見たいって人は居るのだろうか。 「ヒューマノイドロボット」という教科書に書いてある事を実装しただけなのだが、「自分もやってみたいが実装手段がわからん」という人も居るのではないかと思います。そういう人にとってのサンプルにはなるかなぁと思います。 もし興味がある人が居ましたらメールか掲示板に書き込みお願いします。頒布か公開を検討します。

#歩行の表現とか、継続歩行とか、負荷補正とか、教科書に書いてある情報だけだと難しいことや、教科書には書いてないことも結構あるので「実装しただけ」というのは言いすぎかな。

さて、モーション再生とエディタをサクサクと作って、早くカメラに移行しよう! あ、あと加速度センサーの実装だ。

10月7日

モーションエディタ作成中。

プログラム的には何も面白くないのでなかなか進まない。 その上、マンマシンインターフェイスは一通り必要なので、記述はたくさんあるのでなかなかに辛い作業です。

さきほどモーション選択とフレーム選択・フレーム追加削除の記述ができたので動かしてみたら、、ロボットが大暴れしてサーボホーンが一つ吹っ飛びました。(>_<)

まだロボット動かすのは早かった(^^ゞ  エディタができたらフラッシュへの書き込みと読み出しを作らねばならない。 めんどくさー(ーー;)

10月9日

モーションエディタ作成中

フレーム編集の部分のデバッグに手間取ってしまい、今日も完成を見ず。 練習会までにできないかなぁと淡い目標を立ててたけれど希望は泡と消えました。もう3時だ。寝なきゃな。

旋回と直進(カーブ歩行含む)の接続で、いくつか不具合が発覚しています。 特に旋回歩行から直進に移るケースではうまく移行できません。おかしいなぁそこは気にしなくても接続できるはずなのだが。。 モーションエディタが出来たらデバッグします。

明日は練習会。 リングで歩けなかったときのために補正値パラメータを書き換えられるようにだけはしておきました。 エディタが完成していれば、荷物は少量ですんだのだけど、やっぱりフル装備で行かなきゃならないですね。しょんぼり。

10月11日

昨日はロボット練習会。

新ホビーロボット提案のプレゼン大会があるからなのかどうかは不明だが、ろぼとまの中が人であふれかえるほどの参加者がやってきた。石川さんの話によると瞬間最大33名の参加・見学がだったそうだ。

大学のイベントの打ち合わせとかインドからのお客さんにロボット見せたい人とか、プレゼンする人やらプレゼン聞く人やら、バルカン打つ人やらロボットを調整したり作ったりする人でごった返してまして、おサル君とロボベーシックの話をすることになってたのだけど、、隣に座ってるのに大声出さなきゃ声が通らない。(^_^;) おサル君、もっと細かい話は別途やりましょう。

ラムダをリングで歩かせてみたのだが、家のMDFボードよりはグリップがあるらしくてちょっと不安定だったがまぁ十分歩けました。 周りで戦闘機が飛びまわっている中をセスナで飛んでるみたいな感じだったな。

1歩0.5秒、歩幅50ミリがデフォルトになっているが、歩幅はもう少し伸ばしても良いかもしれない。

それはそれでよかったのだが、色んな問題が発覚。

@SEMB1200Aのディップスイッチ設定で、ユーザープログラムを電源ONで実行させるとサーボONでexception発生。 ローダーから起動するのとでは何か処理が異なるのか? 具体的にどこでこけるのかは未調査だけど、、もう、やだなぁ(>_<)

Aモーション編集した後に動かそうとすると、サーボONOFFのタイミングでサーボが暴れる。 → 作り込み不足からくる不具合だろけどまだ見当がついてない。

B肩サーボにファクトリーリセットがかかった。 1個だけサーボにトルクが入らないなぁと思っていたらチャンネル設定からリセットがかかっていた。 なぜ!?いつから!?

C上半身サーボのトリムがずれる。 トリムがずれるんじゃなくて、プラスチックのホーン使っているからセレーションをなめちゃうのかな?こけた途端にガクッとずれて、あぁホーンなめちゃったよと思ってみてもずれてない。 もしかして組み立てる時に中途半端なハマり方していたのかも。。

Dたまにモーションが抜ける。 不定期にサーボに送信しているフレームが抜けるかのような動きがある。 ストリーム放送でスループットが低い時みたいな感じ。 それは起こらない設計なのだがな。 不定期なので困ったな。

Aは練習会前夜には既に発覚していて、デバッグ中にクルブシを蹴られて流血する事件がありました。 まずはこれを直さないと動かすのが怖い。 どうやらサーボのオンオフ管理のずさんさが招いているバグらしいことまでわかっているので現象を捉えて修正で現象が消えることを確認しないとね。 踝イタイです。

リングで歩かせていると、まずイガアさんから重心位置がおかしいと指摘が。 ん〜、確かにそうなんだよな。なぜか歩行初期姿勢が前寄りになっている。 計算が正しければ目標ZMPにあわせた姿勢を取るはずで、静止時の姿勢は静止重心に合わせているはず。 高い位置にRPU-100を背負っているのでもしかしたら重心は後寄りかもしれないけど、そんなにも後よりではなかったはず。   その後、くぱぱさんにもひと目見て「(大腿と下腿の)角度が違うのはなぜ?」と、同様の指摘を受けました。 さすがはベテランたちはひとめ見て歩けるモーションの条件が見て取れるんですね。

確かに今の計算歩行結果だと前進は後退より不安定で、指摘の内容と一致します。そこんとこ要チェックです。

そろそろ日誌を改ページする頃合ですね。。

 

!作業状況

モーション編集した後にサーボONOFFするとサーボが暴れる件は判明。

トルクOFFした後にトルクONするときはキャプチャーデータを参照するのだが、モーション編集をした後はキャプチャーデータがおかしくなる場合がある。 キャプチャーデータをモニターしていて気付いたのはどうやら想定している受信データ数以上のデータが送られて来ているが、受信側はそのような状態を想定していないので、おかしくなったあとはデータがずれてしまい、キャプチャーデータとしておかしな値が見えてしまう。

なぜ想定以上のデータが送られるのか? それもモーション編集時に? それは、割り込みルーチン内でモーション編集のメニュー表示をしていたからで、ある程度以上の文字数になると、サーボの受信タイミングが壊れてしまい、受信データがずれてしまう。

メニュー表示をメインループに移して、受信ルーチンでは不要データがある場合は廃棄するように処理を追加した。 これでサーボが暴れる現象は完了です。よかった。。

昨日の練習会で、ラムダがブルブルしだしたのを見て、オサルハハがさっきはブルブルしていなかったのに。。と言われました。 確かに以前はこんなにサーボがブルブルうるさくなかったのに。 これはサーボホーンがなめてしまったのをトリムで調整したからで、トリム値が小さくなりすぎた(もしくはブルブルするポイントになってしまったのか)ためで、サーボホーンを元通りに直して、トリム値も戻したらブルブルも治まりました。

そして、Dのモーションが抜ける件ですが、Aの調査をしている時に、サーボにトルクONした場合にメッセージとサーボ角度を表示するように仕込んでおいたのですが、旋回歩行させているとたまにサーボのトルクONが起動します。 バグなのか、コントローラからの受信データが化けているのかはわかりませんが、ほぼ旋回歩行時にしか発生しないところを見るとデータエラーじゃなくてバグのような気もします。 でも、間違えてコマンドを送るバグって考えにくいなぁ。

!!作業状況

フレームが抜ける件、変数をモニターしたところコントローラからのデータが化けているように見えたので、2度読みしてみたが改善しない。 動かしながら発生の傾向を見ると、旋回で1歩歩かせた場合、回転で1歩、反対に回転して1歩で再現する。 ううむ、なんだろなこれは。

というところで時間切れ。 レイトショーで「ATOM」観に行ってきます。上戸彩なんだよな、アトムの声。 あと、原子力じゃなくてブルーコアっていうクリーンなエネルギーで動いてるんですね。それじゃアトムじゃないじゃん。

西さんの作業が着々と進んでますねー。 それにしてもすごい集中力と正確さですね。私は1歩進んで3歩くらい下がりながら作業しているのに。。。(>_<)

!!!作業状況

フレーム抜けは、コントローラの受信に失敗して、コントローラ接続が1フレームレベルで切断した時のデータ取り扱いミスでした。切断した時もボタンの変化を見てた。 でも、旋回歩行の際にこの現象が起こり易い原因は不明です。

さて次は重心位置がおかしい点に着手します。 計算によると、前後重心は11mmほど後より。ところが、歩行時は30mmくらい前傾しているので何かがおかしいですね。たしか、逆キネの計算の際にオフセット値を計算に入れるか入れないかで迷った覚えが。。 そこのところを再チェックです。

使いにくいけれど、モーションエディタは一応の機能を備えることができました。でも、まだモーション再生ができなかったり(^^ゞ それに、モーションをフラッシュに格納したり取り出したりする部分がまだです。 フラッシュ書き間違えると、ブートローダを消しちゃったりするわけだから怖いです。 これは明日の作業だなぁ。

!!!!作業状況

逆キネの確認は5分で終了。 やっぱり不要なオフセットを計算に入れてました。 マーキュリー脚は本当の軸は直交軸になっていないんですけど、仮想直交っていうのか、直交軸として計算しても問題ないようになっています。 なのにピッチ軸とヨー軸のオフセットを計算式に加えていたために15ミリほどずれていたようです。

修正後の姿勢では、前後方向の重心オフセットは-5mmになりました。

それで歩かせると、前進も後退並みに安定してきました。スリップ度合いも小さくなって歩幅も増えました。これならもう少し歩幅を大きくできそうです。 ですが、カーペット上で歩かせた場合、後退は以前より悪くなりましたね。 カーペットだと足が取られるので少し後傾気味にした方がよいようです。 足上げ寸法を上げたらもう少しよくなるかも。

歩幅はどこまで広げられるかと言うことで試してみたところ、MDFボードの上なら100oにしても歩けました。 ただ、直進性はダメダメですが。 背を高くする方向では最大足長さ280oに対して、270oにしても歩けました。270oにすると、歩幅は55o程度しか出せません。 更に足間隔は60oにしても大丈夫でした。

  

この状態で歩ければ立派なものでしょう。 足裏ももっと小さくしても歩けそうな勢い。 いよいよ夢の膝伸ばし歩行が近づいてきた感じです。

もちろんそれぞれカーペットの上だとダメです。 1歩の遷移時間を0.7秒にしてみたところ、カーペットでも安定して歩けました。

逆に計算歩行は再生精度が命なので、早く歩くのは苦手です。デフォルト1歩0.5秒で検討していますが、0.3秒だともう不安定です。 この点でもバトル向きじゃないですね。

あっと、今はサーボが4014なので4013を使えばもう少し改善するかもしれません。

10月12日

今日はフラッシュの書き込みと読み出し。 SEMBのブートローダ部分に用意されているフラッシュ書き込み関数を使うわけだけど、失敗するとブートローダを消しちゃうじゃないかと心配しておりました。 しかし、どうやらこの関数ははユーザーのデータ領域にしか書き込みができないようになっているかのような説明が書いてます。そうだといいんですけど、試せないので。。

慎重に進めたお陰か、大過なくモーションの書き込みと読み出しができました。 ただ、動作確認中に一度だけ書き込みをミスりました。その後はミスなし。 書き込みに失敗したその時はモーションデータが全て破壊されてまして、跡形も残ってませんでした。編集も保存もロボットだけで行うようにしているのだけど、PCへのバックアップは必須だな。

編集コマンドの足りないところや姿勢の初期値も設定して、モーションエディタは完成です。 再生ルーチンは簡単なので、ちょちょいと作って、これで運動系はほぼ完成。

早速モーションを作るかと言うと、モーション作りは面白くないので、置いといて、次はセンサー系です。 センサー系は転倒感知の加速度センサーと、イメージセンサー、そして足裏センサーを予定しています。

イメージセンサーはつまりは目なんですけど、以前は初代ラムダの頭をそのまま乗っけようと思ってたのだけど、やめてこの機体専用の頭を作ることになりそうです。デザイン的にどうもマッチしないのと、ラムダの頭はこけたら壊れるんで、もうちょっと壊れにくい構造にしたいなといった理由です。なので、もっと質実剛健な感じの無機的な頭にしようかなと、、、そういうわけで、今日の残りの時間は頭の設計をやってました。CADの前でうなってたたけで全然進みませんでしたけどね。

10月13日

なんだか吉日掲示板が大変なことになってますね。 何が気に入らなかったのかなぁ〜。 わざわざ撤退するって発言するってのはなにかのメッセージですよね。 やめないでーって言うのじゃなくてそのメッセージを聞く必要があるのじゃないかと思います。 アニメイダーさんがマジックスパイスの会に来たら聞いてみます。

西さんからは悲鳴が。。。(^_^;) 西さんとこじゃexception問題出ないのかなぁ、いいなぁと思っていたのですが、出ちゃったようですね。 私は環境のバージョンを上げて、最適化オプションをつけたら出なくなりました。 もうバージョンを一つ上げれば最適化オプションが要らなくなる予定なので、そのうち環境を上げるつもりです。

コンソールで変数表示すると、exceptionが発生しなくなるのは、計算機会が極端に減るかなので、発生確率が激減するだけだと思います。多分計算量はコンソール有り無しではものすごい差だと思うのですよ。

exception問題は、うちはなんだかんだで1ヶ月くらい停滞してたんじゃないかと思います。西さんとこが早く回復することをお祈りしておきます。

・・そんなこんなで今日は何にも開発せず。 明日は飲みに行っちゃうような予感がしているので失敗したなぁと思うことしきり。

デジカメが返ってきたので、先日画像をアップした姿勢での歩行を動画撮影しようとしたら、こけて腕がもげてしまった(^_^;) 

まだまだですな。

10月14日

コンソールケーブルを無線化しようとXBeeを買って来たのはいいけれど、XBee経由だとプログラムの書き換えができないという問題がありました。 岡田さんからは速度が速すぎるのでは?というアドバイスをもらっていたのですが、フラッシュライターの速度設定は決めうちで変えられない。 ということで、岡田さんがフラッシュライターのUART速度を変更するプログラムを作ってくれました。 これは、、UARTの設定をしたあと、フラッシュライタープログラムの初期設定部分の次のアドレスあたりにジャンプしているのかな?(多分ですけど) デフォルトでは115200baudなのですが、このプログラムで57800baudに設定すると、無線越しにプログラムの書き換えができるようになりました。 プログラムの書き換えが今までの倍の時間がかかるのだけどそこは仕方ないですね。このちっちゃなプログラムのために、初期起動アドレスを一つ潰すことになってしまったけど致し方ない。 岡田さんありがとうございました。

肩のサーボホーンをアルミに変更して、、今日は頭部分の設計です。頭のサーボはフタバのRS302を使うつもりなのだが、このサーボも固定しにくいんだよね。色々ギリギリです。 東急ハンズ行って頭の材料を調達してこなくっちゃ。

肩のサーボのストレッチは軽めにしといた方がいいんだろうなぁ。こけただけでギアとんだら勿体ないもんね。

10月15日

今日も引き続き頭部の設計。 旋回の足運びが気に入らないので手を加えたいのだけど、まずは頭部の板金部品を発注してから。。 リンク脚での計算歩行が出来たので、更に自由度を増したリンクのような剛性が高い脚構造を考えているのだが、構造設計していると、気付くとそっちの方にアタマが行っちゃって頭部の設計がなかなか進みません。 いかんいかん集中せねば。

土曜日はRTでモーションと歩行の調整をする予定なのにそのための準備ができていない。イチからモーション作るとなったらバッテリーじゃだめだから、電源が要るなぁ。電源もって行きたくないなぁ。

このページの先頭へ
トップへ戻る