Differences

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

Link to this comparison view

Both sides previous revision Previous revision
tutorials:intermediate:simple_mobile_manipulation_plan [2019/08/02 14:05]
amar [Expanding Failure Management Capabilities] Added information about grasps
tutorials:intermediate:simple_mobile_manipulation_plan [2019/08/02 14:31] (current)
amar [Some Useful Designators] Added more information about the object designator
Line 42: Line 42:
       * <code lisp> (desig:a motion (type going) (target ?​loc-desig)) </​code>​ is a motion that moves the body of the robot and expects a key ''​target'',​ whose value should be of type ''​location-designator''​.       * <code lisp> (desig:a motion (type going) (target ?​loc-desig)) </​code>​ is a motion that moves the body of the robot and expects a key ''​target'',​ whose value should be of type ''​location-designator''​.
       * <code lisp> (desig:a motion (type looking) (target ?​loc-desig))</​code>​ is a motion that moves the head of the robot to look at the specfied location. It expects a key ''​target''​ with value of type ''​location''​ designator. ​       * <code lisp> (desig:a motion (type looking) (target ?​loc-desig))</​code>​ is a motion that moves the head of the robot to look at the specfied location. It expects a key ''​target''​ with value of type ''​location''​ designator. ​
-      * <code lisp> (desig:a motion (type detecting) (object ?​obj-desig)) </​code>​ is a a motion that perceives and detects the specified object. It expects a key ''​object''​ with a value of type ''​object-designator''​+      * <code lisp> (desig:a motion (type detecting) (object ?​obj-desig)) </​code>​ is a a motion that perceives and detects the specified object. It expects a key ''​object''​ with a value of type ''​object-designator''​. An example is <code lisp>  
 +      (desig:a motion (type detecting) (desig:an object (type bowl))) </​code>​. This motion perceives and tries to find an object of type bowl in the field of view where the camera of the robot is pointed to. The resultant of this is also an object designator, but it has much more information. A sample is given below <code lisp> 
 +    #<A OBJECT 
 +    (TYPE BOWL) 
 +    (NAME BOWL-1) 
 +    (POSE ((:POSE 
 +            #<​CL-TRANSFORMS-STAMPED:​POSE-STAMPED  
 +   ​FRAME-ID:​ "​base_footprint",​ STAMP: 1.564755796743144d9 
 +   #<​3D-VECTOR (0.7672472770564228d0 -0.35741216776250767d0 0.888642116546631d0)>​ 
 +   #<​QUATERNION (-0.005783746257358676d0 -0.0013544535828327665d0 -0.26923602469246516d0 0.9630558655492675d0)>>​) 
 +           ​(:​TRANSFORM 
 +            #<​CL-TRANSFORMS-STAMPED:​TRANSFORM-STAMPED  
 +   ​FRAME-ID:​ "​base_footprint",​ CHILD-FRAME-ID:​ "​bowl_1",​ STAMP: 1.564755796743144d9 
 +   #<​3D-VECTOR (0.7672472770564228d0 -0.35741216776250767d0 0.888642116546631d0)>​ 
 +   #<​QUATERNION (-0.005783746257358676d0 -0.0013544535828327665d0 -0.26923602469246516d0 0.9630558655492675d0)>>​) 
 +           ​(:​POSE-IN-MAP 
 +            #<​CL-TRANSFORMS-STAMPED:​POSE-STAMPED  
 +   ​FRAME-ID:​ "​map",​ STAMP: 1.564755796743144d9 
 +   #<​3D-VECTOR (1.5255411783854167d0 0.761638069152832d0 0.8886421203613282d0)>​ 
 +   #<​QUATERNION (-0.005410938989371061d0 -0.0024511234369128942d0 -0.07722260057926178d0 0.9969961643218994d0)>>​) 
 +           ​(:​TRANSFORM-IN-MAP 
 +            #<​CL-TRANSFORMS-STAMPED:​TRANSFORM-STAMPED  
 +   ​FRAME-ID:​ "​map",​ CHILD-FRAME-ID:​ "​bowl_1",​ STAMP: 1.564755796743144d9 
 +   #<​3D-VECTOR (1.5255411783854167d0 0.761638069152832d0 0.8886421203613282d0)>​ 
 +   #<​QUATERNION (-0.005410938989371061d0 -0.0024511234369128942d0 -0.07722260057926178d0 0.9969961643218994d0)>>​)))>​ </​code>​ Note that this resulting object designator has the name of the object along with the coordinate of the object w.r.t the robot coordinate frame and other useful coordinate transformations which can later be used to calculate the pose of the end effector for grasping.
     * **Action Designators** - These describe the high-level actions which may consist of multiple calls to different low-level motion to carry out a small plan.     * **Action Designators** - These describe the high-level actions which may consist of multiple calls to different low-level motion to carry out a small plan.
         * <code lisp> (desig:an action (type picking-up) (arm ?grasp-arm) (grasp ?​grasp-pose-identifier) (object ?​obj-desig)) </​code>​ is an action that picks an object with the specified arm and grasp pose. It expects an ''​object''​ key with value of type ''​object-designator'',​ an ''​arm''​ with the value of type keyword for the arm to choose, and a ''​grasp''​ key whose value specifies a keyword which is an identifier of the grasp pose to pick the object with.         * <code lisp> (desig:an action (type picking-up) (arm ?grasp-arm) (grasp ?​grasp-pose-identifier) (object ?​obj-desig)) </​code>​ is an action that picks an object with the specified arm and grasp pose. It expects an ''​object''​ key with value of type ''​object-designator'',​ an ''​arm''​ with the value of type keyword for the arm to choose, and a ''​grasp''​ key whose value specifies a keyword which is an identifier of the grasp pose to pick the object with.