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

add drcbox models #27

Closed
wants to merge 1 commit into from
Closed

Conversation

eisoku9618
Copy link
Member

No description provided.

@k-okada
Copy link
Member

k-okada commented Jun 11, 2014

please see #20 for the process to add new euslisp model

@k-okada k-okada closed this Jun 11, 2014
@eisoku9618
Copy link
Member Author

@mmurooka さんと @snozawa さんが r62527 r62528 r62541 r62542 で euslib/rbrain/jskmapxxx.l にdrcboxのモデル関連を入れてくれていたので,あとはrbrainのモデルをirteusのモデルに変換するだけだと思っていましたが,違いますでしょうか?

やったことは以下のようになります.

roscd  euslib/rbrain
eus
$ (load "jskmapclass.l")
$ (load "jskmapmodel.l")
$ (load "convert-to-irtmodel.l")
$ (convert-to-irtscene (drcbox))

で変換されたもろもろの.lのうち,drcbox-scene.lの中で https://github.com/euslisp/EusLisp/pull/27/files#diff-280918c0c6c983c53f4f8f85fa52f028R5 のように他のファイルをloadしている部分のPATHを./drcbox-scene.lからmodels/drcbox-scene.lに手動で書き換えたものが今回のPRになります.

#20@k-okada 先生のコメントに出てくるwilikiのリンク先に書かれている変換方法と若干異なる(以下)のが心配ですが…

  1. (load "jskmapclass.l") とかが必要だった
  2. convert-to-irtmodel ではなくconvert-to-irtscene を使った
  3. パスを手動で変換する必要があった

ご確認よろしくお願いします.

@snozawa
Copy link
Contributor

snozawa commented Jun 11, 2014

@eisoku9618, 手順はおしいですがちょっと違います。

基本的には、convert-model-test.lget-jsk-supported-scene-formsに追加して、

make copy-converted-irtmodels-to-euslisp-models-repository

してください。
とくに既存のモデルをeus/modelsに追加するPRをだすには、Euslispをユーザが意図して起動する必要ない手順になってます。
わかりにくかったかもしれないので、wilikiの記述もなおしておきました。

ただ、今rbrainでモデル生成がかなりできなくなってしまってるので、
ちょっとまってください。
#21

snozawa pushed a commit to snozawa/EusLisp that referenced this pull request Jun 11, 2014
@snozawa
Copy link
Contributor

snozawa commented Jun 11, 2014

#21
はちょっと奥が深そうなので、こちらでdrcboxを追加しました。
#28
git pullして確認をお願いします。

#21
の修正をまたずとも、以前と同様にremove-duplicatesを戻せば、現状でもモデル変換が動くと思います。

Index: Makefile.generic
===================================================================
--- Makefile.generic    (リビジョン 62695)
+++ Makefile.generic    (作業コピー)
@@ -463,7 +463,9 @@
        -echo "(progn (make-all-objects)(exit))" | irteusgl models/irt-all-objects.l

 copy-converted-irtmodels-to-euslisp-models-repository:
-       -echo "(progn (copy-converted-irtmodels-to-euslisp-models-repository) (exit))" | $(BINDIR)/jskrbeusgl convert-model-test.l
+       -echo "(progn (defun remove-duplicates (seq &key (test #'eq) (test-not) (key #'identity)\
+                                  (start 0) (end 1000000))\
+   (system::raw-remove-duplicates seq test test-not key start end)) (copy-converted-irtmodels-to-euslisp-models-repository) (exit))" | $(BINDIR)/jskrbeusgl convert-model-test.l

また、変換されたmodelsのsceneがテストされてなかったので、テストするようにしました。
euslisp/jskeus#97

@eisoku9618
Copy link
Member Author

以下のコードで動作確認しました.
ありがとうございます.

(let* ((drcbox (drcbox))
       (bar (send drcbox :object "drcbox-valve-bar"))
       (lvalve (send drcbox :object "drcbox-valve-large"))
       (svalve (send drcbox :object "drcbox-valve-small"))
       (deg 0))
  (objects (list drcbox))
  (do-until-key
   (dolist (i (list bar lvalve svalve))
     (send (send i :crank-joint) :joint-angle deg)
     (send *irtviewer* :draw-objects)
     (unix:usleep 100000))
   (setq deg (+ deg 5))))

@k-okada
Copy link
Member

k-okada commented Jun 11, 2014

On Wed, Jun 11, 2014 at 10:44 PM, Shunichi Nozawa notifications@github.com
wrote:

また、変換されたmodelsのsceneがテストされてなかったので、テストするようにしました。
euslisp/jskeus#97 euslisp/jskeus#97

はtravisを通っているけど,#21 のテストになっている?

@snozawa
Copy link
Contributor

snozawa commented Jun 12, 2014

はtravisを通っているけど,#21のテストになっている?

eus/modelsの生成されたall robots, objectsがつくれるかテストしているところに、
sceneも同様にテストするようにしました。

#21
はまだ追いきれてなくて、未解決です。
#21
が原因で失敗するテストケースは、rbrain以下のモデル作成部分の
body+などが該当しそうです。

@k-okada
Copy link
Member

k-okada commented Jun 12, 2014

よくわかっていないけど,適当な形状をつくってbody+したらエラーになる,というのは作れたりしないのかな?

2014-06-12 11:14 GMT+09:00 Shunichi Nozawa notifications@github.com:

はtravisを通っているけど,#21のテストになっている?

eus/modelsの生成されたall robots, objectsがつくれるかテストしているところに、
sceneも同様にテストするようにしました。

#21 #21
はまだ追いきれてなくて、未解決です。
#21 #21
が原因で失敗するテストケースは、rbrain以下のモデル作成部分の
body+などが該当しそうです。


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

@snozawa
Copy link
Contributor

snozawa commented Jun 12, 2014

はい、昨日それをつくろうとして、まだ追いきれてなくて以下が(比較的短めの)再現コードになります。

(defun test
  (&optional (radius 12.5) (length 20) &key (base-radius 17.5) (base-length 80) (pole-distance 10))
  (let (base pole1 pole2)
    (setq base (make-cylinder base-radius base-length))
    (send base :rotate (deg2rad -10) :z :world) ;; for bug of body+
    (send base :rotate pi/2 :y :world)
    (send base :locate (float-vector (- (/ base-length 2.0)) 0.1 0) :world)
    (setq pole1 (make-cylinder radius (+ length base-radius)) pole2 (copy-object pole1))
    (send pole1 :locate (float-vector    (+ (/ pole-distance 2.0) radius)  0 0) :world)
    (send pole2 :locate (float-vector (- (+ (/ pole-distance 2.0) radius)) 0 0) :world)
    (objects (list base pole1 pole2))
    ;;                                                                                                                                        
    (body+ base pole1 pole2)
    ))

@snozawa
Copy link
Contributor

snozawa commented Jun 12, 2014

取り急ぎ、現状報告です。
( #21 以前に動いてない部分もあり、さらに内部依存な部分もからんでいたので遅れました)

まとめますと、Euslisp, jskeus最新の状態での挙動は、
(以下、https://gist.github.com/snozawa/fbdceefcb618466acd6b#file-test-geometory-functions-l
の関数で説明します。
また、これらはEuslispのtravisで走らせたほうがよさそうです。)

Eusの種類 test1 test2
Euslisp (eusgl) 動かない 動かない
jskeus (irteusgl) 動かない 動かない
内部 (jskeusgl) 動く 動かない

で、動かないはすべてbody+でouter circuit not foundのエラーがでました。
test2は今回 #21 で動かなくなったケース、
test1は実は #21 まえから(公開版eusで)動いてなかったケースです。

  • test1について
    test1の項目は、irteusglのirtmath.lで上がいている
    normalize-vectorがEuslispのlisp/geo以下で呼ばれているかどうかの違いのようでした。
    内部 (jskeusgl)ではjskgeo.lの中で:reset-normalなどが
    defmethodしなおされていて、irtmath版normalize-vectorがよばれて、たまたま動いていたようです。
    ただ表示がおかしいので、normalize-vectorで動いているようにみえるのは
    誤りで、本当はEuslisp本体のほうまでおっていく必要があります。
    test1-irteusgl-successは、:reset-normalなどをうわがいて、
    内部 (jskeusgl)がなくても jskeus (irteusgl)test1
    エラーなく実効できるようにしたものです。
  • test2について
    前後で、remove-duplicatesの順番が変わります。
    Henry Baker's contribution of 2013 July #21 前はduplicatesなリストの要素は前から削除されてますが、
    Henry Baker's contribution of 2013 July #21 後はduplicatesな要素は後ろから削除されてます。
    remove-duplicatesの順番に依存して動いてしまっていた部分がbody+の中あたりにあるので、調査が必要です。
    test2-irteusgl-successはtest1の部分を直してremove-duplicatesを元に戻すと動く、というテストです。

@k-okada
Copy link
Member

k-okada commented Jun 12, 2014

今は動いていないものがリリースされているので,
#21をrevertしてテストを入れて,まずはリリースするのでいいと思います.

@snozawa
Copy link
Contributor

snozawa commented Jun 12, 2014

今は動いていないものがリリースされているので,
#21をrevertしてテストを入れて,まずはリリースするのでいいと思います.

わかりました。
#21をrevertしてもどしつつ、
jskeus/irteus/test以下にgeometoryなモデル作成のtestを追加しておきます。
また、それ版のeuslispのリリースも行っておきます。

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.

None yet

3 participants