開発日誌(41)

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

最新へ↓

4月1日

ロボワンから早一週間。 くままさん連続優勝おめでとうございます。

ロボワンの土日はチョー楽しくて、すぐにでも新作ロボット作りたくなったのですが、月曜日に会社に行った途端、そんな状況じゃない事を骨の髄まで思い知らされ、すぐに現実モードに戻ってしまいました。

とはいえ、仕事が終わればプライベートタイムなので失いかけたテンションを取り戻しつつ年末から取り掛かっていた新ロボット構造の最終調整をしておりました。 そちらも無事図面出しできそうな状態になったので(というかとにかく一度作ってみよう状態)ロボワン前からやっていたことに戻ることにしよう。

ロボワン直前は逆キネのデバッグをしていたのだけど、どうも単純なバグではなくて浮動小数点演算を使った部分での問題? またはメモリーアロケーション問題じゃないかなーと思える節が出てきました。 エラーが出た時にそこそこの情報を吐き出すようにしたので(あ、メモリー関係も吐き出すようにしないとまずいかな) エラーが出たら検討する、という体制にしてCPGに戻る事にします。

CPGの実装についてはロボワン会場の控え室でゲロさんに色々とご意見をいただきました。 そうです。単に引き込みを期待するだけなら動作周期を観測してその周期でロボットを動かせばいいだけだからCPGなんて組む必要はありません。 更にはラムダは現在計算歩行で歩かせています。 計算歩行にも色々あるのですが、ラムダは教科書「ヒューマノイドロボット」のオフライン歩容生成の計算を実装しています。 これはロボットの質点構造からZMPを計算し、目標とするZMPになるような重心軌道になるように誤差収束計算を行っています。

なので、CPGで作った振動を使って歩かせることができないのです。 つまり、CPGとは縁遠い歩行方法なんですね。 というか、CPGで動かして、動きを入力するという方法を取るとサーボの遅れで必ず位相遅れが発生して同期しないように思います。 人間も同じだと思うのだけどなにか細工があるんですかね。

ということでなぜCPGを組み込んでいるかと言うと、そういうアイテムが好きなんですね。

今のラムダは安定域が狭すぎて、CPGで歩かせるなど不可能に思われるので、もう少し安定域が広いロボットが出来たら試してみてもいいかな。

4月3日

春の大嵐。 台風並みの暴風雨で会社は電車が止まらないうちに帰りなさいと。 結局会社を出たのはもっとも雨風が強いと言われていた6時頃。

よっしーがFBで書いてた国土交通省の「XバンドMPレーダー」というのを見てみると、雨量に波があるのが良くわかる。 風はずっと強いけど雨が降っていないのならなんとかなるよね。ってことでレーダー見て雨が降っていないエリアにさしかかったのを見計らって会社を飛び出して急いで駅までダッシュ!

傘を差さずに濡れることなく駅まで行くことができました。 ラッキー(^。^)

 

CPG周期で歩かせるというのをやってみました。 同期を取るコーディングが面倒だったのでとりあえずはフリーランニングしているCPGの周期を歩行周期に取り入れて歩かせる。 そして足裏センサーの情報をCPGに入力するという形でやってみました。

これなかなか面白い。 歩かせるだけで勝手に歩行周期を調整して歩きます。 絶対にコケないってわけじゃないけどあんまり安定していないラムダでも十分に歩かせられる。

事前検討でわかっていた逆位相で信号が入力された場合、周期が早まりながら同期していくんだけど、早くなって同期したまま早く歩くんですね。 元の周期に戻らない。 やっぱり逆位相で歩き始めるのはイマイチなので歩行開始とCPGタイミングは合わせた方がよさそうです。

 

歩行に関してはそろそろ動力学を使った計算歩行ってのは終わりかなーと思っています。 自律動作をさせたときの歩行生成のためには動力学を取り入れて最適化への近道を目指さなければ収束しないだろうと考えて動力学ベースの計算を勉強していました。 本来なら体感した感覚から歩行が最適化されるべきなんだけどそんなセンサー群と処理を最初から備えることができないので物理計算でその代用ができないかと思ったのです。

それがまったくの間違いというわけじゃないのだけど、安定域の狭さがハンパじゃないので実用的じゃないですね。 ホビー用サーボじゃ精度もたかがしれているし。 フィードバック制御を入れるのも色々と難しいし。 これからは少し実用的な方向と、自己形成の仕組みの方向にシフトしていこうかと思っています。

4月22日

ずいぶんと更新していないので書くほどのことはないのだけど更新。

先日、劇場公開の最終日に「宇宙戦艦ヤマト2199 第一章」を観て来ました。 実はあんまり観に行く気はなかったんだけどみんなの評判があまりにいいので観ておこうかと、ヤマト好きだし。 で、会社のやっぱりヤマト好きなやつが居て、そいつを誘ってみると、アタマっからガンと「観に行くわけないじゃないですか!」と超否定。 なんなのこれ。。(>_<)

