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
tutorials:beginner:motion_designators [2019/07/09 19:03] – [Designators: an overview] gkazhoyatutorials:beginner:motion_designators [2022/02/25 23:14] (current) – [Creating motion designators for the TurtleSim] schimpf
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]]
 +
 +To run the code in the tutuorial the roscore and the turtlesim need to be started in the terminal. Each in their own tab. 
 +<code bash>
 +$ roscore
 +</code>
 +<code bash>
 +$ rosrun turtlesim turtlesim_node
 +</code>
  
 ===== Designators: an overview ===== ===== Designators: an overview =====
Line 50: Line 58:
 <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 79:
 </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 77: Line 91:
  
 <code lisp> <code lisp>
-TUT> (defparameter my-desig (desig:a motion (type driving) (speed 1.5))) +TUT> (defparameter *my-desig(desig:a motion (type driving) (speed 1.5))) 
-MY-DESIG +*MY-DESIG* 
-TUT> (desig-prop-value my-desig :speed)+TUT> (desig-prop-value *my-desig:speed)
 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 88: Line 104:
  
 <code lisp> <code lisp>
-TUT> (reference my-desig)+TUT> (reference *my-desig*)
 Cannot resolve motion designator #<MOTION-DESIGNATOR ((TYPE Cannot resolve motion designator #<MOTION-DESIGNATOR ((TYPE
                                                        DRIVING)                                                        DRIVING)
Line 181: Line 197:
  
 <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))
 </code> </code>
Line 283: Line 299:
  
 <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))
 </code> </code>