Archive for the ‘Uncategorized’ Category

Teory of Applied Robotics (Successive rotation about global axes – Penyelesaian soal)

  1. Exercise/Example 3

 

Figure 2.5. Point P on slab

Figure 2.5. Point P on slab

Tema: Successive rotation about global axes.

The final position of the corner P (5, 30, 10) of the slab shown in Figure 2.5 after 30deg rotation about the Z-axis, followed by 30deg about the X-axis, and then 90deg about the Y-axis can be found by first multiplying QZ, 30 by [5, 30, 10]T to get the new global position after first rotation

Rotation

% Skrip MATLAB 2011b

% diketahui

% definisi variabel untuk sudut P dari slab/papan

p1 = 5;

p2 = 30;

p3 = 10;

% matrik P =

P = [p1;p2;p3];

%——————————–

 

% Z_axis = 30 derajat pada sumbu z

% X_axis = 30 derajat pada sumbu x

% Y_axis = 90 derajat pada sumbu y

 

Z_axis = pi/6; %30 derajat pada sumbu z

X_axis = pi/6; %30 derajat pada sumbu x

Y_axis = pi/2; %90 derajat pada sumbu y

 

% pertanyaan: Posisi P setelah rotasi pada

% sumbu z=30 derajat, dilanjutkan sumbu x=30 derajat, dan

% sumbu y=90 derajat.

 

%—Penyelesaian————————————–

% Maka global position setelah rotasi pertama sumbu z

% |X2|  |cos(Z_axis) -sin(Z_axis) 0|

% |Y2| =|sin(Z_axis)  cos(Z_axis) 0| * [P] = ?

% |Z2|  |0            0           1|

 

%Pembentukan matrik Pz

Pz = [cos(Z_axis) -sin(Z_axis) 0;

sin(Z_axis)  cos(Z_axis) 0;

0            0           1];

 

Qz_30 = Pz * P;

 

%———————————————

% kemudian dirotasi pada sumbu x=30 derajat

% Maka global position setelah rotasi kedua sumbu x

% |X3|  |1      0            0     |

% |Y3| =|0 cos(X_axis) -sin(X_axis)| * [Qz_30]= ?

% |Z3|  |0 sin(X_axis)  cos(X_axis)|

 

 

 

 

%Pembentukan matrik Px

Px = [1 0 0;

0 cos(X_axis) -sin(X_axis);

0 sin(X_axis)  cos(X_axis)];

 

Qx_30 = Px * Qz_30;

 

%———————————————

% kemudian dirotasi pada sumbu y=90 derajat

% Maka global position setelah rotasi kedua sumbu x

% |X4|  |cos(Y_axis)   0   sin(Y_axis)|

% |Y4| =|    0         1        0     | * [Qx_30] = ?

% |Z4|  |-sin(Y_axis)  0   cos(Y_axis)|

 

%Pembentukan matrik Py

Py = [cos(Y_axis)  0 sin(Y_axis);

0            1 0;

-sin(Y_axis) 0 cos(Y_axis)];

 

Qy_90 = Py * Qx_30;

 

%———–selesai——————–

 

Hasil:

Posisi titip P setelah dirotasi pada sumbu z sebesar 30’ adalah:

 

 

 

Kemudian posisi titip P setelah dirotasi pada sumbu x sebesar 30’ adalah:

 

 

 

 

 

Kemudian posisi titip P setelah dirotasi pada sumbu y sebesar 90’ adalah:

 

 

  1. Exercise/example 198

Rotation of a body point about a global axis. The slab shown in Figure 2.5 is turning about the Z-axis with 10 deg /s. The global velocity of the corner point P(5, 30, 10), when the slab is at = 30 deg, is:

Rotation_b

 

 

% Skrip MATLAB 2011b

% definisi variabel untuk konstanta GRB

a1=sin(pi/6);  a2=-cos(pi/6);  a3=0;

a4=cos(pi/6);  a5=-sin(pi/6);  a6=0;

a7=0;          a8=0;           a9=0;

 

%matrik GRB nya

GRB = [a4 a5 a3;

a1 a4 a6;

a7 a8 a9];

 

