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

Support non-legged robot and leg-only robot in startDefaultUnstableControllers and stopDefaultUnstableControllers #1130

Merged

Conversation

snozawa
Copy link
Contributor

@snozawa snozawa commented May 2, 2017

start/stop DefaultUnstableController関数で、上半身型、脚のみ型ロボットをサポートしました。
(そういえばsamplerobotの上半身のみバージョンはopenhrp3にないですね。脚のみは追加されてます)

よろしくお願いします。

@k-okada
Copy link
Contributor

k-okada commented May 2, 2017

Refer to this link for build results (access rights to CI server needed):
https://jenkins.jsk.imi.i.u-tokyo.ac.jp:8080/job/hrpsys-qnx/2849/
Test PASSed.

@k-okada
Copy link
Contributor

k-okada commented May 2, 2017

よく分かっていないけどルールはなんだろう?
*legという名前のlimbは足=AutoBalancerで制御すべき?
4脚ロボットと2脚だけど四つん這いは違うもの?

@snozawa
Copy link
Contributor Author

snozawa commented May 2, 2017

よく分かっていないけどルールはなんだろう?
*legという名前のlimbは足=AutoBalancerで制御すべき?
4脚ロボットと2脚だけど四つん這いは違うもの?

ご指摘ありがとうございます.
実はこの辺は結構曖昧で,eusでいえばrbrainをirteusに移行する時代から
とくに決定打っぽいのはない気がしてます.

samplerobotの中にも4脚ロボット
https://github.com/fkanehiro/openhrp3/blob/master/sample/model/sample_4leg_robot.wrl
がありますが,
 4脚ロボット

 2脚2腕のロボットが4脚モードになる
は区別が難しいですね.
逆に,4脚ロボットが後ろ足の2本足だちになったときに,
前脚は腕になるかならないのかも難しい問題な気がしてます
(余談ですが,Humanoids2016で4脚ロボットを後ろ足立ちさせて制御させて,
ほらHumanoidでしょ,とジョークをいれたプレゼンをした人がいました)

プログラム的には,どちらも場合でも
 4脚ロボットの前脚,2脚2腕ロボットの腕:rarm, larm
 4脚ロボットの後脚,2脚2腕ロボットの脚:rleg, lleg
にしています(confの設定も,引数で与えるものも)
https://github.com/fkanehiro/hrpsys-base/blob/master/sample/Sample4LegRobot/Sample4LegRobot.conf.in#L5
https://github.com/fkanehiro/hrpsys-base/blob/master/sample/SampleRobot/SampleRobot.conf.in#L5
(Euslispでも,irteusにコンバートした4脚ロボットは,名前はfrlegのようについてますがslot変数はrarmになてると思います)

あくまでデフォルトな使い方なので,ケースベースにいくと

  • 2脚のみのロボットは,st/abcを使い,腕にimpedanceは使ってない
  • 上半身型ロボットは,st/abcは使ってなくて,腕にimpedanceを使う
  • 2脚2腕ロボットは,st/abcを使い,かつ腕にimpedanceもいれてる

の3つは実際にこれらロボットがhrpsys-baseで運用されており,
このPRのメソッド変更ではこれら3つがサポート可能です.
(st/impedanceは力制御っぽい機能をもつ点でカブっていたりもしますが)

一方,

  • 4脚ロボットなので(2脚ロボット同様に),st/abcを手足にいれて,手(前脚)にimpedanceはいれたくない

はこのPRでは対応できず,サブクラスで

     def startDefaultUnstableControllers (self, ic_limbs=[], abc_limbs=["rleg", "lleg", "rarm", "larm"]):
        super(HrpsysConfigurator, self).startDefaultUnstableController(ic_limbs, abc_limbs)

のようにユーザがデフォルトにしたい設定を定義するかんじのことを想定しています.

この辺,4脚ロボット vs 2脚2腕ロボットがよつんばいになったとき,
2脚2腕ロボット vs 4脚ロボットが後脚のみでたっているとき,
の違いに関するルール決めは,生物学的にも
https://ja.wikipedia.org/wiki/%E8%84%9A
https://ja.wikipedia.org/wiki/%E8%85%95
難しそうな予感がしてます
例えば

生物学的には「人間の腕は哺乳類の前肢にあたる」とも、反対に「哺乳類の前肢はヒトの腕にあたる」とも表現可能である。

はrarm=前脚,のようなかんじにもみえますし,

一般に生物学に限らず体部下位に付属し支えるものを指して脚と呼び

も,人間逆立ちのような「デフォルト」っぽくないときにはどうなってるのかわからなさそうで,
ハンドのようなエフェクタの有無も生物・ロボットともに手足どっちもいけそうなきがしています

