Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
tutorials:beginner:simple_plans [2017/08/24 10:01] – [Moving the turtle towards a point] minor code change cpotutorials:beginner:simple_plans [2019/07/11 13:27] gkazhoya
Line 4: Line 4:
  
 **Previous Tutorial:** [[tutorials:beginner:controlling_turtlesim_2|Controlling turtlesim from CRAM]]\\ **Previous Tutorial:** [[tutorials:beginner:controlling_turtlesim_2|Controlling turtlesim from CRAM]]\\
-**Next Tutorial:** [[tutorials:beginner:designators|Creating action designators for the turtlesim]]+**Next Tutorial:** [[tutorials:beginner:cram_prolog|Using Prolog for reasoning]]
  
    
Line 28: Line 28:
  
 (defun relative-angle-to (goal pose-msg) (defun relative-angle-to (goal pose-msg)
-  "Given a `pose-msg' as a geometry_msgs/Pose and a `goal' as cl-transforms:3d-vector,+  "Given a `pose-msg' as a turtlesim-msg:pose and a `goal' as cl-transforms:3d-vector,
 calculate the angle by which the pose has to be turned to point toward the goal." calculate the angle by which the pose has to be turned to point toward the goal."
   (let ((diff-pose (cl-transforms:transform-point   (let ((diff-pose (cl-transforms:transform-point
Line 81: Line 81:
 (def-cram-function move-to (goal &optional (distance-threshold 0.1)) (def-cram-function move-to (goal &optional (distance-threshold 0.1))
   "Sends velocity commands until `goal' is reached."   "Sends velocity commands until `goal' is reached."
-  (let ((reached-fl (< (fl-funcall #'cl-transforms:v-dist+ (let ((reached-fl (< (fl-funcall #'cl-transforms:v-dist
                                    (fl-funcall                                    (fl-funcall
                                     #'cl-transforms:translation                                     #'cl-transforms:translation
Line 113: Line 113:
        (dolist (goal '((9 1 0) (9 9 0) (1 9 0) (1 1 0) (9 1 0)))        (dolist (goal '((9 1 0) (9 9 0) (1 9 0) (1 1 0) (9 1 0)))
          (move-to (apply #'cl-transforms:make-3d-vector goal))))          (move-to (apply #'cl-transforms:make-3d-vector goal))))
-</code>         +</code> 
 + 
 +We pass the ''dolist'' macro a list of lists containing coordinates in the TurtleSim world. It iterates over this list, storing one of the coordinates in ''goal'' each iteration. We then use ''apply'' to pass the contents of ''goal'' to ''make-3d-vector'' and pass the resulting vector to ''move-to''. This let's the turtle follow a trajectory described by the coordinates.
                    
 The turtle should now move along a rectangle. The turtle should now move along a rectangle.
Line 121: Line 123:
  
  
-Moving along predetermined points is all fine and good, but let's have a look at a more flexible way that CRAM provides to specify and reason about parameters ...+Moving along predetermined points is all fine and good, but let's have a look at a more flexible way that CRAM provides to specify and reason about parameters. To learn about motion parameter, we, however, first need to understand how the Lisp Prolog works ...
  
-[[tutorials:beginner:designators|Creating designators for the turtlesim]]+[[tutorials:beginner:cram_prolog|Using Prolog for reasoning]]