でもそこは一旦引いてやんわり話してみると、あまりにヤマトが好きだから絵や声優が違うのがいやらしい。 ちなみにルパンは山田康夫オンリー派らしいです。

そいつが、開口一番「デスラー総統の声は伊武雅刀なんでしょうね!」 (^_^;) そういやそうだったなー、 いや違うと思う。

 

そいつと観に行くのは諦めて、石川さんやビスコさんたちと観に行ったのですが、なんと作中ガミラス星人たちはわけのわからない言葉をしゃべってる! 要らないんだよそんなリアリティーは! だいたいにしてそしたらデスラー総統の「ヤマトの諸君」ってセリフはどうすんだよ!

6月に公開となる予定の第二章は波動砲やワープが出てくるらしい。 表現が前作とは随分と違うみたいだけど楽しみだなー。 浮遊大陸がぶっ飛ばされるのもったいないなー。

 

ロボットの方は色認識テーブルの編集ができるようにBeagleBoardのプログラムをやってるところに発注していた板金部品が届いてしまったものだからプログラムそっちのけで新足構造の仮り組みしてました。 設計ミスや加工ミス、それから改良した方がよさそうなところが数点あったのでこれから追加発注です。

今回の構造は形状的に平板になるところが多いので始めてジュラルミンを使ってみました。 普通のブラケット部分などは今までどおりアルミ合金なのですが、ヒューマノイドロボットを作り始めた頃から使っていた総ヒノキ作りの板金曲げ器がガタガタになってしまい、なかなか曲がりません。 ベースが木なので撓んだり潰れたりしちゃってるんですね。 新しい曲げ器を作るのも大変だし、買うのはもっと大変だし、ろぼとまやロボスポに行かないと曲げられないのもイヤだし、困ったなぁと。 でもとりあえず今すぐ曲げたいのでチャキチャキっと修理してみたところ、、、まだまだ使えそう。 (^_^;)  このままあと5年くらい使いそうです。

5月4日

ゴールデンウィークも後半に突入です。 途中1日出勤日があったけどそれ以外はずっと休み。 新足の追加発注分は練習会前に届いたのですぐに組み立てました。練習会にはこっそりと持って行っていたのですが、動作確認に手間取った上、秋葉原で買い物してから向かった練習会には終わり間際に到着。 学生でごった返すワンフェスカフェでこっそり西さんにご紹介したりしていました。

ゴールデンウィークに入ってからはその新足で歩かせるべく準備をしていました。 今回は二関節筋リンク。 陸棲の動物すべてが備えているという二関節筋をモチーフにしたリンク構造が特徴です。 更にはうっちーのススメで現行のラムダを分解せずに構築したのでサーボを新調しての製作です。 (まだ下半身だけだけど) CPUもそろそろSEMB1200Aじゃないので動かしたいのでICS3.0以上にしたかったってのもあります。

とは言っても構造のアラ出しをせねばならんのでラムダに搭載しているSEMB1200Aを拝借して動かしてみることにしました。

ケーブルの関係で足踏みだけ(^_^;) 上半身が無いので前進させると回っちゃってまともに歩けません。

ラムダのプログラムを流用すればすぐに動かせると思っていたのだけど、よく考えるとZMPの計算に使っている多質点モデルからのZMP計算は多関節筋モデルには適合していなくて色々細工が必要であることにやっと気付いたりして随分手間取りました。 これでも逆キネは超手抜き(胴体姿勢のサポートなし)です。

動かしてみると、リンクアームの剛性が足りない、手抜きで設計した軸が緩む(ベアリングは入れてあるとはいえネジを使った簡易軸なので) 多分膝トルクが足りない といった問題がでてきました。 リンクアームの剛性については予測していたので補強部品をつけられるようにしてありました。上の動画は補強した後の動きです。

実はラムダの歩行プログラムだとこの足構造の特徴が活かせないのでドライブ方法を考えねばなりません。 構造ももう少し見直しが必要です。

 

それより、せっかくウッチーのススメで現ラムダをばらさずに作ったのに、このテストプログラムを書き込んだ時にいままで育ててきた調整情報を間違って消してしまった (>_<) ダメージでかい(T_T)

7月1日

ちょー久しぶりに日誌更新です。

やっと作った二関節筋型足構造がイマイチだったので改良していました。 前後方向リンク(足首ピッチの三関節筋構造)を取り込んでみました。 設計時に取り込むべきかどうか迷ったのですが、これやると更にフロスティに近くなるのでまずは足首ピッチは二関節筋型とすることで(そのほうが構造が簡単だし)進めてみましたが動かしてみるとやっぱり前後方向のリンクも欲しいなぁということで、無理やり改造です。

なんせ無理やり組み込んだので関節の可動範囲が狭い(>_<) 多分歩けるとは思うのだけど、、 このままじゃ目指している「生活空間に居るロボット」としては不十分なのでまずは動かしてみていい感じなら更に改良します。

股関節ロールにも改造を予定しているのでまだまだ先が長い。。。

動かしてから動画をアップしたかったのだけど、結果が不調なら日誌の更新がまた数ヶ月無くなる恐れがあったので静止画でアップします。(^_^;)

早速逆キネを修正して歩かせたいとこですが、今日はこのあと「ヤマト2199」の第二話を見に行くつもりなので今日は動かないかな〜。

7月22日

またまた久しぶりの更新です。

前回の更新で動画アップとか言ってましたが、実は特に得るものがなかったので動画撮影は未実施。 何よりこの足にはこの足に合った歩容があるはずなのだが今あるプログラムじゃそれは簡単に出来ない。 テスト用にモーション再生できるボード持っておこうかな。

前回の改造では関節可動範囲が非常に狭いです。実験用と割り切ってもよいのだけど、モノを眺めていると「こことここをあぁすれば可動範囲が広がるなぁ」と思ってしまったらやらずにはいられない(^_^;)

というわけで股関節の改造と共に可動範囲の拡大設計をやっておりました。

   

股関節を非並行リンクで減速。 リンクなので逆伝達効率が低いので荷重による関節のたわみの軽減を期待しています。(フロスティーのマネです)

 

「この足に適した歩容」について

この足は「二関節筋構造を使った」足構造というふうに書いてきたのだけど、機械的にはZ-Y軸リンク構造になっています。(概ねフロスティーと同じ Z軸リンクの実現方法が異なっています) ※我が家では前後方向をY軸とした座標系を使っています

今までのラムダの歩容は倒立振子の運動方程式を基本としたZMP規範の歩容でした。これは重心点の高さを一定とし、重心に対して水平方向の加速度を与えることで重力との合力で目的とするZMPを実現するというものでした。

対してこの足はZ軸リンクを持っているので膝がたわんでも足首や股関節が追随して転倒しづらいのが利点の一つ。 であれば、積極的に重心点の上下動を許容する歩容でなければなりません。

具体的には上下動をすることで重力加速度による力が若干吸収されるため、目標とするZMPを実現するための水平方向の加速度が小さくなります。更には上下動を許容する遊脚運動を実現せねばなりません。

実のところ、この実現の手段がさっぱりわからないです。(^_^;) とりあえずは簡単なモーションを作って実験してみるしかないですね。 歩くまでもう少しかかりそうです(>_<)

9月13日

開発日誌を更新しなくなって久しい。。 久しぶりに更新。

更にさらに構造変更を経て、二関節筋構造を使った脚構造は構造的には一段落しましたのでそろそろ動かしたいと思います。

今回は計算歩行じゃなくてモーションで動かして、できれば「学習」を組み込んでみたいなと。

とりあえずCortex-M3で動かそうと思ったのだけど、考えるとKONDOのサーボを普通のマイコンで動かしたことがない。 2WUARTを1WUARTにしてつなげばいいと思うのだけど近藤科学のホームページで確認。

すると、回路図とともに説明が

「下記回路図は近藤科学社製KCB-1マイコンボードのシリアルサーボモーターを駆動する部分のみを書き出したものです。回路図のSIOコネクタの番号は、1番が信号線、2番が電源線、3番がグランド線となっています。弊社製ロボット用シリアルサーボモーターは、電源電圧は10.8Vで、半二重シリアル通信により動作します。シリアル通信(信号)線はCMOSレベル(約3.3V以上でHIGHと認識される)の負論理となっています。」

負論理って、1をLレベルで表すってことだよね。 少なくとも回路は負論理になっていないのでUARTの極性が反転できるタイプ? いや、確かSEMB1200AとBeagleBoardのUARTをつないだときは論理反転なんかしてないし、アイドルはHだった覚えがある。

色々聞いて回ったら「アイドルはHighレベルで負論理」と教えてもらったんだけど、すると、UARTの極性反転じゃなくてデータを反転して送信して、受信したデータを反転して読み取るってことかい? 意味わかんねぇなぁ。 ということで諦めてSEMB1200Aがサーボを動かしているところをオシロで観察することに。

これはサーボID=1にポジション0を送信しているところ。 えらくなまった信号だな。。。 アイドルはHでスタートビットはL、ストップビットはH 送っているコマンドは81H00H00Hの3バイトなので1をHで表す正論理に見えるなぁ パリティがついてるようだ。10000001Bに0がついているのでevenパリティです。 81hも00hも前後がわからんデータだけど、LSBから送ってます。

つまり回路的にもプログラム的にも反転処理をする必要はないらしい。 すると近藤のHPにある負論理ってのは何を指しているんだろうか???

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