-
Notifications
You must be signed in to change notification settings - Fork 55
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[irtutil.l] add minjerk-interpolator-so3 and linear-interpolator-so3 #604
base: master
Are you sure you want to change the base?
Conversation
SO3 はなんの略ですか。 |
3D rotation group のことです。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
please consider inherit minjerk-interpolator, we do not want to re-rwrite
Lines 512 to 534 in 0543c2b
(t1+t2 (- (nth segment time-list) (if (> segment 0) (nth (1- segment) time-list) 0))) ;; total time of segment | |
;; A=(gx-(x+v*t+(a/2.0)*t*t))/(t*t*t) | |
;; B=(gv-(v+a*t))/(t*t) | |
;; C=(ga-a)/t | |
(A (scale (/ 1.0 (* t1+t2 t1+t2 t1+t2)) (v- xf (reduce #'v+ (list xi (scale t1+t2 vi) (scale (* t1+t2 t1+t2) (scale 0.5 ai))))))) | |
(B (scale (/ 1.0 (* t1+t2 t1+t2)) (v- vf (v+ vi (scale t1+t2 ai))))) | |
(C (scale (/ 1.0 (* t1+t2)) (v- af ai))) | |
;; a0=x | |
;; a1=v | |
;; a2=a/2.0 | |
;; a3=10*A-4*B+0.5*C | |
;;; a4=(-15*A+7*B-C)/t | |
;; a5=(6*A-3*B+0.5*C)/(t*t) | |
(a0 xi) | |
(a1 vi) | |
(a2 (scale 0.5 ai)) | |
(a3 (v+ (v- (scale 10 A) (scale 4 B)) (scale 0.5 C))) | |
(a4 (scale (/ 1.0 t1+t2) (v- (v+ (scale -15 A) (scale 7 B)) C))) | |
(a5 (scale (/ 1.0 t1+t2 t1+t2) (v+ (v+ (scale 6 A) (scale -3 B)) (scale 0.5 C)))) | |
;; x=a0+a1*t+a2*t*t+a3*t*t*t+a4*t*t*t*t+a5*t*t*t*t*t | |
;; v=a1+2*a2*t+3*a3*t*t+4*a4*t*t*t+5*a5*t*t*t*t | |
;; a=2*a2+6*a3*t+12*a4*t*t+20*a5*t*t*t |
in same file
minjerk-interpolatorクラスは、positionとvelocityとaccelerationが同じ空間にあることを想定していますが、SO3の場合はそうではないため、そのまま継承することはできません。minjerk-interpolatorクラスの方も修正すれば可能です。どうすべきとお考えですか。 |
minjerk-interpolator の変更も前提にしていました.
--
◉ Kei Okada
2021年11月16日(火) 18:33 Naoki Hiraoka ***@***.***>:
…
minjerk-interpolatorクラスは、positionとvelocityとaccelerationが同じ空間にあることを想定していますが、SO3の場合はそうではないため、そのまま継承することはできません。minjerk-interpolatorクラスの方も修正すれば可能です。どうすべきとお考えですか。
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
回転行列のためのinterpolatorです。
回転行列は特異点等の問題があるので、今ある
linear-inerpoilator
やminjerk-inerpoilator
を使うことができませんでした。下図の3つの姿勢を補間する場合。
今あるlinear-interpolator
特異点周辺のため無駄に大きく動く
今あるminjerk-interpolator
特異点周辺のため無駄に大きく動く
今回追加したlinear-interpolator-SO3
まっすぐ補間してくれる. キーポーズの箇所で角速度が不連続に変わる。
今回追加したminjerk-interpolator-SO3
まっすぐ補間しつつ、始点と終点の角速度・角加速度を考慮して補間することで、軌道を滑らかにつなげることができる。
gif動画のコード