GRBt = [a5 a2 a3;

a4 a5 a6;

a7 a8 a9];

 

 

%definisi variabel untuk BrP

b1=5;

b2=30;

b3=10;

BrP = [b1;b2;b3];

 

%nilai sudut putaran = alpha

a=10;

alpha=(a*pi)/180;

 

% global velocity of the corner point

GvP = alpha * GRBt *BrP;

 

% global positionnya

GrP = GRB * BrP;

 

%———–selesai——————————

Hasil:

à global velocity of the corner P point

à global position

 

 

 

 

 

 

% Example 72 Moving body coordinate frame.

% Figure 4.2 shows a point P at BrP = 0.1i + 0.3j + 0.3k in a body frame B, which is rotated 50deg about the Z-axis, and translated 1 along X, 0.5 along Y, and 0.2 along the Z axes.

% The position of P in global coordinate frame is:

% Gr = (GRB * BrP) + Gd

 

%Pengujian Example 72

%definisi variabel untuk konstanta GRB

i = 0.1;

j = 0.3;

k = 0.3;

%BrP = poin P pada body frame

BrP = [i;j;k];

%——————————–

az = 50; %50 derajat pada sumbu z

a1=cos(az);  a2=-sin(az); a3=0;

a4=sin(az);  a5=cos(az);  a6=0;

a7=0;        a8=0;        a9=1;

 

%matrik GRB nya

GRB = [a1 a2 a3;

a4 a5 a6;

a7 a8 a9];

%——————————–

tx = -1;

ty = 0.5;

tz = 0.2;

 

%matrik Gd = nilai translasi (translation value)

Gd = [tx;ty;tz];

 

% The position of P in global coordinate frame is

Gr1 = GRB;

Gr2 = BrP;

Gr = GRB * (BrP + Gd);

 

 

 

 

 

 

 

 

 

% Example 198 Rotation of a body point about a global axis.

% The slab shown in Figure 2.5 is turning about the Z-axis with % a = 10 deg /s. The global velocity of the corner point P(5, 30, 10), when the slab is at ? = 30 deg, is:

 

%Pengujian Example 198

%definisi variabel untuk konstanta GRB

a1=sin(pi/6); a2=-cos(pi/6);  a3=0;

a4=cos(pi/6);  a5=-sin(pi/6);  a6=0;

a7=0;          a8=0;           a9=0;

 

%matrik GRB nya

GRB = [a4 a5 a3;

a1 a4 a6;

a7 a8 a9];

 

GRBt = [a5 a2 a3;

a4 a5 a6;

a7 a8 a9];

 

%definisi variabel untuk BrP

b1=5;

b2=30;

b3=10;

BrP = [b1;b2;b3];

 

%nilai sudut putaran = alpha

a=10;

alpha=(a*pi)/180;

 

%Global positionnya

GrP = GRB * BrP;

 

% global velocity of the corner point

GvP = alpha * GRBt *BrP;

%——————————————————–

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Exercise No.2 halaman 81 (Body point and global rotations.)

The point P is at BrP = [1, 2, 1]T in a body coordinate B(Oxyz).
Find the final global position of P after

  1. A rotation of 30 deg about the X-axis, followed by a 45 deg rotation about the Z-axis
  2. A rotation of 30 deg about the Z-axis, followed by a 45 deg rotation about the X-axis.

Penyelesaian dengan Matlab:

 

Theory of Applied Robotics (Bab I dan Bab II – Resume)

 

Robot merupakan perangkat serbaguna yang terdiri atas bagian mekanik, sistem sensor, sistem kontrol otomatis. Teori yang mendasari bidang robotika adalah mengandalkan pada hasil riset di bidang mesin, elektrik, elektronika, kotrol otomasi, matematika, dan ilmu komputer. Sekarang banyak aplikasi yang rumit seperti pengelasan, pengecatan, dan perakitan, yang memerlukan lebih banyak kemampuan dalam pergerakan dan pengindraan. Karenanya sebuah robot merupakan perangkat teknik yang multi disiplin. Teknik mesin menangani masalah desain dari komponen mesin, lengan, end-effector, dan juga bertanggung jawab untuk masalah kinematics, dynamics, dan analisis kontrol dari robot. Teknik listrik/elektro menangani masalah pada robot a.l.: aktuator, sensor, power, dan sistem kontrol. Teknik perancangan sistem menangani masalah perception, pengindraan, dan metode kontrol dari robot. Bagian pemrograman (Software engineering) bertanggung jawab untuk masalah logika, kecerdasan, komunikasi, dan jaringan.

