Excelでホーキンス・リンクをシミュレーションする (前編) [ロボット]
本日のお題は、「ロボット」のシミュレーションです。 とはいっても、本格的なCADを取り入れてシミュレーションをさせるのではなく、 Micro$oft の Excel を使ったシミュレーションのお話です。
Excelのアドインを多用していますので、適宜インストールしてから試してみてください。
方程式が解ければ…
ホーキンス・リンクは、「1自由度のリンク機構」です。 そのため、モータのクランクの角度が与えられたら、各関節の位置は原則として一意に決まります。
関節の位置のうち、"D"点は、固定されているので「既知」です。
D = AD AD = 2
また、"B"点はクランクの角度θから簡単に求めることが出来ます。
B - A = AB * ej * θ AB = 1
残った"C"点は、"B"点と"D"点からの距離が2.5 (BC, CD) になる点です。 "D"点から見た"C"の角度をφとすると、
C - D = CD * ej * φ CD = 2.5 |B - C| = BC BC = 2.5
"E"点は"B"点と"C"点が求められれば、計算できます。
E = B + (C - B) * (BE / BC) BE = 5
と、書いていくと要はθからφを求めるだけの計算であることがわかります。 えぇい、このくらいの方程式解いちゃる。
と、思ったけど、ほどなく敗北。 こりゃ、めんどくさいわい。
ゴール・シークを使う
こういう方程式をヒューリスティックに解くための仕組みがExcelには装備されています。 「ゴール・シーク」というのが、そのツールの名前です。 まずは、方程式をExcelに書き出します。
A | B | |
---|---|---|
1 | AB | 1 |
2 | AD | 2 |
3 | BC | 2.5 |
4 | CD | 2.5 |
5 | BE | 5 |
6 | ||
7 | theta | 0 |
8 | phi | 0 |
9 | ||
10 | A | =0 |
11 | D | =B2 |
12 | B | =IMSUM(B10,IMPRODUCT(B1,IMEXP(COMPLEX(0,B7,"j")))) |
13 | C | =IMSUM(B11,IMPRODUCT(B4,IMEXP(COMPLEX(0,B8,"j")))) |
14 | E | =IMSUM(B12,IMPRODUCT(IMSUB(B13,B12),B5/B3)) |
15 | BC actual | =IMABS(IMSUB(B12,B13)) |
16 | BC error | =B15-B3 |
"BC actual"は、与えられたθとφから計算された"BC"の長さです。 この長さと理想的な"BC"の長さとの差を"BC error"と定義しておいて、「BC error がゼロになるφを求める」のが「ゴール」になります。
この条件で「ゴール・シーク」を動かすと、
多少の誤差は残っていますが、みごとに答えが見つかりました。 この作業をθが 0° から 360° までの範囲で変更しながら"E"点の値を記録していくと、軌跡が求まります。
考えてみたら、すごく手間のかかる作業です。 遠慮しておきます。
マクロでこなす方法が無いでもない
「ゴール・シーク」の一連の作業をマクロに記録するとこうなりました。
Sub Macro1() Range("B16").GoalSeek Goal:=0, ChangingCell:=Range("B8") End Sub
表を作っておいて、それぞれのθについてこのマクロの記述と同様の方法で解を求めれば"E"点の軌跡が求まります。
実物は、こちら。
この方法でも良いのですが、後編では、別の方法を使います。
参考文献
「ゴール・シーク」は、この文献で紹介されていました。
この本が必要になるほどのマクロは作成していません。
そこが知りたい!Excel VBAプロの技 Excel97/2000/2002/2003対応!
- 作者: 井川 はるき
- 出版社/メーカー: ナツメ社
- 発売日: 2003/11
- メディア: 単行本
コメント 0