File tree 2 files changed +19
-2
lines changed
2 files changed +19
-2
lines changed Original file line number Diff line number Diff line change 2396
2396
)
2397
2397
pairs))
2398
2398
(:self-collision-check
2399
- (&key (mode :all ) (pairs (send self :collision-check-pairs )) (collision-func ' pqp-collision-check))
2399
+ (&key (mode :all ) (pairs (send self :collision-check-pairs )) (collision-func ' pqp-collision-check) (distance-func ' pqp-collision-distance) (fat 0.0 ) (min-distance))
2400
+ " calculate self collision chaeck
2401
+ :mode (:all or :first) ; returns first collided link pair of all collided link pair
2402
+ :pairs (list (cons <link1> <link2>) ....) ; linke pair to be checked
2403
+ :min-distance (number) if number is set, any link pair that has smaller distance than this fat threshold will regard as collided
2404
+ :fat : fatten collision model"
2400
2405
(let ((cpairs) (col-count 0 ))
2401
2406
(dolist (p pairs)
2402
- (let ((colp (/= (funcall collision-func (car p) (cdr p)) 0 )))
2407
+ (let ((colp
2408
+ (cond ((numberp min-distance)
2409
+ (< (car (funcall distance-func (car p) (cdr p) :fat fat)) min-distance))
2410
+ (t
2411
+ (/= (funcall collision-func (car p) (cdr p) geo ::PQP_FIRST_CONTACT :fat fat) 0 )))))
2403
2412
(when colp
2404
2413
(incf col-count)
2405
2414
(if (eq mode :first )
Original file line number Diff line number Diff line change 68
68
))
69
69
))
70
70
71
+ (deftest test-collision-check
72
+ (let ()
73
+ (send *robot* :reset-pose )
74
+ (assert (null (send *robot* :self-collision-check :pairs (list (cons (send *robot* :link :lleg-link5 ) (send *robot* :link :rleg-link5 ))))) " this is saf pose" )
75
+ (assert (null (send *robot* :self-collision-check :pairs (list (cons (send *robot* :link :lleg-link5 ) (send *robot* :link :rleg-link5 ))) :min-distance 49 )) " distance value is 50 > 49" )
76
+ (assert (send *robot* :self-collision-check :pairs (list (cons (send *robot* :link :lleg-link5 ) (send *robot* :link :rleg-link5 ))) :min-distance 51 ) " closest distance is 50 < 51" )
77
+ ))
78
+
71
79
72
80
(run-all-tests)
73
81
(exit)
You can’t perform that action at this time.
0 commit comments