Skip to content

check self-collision-check in all :inverse-kinematics methods [sf#40] #38

Closed
@k-okada

Description

@k-okada

This post was originally posted at http://sourceforge.net/p/jskeus/tickets/40

euslispの:inverse-kinemaitcsメソッドで、
(send robot :self-collision-check)
をデフォルトで追加して、
(and ik-solved (not collision-p))
みたいなかんじで、IKの解けたかどうかチェックのところで
self-collision-checkでコリジョンをデフォルトでチェックすると
よさそうなのですが、どうでしょうか。

ただ、ロボットモデルの形状によっては、
(send robot :self-collision-check)
で実際にはカウントしたくない自己干渉もでてきてしまう気がします。
(send (pr2) :self-collision-check)
するといっぱい自己干渉リストがかえってきます。

なので、

Index: irtmodel.l

--- irtmodel.l (リビジョン 967)
+++ irtmodel.l (作業コピー)
@@ -1792,6 +1792,7 @@
(t (make-list (length move-target) :initial-element (deg2rad 1)))))
(union-link-list)
(centroid-thre 1.0) (target-centroid-pos) (centroid-offset-func)

  •              (use-self-collision-check nil)
              (dump-command t)
              &allow-other-keys)
    
    ;; target-coords, move-target, rotation-axis, translation-axis, link-list
    @@ -1917,7 +1918,8 @@
    ;; reset weight
    (send self :reset-joint-angle-limit-weight-old union-link-list)
    ;; check solved or not
  • (if (or success (not revert-if-fail))
    
  • (if (and (or success (not revert-if-fail))
    
  •          (if use-self-collision-check (send self :self-collision-check) t))
      (send self :angle-vector)
    (progn
     (when warnp
    

のようにuse-self-collision-checkみたいに引数でチェックするかどうか選べるようにして、
今までのIKとの互換性のためにデフォルトでnil,
形状情報的に意図した自己干渉計算ができそうなロボットでは、
:inverse-kinematicsメソッドを上がいてデフォルトでuse-self-collision-chekをtにする、
というのはいかがでしょうか。
(IKが解けないメッセージで、普通にIkがとけないのか
自己干渉で返り血nilにしているのか、も表示する必要がありそうです)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions