ロボット動作と干渉計算

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

(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) [関数]

return nil or t


pqp-collision-check geometry::model1 geometry::model2 &optional (geometry::flag geometry::pqp_first_contact) &key (geometry::fat 0) (geometry::fat2 nil) [関数]



pqp-collision-distance geometry::model1 geometry::model2 &key (geometry::fat 0) (geometry::fat2 nil) (geometry::qsize 2) [関数]





2016-04-05