Skip to content

Commit 0b6faca

Browse files
committed
commit 708 wrong code
1 parent b9b3599 commit 0b6faca

File tree

3 files changed

+107
-13
lines changed

3 files changed

+107
-13
lines changed

Diff for: jsk_arc2017_baxter/euslisp/lib/arc-interface.l

+4-1
Original file line numberDiff line numberDiff line change
@@ -260,13 +260,16 @@
260260
(:pick-object-with-movable-region
261261
(arm movable-region &key (n-trial 1) (n-trial-same-pos 1)
262262
(do-stop-grasp nil) (grasp-style :suction))
263+
(send *ri* :calib-proximity-threshold arm)
263264
(let (graspingp avs object-index obj-pos obj-cube pinch-yaw)
264265
;; TODO: object-index is set randomly
265266
(setq object-index (random (length (gethash arm object-boxes-))))
266267
(setq obj-pos
267268
(send self :get-object-position arm movable-region :object-index object-index))
268269
(setq obj-cube (send self :bbox->cube (elt (gethash arm object-boxes-) object-index)))
269-
(if (> (x-of-cube obj-cube) (y-of-cube obj-cube)) (setq pinch-yaw pi/2) (setq pinch-yaw 0))
270+
(if (> (x-of-cube obj-cube) (y-of-cube obj-cube))
271+
(setq pinch-yaw (+ pi/2 (caar (send (send obj-cube :worldcoords) :rpy-angle))))
272+
(setq pinch-yaw (caar (send (send obj-cube :worldcoords) :rpy-angle))))
270273
(ros::ros-info "[:pick-object-with-movable-region] arm:~a approach to the object" arm)
271274
(send *ri* :gripper-servo-on arm)
272275
;; Setup arm for picking

Diff for: jsk_arc2017_baxter/euslisp/lib/baxter-interface.l

+95-5
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
:super baxter-interface
1616
:slots (rarm-pressure-threshold-
1717
larm-pressure-threshold-
18+
proximity-threshold-
1819
right-hand-action-
1920
pressure-
2021
finger-flex-
2122
finger-load-
22-
prismatic-load-))
23+
prismatic-load-
24+
proximities-
25+
proximity-init-values-))
2326

