52
52
53
53
54
54
(defun go-with-torso (&key
55
- ((:joint-angle ?joint-angle))
56
- &allow-other-keys )
55
+ ((:joint-angle ?joint-angle))
56
+ &allow-other-keys )
57
57
(declare (type (or number keyword ) ?joint-angle))
58
58
" Go to `?joint-angle' with torso, if a failure happens propagate it up, robot-state-changed event."
59
59
(unwind-protect
79
79
((:collision-object-b ?collision-object-b))
80
80
((:collision-object-b-link ?collision-object-b-link))
81
81
((:collision-object-a ?collision-object-a))
82
- ((:move-the-ass ?move-the-ass))
82
+ ((:move-base ?move-base))
83
+ ((:prefer-base ?prefer-base))
84
+ ((:align-planes-left ?align-planes-left))
85
+ ((:align-planes-right ?align-planes-right))
83
86
&allow-other-keys )
84
87
(declare (type (or list cl-transforms-stamped :pose-stamped) left-poses right-poses)
85
88
(type (or null keyword ) ?collision-mode)
86
89
(type (or null symbol ) ?collision-object-b ?collision-object-a)
87
- (type (or null string symbol ) ?collision-object-b-link))
90
+ (type (or null string symbol ) ?collision-object-b-link)
91
+ (type boolean ?move-base ?prefer-base ?align-planes-left ?align-planes-right))
88
92
" Move arms through all but last poses of `left-poses' and `right-poses',
89
93
while ignoring failures; and execute the last pose with propagating the failures."
90
94
@@ -120,8 +124,14 @@ while ignoring failures; and execute the last pose with propagating the failures
120
124
(collision-object-b-link ?collision-object-b-link))
121
125
(desig :when ?collision-object-a
122
126
(collision-object-a ?collision-object-a))
123
- (desig :when ?move-the-ass
124
- (move-the-ass ?move-the-ass))))
127
+ (desig :when ?move-base
128
+ (move-base ?move-base))
129
+ (desig :when ?prefer-base
130
+ (prefer-base ?prefer-base))
131
+ (desig :when ?align-planes-left
132
+ (align-planes-left ?align-planes-left))
133
+ (desig :when ?align-planes-right
134
+ (align-planes-right ?align-planes-right))))
125
135
126
136
(cram-occasions-events :on-event
127
137
(make-instance ' cram-plan-occasions-events:robot-state-changed))))
@@ -152,16 +162,78 @@ while ignoring failures; and execute the last pose with propagating the failures
152
162
(collision-object-b-link ?collision-object-b-link))
153
163
(desig :when ?collision-object-a
154
164
(collision-object-a ?collision-object-a))
155
- (desig :when ?move-the-ass
156
- (move-the-ass ?move-the-ass))))
165
+ (desig :when ?move-base
166
+ (move-base ?move-base))
167
+ (desig :when ?prefer-base
168
+ (prefer-base ?prefer-base))
169
+ (desig :when ?align-planes-left
170
+ (align-planes-left ?align-planes-left))
171
+ (desig :when ?align-planes-right
172
+ (align-planes-right ?align-planes-right))))
157
173
158
174
(cram-occasions-events :on-event
159
175
(make-instance ' cram-plan-occasions-events:robot-state-changed)))))
160
176
177
+ (defun manipulate-environment (&key
178
+ ((:type ?type))
179
+ ((:arm ?arm))
180
+ ((:poses ?poses))
181
+ ((:distance ?distance))
182
+ ((:collision-mode ?collision-mode))
183
+ ((:collision-object-b ?collision-object-b))
184
+ ((:collision-object-b-link ?collision-object-b-link))
185
+ ((:collision-object-a ?collision-object-a))
186
+ ((:move-base ?move-base))
187
+ ((:prefer-base ?prefer-base))
188
+ ((:align-planes-left ?align-planes-left))
189
+ ((:align-planes-right ?align-planes-right))
190
+ &allow-other-keys )
191
+ (declare (type keyword ?type ?arm)
192
+ (type list ?poses)
193
+ (type (or number null ) ?distance)
194
+ (type (or keyword null ) ?collision-mode)
195
+ (type (or symbol null ) ?collision-object-b ?collision-object-a)
196
+ (type (or string symbol null ) ?collision-object-b-link)
197
+ (type boolean ?move-base ?prefer-base
198
+ ?align-planes-left ?align-planes-right))
199
+ " Execute an environment manipulation trajectory.
200
+ In projection it would be executed by following the list of poses in cartesian space.
201
+ With a continuous motion planner one could have fluent arch trajectories etc.
202
+ `?type' is either :PUSHING or :PULLING."
203
+
204
+ (unwind-protect
205
+ (exe :perform
206
+ (desig :a motion
207
+ (type ?type)
208
+ (arm ?arm)
209
+ (poses ?poses)
210
+ (desig :when ?distance
211
+ (joint-angle ?distance))
212
+ (desig :when ?collision-mode
213
+ (collision-mode ?collision-mode))
214
+ (desig :when ?collision-object-b
215
+ (collision-object-b ?collision-object-b))
216
+ (desig :when ?collision-object-b-link
217
+ (collision-object-b-link ?collision-object-b-link))
218
+ (desig :when ?collision-object-a
219
+ (collision-object-a ?collision-object-a))
220
+ (desig :when ?move-base
221
+ (move-base ?move-base))
222
+ (desig :when ?prefer-base
223
+ (prefer-base ?prefer-base))
224
+ (desig :when ?align-planes-left
225
+ (align-planes-left ?align-planes-left))
226
+ (desig :when ?align-planes-right
227
+ (align-planes-right ?align-planes-right))))
228
+ (cram-occasions-events :on-event
229
+ (make-instance ' cram-plan-occasions-events:robot-state-changed))))
230
+
161
231
162
232
(defun move-arms-into-configuration (&key
163
233
((:left-joint-states ?left-joint-states))
164
234
((:right-joint-states ?right-joint-states))
235
+ ((:align-planes-left ?align-planes-left))
236
+ ((:align-planes-right ?align-planes-right))
165
237
&allow-other-keys )
166
238
(declare (type list ?left-joint-states ?right-joint-states))
167
239
" Calls moving-arm-joints motion, while ignoring failures, and robot-state-changed event."
@@ -179,7 +251,11 @@ while ignoring failures; and execute the last pose with propagating the failures
179
251
(desig :when ?left-joint-states
180
252
(left-joint-states ?left-joint-states))
181
253
(desig :when ?right-joint-states
182
- (right-joint-states ?right-joint-states))))
254
+ (right-joint-states ?right-joint-states))
255
+ (desig :when ?align-planes-left
256
+ (align-planes-left ?align-planes-left))
257
+ (desig :when ?align-planes-right
258
+ (align-planes-right ?align-planes-right))))
183
259
; ; (cpl:seq
184
260
; ; (exe:perform
185
261
; ; (desig:a motion
@@ -224,7 +300,6 @@ while ignoring failures; and execute the last pose with propagating the failures
224
300
((:gripper ?left-or-right))
225
301
((:effort ?effort))
226
302
((:object object-designator))
227
- ((:grasped-object new-object-designator))
228
303
((:grasp ?grasp))
229
304
&allow-other-keys )
230
305
(declare (type (or keyword list ) ?left-or-right)
@@ -247,13 +322,14 @@ In any case, issue ROBOT-STATE-CHANGED event."
247
322
(desig :when ?effort
248
323
(effort ?effort))))
249
324
(roslisp :ros-info (pick-place grip) " Assert grasp into knowledge base" )
250
- (cram-occasions-events :on-event
251
- (make-instance ' cpoe:object-attached-robot
252
- :arm ?left-or-right
253
- :object-name (desig :desig-prop-value object-designator :name )
254
- :grasp ?grasp))
255
- (desig :equate object-designator new-object-designator)
256
- new-object-designator))
325
+ (when object-designator
326
+ (cram-occasions-events :on-event
327
+ (make-instance ' cpoe:object-attached-robot
328
+ :arm ?left-or-right
329
+ :object-name (desig :desig-prop-value object-designator :name )
330
+ :object-designator object-designator
331
+ :grasp ?grasp))
332
+ (desig :current-desig object-designator))))
257
333
(cram-occasions-events :on-event
258
334
(make-instance ' cram-plan-occasions-events:robot-state-changed))))
259
335
@@ -337,9 +413,11 @@ In any case, issue ROBOT-STATE-CHANGED event."
337
413
(declare (type desig :object-designator ?object-designator))
338
414
" Call detecting motion on `?object-designator', retry on failure, issue perceived event,
339
415
equate resulting designator to the original one."
340
- (let ((retries (if (find :cad-model (desig :properties ?object-designator) :key #' car )
341
- 1
342
- 4 )))
416
+ (let ((retries 1
417
+ ; ; (if (find :cad-model (desig:properties ?object-designator) :key #'car)
418
+ ; ; 1
419
+ ; ; 4)
420
+ ))
343
421
(cpl :with-retry-counters ((perceive-retries retries))
344
422
(cpl :with-failure-handling
345
423
((common-fail :perception-low-level-failure (e)
@@ -355,19 +433,38 @@ equate resulting designator to the original one."
355
433
(resulting-designator
356
434
(funcall object-chosing-function resulting-designators)))
357
435
(if (listp resulting-designators)
358
- (mapcar (lambda (desig)
359
- (cram-occasions-events :on-event
360
- (make-instance ' cram-plan-occasions-events:object-perceived-event
361
- :object-designator desig
362
- :perception-source :whatever ))
363
- ; ; doesn't make sense to equate all these desigs together
364
- ; ; (desig:equate ?object-designator desig)
365
- )
366
- resulting-designators)
436
+ (mapc (lambda (desig)
437
+ (cram-occasions-events :on-event
438
+ (make-instance ' cram-plan-occasions-events:object-perceived-event
439
+ :object-designator desig
440
+ :perception-source :whatever ))
441
+ ; ; doesn't make sense to equate all these desigs together
442
+ ; ; (desig:equate ?object-designator desig)
443
+ )
444
+ resulting-designators)
367
445
(progn
368
446
(cram-occasions-events :on-event
369
447
(make-instance ' cram-plan-occasions-events:object-perceived-event
370
448
:object-designator resulting-designators
371
449
:perception-source :whatever ))
372
450
(desig :equate ?object-designator resulting-designator)))
373
- resulting-designator)))))
451
+ (desig :current-desig resulting-designator))))))
452
+
453
+
454
+ (defun park-arms (&key
455
+ ((:left-arm ?left-arm-p))
456
+ ((:right-arm ?right-arm-p))
457
+ &allow-other-keys )
458
+ (declare (type boolean ?left-arm-p ?right-arm-p))
459
+ " Puts the arms into a parking configuration"
460
+ (let* ((left-config (when ?left-arm-p :park ))
461
+ (right-config (when ?right-arm-p :park ))
462
+ (?goal ` (cpoe :arms-positioned-at , left-config , right-config)))
463
+ (exe :perform
464
+ (desig :an action
465
+ (type positioning-arm)
466
+ (desig :when ?left-arm-p
467
+ (left-configuration park))
468
+ (desig :when ?right-arm-p
469
+ (right-configuration park))
470
+ (goal ?goal)))))
0 commit comments