スライド 1

Similar documents
スライド 1

Microsoft PowerPoint - ロボットの運動学forUpload'C5Q [互換モード]

Microsoft PowerPoint - Robotics_13_review_1short.pptx

スライド 1

スライド 1

高等学校学習指導要領

高等学校学習指導要領


1. z dr er r sinθ dϕ eϕ r dθ eθ dr θ dr dθ r x 0 ϕ r sinθ dϕ r sinθ dϕ y dr dr er r dθ eθ r sinθ dϕ eϕ 2. (r, θ, φ) 2 dr 1 h r dr 1 e r h θ dθ 1 e θ h

85 4

( ) e + e ( ) ( ) e + e () ( ) e e Τ ( ) e e ( ) ( ) () () ( ) ( ) ( ) ( )

機構学 平面機構の運動学

1 (1) ( i ) 60 (ii) 75 (iii) 315 (2) π ( i ) (ii) π (iii) 7 12 π ( (3) r, AOB = θ 0 < θ < π ) OAB A 2 OB P ( AB ) < ( AP ) (4) 0 < θ < π 2 sin θ


重力方向に基づくコントローラの向き決定方法

2 図微小要素の流体の流入出 方向の断面の流体の流入出の収支断面 Ⅰ から微小要素に流入出する流体の流量 Q 断面 Ⅰ は 以下のように定式化できる Q 断面 Ⅰ 流量 密度 流速 断面 Ⅰ の面積 微小要素の断面 Ⅰ から だけ移動した断面 Ⅱ を流入出する流体の流量 Q 断面 Ⅱ は以下のように

<4D F736F F D EBF97CD8A B7982D189898F4B A95748E9197BF4E6F31312E646F63>

N cos s s cos ψ e e e e 3 3 e e 3 e 3 e

断面の諸量

本文/目次(裏白)

φ s i = m j=1 f x j ξ j s i (1)? φ i = φ s i f j = f x j x ji = ξ j s i (1) φ 1 φ 2. φ n = m j=1 f jx j1 m j=1 f jx j2. m

知能科学:ニューラルネットワーク

Microsoft PowerPoint - 10.pptx

1. 1 A : l l : (1) l m (m 3) (2) m (3) n (n 3) (4) A α, β γ α β + γ = 2 m l lm n nα nα = lm. α = lm n. m lm 2β 2β = lm β = lm 2. γ l 2. 3

4 4 θ X θ P θ 4. 0, 405 P 0 X 405 X P 4. () 60 () 45 () 40 (4) 765 (5) 40 B 60 0 P = 90, = ( ) = X

2.2 h h l L h L = l cot h (1) (1) L l L l l = L tan h (2) (2) L l 2 l 3 h 2.3 a h a h (a, h)

6 2 2 x y x y t P P = P t P = I P P P ( ) ( ) ,, ( ) ( ) cos θ sin θ cos θ sin θ, sin θ cos θ sin θ cos θ y x θ x θ P

2 Hermite-Gaussian モード 2-1 Hermite-Gaussian モード 自由空間を伝搬するレーザ光は次のような Hermite-gaussian Modes を持つ光波として扱う ことができる ここで U lm (x, y, z) U l (x, z)u m (y, z) e

PowerPoint プレゼンテーション

PowerPoint Presentation

技術者のための構造力学 2014/06/11 1. はじめに 資料 2 節点座標系による傾斜支持節点節点の処理 三好崇夫加藤久人 従来, マトリックス変位法に基づく骨組解析を紹介する教科書においては, 全体座標系に対して傾斜 した斜面上の支持条件を考慮する処理方法として, 一旦, 傾斜支持を無視した

() x + y + y + x dy dx = 0 () dy + xy = x dx y + x y ( 5) ( s55906) 0.7. (). 5 (). ( 6) ( s6590) 0.8 m n. 0.9 n n A. ( 6) ( s6590) f A (λ) = det(a λi)

数学 t t t t t 加法定理 t t t 倍角公式加法定理で α=β と置く. 三角関数

2011年度 大阪大・理系数学

座標変換におけるテンソル成分の変換行列

lim lim lim lim 0 0 d lim 5. d 0 d d d d d d 0 0 lim lim 0 d

