続きです。(この回の最後)
それでは、角度をいろいろ変えていって、どういう軌道をするのかを表示させてみることにします。開始の角度、終了の角度、何分割するか、を指示して、ループさせます。
レイヤと色を変えてます。線種と線幅も指示しようと思えば簡単に出来ますがここではしていません。

こういうのを書いてみると、ついつい、大学生時代を思い出してしまいます。研究室はメカ的、ロボット的なことをするトコロでした。私はファジィの勉強をしたかったのですが研究室に入れずに別のところを探していると、クラブの先輩がいた研究室に半ば強制的に?入ったんですが、そこが、そういうトコロでした。そこでは、Z80CPUを8個とか16個とかを並列に接続(ハイパーキューブ)して画像処理をするような研究もしてましたが、もうネタ切れなので、という事で、「Occam」というプログラミング言語を使った並列処理プログラムを作りましょうという事になり。で、何のプログラム?って事で、ロボットアームの、みたいな話になりました。まぁ、動かす実際のモノが無かったのでパソコン内だけでの話だったんですが~
各ノード単位で並列計算させて同期させて最終位置計算、みたいな。6軸想定しているとなんだか混乱~ ラグランジュ式も解けないんで1つ制限入れて。まぁ、このロボット制御をファジィ制御させる、というネタがある事は分ってましたが、敢えて無視しちゃったりして。
それでは、角度をいろいろ変えていって、どういう軌道をするのかを表示させてみることにします。開始の角度、終了の角度、何分割するか、を指示して、ループさせます。
レイヤと色を変えてます。線種と線幅も指示しようと思えば簡単に出来ますがここではしていません。
// リンクその4
// リンク1の角度をどんどん変えて作図させます
#VAR
dmy1 = "---リンク(1)---" ;dmy1
px1 = 0 ;*位置X
py1 = 0 ;*位置Y
pa1s= 0 ;*開始角度[°]
pa1e=45 ;*終了角度[°]
pa1n= 5 ;*角度分割数
ll1 =50 ;*リンク長さ
lw1 =10 ;*リンク幅
dmy2 = "---リンク(2)---" ;dmy2
px2 ;位置X
py2 ;位置Y
pa2 ;角度[°]
ll2 =80 ;*リンク長さ
lw2 =15 ;*リンク幅
// 作業用
n
lay
col
pa1
no
px
py
ll
lw
pan
w1
w2
w3
w4
w5
w6
w7
w8
#DRAW
CAL n = 0
CAL lay = 0
CAL col = 1
CAL pa1 = pa1s
#WHILE ( n <= pa1n )
LAYER lay
PEN col,SetLineLtp1,SetLineWid1
#GOTO *DRAW1
*RET
CAL lay = lay + 1
#IF (lay > 15)
CAL lay = 0
#END
CAL col = col + 1
#IF (col > 8)
CAL col = 1
#END
CAL pa1 = pa1 + (pa1e - pa1s)/pa1n
CAL n = n + 1
#END
#EXIT
// リンク2本を作図
*DRAW1
CAL no = 1
CAL pan = pa1/180.0*PI
CAL px = px1
CAL py = py1
CAL ll = ll1
CAL lw = lw1
#GOTO *LINKDRAW
*RET1
CAL w1 = ll1*Sin(pan)
CAL w2 = ASIN(w1/ll2)
CAL w3 = -(pan + w2)
CAL pa2 = w3*180.0/PI
CAL no = 2
CAL px2 = px1 + ll1*Cos(pan)
CAL py2 = py1 + ll1*Sin(pan)
CAL pan = (pa1+pa2)/180.0*PI
CAL px = px2
CAL py = py2
CAL ll = ll2
CAL lw = lw2
#GOTO *LINKDRAW
*RET2
#GOTO *RET
// リンク1本を作図
// no = 1、2
*LINKDRAW
CAL w1 = px
CAL w2 = py
CAL w3 = lw/2.0
CAL w4 = pan + 0.5*PI
CAL w5 = pan + 1.5*PI
ARC w1,w2,w3,w4,w5
CAL w1 = px
CAL w2 = py + lw/2.0
CAL w3 = px + ll
CAL w4 = w2
GETREV w5,w6, w1,w2,px,py,pan
GETREV w7,w8, w3,w4,px,py,pan
LINE w5,w6,w7,w8
CAL w1 = px
CAL w2 = py - lw/2.0
CAL w3 = px + ll
CAL w4 = w2
GETREV w5,w6, w1,w2,px,py,pan
GETREV w7,w8, w3,w4,px,py,pan
LINE w5,w6,w7,w8
CAL w3 = px + ll
CAL w4 = py
GETREV w1,w2, w3,w4,px,py,pan
CAL w3 = lw/2.0
CAL w4 = pan + 1.5*PI
CAL w5 = pan + 0.5*PI
ARC w1,w2,w3,w4,w5
#IF ( no == 1 )
#GOTO *RET1
#END
#GOTO *RET2

こういうのを書いてみると、ついつい、大学生時代を思い出してしまいます。研究室はメカ的、ロボット的なことをするトコロでした。私はファジィの勉強をしたかったのですが研究室に入れずに別のところを探していると、クラブの先輩がいた研究室に半ば強制的に?入ったんですが、そこが、そういうトコロでした。そこでは、Z80CPUを8個とか16個とかを並列に接続(ハイパーキューブ)して画像処理をするような研究もしてましたが、もうネタ切れなので、という事で、「Occam」というプログラミング言語を使った並列処理プログラムを作りましょうという事になり。で、何のプログラム?って事で、ロボットアームの、みたいな話になりました。まぁ、動かす実際のモノが無かったのでパソコン内だけでの話だったんですが~
各ノード単位で並列計算させて同期させて最終位置計算、みたいな。6軸想定しているとなんだか混乱~ ラグランジュ式も解けないんで1つ制限入れて。まぁ、このロボット制御をファジィ制御させる、というネタがある事は分ってましたが、敢えて無視しちゃったりして。



