ハンドで物体をつかむ,という動作の静的なシミュレーションを行う場合に 手(指)のリンクと対象物体の干渉を調べ,これが起こるところで物体をつか む動作を停止させるということが出来る.
(objects (list *sarm* *target*)) (send *sarm* :solve-ik *target* :debug-view t) (while (> a 0) (if (pqp-collision-check-objects (list (send *sarm* :joint-fr :child-link) (send *sarm* :joint-fl :child-link)) (list *target*)) (return)) (decf a 0.1) (send *irtviewer* :draw-objects) (send *sarm* :move-fingers a)) (send *sarm* :end-coords :assoc *target*) (dotimes (i 100) (send *sarm* :joint0 :joint-angle 1 :relative t) (send *irtviewer* :draw-objects)) (send *sarm* :end-coords :dissoc *target*) (dotimes (i 100) (send *sarm* :joint0 :joint-angle -1 :relative t) (send *irtviewer* :draw-objects))
同様の機能が,"irteus/demo/sample-arm-model.l"ファイルの:open-hand, :close-handというメソッドで提供されている.
pqp-collision-check-objects geometry::obj1 geometry::obj2 &key (geometry::fat 0.2) [関数]