Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added executable_map_marker #95

Merged
merged 1 commit into from
Dec 16, 2014

Conversation

YuOhara
Copy link
Contributor

@YuOhara YuOhara commented Dec 16, 2014

手の目標座標から、IKが解ける足元の位置を探索するプログラムを決めました。
足元の位置に対して手の位置を表示するreachabirity-mapとは、違ったやりかたで足元の位置を決めるためのものです。

ROBOTのメニューからモードを変えられます。足元にマーカーが表示された状態でIKを解くと、
モデルの位置からではなく、マーカーが表示されたその位置でIKを解きます。

足元の紫の位置が、IKが解ける位置です。

executable_map

@garaemon
Copy link
Member

足元の位置に対して手の位置を表示するreachabirity-mapとは、違ったやりかたで足元の位置を決めるためのものです。

reachability map使ったほうがいいんではない?

@garaemon
Copy link
Member

@snozawa
Copy link
Contributor

snozawa commented Dec 16, 2014

このプログラムすでにあるんでないっけ?

@YuOhara
Copy link
Contributor Author

YuOhara commented Dec 16, 2014

一連のタスク全部のcoordsを与えた上で、足元の位置を決められたらいいと思ってるので、
その目的ではこちらのやり方の方がいいと思いました。

reachabirity_mapを使ってると、バルブを掴むところのIK解けるけど、離すところまで
やるとIKが解けないみたいな例があったので。
まずは全体のタスクを与えた上で、確実に解ける位置を探したいです。

@garaemon
Copy link
Member

まぁいろいろ試行錯誤してる段階だと思うのでこれでいいと思うのですが
(というか僕も似たようなプログラム書いたことがある記憶がある)

  • ためしやすいように立ち位置探索はros関係ないプログラムとして書いてそれをloadすべき.
    jsk_controlもしくはirteusかな? jsk_control -> irteusとランクアップさせるのでも良いと思う
  • :inverse-kinematicsの代わりにreachability mapを引く
    (今はIKとけばいいと思っていてもだんだん遅いのが問題になって似たようなものを作るきがする)

@mmurooka
Copy link
Member

reachability map使ったほうがいいんではない?
このプログラムすでにあるんでないっけ?

これまでは必要に応じてReachabilityMapとVisibilityMapを表示していて,
これらはロボットの立ち位置を決めるために人間が見て参考にするために使っていましたが,

完全に自律にするためには
実はReachabilityMapもVisibilityMapも(プログラムの内部的には必要かもしれませんが)表示はしないで良くて
最終結果の立ち位置だけが返り値として得られればよい
という話を @YuOhara くんとしていて,それを受けてのPRだと思います.

とりあえずマージして使い心地を確認しつつ,実装の仕方は議論の余地ありですね.

@garaemon
Copy link
Member

"reachability map"とよんでいるものは可視化だけを指していたのか。

@garaemon
Copy link
Member

僕はとりあえずmergeしちゃっていいと思います。
@snozawa さんどうですか?

@mmurooka
Copy link
Member

はい,reachability mapは可視化以外では使えていませんでした.

色んな立ち位置mapが考えられそうですが,例えば以下のようなものが挙げれあれて,このPRは後者に相当するようです.
・ reachability map の逆写像のようなものは物体相対のロボットの立ち位置になるはずなのでそれを返す
・ IKが速いなら把持位置が決まった瞬間に色んな立ち位置からIKを解いて解ける立ち位置を返す

@garaemon
Copy link
Member

色んな立ち位置mapが考えられそうですが,例えば以下のようなものが挙げれあれて,このPRは後者に相当するようです.
・ reachability map の逆写像のようなものは物体相対のロボットの立ち位置になるはずなのでそれを返す
・ IKが速いなら把持位置が決まった瞬間に色んな立ち位置からIKを解いて解ける立ち位置を返す

知っているとは思うけど、一応さらっておくと前者はinverse kinematics reachabilityといいますね(OpenRAVE用語?)

@garaemon
Copy link
Member

とりあえず一旦マージしますが、問題点をjsk-ros-pkg/jsk_control#179 に書いておきます。
すでにeusのプログラムが何処かにあるきもする

garaemon added a commit that referenced this pull request Dec 16, 2014
@garaemon garaemon merged commit 57c137f into jsk-ros-pkg:master Dec 16, 2014
@mmurooka
Copy link
Member

知っているとは思うけど、一応さらっておくと前者はinverse kinematics reachabilityといいますね(OpenRAVE用語?)

知らなかったです,ありがとうございます.

@garaemon
Copy link
Member

ちなみに、OpenRAVEはIKも十分速い(数マイクロsec, 解析解)だけどもinverse kinematics reachabilityを用意していますね

@YuOhara
Copy link
Contributor Author

YuOhara commented Dec 16, 2014

なるほど、チュートリアルを見る感じ、一旦データベースを作っているみたいな感じですかね。
http://openrave.org/docs/latest_stable/openravepy/examples.tutorial_inversereachability/
ありがとうございます。

@garaemon
Copy link
Member

なるほど、チュートリアルを見る感じ、一旦データベースを作っているみたいな感じですかね。

そうです

@snozawa
Copy link
Contributor

snozawa commented Dec 17, 2014

ただ、全身の関節をつかい、IKをといてreachabilityを求めるのはまだなくて、
次元が大きくなるのでいろいろ大変そうです。

@garaemon
Copy link
Member

以前に見積もりをしたことがあります

ロボットが全身32自由度だとして、エンドエフェクタの位置姿勢をあわせてdoubleだと312byte, SSD500GBだとすると1720740102個のデータが保存できる。

これを32baseのlogで取ると6.1,
つまり各関節を6回しか量子化できない

@garaemon
Copy link
Member

この見積もりは姿勢->endeffectorの辞書なので
endeffector->姿勢の辞書だともっと効率が良いのかも。本当か??

(/ (* 500 1024 1024 1024) (* (+ 32 6) 8))
=> 1766022736

@snozawa
Copy link
Contributor

snozawa commented Dec 17, 2014

なるほど。。。
ただ、実際は、例えば2本あし立位状態で片腕IKをとく場合は、
足の可動域はそんなにフルんつかってないかなぁという気もするので、
足は6回の量子化でも十分そう、というヒューリスティックはあるかも

@garaemon
Copy link
Member

やはり立ち位置は面白い問題ですね

足は腰の位置で代表させれば良いですね。
一意に決まるとしてしまっても良い気がする。

というかIKが解ける、というなら
inversekinematics reachabilityは割りきって
手先位置 -> [ルートリンクの位置]
という辞書にしてみても良さそう

という面白い問題なので早くこのdemoプログラムから外に出して、皆で色々いじれるようにしましょう。

@ompugao
Copy link

ompugao commented Dec 18, 2014

openraveと聞いてinversereachability.pyの海へ潜ってみました.
kinematicreachabilityを生成中でまだ試せてないですが、コードを読む限りだと

InverseReachabilityModel#sampleBaseDistributionIterator

がお望みのコードのように思います
//ほんとよくできてるわ

@garaemon
Copy link
Member

OpenRAVEの各種データベースはとても良くできているので、使う使わないは置いておいて、みんなどういうものがあるかは知っておくべきです。
たしかロボット学会誌の論文があるはずです

2014年12月18日木曜日、Shohei [email protected]さんは書きました:

openraveと聞いてinversereachability.pyの海へ潜ってみました.
kinematicreachabilityを生成中でまだ試せてないですが、コードを読む限りだと

InverseReachabilityModel#sampleBaseDistributionIterator

がお望みのコードのように思います
//ほんとよくできてるわ


Reply to this email directly or view it on GitHub
#95 (comment).

from iPhone

@ompugao
Copy link

ompugao commented Dec 19, 2014

https://gist.github.com/ompugao/1ee15ab2bfc4fe172a57
なぜかpr2の位置がいい感じのところに出てこない

@garaemon
Copy link
Member

openraveのコマンドラインのサンプルで--showつけてdatabaseを可視化したらできない?
(これで通じるかな?)

◉ ryohei

On Fri, Dec 19, 2014 at 2:16 PM, Shohei Fujii [email protected]
wrote:

https://gist.github.com/ompugao/1ee15ab2bfc4fe172a57
なぜかpr2の位置がいい感じのところに出てこない


Reply to this email directly or view it on GitHub
#95 (comment).

@ompugao
Copy link

ompugao commented Dec 19, 2014

--showで見れる結果は一つのターゲット(Tgrasp)に関するinversereachabilityの可視化結果で、
このissueに関してだとこれでいいのですが、
今YuOharaくんとかが欲しいのは
複数ターゲットに関してikが解けるっぽいbaseの位置
だと認識しているのですが合ってますかね
( jsk-ros-pkg/jsk_pr2eus#76 こっちに書くべきか)

それをするためには各々のターゲットのinversereachability mapの重なりを求めて
各々のターゲットに対してikの解けそうなrobotの位置を高速に計算する必要があると思っていて
それがおそらくすでに用意されていて

InverseReachabilityModel#sampleBaseDistributionIterator

だと思ってそれを使ってみたんですが、うまくいかないという報告でした。

@ompugao
Copy link

ompugao commented Dec 19, 2014

せっかくなので
http://www.jsk.t.u-tokyo.ac.jp/~s-fujii/misc/pr2leftarminversereachabilitymap.zip
http://www.jsk.t.u-tokyo.ac.jp/~s-fujii/misc/pr2leftarmreachability.zip
にpr2/leftarmのinversereachabilitymodelをおいておきます
$HOMEでunzipしてください

@garaemon
Copy link
Member

可視化できているということは、データベース自体はうまくできていそう、ということですね。
それがまず確認したかったです。

2014年12月19日金曜日、Shohei [email protected]さんは書きました:

せっかくなので

http://www.jsk.t.u-tokyo.ac.jp/~s-fujii/misc/pr2leftarminversereachabilitymap.zip
http://www.jsk.t.u-tokyo.ac.jp/~s-fujii/misc/pr2leftarmreachability.zip
にpr2/leftarmのinversereachabilitymodelをおいておきます
$HOMEでunzipしてください


Reply to this email directly or view it on GitHub
#95 (comment).

from iPhone

@ompugao
Copy link

ompugao commented Dec 19, 2014

言葉が足りませんでした 失礼しました

@YuOhara
Copy link
Contributor Author

YuOhara commented Dec 19, 2014

複数ターゲットに関してikが解けるっぽいbaseの位置だと認識しているのですが合ってますかね
はいそうです。ありがとうございます。
pr2/leftarmのinversereachabilitymodelをおいておきます
使ってみます、ありがとうございます

@garaemon
Copy link
Member

これなかなか面白いトピックですね。
単純なmapじゃなくて、共分散行列じゃないけど雲のように確立分布か何かがついてたらその周囲の目標全体に対して解が存在する立ち位置、みたいなのができそうですね。

@ompugao
Copy link

ompugao commented Dec 20, 2014

まさしくそれがinversereachabilitymodelの中に書いてあると思います
self.equivalenceclassesがgaraemonさんのいう"雲"の配列で姿勢の平均やら分散やらが入っていて、 ( https://github.com/rdiankov/openrave/blob/master/python/databases/inversereachability.py#L249 )
雲の重ね合わせの濃そうなところからsampleを選んでくるように ( https://github.com/rdiankov/openrave/blob/master/python/databases/inversereachability.py#L491 )
sampleBaseDistributionIteratorはなってると思うんですが
使い方が悪いらしくどうもヘンテコな挙動になるんですよねぇ…

@garaemon
Copy link
Member

さすが、よく出来ていますね。是非使いたいですね

ところで大元のPRに戻りますが、これはこれであったら良いと思うので是非Reopenしてください > @YuOhara

✉︎ Ryohei

On Sat, Dec 20, 2014 at 11:09 PM, Shohei Fujii [email protected]
wrote:

まさしくそれがinversereachabilitymodelの中に書いてあると思います
self.equivalenceclassesがgaraemonさんのいう"雲"の配列で姿勢の平均やら分散やらが入っていて、 ( https://github.com/rdiankov/openrave/blob/master/python/databases/inversereachability.py#L249 )
雲の重ね合わせの濃そうなところからsampleを選んでくるように ( https://github.com/rdiankov/openrave/blob/master/python/databases/inversereachability.py#L491 )
sampleBaseDistributionIteratorはなってると思うんですが

使い方が悪いらしくどうもヘンテコな挙動になるんですよねぇ…

Reply to this email directly or view it on GitHub:
#95 (comment)

garaemon added a commit that referenced this pull request Feb 10, 2015
@YuOhara YuOhara deleted the add_executabitity_map branch February 19, 2015 05:03
YuOhara pushed a commit to YuOhara/jsk_demos that referenced this pull request May 16, 2015
YUKINA-3252 pushed a commit to YUKINA-3252/jsk_demos that referenced this pull request Nov 17, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants