anchor.diff:             (values (first rest) (second rest) (third rest)
                      (fourth rest) (fifth rest) (sixth rest)))
             (:linear
  -           (let* ((frame (robray::scene-graph-lookup scene-graph object))
  +           (let* ((frame (scene-graph-find scene-graph object))
                     (parent (robray::scene-frame-parent frame))
                     (tf (robray::scene-frame-tf frame))
                     (v (tf-translation tf)))
  
positive.code:                       (encoding :linear)
                        goal)
    (labels ((location-predicate (object parent i j)
               (let ((parent-frame (robray::scene-graph-lookup scene parent)))
                 (cond
                   ((robray::scene-frame-geometry-isa parent-frame "surface")
                    (ecase encoding
  
negative.code: 
  (defun itmp-transfer-z (scene-graph object)
    ;; todo: other shapes
    (let ((g (robray::scene-frame-geometry-collision (scene-graph-find scene-graph object))))
      (assert (= 1 (length g)))
      (let ((shape (robray::scene-geometry-shape (elt g 0))))
        (etypecase shape
  