Hingga sekarang sudah ada lebih dari 1000 organisasi, asosiasi, dan klub yang berhubungan dengan robotika; lebih dari 500 majalah, jurnal, dan  koran yang berhubungan dengan robotika; lebih dari 100 konferensi, dan kompetisi yang berhubungan dengan robotika; dan lebih dari 50 mata kuliah di perguruan tinggi yang berhubungan dengan robotika. Robot mengisi sejumlah besar aplikasi di industri dan digunakan untuk berbagai operasi teknologi. Robot meningkatkan produktifitas para pekerja di industri, mengurangi kelelahan, monoton, ataupun bahaya dari pekerjaan tersebut.

Jika dilihat kembali komponen dari robot, salah satunya adalah manipulator secara kinematik tersusun atas link yang terkoneksi oleh joint untuk membentuk sebuah rantai kinematik. Robot sebagai sebuah sistem terdiri atas sebuah manipulator atau rover, sebuah wrist, sebuah end-effector, aktuator, sensor-sensor, kontroler, prosesor, dan juga perangkat lunak. Robot sendiri dibagi menjadi enam kelas diantaranya adalah:

  1. Manual handling device yaitu robot yang dioperasikan oleh operator
  2. Fixed sequence robot yaitu perangkat yang melakukan tahapan pekerjaan tertentu secara berturut-turut sesuai ditentukan dan dengan program yang tetap.
  3. Variable sequence yaitu perangkat yang melakukan tahapan pekerjaan tertentu secara berturut-turut sesuai ditentukan, namun dapat diprogram
  4. Playback robot yaitu operator manusia yang melakukan suatu tugas secara manual sebagai contoh yang dapat direkam untuk kemudian diputar kembali. Robot dalam hal ini dapat melakukan gerakan yang sama sesuai dengan informasi yang terekam.
  5. Numerical control robot yang dalam hal ini si operator menyuplai robot dengan program gerakan, lebih dari sekedar mengajarkannya suatu tugas secara manual.
  6. Intelligent robot yaitu sebuah robot dengan kemampuan untuk memahami lingkungannya dan kemampuan untuk secara sukses menyelesaikan suatu tugas meskipun perubahan pada lingkungan sekitarnya dimana ia harus bergerak.

 

Selain itu robot juga diklasifikasikan oleh kriteria lainnya seperti: geometry, workspace, actuation, control, dan application. Ada dua macam robot yaitu serial dan paralel. Serial robot dibuat dari serangkaian rigid link, yang masing-masing bagian dari link  dihubungkan dengan sebuah revolute (R) atau prismatic (P) joint. Sebuah R atau P joint hanya menyediakan satu derajat kebebasan, dengan rotasi dan translasi masing-masing. Bagian final link dari robot biasa disebut end-effector, merupakan anggota pengoperasian robot yang berinteraksi dengan lingkungannya. Untuk memperoleh poin dari orientasi yang diinginkan, dalam sebuah area kerja robot, maka robot paling tidak memerlukan 6 DOF (Degree of Freedom). Karenanya robot paling tidak harus memiliki 6 link dan 6 joint. Kebanyakan robot menggunakan 3 DOF untuk posisi pergelangan tangan, dan menggunakan 3 DOF lainnya untuk mengorientasikan end-effector terhadap pergelangan tangan. Pada setiap link dari robot disertakan kerangka koordinat Cartesian yang saling berhubungan satu sama lain. Oleh karena itu untuk menentukan posisi dan orientasi dari end-effector, perlu kiranya menemukan kerangka dari end-effector dalam kerangka dasar.

 

 

 

 

 

Kinematika

