Feature-Based Locomotion Controllersを読む(2)

つづきを。電車の中で読めたぶんだけ。

3. Feature-Based Control

まず、目標の定義方法。この論文で紹介されているモーションはcenter-of-mass, angular momentum, end-effectorの3つの組み合わせで指定する。
コントローラは式1で定義されるベクトルxを求める。(ベクトルの要素はtau*q*lamdaで求めるってこと?lamdaは重み係数なので結局各関節はtau*qに比例すると。なのでこの2つの変数を求めればOKってことか)このベクトルxは式2を満たしている必要がある。

3.1 Feature and Objectives

式1でのベクトルxを求めるために、N quadratic の目的関数を最適化する。(N quadratic? 2次式ではない?)この手法では4種類の目的を使っている

Setpoint Objective

ポーズした時の特徴をSetpoing Objectiveとして与え、目標関数を(5)で定義した上でこれを最小化させる関節の加速度を求める。
式3のqは関節角度で、y=f(q)で変換したyの値によるPD制御の式を用いて、2回微分方程式の最小化問題へと帰着させてとく。(これは一般的なヤコビアンの逆運動学

雑感

ここまで読んで今日は終わり。ヤコビアンによる逆運動学で制御する方法は、調べているところ自然な動きを実現している手法ではメジャーな方法のようだ。http://www.4gamer.net/games/000/G000000/20110912065/ の記事がざっくりとした説明で、何をしようとしているのかは把握できると思う。

anlifeへの適用を考えると、こういうような制御は可能な限り入れ込みたくない。理想的にはanlifeの世界にプログラマは種をあたえ進化の方向性を定める流れの背景を設計し、あとはアトラクターに陥る状況を作る。これ以外の作りこみは美しくない、というものを目指しているところで、どこまで制御部分を作りこまないと実現困難なのか見極めないといけないなぁ。

つづく。

Feature-Based Locomotion Controllersを読む(1)

引き続き関連研究を調べる。
以下、結構な割合で誤読があると思いますのでお気をつけください。

調べる論文

Feature-Based Locomotion Controllers, 2010, Proc. SIGGRAPH.
http://www.dgp.toronto.edu/~mdelasa/data/siggraph2010_feature.pdf

この論文では、「物理シミュレーションにて自然なキャラクターアニメーションを生成する」という目標のもと、抽象化された指示を与えればそれに沿ったアニメーションを生成する手法を提案している。キャラクタの性質が変化してもチューニングの必要がないことや、モーションキャプチャーを必要としないことが特徴。

章ごとに論文の内容を書いておく

1. Introduction
2011年の現在におけるFeature-Based Locomotion Controllersの主流はjoint-space approache.このjoint-spaceというのは個々の関節ごとにパラメトリックなモデルを用いる手法のようだが要確認。これと対比してjoint-based controllerというのがあるが、これは関節ごとに制御すると非常に複雑な問題となりかなり困難と。
また、この論文での手法は、簡単な目標(例えば重心や動作終了の状態)を設定することでキャラクターの動作を生成できる。

2. Related Work
主流であるjoint-spaceでの制御はpre-joint PD servos. これは様々なモーションの生成に用いられている実績があるが、自然なモーションに仕上げることやキャラクターの特性が変化するたびに、ハンドチューニングが必要となる。そこでモーションキャプチャーのデータにフィッティングするようパラメータチューニングするという方法でリアルさを向上させた手法もあるが、これもまたモーションキャプチャーで取得できていない動作には適用が困難という問題がある。
joint-space methodの他には、定式化されたコントローラtask-space methodがある。これはロボットのマニピュレータの制御に適用されているが、特殊な問題以外には適用が難しく、2004年の以降、顕著な成果がない。
他にnull-space projection operatorsがある。これはすべてのタススを一つの2次計画問題(QP)として扱い、バランス維持などによい性能を示す。ただし、QP-baesd手法はモーションキャプチャのデータに制限される。本論文での手法は、これをモーションキャプチャーのないモーションに適用する。
本手法はVirtual Model Controlと似ているアプローチをとっている。以降、本手法をFeature-Based Controlと呼ぶ。


つづく。

SIGGRAPHのLocomotion Controller関係を調べる

モチベーションは「anlfieの運動学習を洗練させたい」だ。そのために強化学習や最適化手法等を勉強してきたけど、解決できる方法が頭から出てこない。こういったときは問題設定の分野での手法を調べるのが一つの方法。ということで調査することにした。

調査

学部時代の助教から「人間の精緻なモデリングをしたうえで、最大走行速度を求めた研究があった」と聞いていたので、human runnning optimization motion等で調べてみる。
みつけた論文のrelated researchを調べてみるとhttp://www.cs.ubc.ca/~van/papers/Simbicon.htmが特筆すべき研究だったとあったのでこれを中心に調べていく。

そのHPのディレクトリを遡るとこの人の研究一覧MvdP Projects & Publicationsを見つけた。

今回の目的とは違うけどどういうアルゴリズムなのか興味があったから一つ面白そうな論文を選んで読んでみる。

Locomotion Skills for Simulated Quadrupedsのアルゴリズムを知る

http://www.cs.ubc.ca/~van/papers/2011-TOG-quadruped/paper.pdf
まずは、このconference proceedings.

各シミュレーションステップでは

  • Jacobian transpose control
  • proportional-derivative(PD) controllers

の2つの情報からトルクを計算している。

ここでPID制御の復習。PI制御は聞くけど、PD制御はあまり耳にしない(自分だけ?)
PD制御だと誤差項の変化をみるわけだから、外乱等にロバストな制御を目指しているのだろうか。

コントローラーの詳細

  • Gait graphs
    • 歩行というのはサイクリックな離散状態を遷移していくもとのして扱い、それを巡回有向グラフとして表現している。
  • Virtual Forces
    • トルク計算に利用する情報の2つのうちの1つ。 Jacobian transposeで計算される。
  • Joint Control
    • トルク計算に利用する情報の2つのうちの1つ。PD controllerで生成される。
  • などなど
不明点
  • Virtual forcesは何?でヤコビ行列で求めるってことは目的位置があって逆運動学として各関節トルクを求めている?
  • JointControlは目的位置があるからPD制御で求める、と。
  • じゃこの2つのトルクを求めるときに目標座標はどうやって与えられるのか > モーションキャプチャーの座標?

Generalized Biped Walking Controlを読む

ソースコードが付いているのと、2つの論文を並行して読むことで一つの問題にフォーカスしてしまう癖を防ぐ。
http://www.cs.ubc.ca/~van/papers/2010-TOG-gbwc/paper.pdf

概要
  • Bodyのサイズ等を変化させてもパラメタチューニングの必要がない(身体のグラフ構造はfix)

Source Codeを読んでみる

論文読んでも、いざ自分で実装しようと思っても手が動かない。ソースを読んでみる。


と、ここで力尽きた。

『秒速5センチメートル』の感想(ネタバレあり)

以下、ネタバレになります。


「すべてが綺麗だった」という感想が最もしっくりくるように思います。
異性への一途な想い、息を呑むような風景、そして過去ではなく未来を選んだ主人公。印象に残っている要素のすべてが「綺麗」でした。(それ以外の要素はあまり心に留まらなかったのかな)

以下、それぞれの感想を。

1.異性への一途な想い
主人公である貴樹の想いは終始痛々しいほど伝わってきたし、2話に登場する花苗の片想いも、自分の経験を重ねて観てしまうほどでした。彼女の心の動きが手にとるように分かるようで、花苗が貴樹に想いを打ち明けようと決意し、2人で帰路についたシーンが印象的です。いざ告白しようとするとやはり現実が見えてきて、告白なんてできないと彼女は悟ったわけですが、そのときの彼女の心境を想像するといたたまれない・・・。振り向いてもらうためにどれだけ努力を重ねても、それは報われるとは限らない。こんな冷酷な現実を受け入れるしかないと悟った瞬間なわけですからね。

2.息を呑むような風景
これは実写以上に綺麗な世界が描かれていて、まるでファンタジーな世界にいるのではないかという感覚を喚起してくれました。
学生の時に倫理で教わったイデアという言葉がありましたが、まさにそんな感じ。理想郷のなかに溶け込めたような錯覚がこれまた非常に幻想的でした。

3.終幕において過去ではなく未来を選んだ貴樹
彼の一途な想いというのは、美しく尊いものです。しかしながら彼は記憶の中の明里をみていて、過去に囚われているように感じてしまいました。最後の踏切のシーンで過去と決別するに至りましたが、これはカタルシスそのものでした。過去の想いに囚われて新しい扉を開くことができず、次第に本来の目標を見失っていく。そんな呪縛を彼自身の力で解き放ったわけです。希望にあふれた終わり方だったと個人的には解釈しようと思いました。


まぁ、そんなこんなで感想を書きましたが、自分の過去や倫理観、そこから生じている呪縛というものをこの物語の主人公と一緒に解き放つことができた気がしたし、山崎まさよしの主題歌が流れるクライマックスのシーンも、各々の人物の想いが交錯し、津波のように一気に押し寄せてくる壮絶なもので圧倒されましたし、ロケットなど無機質な物質に比喩する表現も気に入りました。

とてもよかったです。

Installing Sleepy.Mongoose

Sleepy.Mongooseのインストールで躓いたのでメモ。(そして英語で試しに書いてみた。文法とかやばげ

The Sleepy.Mongoose is available at http://github.com/kchodorow/sleepy.mongoose and you can install easily. But there are ploblems to launch it.

The server failed to start

Runnning the server, I've got errer messages below:

$ python httpd.py 
Traceback (most recent call last):
  File "httpd.py", line 17, in <module>
    from handlers import MongoHandler
  File "/mnt/hgfs/share/sleepy.mongoose/sleepymongoose/handlers.py", line 16, in <module>
    from pymongo.son import SON
ImportError: No module named son

It seems because pymongo's package structure has changed in newer versions.(http://www.snailinaturtleneck.com/blog/2010/02/22/sleepy-mongoose-a-mongodb-rest-interface/)
To avoid this err, you need to change sleepymongoose/handlers.py line 16
from:

from pymongo.son import SON 

to:

from bson.son import SON