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:05] – [Adding a motion for controlling the pen] 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 82: Line 96:
 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 198:
 <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 300:
 <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))