agent-system / robot_assembler

assemble robot using GUI
MIT License
19 stars 12 forks source link

actuator nameを定義したroboasmを結合しようとすると不具合が出ます #55

Closed makabe0510 closed 3 years ago

makabe0510 commented 3 years ago

robot_assemblerのguiで :set-name "hoge" としてactuator nameを定義したroboasmを結合しようとすると不具合が出ることを確認しました (create-roboasm-from-parsed-table)でコケているようです 以下のブランチで再現されます https://github.com/makabe0510/robot_assembler/tree/update_kxr_auv 自分で直すには大変そうだったのでissueにしました

 $ cd [catkin_ws]/src/agent-system/robot_assembler/sample/kxr_auv
 $ roseus merge.l
configuring by "/home/tasuku/catkin_ws/devel/share/euslisp/jskeus/eus//lib/eusrt.l"
;; readmacro ;; object ;; packsym ;; common ;; constants ;; stream ;; string ;; loader ;; pprint ;; process ;; hashtab ;; array ;; mathtran ;; eusdebug ;; eusforeign ;; extnum ;; coordinates ;; tty ;; history ;; toplevel ;; trans ;; comp ;; builtins ;; par ;; intersection ;; geoclasses ;; geopack ;; geobody ;; primt ;; compose ;; polygon ;; viewing ;; viewport ;; viewsurface ;; hid ;; shadow ;; bodyrel ;; dda ;; helpsub ;; eushelp ;; xforeign ;; Xdecl ;; Xgraphics ;; Xcolor ;; Xeus ;; Xevent ;; Xpanel ;; Xitem ;; Xtext ;; Xmenu ;; Xscroll ;; Xcanvas ;; Xtop ;; Xapplwin 
connected to Xserver DISPLAY=:0
X events are being asynchronously monitored.
;; pixword ;; RGBHLS ;; convolve ;; piximage ;; pbmfile ;; image_correlation ;; oglforeign ;; gldecl ;; glconst ;; glforeign ;; gluconst ;; gluforeign ;; glxconst ;; glxforeign ;; eglforeign ;; eglfunc ;; glutil ;; gltexture ;; glprim ;; gleus ;; glview ;; toiv-undefined ;; fstringdouble irtmath irtutil irtc irtgeoc irtgraph ___time ___pgsql irtgeo euspqp pqp irtscene irtmodel irtdyna irtrobot irtsensor irtbvh irtcollada irtstl irtwrl irtpointcloud eusbullet bullet irtcollision irtx eusjpeg euspng png irtimage irtglrgb 
;; extending gcstack 0x5640d1ba1690[16374] --> 0x5640d20281a0[32748] top=3c60
irtgl irtglc irtviewer 
EusLisp 9.27(5aa92412 1.2.2) for Linux64 created on tasuku-ThinkPad-T490(Mon May 17 20:05:05 JST 2021)
;; .eusrc executed!! *rcb4eus-dir*=/home/tasuku/prog/rcb4eus added, *load-path* updated!!
;; *load-path*=("/home/tasuku/prog/rcb4eus/Linux64/obj/"
 "/home/tasuku/prog/rcb4eus/Linux64/lib/"
 "/home/tasuku/prog/rcb4eus/"
 "/home/tasuku/catkin_ws/devel/share/euslisp/jskeus/eus//Linux64/lib/"
 "./"
 "/home/tasuku/catkin_ws/devel/share/euslisp/jskeus/eus/"
 "/home/tasuku/catkin_ws/devel/share/euslisp/jskeus/eus/lib/"
 "/home/tasuku/catkin_ws/devel/share/euslisp/jskeus/eus/lib/llib/"
 "/home/tasuku/catkin_ws/devel/share/euslisp/jskeus/eus/lib/demo/")
roseus ;; loading roseus("1.7.4-97-gb214284") on euslisp((9.27 tasuku-ThinkPad-T490 Mon May 17 20:05:05 JST 2021 5aa92412 1.2.2))
eustf roseus_c_util Call Stack (max depth: 20):
  0: at (car p)
  1: at (eq :parent (car p))
  2: at (or (eq :parent (car p)) (eq :parents-point (car p)))
  3: at (lambda-closure nil 94836329049872 0 (p) (or (eq :parent (car p)) (eq :parents-point (car p))))
  4: at (remove-if #'(lambda (p) (or (eq :parent (car p)) (eq :parents-point (car p)))) param)
  5: at (setq param (remove-if #'(lambda (p) (or (eq :parent (car p)) (eq :parents-point (car p)))) param))
  6: at (let ((param (gethash cur-parts parts-htbl))) (setq param (remove-if #'(lambda (p) (or (eq :parent (car p)) (eq :parents-point (car p)))) param)) (push param lst))
  7: at (while keys (setq cur-parts (find-if #'(lambda (k) (null (gethash (cadr (assoc :parent (gethash k parts-htbl))) parts-htbl))) keys)) (let ((param (gethash cur-parts parts-htbl))) (setq param (remove-if #'(lambda (p) (or (eq :parent (car p)) (eq :parents-point (car p)))) param)) (push param lst)) (remhash cur-parts parts-htbl) (setq keys (send parts-htbl :list-keys)))
  8: at (let ((initial (find-if #'(lambda (k) (assoc :initial-parts (gethash k parts-htbl))) (send parts-htbl :list-keys))) keys cur-parts lst) (push (gethash initial parts-htbl) lst) (remhash initial parts-htbl) (setq keys (send parts-htbl :list-keys)) (while keys (setq cur-parts (find-if #'(lambda (k) (null (gethash (cadr (assoc :parent (gethash k parts-htbl))) parts-htbl))) keys)) (let ((param (gethash cur-parts parts-htbl))) (setq param (remove-if #'(lambda (p) (or (eq :parent (car p)) (eq :parents-point (car p)))) param)) (push param lst)) (remhash cur-parts parts-htbl) (setq keys (send parts-htbl :list-keys))) (reverse lst))
  9: at (create-roboasm-from-parsed-table ht-merged)
  10: at (setq asm (create-roboasm-from-parsed-table ht-merged))
/home/tasuku/catkin_ws/devel/share/euslisp/jskeus/eus/Linux64/bin/irteusgl: ERROR th=0 list expected ;p=pointer?(0x5640cdb47040)
;; Segmentation Fault.
;; in #-843812800=(car p)
;; You are still in a signal handler.
;;Try reset or throw to upper level as soon as possible.
;; code=-856593808 x=ccf16940 addr=5640cc917de8
Fatal: 
YoheiKakiuchi commented 3 years ago

はい、気がついて直していました。 https://github.com/agent-system/robot_assembler/commit/48a897431e465b83262ee67a341e6fc31cd3513a masterは修正されたと思います。

タイムリーな話題でした。

makabe0510 commented 3 years ago

手元でも確認できました

makabe0510 commented 3 years ago

結合時のエラーは無くなったのですが、最後にmerge-parsed-tableを行ったroboasmについてのみactuator nameが反映されるようです

3個以上のroboasmを結合する場合があると思うので、全てのactuator nameを統合できると嬉しいのです可能でしょうか

YoheiKakiuchi commented 3 years ago

すいません。 これで良くしたつもりです。 https://github.com/agent-system/robot_assembler/commit/8cd0895dddc862283d0813ad924da4392982b113

makabe0510 commented 3 years ago

動きました ありがとうございました