Kinematika merupakan ilmu geometri yang berbicara tentang gerakan. Dan hal tersebut dibatasi pada deskripsi geometri murni dari gerakan dalam arti posisi, orientasi, dan waktu derivatifnya (turunan waktu). Dalam bidang robotika, deskripsi kinematika dari manipulator dan tugasnya dimanfaatkan untuk mengatur persamaan dasar bagi dinamika dan kontrol.

 

Rotasi kinematika

Tujuan dari bagian ini adalah untuk mempelajari bagaimana menentukan transformasi matrik dari dua frame koordinat kartesian B dan G dengan dengan asal usul yang sama dengan menerapkan rotasi pada sumbu utama. Kemudian tujuan berikutnya adalah untuk menguraikan matriks transformasi kepada serangkaian rotasi utama yang diperlukan. Rotasi kinematik ini meliputi hal-hal antara lain:

  1. Rotasi pada sumbu kartesian umum
  2. Rotasi berurutan pada sumbu kartesian umum
  3. Sudut Roll-Pitch-Yaw umum
  4. Rotasi sumbu kartesian lokal
  5. Rotasi berurutan pada sumbu kartesian lokal
  6. Sudut Euler
  7. Sudut Roll-Pitch-Yaw lokal
  8. Rotasi koordinat lokal versus koordinat umum
  9. Transformasi umum
  10. Transformasi aktif dan pasif

 

Kinematika orientasi

Pada bagian ini, ada beberapa metode yang berbeda untuk mewakili rotasi, namun tidak banyak yang pada dasarnya berbeda. Parameter atau koordinat yang diperlukan untuk benar-benar menggambarkan orientasi dari rigit body relative untuk beberapa kerangka acuan kadang-kadang disebut attitude coordinate. Ada dua masalah yang melekat dalam mewakili rotasi, keduanya terkait dengan sifat tak terbantahkan dari rotasi. Kedua hal tersebut yaitu:

  1. Rotasi tidak bolak-balik.
  2. Rotasi spasial tidaklah secara topologi memungkinkan pemetaan yang halus dalam ruang Euclidean tiga

Tujuan dari bagian ini adalah untuk menentukan transformasi matrik antara dua kerangka koordinat kartesian B dan G dengan asal usul yang sama ketika B berputar sebesar φ pada sumbu  . Kemudian juga untuk menentukan sudut φ dan sumbu  dari rotasi untuk matriks transformasi yang diberikan.

 

Kinematika gerakan

Gerak tak beraturan pada body B yang berhubungan dengan body G yang lain disebut rigid body motion dan dapat dinyatakan dengan

 

Kinematika maju

Dengan joint variable pada robot, kita dapat menentukan posisi dan orientasi dari setiap link pada robot, untuk satu set karakteristik geometris robot. Pada bagian ini disertakan sebuah kerangka koordinat kepda setiap link dan menentukan konfigurasinya terhadap kerangka tetangga lainnya menggunakan metode rigid motion. Analisis tersebut disebut kinematika maju (forward kinematics).

Gambar 1. Link (i) dan beginning joint i-1 dan end joint i

 

Kinematika inverse

Kinematika terbalik (inverse kinematics) mengacu guna menentukan joint variable dari robot untuk posisi tertentu dan orientasi kerangka dari endeffector. Kinematika maju (forward kinematics) dari 6 DOF robot menghasilkan matriks transformasi 4×4.

Kecepatana sudut

Kecepatan sudut berputar tubuh B dalam kerangka rotasi global G, adalah kecepatan berputar seketika tubuh, yang berhubungan dengan G. Kecepatan sudut adalah besaran vectorial. Menggunakan deskripsi analisis kecepatan sudut, pada buku ini diperkenalkan kecepatan dan waktu turunan dari matriks transformasi homogen.

 

Kinematika kecepatan

Analisis kecepatan dari sebuah robot dibagi menjadi kecepatan Kinematika forward dan inverse. Memiliki tingkat waktu variabel bersama dan penentuan kecepatan Cartesian end-effector dalam kerangka koordinat global disebut Kinematikaa kecepatan maju (forward). Penentuan tingkat waktu variabel bersama berdasarkan kecepatan dari end-effector disebut Kinematika kecepatan terbalik (inverse).

 

Metode numerik dalam Kinematika