@k-okada
Copy link
Contributor

k-okada commented May 8, 2017 via email

@snozawa snozawa force-pushed the update_startdefaultcontroller_py branch 2 times, most recently from 7889fc4 to a5c8b86 Compare May 8, 2017 11:57
@snozawa
Copy link
Contributor Author

snozawa commented May 8, 2017

ありがとうございます。
Groupsに関しては、Noneとかいてたのは私の勘違いでした。
Groupsのデフォが[]なので、そのように修正しました。

また、filter文などはreを使うようにし、if文入れ子になってたので

  • impedanceは、arm関係のlimbがもしあればarm関係のlimbにいれる
  • stは、leg関係があればいれる
  • abcは、leg/armのうちあるlimbにいれる

と書き直して、全体的にコメント、documentation部分に先日挙げたuse caseに関してかきました。

@snozawa
Copy link
Contributor Author

snozawa commented May 8, 2017

memo
確認した組み合わせ(humanoid, 上半身、2脚)

rtmlaunch hrpsys_ros_bridge_tutorials hrp2jsk_startup.launch
rtmlaunch hrpsys_ros_bridge_tutorials hrp2w_startup.launch
rtmlaunch hrpsys_ros_bridge_tutorials chidori_startup.launch
python -i hrp2jsk_hrpsys_config.py "HRP2JSK(Robot)0"
help(hcf.startDefaultUnstableControllers);help(hcf.stopDefaultUnstableControllers);hcf.startDefaultUnstableControllers();hcf.stopDefaultUnstableControllers();

python -i hrp2w_hrpsys_config.py "HRP2W(Robot)0"
help(hcf.startDefaultUnstableControllers);help(hcf.stopDefaultUnstableControllers);hcf.startDefaultUnstableControllers();hcf.stopDefaultUnstableControllers();

python -i chidori_hrpsys_config.py "CHIDORI(Robot)0" ""
help(hcf.startDefaultUnstableControllers);help(hcf.stopDefaultUnstableControllers);hcf.startDefaultUnstableControllers();hcf.stopDefaultUnstableControllers();

hrpsyspy

@k-okada
Copy link
Contributor

k-okada commented May 8, 2017

Refer to this link for build results (access rights to CI server needed):
https://jenkins.jsk.imi.i.u-tokyo.ac.jp:8080/job/hrpsys-qnx/2852/
Test PASSed.

@k-okada
Copy link
Contributor

k-okada commented May 8, 2017

Refer to this link for build results (access rights to CI server needed):
https://jenkins.jsk.imi.i.u-tokyo.ac.jp:8080/job/hrpsys-qnx/2853/
Test PASSed.

@k-okada
Copy link
Contributor

k-okada commented May 8, 2017 via email

@snozawa
Copy link
Contributor Author

snozawa commented May 9, 2017

趣味の範囲だろうけど、デフォルトの値をセットするところとエラーチェックのコードが混在しているね. エラーチェックならstartAutoBalancerとか、あるいはstartDefaultUnstableControllersの先頭で引数チェックのコーナをつけて、エラーだったらちゃんとワーニングとかをだすほうが、整理されていますでしょうか.

確かにおっしゃるとおりです
特に引数チェックと挙動の関係は、startDefaultUnstableControllersよりも中身側でしっかり行ったほうが良いですね。
ros service, euslispから使うことも考えると、idlよりも中身側の、RTCの内部で処理できるものは
したら良いきがしますので、一旦その方向も考えてみます。

@k-okada
Copy link
Contributor

k-okada commented May 9, 2017 via email

… in startDefaultUnstableControllers and stopDefaultUnstableControllers
@snozawa snozawa force-pushed the update_startdefaultcontroller_py branch from a5c8b86 to 404589a Compare May 9, 2017 00:47
@snozawa
Copy link
Contributor Author

snozawa commented May 9, 2017

そうですね、そのように変更しました。

@k-okada
Copy link
Contributor

k-okada commented May 9, 2017

Refer to this link for build results (access rights to CI server needed):
https://jenkins.jsk.imi.i.u-tokyo.ac.jp:8080/job/hrpsys-qnx/2854/
Test PASSed.

@snozawa
Copy link
Contributor Author

snozawa commented May 9, 2017

travis通りました
@fkanehiroさん
ご確認いただけますと助かります。

@fkanehiro fkanehiro merged commit e114fd5 into fkanehiro:master May 9, 2017
@snozawa snozawa deleted the update_startdefaultcontroller_py branch May 9, 2017 04:35
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.

3 participants