スライド 1

Similar documents
スライド 1

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

スライド 1

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

Microsoft PowerPoint - Robotics_13_review_1short.pptx

スライド 1

PowerPoint Presentation

スライド 1


機構学 平面機構の運動学

断面の諸量

高等学校学習指導要領

高等学校学習指導要領

<4D F736F F D EBF97CD8A B7982D189898F4B A95748E9197BF4E6F31312E646F63>

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

#A A A F, F d F P + F P = d P F, F y P F F x A.1 ( α, 0), (α, 0) α > 0) (x, y) (x + α) 2 + y 2, (x α) 2 + y 2 d (x + α)2 + y 2 + (x α) 2 + y 2 =

代数 幾何 < ベクトル > 1 ベクトルの演算 和 差 実数倍については 文字の計算と同様 2 ベクトルの成分表示 平面ベクトル : a x e y e x, ) ( 1 y1 空間ベクトル : a x e y e z e x, y, ) ( 1 1 z1

Microsoft Word - 1B2011.doc

さくらの個別指導 ( さくら教育研究所 ) A a 1 a 2 a 3 a n {a n } a 1 a n n n 1 n n 0 a n = 1 n 1 n n O n {a n } n a n α {a n } α {a

2011年度 大阪大・理系数学

PowerPoint Presentation

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

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


vecrot

Microsoft PowerPoint - 10.pptx

Microsoft PowerPoint - 10.pptx

70 : 20 : A B (20 ) (30 ) 50 1

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

測量試補 重要事項

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

Microsoft Word - kogi10ex_main.docx

2013年度 九州大・理系数学

p tn tn したがって, 点 の 座標は p p tn tn tn また, 直線 l と直線 p の交点 の 座標は p p tn p tn よって, 点 の座標 (, ) は p p, tn tn と表され p 4p p 4p 4p tn tn tn より, 点 は放物線 4 p 上を動くこと

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

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

2017年度 千葉大・理系数学

平成 年 月 7 日 ( 土 第 75 回数学教育実践研究会アスティ 45 ビル F セミナールーム A 札幌医科大学 年 P ab, を正の定数とする 平面上において ( a, を中心とする円 Q 4 C と (, b を中心とする円 C が 原点 O で外接している また P を円 C 上の点と

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

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

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生

07_dist_01.pdf.pdf

Microsoft PowerPoint - 9.pptx

85 4

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

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

2011年度 東京工大・数学

Microsoft Word - 微分入門.doc

Microsoft PowerPoint - 9.pptx

PowerPoint Presentation

測量士補試験 重要事項 基準点測量「偏心補正計算」

Microsoft Word - 201hyouka-tangen-1.doc

プリント

e a b a b b a a a 1 a a 1 = a 1 a = e G G G : x ( x =, 8, 1 ) x 1,, 60 θ, ϕ ψ θ G G H H G x. n n 1 n 1 n σ = (σ 1, σ,..., σ N ) i σ i i n S n n = 1,,

2015-2017年度 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)

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 θ

学習指導要領

4.6: 3 sin 5 sin θ θ t θ 2t θ 4t : sin ωt ω sin θ θ ωt sin ωt 1 ω ω [rad/sec] 1 [sec] ω[rad] [rad/sec] 5.3 ω [rad/sec] 5.7: 2t 4t sin 2t sin 4t

2018年度 東京大・理系数学

Chap2

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

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

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


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

2016年度 筑波大・理系数学

2011年度 筑波大・理系数学

Microsoft PowerPoint - 第3回2.ppt

PoincareDisk-3.doc

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

連続講座 断層映像法の基礎第 29 回 : 篠原広行 他 断層映像法の基礎第 29 回 2 次元ファンビームの投影と画像再構成 篠原広行 II 梶原宏則 II 中世古和真 1 ) 橘篤志 II 橋本雄幸 2) 首都大学東京人間健康科学研究科放射線科学域 21 横浜愈 l 英短期大学情報学科 はじめに

Chap2.key

応用数学A

Chap3.key

本文/目次(裏白)

相関係数と偏差ベクトル

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

Microsoft PowerPoint - 応用数学8回目.pptx

meiji_resume_1.PDF

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

学習指導要領

1 P2 P P3P4 P5P8 P9P10 P11 P12

θ T [N] φ T os φ mg T sin φ mg tn φ T sin φ mg tn φ θ 0 sin θ tn θ θ sin φ tn φ φ θ φ mg θ f J mg f π J mg π J J 4π f mg 4π f () () /8

2015年度 金沢大・理系数学

φ 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

CG

DVIOUT

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

学力スタンダード(様式1)

学習指導要領

<4D F736F F D E682568FCD CC82B982F192668BAD9378>

スライド 1

t θ, τ, α, β S(, 0 P sin(θ P θ S x cos(θ SP = θ P (cos(θ, sin(θ sin(θ P t tan(θ θ 0 cos(θ tan(θ = sin(θ cos(θ ( 0t tan(θ

9 5 ( α+ ) = (α + ) α (log ) = α d = α C d = log + C C 5. () d = 4 d = C = C = 3 + C 3 () d = d = C = C = 3 + C 3 =

数 IB( 植松 ) 2006 年夏学期解答 ( 兼ノート ) (2007 年のは課題プリでやってしまったので ) 1 (a) 補完公式を使う問題です 補完公式とは n+1 個の点を通る n 次の多項式を求める公式のことです 例 n=3 x y y0 y1 y2 y3 このデータを補

2017年度 長崎大・医系数学

Transcription:

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

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

例題 9-1: 3 自由度アームの関節角を [pi/6, pi/4, pi/2] としたときのベースから見たハンドの位置 >>> arm=create_arm() >>> arm.set_joints([pi/6,pi/4,pi/2]) >>> arm.hand.where(arm.base).xyzabc() [0.5511351921262151, 0.31819805153394637, 0.07928932188134533, 0.46364760900080626, -0.6590580358264089, -2.4568734505875103] >>> では, 手先を v:[0.5, 0.3, 0.1] にするには関節角はいくつにしたらよいか? 3

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

- 幾何学的 ( 解析的 ) 解法 まずは順運動学 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 5

- θ 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 πτ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 6

- θ 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 7

- θ 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 8

- θ 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 ψ φ 9

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

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

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

例題 9-1: 解答例 表裏が分かるようにマークを付ける 目標は ( 一応 )FRAME で与える >>> arm.mark() >>> a=arm.solve(frame(vec=vector(0.5,0.3,0.1))) >>> a [[0.5404195002705842, 0.9061234910050131, 1.5004257618081907], [0.5404195002705842, 2.4065492528132038, -1.5004257618081907], [-2.601173153319209, -0.9061234910050131, -1.5004257618081907], [-2.601173153319209, -2.4065492528132038, 1.5004257618081907]] >>> arm.set_joints(a[0]) >>> arm.wrist.where(arm.base).xyzabc() [0.5, 0.30000000000000004, 0.10000000000000009, - 2.7062318564303522, 0.6126669119414491, 2.4614837221760357] >>> for pp in a :... arm.set_joints(pp)... sleep(2)... 13

例題 9-2 手首を直線的に動かす 3 自由度アームを [pi/6,pi/4,pi/2] から [-pi/6,pi/8,2*pi/3] へ手首が直線的に移動するように動かす 14

例題 9-2 解答方針 まず順運動学. 関節角が [pi/6,pi/4,pi/2],[-pi/6,pi/8,2*pi/3] のときの手首の 3 次元位置を求める ( 順運動学 ). 上記二つの三次元位置を結ぶ線分上に多数の分割点を生成する. そして逆運動学. それぞれの分割点における関節角度を求める. 得られた関節角度をロボットアームに順次指令する 15

手首位置を刻む関数 def mk_pos_seq(arm,th1,th2,n) : arm.set_joints(th1) pos1=arm.wrist.where(arm.base).vec arm.set_joints(th2) pos2=arm.wrist.where(arm.base).vec posd=(1.0/n)*(pos2-pos1) pos=pos1 pos_seq=[pos] for j in range(n) : pos = pos+posd pos_seq.append(pos) return pos_seq 16

逆運動学 刻んだ手首位置でアームを動かす def mv_arm_seq(arm,pos_seq): for pos in pos_seq : ths=arm.solve(frame(vec=pos)) arm.set_joints(ths[0]) visual.rate(10) return ths[0] 刻んだ手首位置の関節角度を求める def mk_ik_seq(arm,pos_seq) : return [arm.solve(frame(vec=pos))[0] for pos in pos_seq] 17

例題 9-2 解答例 まずは手首位置を刻んで動かしてみる arm=create_arm() nn= 100 th1=[pi/6,pi/4,pi/2] th2=[-pi/6,pi/8,2*pi/3] pos_seq= mk_pos_seq(arm,th1,th2,nn) arm.set_joints(th1) raw_input("ok?") mv_arm_seq(arm,pos_seq) raw_input("ok?") 18

手首位置をプロット tt= [1.0*i/nn for i in range(nn+1)] plt.plot(tt,pos_seq) plt.xlabel("div") plt.ylabel("xyz") plt.legend(["x","y","z"]) plt.show() 19

手首位置をプロット 手首位置は刻んだ通り直線的に変化している 20

関節角をプロット th_seq= mk_ik_seq(arm,pos_seq) plt.plot(tt,th_seq) plt.xlabel("div") plt.ylabel("theta") plt.legend(["th1","th2","th3"]) plt.show() 21

関節角をプロット 関節角は曲線を描く 22

手首位置を三次元プロットする 参考 :http://matplotlib.org/api/figure_api.html from mpl_toolkits.mplot3d import Axes3D fig = plt.figure() ax = fig.gca(projection='3d') xx=[p[0] for p in pos_seq] yy=[p[1] for p in pos_seq] zz=[p[2] for p in pos_seq] ax.plot(xx,yy,zz) ax.legend(["xyz"]) plt.show() 23

手首位置を三次元プロットする 24

例題 9-3 hand を目標位置に動かす では, ハンドの位置を v:[0.5, 0.3, 0.1] にするには関節角はいくつにしたらよいか? 25

例題 9-3 解答例 ( 失敗 ) ( 案 1) hand から wrist へ座標変換でもどしてやる hand から wrist へどうやってもどす? とりあえず wrist で解いて,z 方向に戻してみる >>> zz=arm.wrist.where(arm.base).mat.col(2) >>> hh=frame(vec=vector(0.5,0.3,0.1)-0.1*zz) >>> b=arm.solve(hh) >>> arm.set_joints(b[0]) >>> arm.wrist.where(arm.base).xyzabc() [0.4424948650639732, 0.2654969190383839, 0.17418016487003452, -2.6955552700672656, 0.6233575626211233, 2.4552974074870324] >>> arm.hand.where(arm.base).xyzabc() [0.5008713178859492, 0.30052279073156957, 0.10093142380197177, 0.44603738352252786, -0.6233575626211232, -2.4552974074870324] 失敗! 微妙に違う 26

- 失敗の理由 3 自由度アームの場合, 位置を変えると姿勢も変わってしまう. 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)) ツール位置が z 方向のシフトだけならこれでよいが, 位置や姿勢がかかわると汎用的に処理するのは幾何的解法では結構難しい. 後で数値解法で解決する. 27

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

- 6 自由度アームの解の求め方の例 6 自由度アームの場合, ハンドの位置だけでなく姿勢も目標に合わせることができるので目標の座標系にハンド座標が一致しているとして逆変換で手首座標系の目標座標系を設定することができる 29

- 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).. 30

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

- 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).. 32

- 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).. 33

- 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).. 34

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

例題 9-4: 解答例のまとめ (4)joint 4 の回転角は link5y と link3y の成す角 (5)joint 6 の回転角は link5y と wrist y の成す角 36

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