Ada beberapa perhitungan numerik umum yang diperlukan dalam kinematika robot. Solusi untuk satu set persamaan aljabar linear dan nonlinear adalah yang paling penting untuk menghitung inversi matriks dan matriks Jacobian. Sebuah solusi yang diterapkan untuk satu set persamaan linear adalah faktorisasi LU, dan metode praktis untuk satu set persamaan nonlinier adalah metode Newton-Raphson. Kedua metode ini berperan dalam algoritma yang diterapkan.

 

 

link file multipleks display 7 segment

http://www.4shared.com/rar/ma_Ln_of/multipleks_display_7_segment.html

Praktikum I – Sistem Digital

Lembar praktikum dapat di unduh disini

Controlling 8 Mini Servo Motor Using Arduino 017 Board

Here are the code to control 8 servo motors, that used to move the four legged robot.

//Minggu, 05 Pebruari 2011 12.00 WITA
//file   : inisialisasi_Awal_Servo
//author : Budi Rahmani
//Program menggerakkan robot maju

#include <Servo.h>

Servo kananDepan1;    // mendefinisikan objek servo
Servo kananDepan2;    // mendefinisikan objek servo
Servo kiriDepan1;     // mendefinisikan objek servo
Servo kiriDepan2;     // mendefinisikan objek servo
Servo kananBelakang1; // mendefinisikan objek servo
Servo kananBelakang2; // mendefinisikan objek servo
Servo kiriBelakang1;  // mendefinisikan objek servo
Servo kiriBelakang2;  // mendefinisikan objek servo

int pos       = 90; // posisi awal servo
int posAwal   = 90; // posisi awal servo
int value     = 15; // nilai delay
int nmin_Hor  = 100;// nilai posisi minimal servo horizontal
int nmax_Hor  = 140;// nilai posisi maksimal servo horizontal
int nmin_Ver  = 90; // nilai posisi minimal servo vertikal
int nmax_Ver  = 140;// nilai posisi maksimal servo vertikal */
int interval  = 5;  // interval derajat pergeseran servo

void setup()
{
kananDepan1.attach(0);   // melakukan koneksi ke motor (pin 0 ON)
kananDepan2.attach(1);   // melakukan koneksi ke motor (pin 1 ON)
kiriDepan1.attach(2);    // melakukan koneksi ke motor (pin 2 ON)
kiriDepan2.attach(3);    // melakukan koneksi ke motor (pin 3 ON)
kananBelakang1.attach(4);// melakukan koneksi ke motor (pin 4 ON)
kananBelakang2.attach(5);// melakukan koneksi ke motor (pin 5 ON)
kiriBelakang1.attach(6); // melakukan koneksi ke motor (pin 6 ON)
kiriBelakang2.attach(7); // melakukan koneksi ke motor (pin 7 ON)

kananDepan1.write(posAwal+10);
kananDepan2.write(posAwal);
kiriDepan1.write(posAwal+3);
kiriDepan2.write(posAwal);
kananBelakang1.write(posAwal);
kananBelakang2.write(posAwal);
kiriBelakang1.write(posAwal);
kiriBelakang2.write(posAwal+10);

}