2427
(defmethod jsk_arc2017_baxter::baxter-interface
2528
(:init
@@ -72,6 +75,8 @@
7275
(setq finger-flex- (make-hash-table))
7376
(setq prismatic-load- (make-hash-table))
7477
(setq prismatic-vel- (make-hash-table))
78+
(setq proximities- (make-hash-table))
79+
(setq proximity-init-values- (make-hash-table))
7580
(dolist (arm (list :rarm :larm))
7681
(ros::subscribe (format nil "/gripper_front/limb/~a/pressure/state" (arm2str arm))
7782
std_msgs::Float64
@@ -87,7 +92,13 @@
8792
dynamixel_msgs::JointState
8893
#'send self :set-prismatic-state arm
8994
:groupname groupname)
95+
(ros::subscribe (format nil "/gripper_front/limb/~a/proximity_array"
96+
(arm2str arm))
97+
force_proximity_ros::ProximityArray
98+
#'send self :set-proximities arm
99+
:groupname groupname)
90100
(sethash arm finger-flex- (make-hash-table))
101+
(sethash arm proximity-init-values- (make-hash-table))
91102
(dolist (side (list :right :left))
92103
(ros::subscribe (format nil "/gripper_front/limb/~a/flex/~a/state"
93104
(arm2str arm) (symbol2str side))
@@ -153,6 +164,9 @@
153164
(:set-finger-flex
154165
(arm side msg)
155166
(sethash side (gethash arm finger-flex-) (send msg :data)))
167+
(:set-proximities
168+
(arm msg)
169+
(sethash arm proximities- (send msg :proximities)))
156170

157171
;; Hand interface
158172
;; based on naoqi-interface and fetch-interface
@@ -184,6 +198,10 @@
184198
res)
185199
nil)
186200
nil))
201+
(:cancel-move-hand()
202+
(send right-hand-action- :cancel-goal))
203+
(:hand-interpolatingp ()
204+
(eq (send right-hand-action- :get-state) ros::*simple-goal-state-active*))
187205
(:get-finger-flex (arm side)
188206
(send self :spin-once)
189207
(gethash side (gethash arm finger-flex-)))
@@ -196,6 +214,22 @@
196214
(:get-prismatic-vel (arm)
197215
(send self :spin-once)
198216
(gethash arm prismatic-vel-))
217+
(:get-proximity (arm side &key (raw nil))
218+
(send self :spin-once)
219+
(let ((rl (gethash :left (gethash arm proximity-init-values-)))
220+
(rr (gethash :right (gethash arm proximity-init-values-)))
221+
;;(rm (gethash :middle (gethash arm proximity-init-values-)))
222+
(proximities (gethash arm proximities-)))
223+
(if (null raw)
224+
(cond
225+
;; for sparkfun proximity sensor
226+
((eq side :left)
227+
(/ (- (send (elt proximities 0) :average) rl) (expt (/ rl 2500.0) 1.5)))
228+
((eq side :right)
229+
(/ (- (send (elt proximities 1) :average) rr) (expt (/ rr 2500.0) 1.5))))
230+
(cond
231+
((eq side :left) (send (elt proximities 0) :average))
232+
((eq side :right) (send (elt proximities 1) :average))))))
199233
(:get-real-finger-av (arm)
200234
(send self :update-robot-state :wait-until-update t)
201235
(float-vector
@@ -225,9 +259,55 @@
225259
((eq type :pinch)
226260
(send self :update-robot-state :wait-until-update t)
227261
(let ((finger-av (send self :get-real-finger-av l/r))
228-
(prev-av (send robot :angle-vector)) avs)
262+
prev-av av avs hand-interpolatingp)
263+
;; rotate arm using proximity sensor
229264
(setf (aref finger-av 1) 180)
230-
(send self :move-hand l/r finger-av 1000)
265+
(send self :move-hand l/r finger-av 2000 :wait nil)
266+
(dotimes (x 100)
267+
(if (send self :interpolatingp) (return))
268+
(unix::usleep 1000))
269+
(while (and
270+
(< (max (send self :get-proximity l/r :right)
271+
(send self :get-proximity l/r :left))
272+
proximity-threshold-)
273+
(setq hand-interpolatingp (send self :hand-interpolatingp)))
274+
(unix::usleep 1000))
275+
(when hand-interpolatingp
276+
(send self :cancel-move-hand)
277+
(send self :update-robot-state :wait-until-update t)
278+
(setq prev-av (send robot :angle-vector))
279+
(if (< (send self :get-proximity l/r :right) (send self :get-proximity l/r :left))
280+
(progn
281+
(send robot l/r :wrist-r :joint-angle 45 :relative t)
282+
(setq av (send robot :angle-vector))
283+
(send robot :angle-vector prev-av)
284+
(send self :angle-vector-raw av 2000)
285+
(send self :move-hand l/r finger-av 4000 :wait nil)
286+
(dotimes (x 100)
287+
(if (send self :interpolatingp) (return))
288+
(unix::usleep 1000))
289+
(while (and (< (send self :get-proximity l/r :right)
290+
(send self :get-proximity l/r :left))
291+
(send self :interpolatingp))
292+
(unix::usleep 1000)))
293+
(progn
294+
(send robot l/r :wrist-r :joint-angle -45 :relative t)
295+
(setq av (send robot :angle-vector))
296+
(send robot :angle-vector prev-av)
297+
(send self :angle-vector-raw av 2000)
298+
(send self :move-hand l/r finger-av 4000 :wait nil)
299+
(dotimes (x 100)
300+
(if (send self :interpolatingp) (return))
301+
(unix::usleep 1000))
302+
(while (and (> (send self :get-proximity l/r :right)
303+
(send self :get-proximity l/r :left))
304+
(send self :interpolatingp))
305+
(unix::uleep 1000)))
306+
(send self :cancel-move-hand)
307+
(send self :cancel-angle-vector)
308+
(send self :update-robot-state :wait-until-update t)
309+
(send self :move-hand l/r finger-av 1000))
310+
(setq prev-av (send robot :angle-vector))
231311
(when (> (aref finger-av 0) 45)
232312
;; if cylindrical and spherical grasp, move other gripper joints
233313
(send robot l/r :gripper-p :joint-angle -90)
@@ -236,7 +316,7 @@
236316
(pushback (send robot :angle-vector) avs)
237317
(send robot :angle-vector prev-av)
238318
(send self :angle-vector-sequence-raw avs)
239-
(send self :wait-interpolation)))))))
319+
(send self :wait-interpolation))))))))
240320
(:stop-grasp
241321
(&optional (arm :arms) (type :suction))
242322
(dolist (l/r (if (eq arm :arms) (list :rarm :larm) (list arm)))
@@ -392,7 +472,17 @@
392472
(setq rarm-pressure-threshold- (- min-pressure 15))))))
393473
(send self :stop-grasp arm)
394474
(ros::ros-info "[:calib-pressure-threshold] Threshold r: ~a l: ~a"
395-
rarm-pressure-threshold- larm-pressure-threshold-)))
475+
rarm-pressure-threshold- larm-pressure-threshold-))
476+
(:calib-proximity-threshold
477+
(&optional (arm :arms))
478+
(send self :spin-once)
479+
(dolist (l/r (if (eq arm :arms) (list :rarm :larm) (list arm)))
480+
(let ((hash-table (make-hash-table)))
481+
(sethash :left hash-table (send self :get-proximity l/r :left :raw t))
482+
(sethash :right hash-table (send self :get-proximity l/r :right :raw t))
483+
(sethash :middle hash-table (send self :get-proximity l/r :middle :raw t))
484+
(sethash l/r proximity-init-values- hash-table))
485+
(setq proximity-threshold- 100)))) ;; TODO decide proper threshold 100 -> ???
396486