Math-Aquarium 例題 図形と計量 図形と計量 1 直角三角形と三角比 P 木の先端を P, 根元を Q とする A 地点の目の位置 A' から 木の先端への仰角が 30,A から 7m 離れた AQB=90 と なる B 地点の目の位置 B' から木の先端への仰角が 45 であ るとき,

vecrot

D xy D (x, y) z = f(x, y) f D (2 ) (x, y, z) f R z = 1 x 2 y 2 {(x, y); x 2 +y 2 1} x 2 +y 2 +z 2 = 1 1 z (x, y) R 2 z = x 2 y

( ) sin 1 x, cos 1 x, tan 1 x sin x, cos x, tan x, arcsin x, arccos x, arctan x. π 2 sin 1 x π 2, 0 cos 1 x π, π 2 < tan 1 x < π 2 1 (1) (

Microsoft PowerPoint - 9.pptx

多次元レーザー分光で探る凝縮分子系の超高速動力学

Microsoft Word - thesis.doc

Gmech08.dvi

Microsoft PowerPoint - qcomp.ppt [互換モード]

解析力学B - 第11回: 正準変換

arctan 1 arctan arctan arctan π = = ( ) π = 4 = π = π = π = =

grad φ(p ) φ P grad φ(p ) p P p φ P p l t φ l t = 0 g (0) g (0) (31) grad φ(p ) p grad φ φ (P, φ(p )) xy (x, y) = (ξ(t), η(t)) ( )

f : R R f(x, y) = x + y axy f = 0, x + y axy = 0 y 直線 x+y+a=0 に漸近し 原点で交叉する美しい形をしている x +y axy=0 X+Y+a=0 o x t x = at 1 + t, y = at (a > 0) 1 + t f(x, y

untitled

( ) 2.1. C. (1) x 4 dx = 1 5 x5 + C 1 (2) x dx = x 2 dx = x 1 + C = 1 2 x + C xdx (3) = x dx = 3 x C (4) (x + 1) 3 dx = (x 3 + 3x 2 + 3x +


2013年度 九州大・理系数学

1 (Berry,1975) 2-6 p (S πr 2 )p πr 2 p 2πRγ p p = 2γ R (2.5).1-1 : : : : ( ).2 α, β α, β () X S = X X α X β (.1) 1 2

振動工学に基礎

Microsoft Word - 微分入門.doc

研修コーナー

LLG-R8.Nisus.pdf

(1.2) T D = 0 T = D = 30 kn 1.2 (1.4) 2F W = 0 F = W/2 = 300 kn/2 = 150 kn 1.3 (1.9) R = W 1 + W 2 = = 1100 N. (1.9) W 2 b W 1 a = 0

120 9 I I 1 I 2 I 1 I 2 ( a) ( b) ( c ) I I 2 I 1 I ( d) ( e) ( f ) 9.1: Ampère (c) (d) (e) S I 1 I 2 B ds = µ 0 ( I 1 I 2 ) I 1 I 2 B ds =0. I 1 I 2

tnbp59-21_Web:P2/ky132379509610002944

x () g(x) = f(t) dt f(x), F (x) 3x () g(x) g (x) f(x), F (x) (3) h(x) = x 3x tf(t) dt.9 = {(x, y) ; x, y, x + y } f(x, y) = xy( x y). h (x) f(x), F (x

1 1 sin cos P (primary) S (secondly) 2 P S A sin(ω2πt + α) A ω 1 ω α V T m T m 1 100Hz m 2 36km 500Hz. 36km 1

パーキンソン病治療ガイドライン2002

Microsoft PowerPoint - 第3回2.ppt

日本内科学会雑誌第97巻第7号

1.500 m X Y m m m m m m m m m m m m N/ N/ ( ) qa N/ N/ 2 2

春期講座 ~ 極限 1 1, 1 2, 1 3, 1 4,, 1 n, n n {a n } n a n α {a n } α {a n } α lim n an = α n a n α α {a n } {a n } {a n } 1. a n = 2 n {a n } 2, 4, 8, 16,

日本内科学会雑誌第98巻第4号

Transcription:

(10) 2016.6.22 電気通信大学大学院情報理工学研究科末廣尚士

14. ロボットアームの逆運動学 ( 幾何 学的 ( 解析的 ) 解法 ) 何をしたいか 手首, 手先, ツールの 3 次元空間での位置や姿勢から, それを実現する関節角度を計算する. アームソリューション, アームの解とも呼ぶ 何のために たとえばビジョンで認識された物をつかむ場合, 物の位置 姿勢は 3 次元空間で表現されることが普通である. したがってそれに必要な手首, 手先, ツールの位置や姿勢アームの位置や姿勢も 3 次元空間の位置 姿勢で与えられる. 逆運動学が不要な制御もあるが,,,. 2

- 3 自由度アームの逆運動学 手先の位置が θ 2,θ 3 を求める. base x wrist base y wrist base z wrist のとき, 関節角度 θ 1, 3

- 幾何学的 ( 解析的 ) 解法 まずは順運動学 base z wrist = bh + l1h + l2h cos θ 2 + l3h cos θ 2 + θ 3 base x wrist = L1 x hand cos θ 1 = l2h sin θ 2 + l3hsin θ 2 + θ 3 cos θ 1 base y wrist = L1 x hand sin θ 1 = l2h sin θ 2 + l3hsin θ 2 + θ 3 sin θ 1 where L1 x wrist = l2h sin θ 2 + l3h sin θ 2 + θ 3 4

- θ 1 の計算 base x wrist = L1 x wrist cos θ 1 base y wrist = L1 x wrist sin θ 1 よって,tan θ 1 = base y wrist base x wrist θ 1 = tan 1 base y wrist base x wrist π x < 0, y < 0 πτ2 x = 0, y < 0 tan 1 base y wrist base x wrist x > 0, y < 0 πτ2 x = 0, y > 0 tan 1 base y wrist base x wrist + π x < 0, y 0 unknown x = 0, y = 0 もしくは,θ 1 = atan2 base y wrist, base x wrist 5

- θ 3 の計算 base z wrist = bh + l1h + l2h cos θ 2 + l3h cos θ 2 + θ 3 L1 x wrist = l2h sin θ 2 + l3h sin θ 2 + θ 3 ここで, X = L1 x wrist Z = base z wrist bh l1h (X 2 = base 2 x wrist とすると, X = l2h sin θ 2 + l3h sin θ 2 + θ 3 + base 2 y wrist ) Z = l2h cos θ 2 + l3h cos θ 2 + θ 3 両辺を 2 乗して加える, X 2 = l2h 2 sin 2 θ 2 + 2l2hl3h sin θ 2 sin θ 2 + θ 3 + l3h 2 sin 2 θ 2 + θ 3 Z 2 = l2h 2 cos 2 θ 2 + 2l2hl3h cos θ 2 cos θ 2 + θ 3 + l3h 2 cos 2 θ 2 + θ 3 X 2 + Z 2 = l2h 2 + l3h 2 + 2l2hl3h cos θ 2 cos θ 2 + θ 3 + sin θ 2 sin θ 2 + θ 3 6

- θ 3 の計算 ( つづき ) X 2 + Z 2 = l2h 2 + l3h 2 + 2l2hl3h cos θ 2 cos θ 2 + θ 3 + sin θ 2 sin θ 2 + θ 3 ここで cos α β = cos α cos β + sin α sin β を思い出して, α = θ 2 + θ 3,β = θ 2 とすると, X 2 + Z 2 = l2h 2 + l3h 2 + 2l2hl3h cos θ 3 cos θ 3 = X2 +Z 2 l2h 2 l3h 2 2l2hl3h よって, θ 3 = ± cos 1 X2 +Z 2 l2h 2 l3h 2 2l2hl3h 7

- θ 2 の計算 θ 3 が, + の場合 - の場合 ψ = sin 1 Z X 2 + Z 2 アームの姿勢が変わっても実は式は同じ. ここの符号が変わるだけ. ψ = sin 1 Z X 2 + Z 2 φ = sin 1 l3h sin θ 3 X 2 + Z 2 θ 2 = Τ π 2 ψ φ φ = sin 1 l3h sin θ 3 X 2 + Z 2 θ 2 = Τ π 2 ψ φ 8

- 結果のグラフィックス表示 1 ψ = sin 1 Z X 2 +Z 2 φ = sin 1 l3h sin θ 3 X 2 +Z 2 θ 2 = πτ2 ψ φ 9

- 結果のグラフィックス表示 2 ψ = sin 1 Z X 2 +Z 2 φ = sin 1 l3h sin θ 3 X 2 +Z 2 θ 2 = πτ2 ψ φ 10

- 実はまだ他に解がある θ 1 を裏に回して,θ 2 と θ 3 を反対に曲げる. θ 1 = atan2 base y wrist, base x wrist 11

- 3 関節アーム : 逆運動学解追加 逆運動学 arm3dof.py def arm_sol(self,trans) : x=trans.vec[0] y=trans.vec[1] z=trans.vec[2] th1_1=atan2(y,x) th1_2=atan2(-y, -x) zz=z-self.bh-self.l1h zz_2=zz**2 xx_2=x**2+y**2 th3=acos((xx_2+zz_2-self.l2h**2-self.l3h**2)/2.0/self.l2h/self.l3h) psi=asin(zz/sqrt(xx_2+zz_2)) phi=asin(self.l3h*sin(th3)/sqrt(xx_2+zz_2)) th2_1=pi/2-psi-phi th2_2=pi/2-psi+phi self.solutions=[[th1_1,th2_1,th3],[th1_1,th2_2,-th3], [th1_2,-th2_1,-th3],[th1_2,-th2_2,th3]] return self.solutions 12

- 3 関節アーム : マークの追加 リンクがどっちを向いているのかわかりやすくする arm3dof.py def mark_arm(self) : self.base.mark=visual.box(size=(0.11,0.01,0.1),pos=(0.055,0,0.05), color=visual.color.red) self.base.mark.frame=self.base.vframe self.links[0].mark=visual.box(size=(0.11,0.01,0.05),pos=(0.055,0,0.025), color=visual.color.red) self.links[0].mark.frame=self.links[0].vframe self.links[1].mark=visual.box(size=(0.05,0.01,0.4),pos=(0.025,0,0.2), color=visual.color.red) self.links[1].mark.frame=self.links[1].vframe self.links[2].mark=visual.box(size=(0.03,0.01,0.4),pos=(0.015,0,0.2), color=visual.color.red) self.links[2].mark.frame=self.links[2].vframe 13

- 3 関節アーム :create_arm の変更 solve と make_shape をメソッドにする import new from larm_w_hand import * from hand import * arm3dof.py def create_arm() : hand = create_hand() arm = LinkedArm(3,hand=hand) arm.make_shape=new.instancemethod(make_shape,arm,arm. class ) arm.ready_angle=[0,pi/4,pi/2] arm.park_angle=[0,0,0] arm.mark=new.instancemethod(mark_arm,arm,arm. class ) arm.solve=new.instancemethod(arm_sol,arm,arm. class ) arm.make_shape() return arm 14

- 逆運動学を使って動かす まず env_arm3dof.py を走らせる. >>> from env_arm3dof import * >>> >>> arm.make_shape() >>> arm.mark() >>> create_env() >>> a=arm.solve(box.where(arm.base)) >>> a [[-0.78539816339744828, 0.90198348365541947, 2.1401199701156761], [-0.78539816339744828, 3.0421034537710954, -2.1401199701156761], [2.3561944901923448, -0.90198348365541947, -2.1401199701156761], [2.3561944901923448, -3.0421034537710954, 2.1401199701156761]] >>> for pp in a: arm.set_joints(pp) sleep(1) >>> 15

- hand を box の位置に動かす? hand が box の場所に行くにはどうしたらよいか? ( 案 1) hand から wrist へ座標変換でもどしてやる >>> b=arm.solve(box.where(arm.base)*arm.wrist.where(arm.hand)) >>> b [[-0.78539816339744828, 0.63292249604039119, 2.2119557397743437], [-0.78539816339744828, 2.8448782358147344, -2.2119557397743437], [2.3561944901923448, -0.63292249604039119, -2.2119557397743437], [2.3561944901923448, -2.8448782358147344, 2.2119557397743437]] >>> for pp in b: arm.set_joints(pp) sleep(1) >>> 上手くいかない. なぜ? 16

- hand を box の位置に動かす 3 自由度アームの場合 hand と box の姿勢を一致させられないので, 座標系の逆変換ではうまくいかない. arm_sol のプログラムの中身を変更しなくてはならない. th3=acos((xx_2+zz_2-self.l2h**2-self.l3h**2)/2.0/self.l2h/self.l3h) psi=asin(zz/sqrt(xx_2+zz_2)) phi=asin(self.l3h*sin(th3)/sqrt(xx_2+zz_2)) これを長さだけでなく, 手先の位置 姿勢に関して汎用的に処理するのは幾何的解法では結構難しい. 後で数値解法で解決する. 17

- 6 自由度アームの解の求め方の例 18

- 例題 14-1: 6 関節アームの逆運動学 手首座標系が目標座標系 target に一致するように関節角を求めよ (arm6dof.py) 19

- 6 関節アームの逆運動学 (1) (1)joint 5 の位置を求める 手首座標の z 軸方向 lh5+lh6(-0.15) の位置 def arm_sol(self,target) : self.solutions=[] pos=target.vec z_axis=target.mat.col(2) pos=pos-((self.l5h+self.l6h)*z_axis).. 20

- 6 関節アームの逆運動学 (2) (2)1,2,3 は 前の l3h =l3h+l4h(0.4) としたときの 3 関節と同様に解くことが出来る def arm_sol_pos(self,pos) :... 21

- 6 関節アームの逆運動学 (3) (3)joint 5 の回転軸 (y) は 手首 z 軸と link3z 軸に垂直 回転角はそれらの間の角度 (2 方向あることに注意 ) def arm_sol_ori(self,target,th123) : T123=self.fk123(th123) zt=target.mat.col(2) z3=t123.mat.col(2).. 22

- 6 関節アームの逆運動学 (4) (4)joint 4 の回転角は link5y と link3y の成す角 def arm_sol_ori(self,target,th123) : T123=self.fk123(th123) zt=target.mat.col(2) z3=t123.mat.col(2).. 23

- 6 関節アームの逆運動学 (5) (5)joint 6 の回転角は link5y と wrist(=target) y の成す角 def arm_sol_ori(self,target,th123) : T123=self.fk123(th123) zt=target.mat.col(2) z3=t123.mat.col(2).. 24

- 例題 14-1: まとめ 1 (1)joint 5 の位置を求める 手首座標の z 軸方向 -0.15 の位置 (2)1-3 は l3h=l3+l4=0.4 としたときの 3 関節と同様に解くことが出来る (3)joint 5 の回転軸 (y) は 手首 z 軸と link3z 軸に垂直 回転角はそれらの間の角度 (2 方向あることに注意 ) 25

- 例題 14-1: まとめ 2 (4)joint 4 の回転角は link5y と link3y の成す角 (5)joint 6 の回転角は link5y と wrist y の成す角 26

- arm6dof.py(1) def arm_sol_pos(self,pos) : x=pos[0] y=pos[1] z=pos[2] th1_1=atan2(y,x) th1_2=atan2(-y,-x) lh=self.l3h+self.l4h zz=z-self.bh-self.l1h zz_2=zz**2 xx_2=x**2+y**2 th3=acos((xx_2+zz_2-self.l2h**2-lh**2)/2.0/self.l2h/lh) psi=asin(zz/sqrt(xx_2+zz_2)) phi=asin(lh*sin(th3)/sqrt(xx_2+zz_2)) th2_1=pi/2-psi-phi th2_2=pi/2-psi+phi self.solutions_pos=[[th1_1,th2_1,th3],[th1_1,th2_2,-th3], [th1_2,-th2_1,-th3],[th1_2,-th2_2,th3]] return self.solutions_pos 27

- arm6dof.py(1) def fk123(self,th123): T1=FRAME(xyzabc=[0,0,self.bh,0,0,th123[0]]) T2=FRAME(xyzabc=[0,0,self.l1h,0,th123[1],0]) T3=FRAME(xyzabc=[0,0,self.l3h+self.l4h,0,th123[2],0]) return T1*T2*T3 # def arm_sol_ori(self,target,th123) : T123=self.fk123(th123).... zt=target.mat.col(2) z3=t123.mat.col(2) (3)(4)(5) return [th4,th5,th6],[th4_2,-th5,th6_2] 28

- arm6dof.py(1) def arm_sol(self,target) : self.solutions=[] pos=target.vec z_axis=target.mat.col(2) pos=pos-((self.l5h+self.l6h)*z_axis) (1)(2) self.solve_pos(pos) for th123 in self.solutions_pos : rslt=self.solve_ori(target,th123) self.solutions.append(th123+rslt[0]) self.solutions.append(th123+rslt[1]) return self.solutions 29

- 次回の予告 逆運動学の数値解法 ニュートン法 ヤコビアン 30