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

コードの場所等 #1

Open
snozawa opened this issue Feb 15, 2016 · 10 comments
Open

コードの場所等 #1

snozawa opened this issue Feb 15, 2016 · 10 comments

Comments

@snozawa
Copy link

snozawa commented Feb 15, 2016

コードは、クローズドな内容が含まれるならそれっぽい場所においたほうが良いですが、
そうでないならオープンな場所でおくのがよさそうです。

後者だとすると、必要なコードをhrpsys-baseにおいてみるパターンはありえるかな?
現状rtmros_choreonoidでもchoreonoidとhrpsys-baseを組み合わせてるので、
choreonoidよりupstreamにhrpsys-baseがあるという理解はあってるかな?

また何だかんだのデバッグでeuslispから呼べると良いきがするので、
基礎的なライブラリの.soをリンクしてちょっとしたFFIのファイルをかけば、
https://github.com/jsk-ros-pkg/jsk_control/blob/master/eus_qpoases/src/eus_qpoases.cpp
euslispから呼べます。
これはやり方を教えることができます。

@snozawa
Copy link
Author

snozawa commented Feb 15, 2016

要素の構成としては、
1 接触の定義クラス
2 MPCのパラメータクラス
3 MPCの基底クラス
4 長さかさん方式の鉛直・水平運動MPC、パラメータクラス(それぞれサブクラス)

になるかな。
1は、Controller._に部分的にかいてある?
これは依存はhrputilなので、choreonoidに依存せず、hrpsys-base移行可能かな?
2,3はController._であってるかな?
4がMultiContactxxx関係?

@kindsenior
Copy link
Owner

後者だとすると、必要なコードをhrpsys-baseにおいてみるパターンはありえるかな?

一応,高杉の強い希望でそれを見据えて実装しているので,十分ありえます

choreonoidよりupstreamにhrpsys-baseがあるという理解はあってるかな

はい,現状はそうなっています

1は、Controller.に部分的にかいてある?

全てControllerに定義していますが,値を代入する部分はchoreonoid依存になっています

これは依存はhrputilなので、choreonoidに依存せず、hrpsys-base移行可能かな?

はい,多分そうです

2,3はController.であってるかな?

はいそうです

4がMultiContactxxx関係?

はい,これが実質的にCoreonoidのPluginとして実装されています
ちなみに全体的にまだ適当実装な部分があるのですが,特に4の目標軌道を決める辺りはかなり適当です

なので,現状,接触条件と目標軌道さえ自前で代入すれば(型はchoreonoidと別に定義してある),hrpsys-baseで使える状況にしているつもりです.
本当はchoreonoidから呼ぶ部分だけchoreonoid依存にしようかとも思ったのですが,choreonoidのmotionクラスとposeクラスとその補間を使いたかったので今のような形になってしまっています

これを踏まえて本当は
hrpsys-base -> choreonoid -> openhrp3
と依存しているとopenhrp3も使えるし,choreonoidの便利補間とかも使えるのですが,
hrpsys-base->openhrp3
choreonoid->choreonoidに組み込まれたopenhrp3互換の何か
になっているせいでビミョウな感じになっています...

@snozawa
Copy link
Author

snozawa commented Feb 15, 2016

クラス定義が補間機能はhrpsys-baseにもあるので、
基本的には先ほどの基本クラス4つがchoreonoidから抜き出してあればよさそう。
結論、hrpsys-baseに移すので良いかな?

@snozawa
Copy link
Author

snozawa commented Feb 15, 2016

個人的には、euslisp実装のものの代わりにeuslispから使いたいと思ってます。
その場合、パラメータなどを代入するところもそのままeuslispのサンプルが使えると思います。

@kindsenior
Copy link
Owner

クラス定義が補間機能はhrpsys-baseにもあるので、

なるほど
では,その補間機能次第(今回は巧みな補間は必要ないので多分移行できると思います)なのですが,どの辺にあります?

@snozawa
Copy link
Author

snozawa commented Feb 15, 2016

補間はどういう状態量を何アルゴリズムで補間するのが必要かな?
PreviewControlもModelPredictiveControlもいってみれば
元軌道がテキトーでも「補間」して重心軌道をだしてくれるようなものです。
なので、状態量によってはあまりおしゃれな補間はいらないです。
eus_qpのサンプルでも目標重心位置は矩形にテキトーにあたえてます。

@kindsenior
Copy link
Owner

あっはい,おっしゃる通りだと思っていて,MPCとかでは要らないと思います
その他の僕の研究で色々な補間だけでなく姿勢クラスとそのGUIと可視化された情報が使いたいだけなので(補間機能と可視化が切っても切れない関係ということです)
最終的にChoreonoidからMCSが呼べれば僕はまったく問題ありません

どちらかというとch?re?????内にOp??H??3互換の何かを実装するのではなく,
同じアイスと製なので,ch?re?????がOp??H??3に普通に依存してくれていていれば良かったなぁという僕の愚痴なので聞き流してください

@kindsenior
Copy link
Owner

ちなみに少しアップデートされていて,接触パラメータが構造体だったのがclass化されて
接触の種類ごとに接触パラメータのクラス(StaticContactConstraintParamとかSlideContactConstraintParamとか)が異なっていてそれぞれのクラスが制約条件(equalMatとかinequalMatとか)を計算するようになってます

@kindsenior
Copy link
Owner

0052f9c
までで,test関数を追加してcmakeの引数でテスト関数だけをビルドできるようにしてみました
-DONLYTEST=1とか渡すとできると思います

@snozawa
Copy link
Author

snozawa commented Feb 22, 2016

makeできたきがします。

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

No branches or pull requests

2 participants