397487

398488
(defclass jsk_arc2017_baxter::baxter-moveit-environment

Diff for: jsk_arc2017_baxter/euslisp/lib/baxter.l

+8-7
Original file line numberDiff line numberDiff line change
@@ -109,31 +109,32 @@
109109
(case (car args)
110110
((:angle-vector)
111111
(let ((av (cadr args)) (joints (gethash arm hand-joints-)))
112-
(when av
113-
(dotimes (i (length av))
114-
(send self (elt joints i) :joint-angle (elt av i))
115-
(send self (elt joints (+ i (length av))) :joint-angle (elt av i))))
112+
(if (and (null (eq (length av) 0)) (null (eq (length av) 2)))
113+
(progn (ros::ros-error "length of angle-vector must be 0 or 2.~%") (exit)))
114+
(dotimes (i (length av))
115+
(send self (elt joints i) :joint-angle (elt av i))
116+
(send self (elt joints (+ i (length av))) :joint-angle (elt av i)))
116117
(mapcar
117118
#'(lambda (j) (send self j :joint-angle))
118119
(subseq joints 0 (/ (length joints) 2)))
119120
))
120-
(t (error ":hand first arg is invalid. args: ~A~%" args))
121+
(t (ros::ros-error ":hand first arg is invalid. args: ~A~%" args) (exit))
121122
))
122123
(:hand-grasp-pre-pose
123124
(arm style)
124125
(case style
125126
(:opposed (send self :hand arm :angle-vector #f(0 0)))
126127
(:spherical (send self :hand arm :angle-vector #f(30 0)))
127128
(:cylindrical (send self :hand arm :angle-vector #f(90 0)))
128-
(t (error ":hand-grasp-pre-pose no such style ~A~%" style))
129+
(t (ros::ros-error ":hand-grasp-pre-pose no such style ~A~%" style) (exit))
129130
))
130131
(:hand-grasp-pose
131132
(arm style &key (angle 180))
132133
(case style
133134
(:opposed (send self :hand arm :angle-vector (float-vector 0 angle)))
134135
(:spherical (send self :hand arm :angle-vector (float-vector 30 angle)))
135136
(:cylindrical (send self :hand arm :angle-vector (float-vector 90 angle)))
136-
(t (error ":hand-grasp-pose no such style ~A~%" style))
137+
(t (ros::ros-error ":hand-grasp-pose no such style ~A~%" style) (exit))
137138
))
138139
(:avoid-shelf-pose
139140
(arm bin)

0 commit comments

Comments
 (0)