Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tutorials:intermediate:new_actions [2019/01/02 16:20] – [Get-trajectory] vanessa | tutorials:intermediate:new_actions [2019/01/02 17:20] – [Pick-action-plan] vanessa | ||
---|---|---|---|
Line 2: | Line 2: | ||
When implementing new type of actions, such as placing, pouring or cutting there are 4 important steps to do. | When implementing new type of actions, such as placing, pouring or cutting there are 4 important steps to do. | ||
- | In the following Tutorial it is assumed that the basic knowledge about [[http:// | + | In the following Tutorial it is assumed that the basic knowledge about [[http:// |
====== Atomic-action-designator ====== | ====== Atomic-action-designator ====== | ||
Line 162: | Line 162: | ||
</ | </ | ||
+ | Here also failure-handling takes place. At least all low-level-failures should be caught here. | ||
====== Pick-action-designator ====== | ====== Pick-action-designator ====== | ||
Line 235: | Line 235: | ||
(type cl-transforms-stamped: | (type cl-transforms-stamped: | ||
- | ;; First correct the object transform such that rotationally-symmetric objects | ||
- | ;; would not be grasped in an awkward way with weird orientations | ||
(when (prolog `(object-rotationally-symmetric , | (when (prolog `(object-rotationally-symmetric , | ||
(setf object-transform | (setf object-transform | ||
Line 242: | Line 240: | ||
| | ||
: | : | ||
+ | </ | ||
+ | First correct the object transform such that rotationally-symmetric objects would not be grasped in an awkward way with weird orientations. | ||
+ | <code lisp> | ||
(let* ((gripper-tool-frame | (let* ((gripper-tool-frame | ||
| | ||
Line 276: | Line 277: | ||
| | ||
?robot ? | ?robot ? | ||
+ | | ||
+ | </ | ||
+ | Next step is to transform all the poses for the action. | ||
+ | * standard gripper transform oTg | ||
+ | * standard gripper pregrasp transform oTg | ||
+ | * standard gripper second pregrasp transform oTg | ||
+ | * standard gripper lift transform oTg | ||
+ | * standard gripper second lift transform oTg | ||
+ | * particular gripper transform gTg | ||
+ | <code lisp> | ||
(when (and object-to-standard-gripper-transform standard-to-particular-gripper-transform) | (when (and object-to-standard-gripper-transform standard-to-particular-gripper-transform) | ||
Line 302: | Line 313: | ||
</ | </ | ||
+ | |||
+ | The last step is to calculate the base-to-standard-gripper-transform so that a transformation from object-to-standard-gripper to base-to-particular-gripper can be done. | ||
====== Write a Demo====== | ====== Write a Demo====== | ||
+ | |||
+ | Depending on what the scenario will be a different demo has to take place. In cram/ | ||
+ | |||
+ | All that is needed: | ||
+ | |||
+ | * Launch file with all important nodes. | ||
+ | * Resources includes all .stl and .dae files from the spawned object in the scenario. | ||
+ | * Then a costmap needs to be defined. | ||
+ | * In projection-demo.lisp all the function that will be called in the demo are implemented e.g. place-object | ||
+ | * In demo.lisp the demo is written and trainings-data. |