Anda di halaman 1dari 11

Laporan Praktikum VII

RE304 Pengantar Robotika


Dosen : Ahmad Riyad Firdaus, S.Si., M.T., Ph.D

Pokok Pembahasan : KINEMATIKA INVERSE ROBOT TANGAN

Disusun Oleh :
Muhammad Alfarizi Trangganu (4221701003)

Program Studi Teknik Robotika


Jurusan Teknik Elektro
Politeknik Negeri Batam

2018
1.2 Simulasi Dinamika Robot Tangan Satu Sendi

Untuk mengunakan persamaan model dinamika robot tangan satu sendi, maka dapat
dilakukan simulasi dengan Microsoft C# Express dengan langkah sebagai berikut:

1. Buat project baru kemudian tambahkan chart, pictureBox, button, textbox, label dan timer
seperti berikut :

Gambar 11.3 Tampilan form simulasi dinamika robot tangan satu sendi

2. Double klik tombol Run dan tambahkan rutin berikut :


private void buttonRun_Click(object sender, EventArgs e)
{
m = double.Parse(textBox1.Text); L
= double.Parse(textBox2.Text); g =
double.Parse(textBox3.Text); a =
double.Parse(textBox4.Text); tau =
double.Parse(textBox5.Text); dt =
0.04;
ddTeta = 0; dTeta = 0;
teta = 0;
timer1.Enabled = true;
timer2.Enabled = true;

3. Tambahkan global variable berikut :


double m,L,a,g,I, tau, dt;
double A, B;
double teta, dTeta, ddTeta;
int i;
4. Double klik timer1 dan tambahkan program berikut :
private void timer1_Tick(object sender, EventArgs e)
{
I = m * a * a;
A = (m * a * a) + I;
B = m * g * a;
ddTeta = (tau / A) - ((B / A) * dTeta * Math.Sin(teta));
dTeta = dTeta + ddTeta *dt;
teta = teta + dTeta *dt;
label5.Text = string.Format("Teta = {0}",teta);

chart1.Series["Teta"].Points.AddXY(((i) * timer1.Interval),
teta); i++;
if (teta >= 360)
{
timer1.Enabled = false;
}
}

5. Double klik timer2 dan tambahkan program berikut :


private void timer2_Tick(object sender, EventArgs e)
{
drawAnimation();
}

6. Buat fungsi untuk menampilkan gambar animasi seperti berikut :


private void drawAnimation()
{
int aa,bb, LL1;
double x, x1,x2, y, y1, y2;

pictureBox1.Refresh();
aa = pictureBox1.Width/2;
bb = pictureBox1.Height/2;
LL1 = 100;
System.Drawing.Graphics g;
g = pictureBox1.CreateGraphics();
Pen myPen = new Pen(System.Drawing.Color.Red,
5); g.DrawEllipse(myPen, aa-5, bb-5, 10, 10);

x=LL1*Math.Sin(teta*Math.PI/180);
x1=x+aa;
x2=x+aa;

y=LL1*Math.Cos(teta*Math.PI/180);
y1=pictureBox1.Height-(y+bb);
y2=pictureBox1.Height-(y+bb);

myPen.Width=7;
myPen.Color = Color.Blue;
g.DrawLine(myPen,aa,bb,(int)x1,(int)y1);
}

7. Klik Debug, kemudian pilih Start Debuging atau tekan F5 untuk menjalankan program.
8. Setting input seperti berikut :
Gambar 11.4 Setting parameter persamaan model dinamika robot tangan satu sendi

9. Klik tombol Run dan perhatikan yang terjadi !

Gambar 11.5 Tampilan hasil simulasi model dinamika robot tangan satu sendi

10. Ganti massa lengan robot menjadi 1 kg. Klik kembali tombol Run dan perhatikan perubahan
yang terjadi !

Hasil :
1.3 Kontroler PID Pada Dinamika Robot Tangan Satu Sendi
Untuk mengatur sudut robot tangan, maka dapat digunakan kontroler PID seperti terlihat
pada Gambar 11.6. Sudut posisi target θtarget merupakan input posisi sudut dengan fungsi sinusoida
dengan amplitudo 90o. Gerakan tangan robot akan bergerak dari posisi 0 o menuju ke 90o, kemudian
bergerak kembali menuju 0o. Setelah itu tangan robot akan bergerak ke arah -90o dan kembali lagi
menuju 0o, demikian seterusnya.

Gambar 11.6 Sistem kendali posisi sudut robot tangan satu sendi

Untuk merealisasikan sistem kendali posisi sudut lengan robot, maka dapat dilakukan simulasi
menggunakan Microsoft Visual C# dengan langkah-langkah sebagai berikut:

1. Buat project baru kemudian tambahkan chart, pictureBox, button, textbox, label dan timer seperti
berikut :
Gambar 11.7 Tampilan form simulasi kendali posisi sudut robot tangan satu sendi

2. Double klik tombol Run dan tambahkan rutin berikut :

private void buttonRun_Click(object sender, EventArgs e)


{
m = double.Parse(textBox1.Text);
L = double.Parse(textBox2.Text);
g = double.Parse(textBox3.Text);
a = double.Parse(textBox4.Text);

//PID Setting
Kp = double.Parse(textBox6.Text);
Kd = double.Parse(textBox7.Text);
Ki = double.Parse(textBox8.Text);
initialTeta = double.Parse(textBox9.Text);
teta = initialTeta;

Min = -127;
Max = 127;
Sum = 0;
PID = 0;
error = 0;
error_1 = 0;

dt = timer1.Interval;
dt = dt / 1000;
label11.Text = string.Format("dt = {0} mS", dt);

ddTeta = 0;
dTeta = 0;

timer1.Enabled = true;
timer2.Enabled = true;
}

3. Tambahkan global variable berikut :


double m,L,a,g,I, tau, dt;
double A, B;
double teta, dTeta, ddTeta;
double error, error_1, Kp, Kd, Ki, Sum, PID, Max, Min;
double targetTeta, initialTeta;
int i;
4. Double klik timer1 dan tambahkan program berikut :
private void timer1_Tick(object sender, EventArgs e)
{
targetTeta = 90 *Math.Sin(Math.PI/180*i);
error = targetTeta - teta;

Sum = Sum + error;


PID = Kp * error + Ki * dt * Sum + ((Kd / dt) * (error - error_1));
if (PID > Max) { PID = Max; }
if (PID < Min) { PID = Min; }
error_1 = error;
tau = PID;

I = m * a * a;
A = (m * a * a) + I;
B = m * g * a;
ddTeta = (tau / A) - ((B / A) * dTeta * Math.Sin(teta));
dTeta = dTeta + ddTeta *dt;
teta = teta + dTeta *dt;
label5.Text = string.Format("Teta = {0}",teta);

chart1.Series["Teta"].Points.AddXY(((i) * timer1.Interval), teta);


chart1.Series["Target"].Points.AddXY(((i) * timer1.Interval),
targetTeta); chart2.Series["Tau"].Points.AddXY(((i) * timer1.Interval),
tau); textBox5.Text = tau.ToString();

i++;
}

5. Double klik timer2 dan tambahkan program berikut :


private void timer2_Tick(object sender, EventArgs e)
{
drawAnimation();
}

6. Buat fungsi untuk menampilkan gambar animasi seperti berikut :


private void drawAnimation()
{
int aa,bb, LL1;
double x, x1,x2, y, y1, y2;

pictureBox1.Refresh();
aa = pictureBox1.Width/2;
bb = pictureBox1.Height/2;
LL1 = 100;

System.Drawing.Graphics g;
g = pictureBox1.CreateGraphics();
Pen myPen = new Pen(System.Drawing.Color.Red,
5); g.DrawEllipse(myPen, aa-5, bb-5, 10, 10);

x=LL1*Math.Sin(teta*Math.PI/180);
x1=x+aa;
x2=x+aa;

y=LL1*Math.Cos(teta*Math.PI/180);
y1=pictureBox1.Height-(y+bb);
y2=pictureBox1.Height-(y+bb);

myPen.Width=7;
myPen.Color = Color.Blue;
g.DrawLine(myPen,aa,bb,(int)x1,(int)y1);
}

7. Klik Debug, kemudian pilih Start Debuging atau tekan F5 untuk menjalankan program.
8. Setting input seperti berikut :

Gambar 11.8 Setting parameter kendali posisi sudut robot tangan satu sendi

9. Klik tombol Run dan perhatikan yang terjadi !

Gambar 11.9 Tampilan hasil simulasi kendali posisi sudut robot tangan satu sendi

10. Ganti massa lengan robot menjadi 0.5 kg. Klik kembali tombol Run dan perhatikan perubahan
yang terjadi !
Hasil :
1.4 Latihan
1. Sebuah robot tangan 1 DOF memiliki konfigurasi seperti pada Gambar 11.10. Tentukanlah
persamaan dinamika untuk menghitung sudut sendi (θ) dengan menggunakan persamaan
Lagrange!
2. Buatlah program untuk mensimulasikan persamaan yang dihitung pada soal nomor 1 dengan
parameter robot sebagai berikut:

 Panjang lengan :1m


 Massa lengan : 0.08 kg
 Torsi motor : 5 N.m
 Jarak pusat massa : 0.5 m

 Gerakan sendi robot : 0o s.d 360o

a. Tampak Atas

b. Tampak samping

Gambar 11.10 Konfigurasi robot tangan satu sendi

Hasil :
~Latihan 1.4~

Anda mungkin juga menyukai