void loop()
{
//Coba untuk motor servo kanan depan
int nmin_Hor_KnD  = 100;   // nilai posisi minimal servo horizontal
int nmax_Hor_KnD  = 140;   // nilai posisi maksimal servo horizontal
int nmin_Ver_KnD  = 90;    // nilai posisi minimal servo vertikal
int nmax_Ver_KnD  = 140;   // nilai posisi maksimal servo vertikal

//Pergerakan servo horizontal
for(pos = nmin_Hor_KnD; pos < nmax_Hor_KnD; pos +=interval )
{
kananDepan1.write(pos);
delay(value);  // delay
}
//Pergerakan servo vertikal
for(pos = nmax_Ver_KnD; pos >=nmin_Ver_KnD ; pos -=interval)
{
kananDepan2.write(pos);
delay(value);  // delay
}
//Pergerakan servo horizontal (kembali)
for(pos = nmax_Hor_KnD; pos >=nmin_Hor_KnD ; pos -=interval)
{
kananDepan1.write(pos);
delay(value);  // delay
}
//Pergerakan servo vertikal (kembali)
for(pos = nmin_Ver_KnD; pos < nmax_Ver_KnD; pos +=interval )
{
kananDepan2.write(pos);
delay(value);  // delay
}
//=============================================
//Coba untuk motor servo kiri Belakang
//Pergerakan servo horizontal
//KrD = Kiri Depan
int nmin_Hor_KrB  = 50;   // nilai posisi minimal servo horizontal
int nmax_Hor_KrB  = 100;  // nilai posisi maksimal servo horizontal
int nmin_Ver_KrB  = 100;  // nilai posisi minimal servo vertikal
int nmax_Ver_KrB  = 150;  // nilai posisi maksimal servo vertikal

for(pos = nmax_Hor_KrB; pos >=nmin_Hor_KrB ; pos -=interval)
{
kiriBelakang1.write(pos);
delay(value);  // delay
}
//Pergerakan servo vertikal
for(pos = nmax_Ver_KrB; pos >=nmin_Ver_KrB ; pos -=interval)
{
kiriBelakang2.write(pos);
delay(value);  // delay
}

//Pergerakan servo horizontal (kembali)
for(pos = nmin_Hor_KrB; pos < nmax_Hor_KrB; pos +=interval )
{
kiriBelakang1.write(pos);
delay(value);  // delay
}
delay(value*3);
//Pergerakan servo vertikal (kembali)
for(pos = nmin_Ver_KrB; pos < nmax_Ver_KrB; pos +=interval )
{
kiriBelakang2.write(pos);
delay(value);  // delay
}

//===================================================
//Coba untuk motor servo kiri depan
//Pergerakan servo horizontal
//KrD = Kiri Depan
int nmin_Hor_KrD   = 50;   // nilai posisi minimal servo horizontal
int nmax_Hor_KrD  = 100;   // nilai posisi maksimal servo horizontal
int nmin_Ver_KrD   = 50;   // nilai posisi minimal servo vertikal
int nmax_Ver_KrD  = 100;   // nilai posisi maksimal servo vertikal

for(pos = nmax_Hor_KrD; pos >=nmin_Hor_KrD ; pos -=interval)
{
kiriDepan1.write(pos);
delay(value);  // delay
}
//Pergerakan servo vertikal
for(pos = nmin_Ver_KrD; pos < nmax_Ver_KrD; pos +=interval )
{
kiriDepan2.write(pos);
delay(value);  // delay
}
//Pergerakan servo horizontal (kembali)
for(pos = nmin_Hor_KrD; pos < nmax_Hor_KrD; pos +=interval )
{
kiriDepan1.write(pos);
delay(value);  // delay
}
delay(value*3);
//Pergerakan servo vertikal (kembali)
for(pos = nmax_Ver_KrD; pos >=nmin_Ver_KrD ; pos -=interval)
{
kiriDepan2.write(pos);
delay(value);  // delay
}
//=============================================
//Coba untuk motor servo kanan Belakang
int nmin_Hor_KnB  = 90;   // nilai posisi minimal servo horizontal
int nmax_Hor_KnB  = 140;  // nilai posisi maksimal servo horizontal
int nmin_Ver_KnB  = 40;   // nilai posisi minimal servo vertikal
int nmax_Ver_KnB  = 90;   // nilai posisi maksimal servo vertikal */

//Pergerakan servo horizontal
for(pos = nmin_Hor_KnB; pos < nmax_Hor_KnB; pos +=interval )
{
kananBelakang1.write(pos);
delay(value);  // delay
}
//Pergerakan servo vertikal
for(pos = nmin_Ver_KnB; pos < nmax_Ver_KnB; pos +=interval )
{
kananBelakang2.write(pos);
delay(value);  // delay
}

//Pergerakan servo horizontal (kembali)
for(pos = nmax_Hor_KnB; pos >=nmin_Hor_KnB ; pos -=interval)
{
kananBelakang1.write(pos);
delay(value);  // delay
}
//Pergerakan servo vertikal (kembali)
for(pos = nmax_Ver_KnB; pos >=nmin_Ver_KnB ; pos -=interval)
{
kananBelakang2.write(pos);
delay(value);  // delay
}
}