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:motion_designators [2019/07/09 19:05] – [Adding a motion for controlling the pen] gkazhoyatutorials:beginner:motion_designators [2019/07/29 10:35] – Added turtlesim-srv to the dependencies amar
Line 3: Line 3:
 **Description:** In this tutorial you will learn what designators are, and in particular, work with motion designators: you will learn how to define one and how to use it. **Description:** In this tutorial you will learn what designators are, and in particular, work with motion designators: you will learn how to define one and how to use it.
  
-**Previous Tutorial:** [[tutorials:beginner:simple_plans|Implementing simple plans to move a turtle]]\\+**Previous Tutorial:** [[tutorials:beginner:cram_prolog|Using Prolog for reasoning]]\\
 **Next Tutorial:** [[tutorials:beginner:process_modules_2|Creating process modules]] **Next Tutorial:** [[tutorials:beginner:process_modules_2|Creating process modules]]
  
Line 50: Line 50:
 <code lisp> <code lisp>
 (defsystem cram-my-beginner-tutorial (defsystem cram-my-beginner-tutorial
-  :depends-on (cram-language roslisp turtlesim-msg geometry_msgs-msg cl-transforms+  :depends-on (cram-language roslisp turtlesim-msg turtlesim-srv 
 +                             geometry_msgs-msg cl-transforms
                              cram-designators cram-prolog)                              cram-designators cram-prolog)
   :components   :components
Line 70: Line 71:
 </code> </code>
  
-Now, reload the tutorial in ''roslisp_repl'' (which also loads the newly added dependencies).+Now, reload the tutorial in ''roslisp_repl'' (which also loads the newly added dependencies)
 + 
 +<code lisp> 
 +PROLOG> (ros-load:load-system "cram_my_beginner_tutorial" :cram-my-beginner-tutorial) 
 +PROLOG> (in-package :tut) 
 +</code>
  
 ==== Creating a motion designator ==== ==== Creating a motion designator ====
Line 82: Line 88:
 1.5 1.5
 </code> </code>
 +
 +We call the variable ''*my-desig*'' with asterisks as this is the common convention in Common Lisp for naming global variables.
  
 We use the ''a'' macro to create designators. Internally it uses the ''make-designator'' function to create a designator of the specified type. The macro allows us to write cleaner code for designator creation. We use the ''a'' macro to create designators. Internally it uses the ''make-designator'' function to create a designator of the specified type. The macro allows us to write cleaner code for designator creation.
Line 182: Line 190:
 <code lisp> <code lisp>
 TUT> (defparameter *my-desig2* (desig:a motion (type driving) (speed 1.5) (angle 2))) TUT> (defparameter *my-desig2* (desig:a motion (type driving) (speed 1.5) (angle 2)))
-MY-DESIG2+*MY-DESIG2
 TUT> (reference *my-desig2*) TUT> (reference *my-desig2*)
 (DRIVE #S(TURTLE-MOTION :SPEED 1.5 :ANGLE 2)) (DRIVE #S(TURTLE-MOTION :SPEED 1.5 :ANGLE 2))
Line 284: Line 292:
 <code lisp> <code lisp>
 TUT> (defparameter *my-desig3* (desig:a motion (type setting-pen) (r 100) (g 150) (b 0) (width 5))) TUT> (defparameter *my-desig3* (desig:a motion (type setting-pen) (r 100) (g 150) (b 0) (width 5)))
-MY-DESIG3+*MY-DESIG3*
 TUT> (reference *my-desig3*) TUT> (reference *my-desig3*)
 (SET-PEN #S(PEN-MOTION :R 100 :G 150 :B 0 :WIDTH 5 :OFF 0)) (SET-PEN #S(PEN-MOTION :R 100 :G 150 :B 0 :WIDTH 5 :OFF 0))