Skip to content

Commit 7309fa2

Browse files
committed
1 parent ed3a36b commit 7309fa2

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

irteus/test/interpolator.l

+31-2
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,35 @@
5757
((:interpolator ip) (instance interpolator-class :init))
5858
(initial-time 0.0) (neglect-first) (vel-vector-list) (acc-vector-list))
5959
(let* ((data-list) (tm-list) (vel-data-list) (acc-data-list))
60+
(assert (= (length pos-list) (1+ (length time-list)))
61+
(format nil "check length of pos-list(~A) and tm-list(~A)"
62+
(length pos-list) (length time-list)))
63+
(setq vel-vector-list
64+
(reverse
65+
(do ((i 0 (1+ i)) (vel-list))
66+
((> i (length time-list)) vel-list)
67+
(if (or (= i 0) (= i (length time-list)))
68+
(push (instantiate float-vector (length (car pos-list))) vel-list)
69+
(let* ((v0 (scale (/ 1.0 (elt time-list (1- i)))
70+
(v- (elt pos-list i) (elt pos-list (1- i)))))
71+
(v1 (scale (/ 1.0 (elt time-list i))
72+
(v- (elt pos-list (1+ i)) (elt pos-list i))))
73+
(v (scale 0.5 (v+ v0 v1))))
74+
(dotimes (i (length v)) (if (< (* (elt v0 i) (elt v1 i)) 0) (setf (elt v i) 0)))
75+
(push v vel-list))))))
76+
(setq acc-vector-list
77+
(reverse
78+
(do ((i 0 (1+ i)) (acc-list))
79+
((> i (length time-list)) acc-list)
80+
(if (or (= i 0) (= i (length time-list)))
81+
(push (instantiate float-vector (length (car vel-vector-list))) acc-list)
82+
(let* ((v0 (scale (/ 1.0 (elt time-list (1- i)))
83+
(v- (elt vel-vector-list i) (elt vel-vector-list (1- i)))))
84+
(v1 (scale (/ 1.0 (elt time-list i))
85+
(v- (elt vel-vector-list (1+ i)) (elt vel-vector-list i))))
86+
(v (scale 0.5 (v+ v0 v1))))
87+
(dotimes (i (length v)) (if (< (* (elt v0 i) (elt v1 i)) 0) (setf (elt v i) 0)))
88+
(push v acc-list))))))
6089
(format t "=INPUT~%")
6190
(format t "time ~A~%" time-list)
6291
(format t " pos ~A~%" pos-list)
@@ -66,8 +95,8 @@
6695
:position-list pos-list
6796
:time-list (let (r) (dolist (n time-list) (push (+ n (if r (car r) 0)) r)) (nreverse r)) ;; list of time[sec] from start for each control point
6897
(append
69-
(if vel-vector-list (list :vel-vector-list vel-vector-list))
70-
(if acc-vector-list (list :acc-vector-list acc-vector-list))))
98+
(if vel-vector-list (list :velocity-list vel-vector-list))
99+
(if acc-vector-list (list :acceleration-list acc-vector-list))))
71100
(send ip :start-interpolation)
72101
(while (send ip :interpolatingp)
73102
(push (if (send ip :interpolatingp)

0 commit comments

Comments
 (0)