We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
腱悟郎のモデルを使っていて疑問に思い、sample-robot-modelでも同じ現象が起きたので、robot-modelクラスに起きる現象だと考え、こちらに質問します
robot-modelクラスのインスタンスのjoint-listの名前が欲しかったので
(setq *robot* (instance sample-robot :init)) (send *robot* :joint-list :name)
としたところ
(:torso-waist-y :torso-waist-p :head-neck-y :head-neck-p :larm-shoulder-p :larm-shoulder-r :larm-shoulder-y :larm-elbow-p :larm-wrist-y :larm-wrist-r :larm-wrist-p :rarm-shoulder-p :rarm-shoulder-r :rarm-shoulder-y :rarm-elbow-p :rarm-wrist-y :rarm-wrist-r :rarm-wrist-p :lleg-crotch-y :lleg-crotch-r :lleg-crotch-p :lleg-knee-p :lleg-ankle-p :lleg-ankle-r :rleg-crotch-y :rleg-crotch-r :rleg-crotch-p :rleg-knee-p :rleg-ankle-p :rleg-ankle-r)
となって名前のリストが帰って来ます
次にlarmに関わるjointの名前を取ろうとして
(send *robot* :larm :joint-list :name)
(#<rotational-joint #X7386a00 :larm-shoulder-p> #<rotational-joint #X7386ac0 :larm-shoulder-r> #<rotational-joint #X77e4fb8 :larm-shoulder-y> #<rotational-joint #X77e50f0 :larm-elbow-p> #<rotational-joint #X77e51b0 :larm-wrist-y> #<rotational-joint #X77e52e8 :larm-wrist-r> #<rotational-joint #X77e5420 :larm-wrist-p>)
の様になり、インスタンスのリストが帰ってきてしまいました。:nameを送っているので名前のリストが欲しいところですが、仕様でしょうか?
一応
(mapcar #'(lambda (x) (send x :name)) (send *robot* :larm :joint-list))
とすれば
(:larm-shoulder-p :larm-shoulder-r :larm-shoulder-y :larm-elbow-p :larm-wrist-y :larm-wrist-r :larm-wrist-p)
となって目的としていたものは得られます
The text was updated successfully, but these errors were encountered:
後者の例だと:nameを送ってるように見えて、実は何も送ってないですね。
中身を見てみると定義されている引数は(limb method &rest args)L114で、methodが:joint-listの時、結果はL174
(limb method &rest args)
method
:joint-list
(send-all (send self :limb limb :links) :joint)
で、argsが無視されます。なので、(send *robot* :larm :joint-list :name) でも (send *robot* :larm :joint-list :alien) でも実は(send *robot* :larm :joint-list)と同じです。
args
(send *robot* :larm :joint-list :alien)
(send *robot* :larm :joint-list)
:nameを取得するためには言った通りにmapcarを使うなり、send-allを使うなりしなければなりません。一応おすすめは
:name
mapcar
send-all
(send-all (send *robot* :larm :joint-list) :name)
です。
Sorry, something went wrong.
No branches or pull requests
腱悟郎のモデルを使っていて疑問に思い、sample-robot-modelでも同じ現象が起きたので、robot-modelクラスに起きる現象だと考え、こちらに質問します
robot-modelクラスのインスタンスのjoint-listの名前が欲しかったので
としたところ
となって名前のリストが帰って来ます
次にlarmに関わるjointの名前を取ろうとして
としたところ
の様になり、インスタンスのリストが帰ってきてしまいました。:nameを送っているので名前のリストが欲しいところですが、仕様でしょうか?
一応
とすれば
となって目的としていたものは得られます
The text was updated successfully, but these errors were encountered: