逆運動学と計算歩行の最近のブログ記事

KO-Linkの肩の直交軸

しばらく前にFaceBookには投稿していたのだけれど、改めてブログに。

KO-LInkの肩の軸を再検討中。
逆運動学のためには最低2軸直交していれば、位置の制御的にはOKなのだけど、手の制御の場合、脚の制御以上に”機能”もしくは”見た目”の問題で3軸直交にした方が、よりベターである。

一番多く見受けられるのは、体幹からヨー、ロール、ヨーの順番で3軸を直行させる方法。
今のKO-Linkもこの形状。

ただ、これは幾何学だと結構計算が煩雑になるので、今のところ制御の中に逆運動学は取り入れていない。
(当然、ヤコビアン使えば間違いなく解けますが)

もっと簡単な計算のために、計算のための設計を行うとどうなるかなーってことでいろいろ案を書き出してみた。

kolink_an.jpg

案3を書いたところでふと気が付く。
これって脚の3軸直交と同じじゃん!?

脚と同じなら計算も脚のものをベースに流用すればOKのはず。

というわけで、今後KO-Linkはこうなっていくだろう…。の図。

kolink_an1.png

金曜土曜と仕事で東京に出張していたのですが、帰ってきてG-ROBOTSをオーバーホールしました。
交換パーツは腰と腕。サーボの反対軸が折れました。

IMG_3262.JPG

もう4年以上稼働して大会にも相当出場しているのですが、その間壊れたサーボは1つだけ。
本当にコストパフォーマンスに優れたロボットだと思います。

そんなG-ROBOTSを使って作ったExcelWalkerと、G-ROBOTSをHPIから頂くきっかけとなったKUMACOの作りかた、がいよいよロボコンマガジンに載りました。

