ハンドで物体をつかむ,という動作の静的なシミュレーションを行う場合に 手(指)のリンクと対象物体の干渉を調べ,これが起こるところで物体をつか む動作を停止させるということが出来る.
(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) [関数]