改めて自分の記事を見てみると日本語の能力の無さを痛感しますが(^^;A
頑張って書いてみたので是非読んでみてください。

ちょっとだけ立ち読みも出来ます。
ちなみに天保山のJSRCの結果にも少しだけ名前が載ってるのですが、合わせてロボコンマガジン初デビューでした。

ROBOCON Magazine (ロボコンマガジン) 2012年 05月号 [雑誌]ROBOCON Magazine (ロボコンマガジン) 2012年 05月号 [雑誌]

オーム社 2012-04-14
売り上げランキング :

Amazonで詳しく見る
by G-Tools

第12回のROBO-ONEのHPI賞で頂いたG-ROBOTS、一方的にすごく感謝してるんですが、少しはHPIさんに貢献できましたかねー。

10月の ニコニコ技術部ランキングにおいて、Excel Walkerの動画を139位でピックアップしていただきました!!

ありがとうございます!


KO-Link2で作っていた「EXCEL逆運動学」ですが、路線を変えてG-Robots版を作ってみました。
こちらはグラフを使ったシミュレーションではなく、いきなり実機で動かしています。

G-Robotsは、股関節が3軸すべて直行していなかったり、足の長さが膝の上下で違ったり…なかなか計算のやりがいのあるロボットでした。
なぜG-Robotsに路線変更したかというと、「6自由度の逆運動学を動かしてみたかったから」。
そのあたりも動画で紹介させていただきました。

とりあえず、ご覧ください。

…動画としては、20mm四方の正方形とかじゃなくて、もっと大きい動作をさせればよかったかなと思います。
「てってってー」のBGMは取ってつけたみたいになってしまいました(汗

今後の予定としては、KO-Link2で作った五角形軌道の歩行プログラムの移植と、ジョイスティックの移植。
さらに6自由度逆運動学ならではの歩行をやってみようかなと思っています。


さて、4年さかのぼって2007年の第12回ROBO-ONE。そこでHPI賞を受賞して頂いたのが今回主役のG-Robots。
あの時点でGロボの逆運動学はやりたいと思っていたのですが、他に気を取られてなかなか手が付かず、最近やっと本気モードになりました。
その間Gロボの販売権がアールティに移っていたり、V-Sidoなんていう恐ろしいソフトウェアが登場していたり、Gロボの周辺環境もいろいろ変わりました。
たぶんG-Robotsに火がついたのはそんな環境の変化でしょう。
ただ、4年前はまさかExcelで作ることになるとは思ってもみなかったと思います(笑)
双葉さん(HPIさん)、本当に素晴らしいロボットをありがとうございます。…など4年も経って改めて思ったのであえて書いてみました。

昨日に引き続いてプログラムを進めてみました。
表示速度の向上と歩行ポーズのリアルタイム描画を付け加えました。

ただ、表の表示はもちろんセルの値の書き換えの描画も結構馬鹿にならないくらいの時間を要するので、実際に実機で実行するときは、「表の描画禁止」「セルの描画更新禁止」は必須かと思います。

ただ描画をやめるとエクセルの醍醐味が無くなってしまうので、なんとかしたいなとは思うのですが・・・
例えばエクセルVBAでマルチスレッド処理とか出来ないかなー。

まぁ、とりあえず進化した動画をご覧ください。
(分かりやすく説明をつけてみました。)

エクセルって便利ですよね。
逆運動学の計算もC言語で記述するよりテーブル上で計算できて分かりやすい。

最近のPCの処理速度ならリアルタイムで計算してもサクサクですし。
おまけにVBAで拡張し放題・・・。

実際フタバのサーボはVBAのサンプルコードもありますし、ROBOTISのロボットも既にエクセルで実行している前例もあります。
なので、ロボットとの通信は問題なさそう。

あとは入力装置との接続ですが・・・。

調べたらジョイスティックをエクセルにリアルタイムでサンプリングしている方がいました。
ジョイパッド(またはスティック)のアナログコントローラやボタンの値を取得する

というわけで、さっそくエクセル逆運動学の入力部分に利用させていただきました。

ちゃんと、目標値の五角形軌道がリアルタイムで変動しています。

ロボット単体でエクセルを実行するマシンパワーがないので、スタンドアローンは無理ですが、エクセルってホントに便利だなと改めて再認識!

ロボットとの接続の部分が未実装なので、今は画面上だけでしか動きませんが、これはこれで一つの方向性かなと思います。

逆運動学で歩行する場合の軌道が”五角形でいいのか”という疑問はそのまま置いておいて。

五角形の軌道を通る場合ポーズ数の分割は6分割でいいのかということを実際に確認するため、エクセルシートをさらに改造して実際に取りうる軌道を表示するグラフを作ってみました。

gyaku.png

その結果がコレ。

6ポーズの場合。

5kakukei.png

5ポーズの場合。

5kakukei2.png

結局ズレの部分が、分割数(計算量)を増やした場合のパラパラ漫画に対する逆運動学の優位を表すと考えられるのですが、5ポーズだとちょっとズレすぎかな(それでも1mm程度ですが)

7ポーズ以上に増やせばもっと五角形に近づきますが、実際外乱でそううまくいかないことも考慮に入れれば、6ポーズで十分使える事が分かるかと思います。(歩けた後に言うのもなんですが)

あとはこの計算をリアルタイムで行って、アナログスティックから歩幅を指示みたいなことができたらベストなんですけど、マイコンをC言語で書く元気は全然ないので、とりあえず、エクセルVBAでのロボット制御を勉強中です。

さらに進化を進めて

  • 歩行軌道の生成
  • 軌道座標からサーボの目標ポジションの演算
  • 角速度の上限値チェック

を実装し、一通り歩行のモーションを出力できるようにしました。
軌道に関しては、「五角形軌道」を採用しました。

gyaku22.png

歩行軌道パラメータを入力すれば、あとは軌道生成から出力値の生成まで自動でやってくれるので、出力された48個の値をCM-5のモーションエディタに打ち込めば、モーション完成です!
(48個の数字の打ち込みも自動化したいのが本音ですがw)

分かりやすく動画を作ってみました。
(相変わらずの自己満足動画ですw)

KO-Link2の逆運動学 #02

昨日の続きで逆運動学の計算シートに図の表示機能をつけてみた。

IN_KI.png

せっかくなので、公開します。
(けど、KO-Link2(399さんの平行リンク脚)でしか使えないので、あんまり公開しても意味ないかもw)

ダウンロード:KO-Link2逆運動学計算シート(Excel 2007形式)

黄色背景のボックスのXYZを入力すると、赤色背景のボックスにAX-12に送るべきポジションが表示されます。

というわけで、ここまでできたらXYZに何の座標を放り込むかが問題になります。
いわゆる歩行の軌道です。

これもいろいろ考え方があって、自分が過去(KOKUTEN3)に採用していた方法では

  • 正弦波の正の部分だけで足上げ(左右の足の位相を180°ずらす)
  • 体重移動も正弦波
  • 足の前後は左右で位相を180°ずらす

みたいな、要するに足先で半円を描く歩行をしていました。

他の人はどうしてるのかなーってことで、有名どころをあたってみると。

tokotoko.png
トコトコ丸的軌道

いろんな軌道を描いていますね。

どちらにも言えることなのですが、地面から離れたらすぐ前に出すのではなく、空中ですこし後ろに蹴ってから足を前に出すのがポイントみたいですね。

脚の軌道生成のプログラムと表示再生のプログラムが今後の課題です。

KO-Link2の制御ボードCM-5でどうやって逆運動学を実装するか・・・。
かなり重要な問題なのですが、C言語でコードを0から書こうかとGDLを起動するも、あまり気が進まず。

結局、エクセルのシート上で計算したデータテーブルをエディターに手打ちで流し込むことにしました。

というわけで、エクセルでゴリゴリ計算するシートをせっせと作りました。

gyaku.png

とりあえず完成ですが、初期値をもう一度見直しつつ、暇があればグラフを用いて図の描画も入れようかなと思います。

というわけで、歩行は今後作っていくとして、運動学の関係ない起き上がりやジャンプのモーションをサクっと作ってみました。

速度の遅いAX-12で1cmほどジャンプ出来ました。
もう4年も使っているモーターなのですが、ジャンプできたのはこれが初めてではないでしょうか(笑)

399さんに頂いたリンク足を逆運動学で制御するために計算してみたので、備忘録として公開します!

hli_02.png

応用編1) 非直交軸の平行リンク足の逆運動学

ちなみに三角形2個に注目してl’を計算するのがポイントです。


keisan_01.png

これに気づかずに、三角関数でゴリ押ししていると下記の状態になってドツボにハマってましたww

kei_mati.png
そもそもあっているかどうかも謎w

あと、

  • KHR-1の場合
  • KHR-1をダブルサーボにした場合
  • アキレスの場合
  • RB-2000の場合

ってのも、応用編で考えてあるんで後々UPしていけたらと思います。
これで一通りのロボットは網羅できるか!?

ただなんといっても、直交に比べると計算量が増えるわけで、計算量と足の構造の関係で論文書いたら1本書けるんじゃないかとw

二足歩行の逆運動学のところに
「腰から膝」「膝から足首」の長さが違う場合
その他のパターンについてと、まとめ
を追加しました。

http://dream-drive.net/robot/asi.htm

前に言っていた、ヘロンの公式を使うやつです。
いちおう、これで、完全版ってことにしたいと思います。
SISOさんの記事も抜粋させていただいてます。
(SISOさんありがとうございます)

で、記事の最後にも書いたのですが、逆運動学が実装できれば、次はその上に載せる歩行の軌跡が必要になります。
どなたか逆運動学で歩行しているロボットで、歩行の軌跡を公開できる人はいらっしゃいませんかね。
僕も勉強したいです。

あと、前回のROBO-ONEのときに裏技研の菅原さんから聞かれたのですが、このコンテンツに登場するガンダム(ストライクルージュ)は、歩きません。ただのプラモデルですのであしからず。

さてさて、次のROBO-ONEの開催地決まりましたね。
この前のROBO-ONEで、噂は聞いていたのですが、こんなに発表が速いとは思ってませんでした。

その開催地にさっきまで帰省していたのですが、我が地元、香川県高松市。
ビッグボスの出身地だとも聞いています。まぁ、それは関係ないですが。

RCIVの松田さんからも手伝いを頼まれているので、今年の夏も忙しくなりそうです。
その前に、ファイトに持ってく(連れて行く)KUMACOの整備を始めなければ!!!

ヘロンの公式

少しずつバージョンアップさせてきた、二足歩行ロボットの逆運動学の計算だけど。

マイコンの計算速度の都合上からってことで、膝-腰ピッチ間の長さ、と足首-膝ピッチ間の長さは等しく a とするとしてきた。

これは、プログラムの事も設計する段階で考慮に入れることが重要なんだって考えていたんだけど。
単に簡単に計算する方法が見つけられなくて公開できなくていたというのも事実。

で、さっき高校の数学の教科書をパラパラめくってて、ヘロンの公式を思い出して、違った長さでも簡単に計算できるんじゃないか?ってことに気がついた。
というわけで、メモ代わりの日記ですw。

ヘロンの公式

これなら、高校数学で・・・説明って方針にも抵触しないよね。
近日中に、膝-腰ピッチ間の長さ、と足首-膝ピッチ間の長さの違う構造に対応した計算式を掲載して、それで最終版にしようかなぁと思う。

しかし、コレ、自分でもつくづく自己満足なコンテンツだなぁ・・・と思うんだけど。
実際使ってくれてる人いるのかしら?

ダブルサーボ計算。

前回、人形つかいさんに、

脚を前に出すときは良いけど、脚を後に出したときちょっとかっこわるいかもですね。

との突っ込みを頂いたことがあり、自分でも「これは無理があるかな〜」と思っていたんで、ダブルサーボが腰と足首を結ぶ直線に平行かつ、ちゃんとしたXYZの計算ができるように作り直しました。
確かに前のダブルサーボは酷かったと思いますw

同時にページも更新しました。
http://dream-drive.net/robot/asi.htm

答えはここにありました。



なんて単純なって感じなんですが、全然気づいてませんでした。
思い込みって怖いです。

ダブルサーボの計算までしといて、なんなんですが、次のROBO-ONE出場マシンは去年の春と同じく膝なしですwww
膝なしで縄跳びやりますwww

直交3軸とつま先

SN310543.JPG

新しい制御ができる形として、片足7軸の、つま先付の足を組み上げました。
まだ、配線はしていませんが、とりあえず歩行を突き詰めたいので胴体がないのは仕様です。

直交3軸は微妙にヨー軸が少し中心を外していますが、とりあえずこれで、ヨー軸の計算の確かめをしてみようと思います。

そして、今回初めての試みであるつま先。
たまにつま先がついているロボットを見ることがありますが、まだあんまり制御しているロボットを見ることはありませんね。
そういえば、7回ROBO-ONEのとき、ARIUSがつま先を使って階段を登ってたのには感動した記憶があります。

とりあえず、自由に動けるつま先ということで、いろいろ試して見たいと思います。
そして作ってみて気づいたことですが、つま先を制御するのにはヨー軸は必ず必要だということです。
かかとを上げたとき、ロール軸にヨー軸の要素が加わるので、修正するためにはどうしてもヨー軸の制御が必要になります。
こんなことも、作って動かしてみて初めて分かりました。
時間がなかなか取れませんが、少しずついじってみて何を発見できるか楽しみです。

作業報告

| コメント(4)

asi.jpg

年末にXYZの計算について、気合入れて書いたものの反響もなくまぁ、こんなもんかーと思ってたんですが、今朝ネット徘徊してたら人形つかいさんのとこと、裏・技術研究所で紹介されているじゃないの!w

久々にモチベーションが上がりました!!!
嬉しいんで後でリンク集に追加しておこうっとw

最近はというと学校のAutodesk Inventorで図面を引いております。

これは、2足歩行用ではないんですけどね。

夏にレスキューロボットコンテスト目指してて、その審査書類用なんです。
去年参加したチームの書類を見てみると、前年のロボットの写真を使ってわかりやすく説明をしているんですよね。
初めて参加する僕らは写真なんかないので、そのアドバンテージを埋めるのと、少しでも印象を良くするためにも毎日必死で図面描いてます。
ちょっと全体画像は見せられないんでパーツだけですが、3DCADってホント便利だなーと。

ちなみに、つま先付き足モデルですが、ちょっとCADが終わるまでは触れそうにない感じ;;;

あけましておめでとうございます!
今年もよろしくお願いします。

さてさて、久々にASIMOの動画に見入ってしまいました。

この動画見てると「足裏XYZ+ヨー軸の計算が出来たからどうしたの?」って言われてるようです。
常に地面に対して水平を保つとか不自然すぎますもんね;;

「つまさきで地面蹴って、かかとから着地する歩行モーション!」
やばい!
作ってみたい!!
うわーーーw
ってな感じでテンションもモチベーションもMAXですよ。

正直、microMGで小型を目指そうと思ってたんですが、この処理するのに、毎回ホームポジションのずれるmicroMGなんて使ってる場合じゃないですね。
というわけで、生き残ってるAX-12の15個で足だけのロボ作って実験しようかと。

とりあえず、つまさき軸をつけると片足7軸必要なんで、15個じゃ、ダブルサーボは無理ですね。

え?前にもうAX-12はやめるって言ってなかったかって?
すみません。m(_ _)m

買い足すつもりはないですが、手持ちのサーボがこれだけしかないので、実験で使い潰すつもりで、研究したいと思います。
サーボ買い足すような余裕はないです。
結局AX-12から縁は切れないようです。

バトル用ではないので、急激なモーションには注意しつつ、GNDの瞬断問題はハードウェア的に回避方法は分かってるんで、回避回路をつけながら、新しい「足」の研究をしたいと思います。
夏のロボカントリー4までには作ってやるぞー!

という、新年の抱負でした。

足の計算にヨー軸追加

腰を原点とする足のXYZの計算 http://dream-drive.net/robot/asi.htm
に、「ヨー軸の計算」を追加しました。

0N0の電脳壁新聞さんの記事をなんとなく見てて、SuperMachine開発日記さんもXYZ計算してらっしゃることが、判明。しかも、ヨー軸まで制御してるじゃないか!
ってことで、インスパイアされましたw

正直、今まで、ヨー軸の制御って何をすればいいかが分からんかったw
しかも、動画みたらカッコイイロボットが動いてるじゃないの!ww
(やっぱり、動画があるほうが裏づけになりますね。)

というわけで、基準も変数定義も違う人の計算読むのは骨が折れるんで自前で計算してみたのですが・・・。

よく考えると、計算と言うか今まで使ってたXYZ座標の計算の前に、一度、「極座標変換」しておいて、「ヨー軸の角度を足しこむ」、その後また「XY座標に逆変換」って処理を入れてやるだけで実装出来ることに気がついて、ものの数分で片付いた。
(変換に変換を重ねるので処理速度とリソースは気になりますが、XYZよりは軽いし分かりやすいからこれでいいかw)

いままで、計算がよく分からなかったんでヨー軸つけてなかったけど、次のマシンには是非ヨー軸を追加しよう!

足の計算を公開

腰を原点とする足のXYZの計算
http://dream-drive.net/robot/asi.htm

書こう書こうと思って先延ばしにしてました。
今回RCIVのときに中川さんに「どなんしとん?」って聞かれたのでその返事も兼ねて公開してみます。

ちなみにKOKUTEN1・2はXYZ座標系ではなく、XZθ座標系とロールだけは角度のまま計算していました。
XYZは今年の夏のKOKUTEN3からです。

suuimage001.gif

バイオロイドの関節角が欲しかったのだが、とりあえず、関節角から腕の先のXYZ座標を出してみた。
肩から肘にかけてサーボの角度をθ1、θ2、θ3とし、腕を伸ばして垂直に垂らした状態をθ1=0、θ2=0、θ3=π(パイ)とした。
また、前方をY、上をZ、肩から外に向かう方向をXと考える。
これを連立して解けばいいのだが、θ1、θ2、θ3が一様に定まらない気がする。
とくにXYZ=(0,0,0)のときとか分かりやすく無理そう。なので、計算ヤメ・・・。
XYZからθを求められないものか・・・。

あと、今、サークルのマシンが2点間の座標から補完するプログラムで動いている。
今まで速度一定で補完していたのだが。(↓)

suuimage002.gif

ちなみにx1がもともとの座標、x2が目標座標。
iがループカウンタで、nがループ数である。(for文で回して補完して使う)

それをsinカーブで補完してみた。単純なsinカーブのθ=-π/2からθ=π/2の領域を指定しただけである。

suuimage003.gif

加速しながら移動して、減速しながら座標で止まる。
少しの工夫なのだが、実装してみたところ、ふんわりした動作でなかなかいい感じになった。
とくにバックラッシュの大きいサーボがいい感じに動きました。

また、動き始めが加速度∞ではないので、サーボに与える衝撃も少ないんじゃないかと期待してます。
ちなみにsinで補完したのはなんとなく。
歩行等のモーションを作る段階で、これがホントにいいのかは謎・・・。

Profile

me.jpg
Name : みっちー
小学校で電子工作にハマり、高校時代はゲームプログラミング、大学時代にロボット製作へどっぷり浸かりました。
社会人になっても、なにかとものを作るのが大好きで、日々ネタと仲間を求めて活動中です。

Dream Drive!!

bana.png
http://dream-drive.net

趣味のロボットとプログラムを中心としたコンテンツのサイトです。

My Robots

kolink2.jpg
KO-LINK2
第2世代 並行リンク足ロボット

kolink.jpg
KO-LINK
並行リンク足ロボット

BusterGX.jpg
BusterGX (Ex Walker)
G-ROBOT + ROBO-XERO

kumaco.jpg
KUMACO
ぬいぐるみロボット

SARUBO.jpg
SARUBO
JX-SYSTEM搭載ぬいぐるみロボット

kokuten3.jpg
KOKUTEN 3
リアルタイム逆運動学制御ロボット

meros.jpg
MEROS
膝なしロボット
(胸部マトリックスLED搭載)
by Mechaniker

kokuten12.jpg
KOKUTEN 1&2
はじめてのロボット
by Mechaniker

協賛広告

最近のコメント

月別 アーカイブ

このアーカイブについて

このページには、過去に書かれたブログ記事のうち逆運動学と計算歩行カテゴリに属しているものが含まれています。

前のカテゴリはPWM制御です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。