Perancangan robot atau arm manipulator SCARA diawali dengan pembuatan bentuk robot menggunakan software CAD. Robot ini memiliki tiga joint, dua revolute joint dan satu prismatic joint, dan memiliki end effector bertipe vacuum cups. Setelah bentuk robot selesai, dilakukan pencarian parameter Denavit-Hartenberg dan memasukkannya ke dalam program. Pada saat pemrograman, dilakukan forward kinematics untuk mendapatkan matriks transformasi sehingga dapat diketahui letak dan arah dari end effector. Simulasi dilakukan dengan memasukkan variabel parameter DH ke dalam model robot dan menentukan lintasan pergerakan robot menggunakan polynomial orde lima.
Robot SCARA atau manipulator SCARA merupakan salah satu dari tipe mekanisme robot yang sederhana karena umumnya robot ini hanya memiliki tiga degrees of freedom. Biasanya robot ini digunakan untuk keperluan pick and place barang pada suatu industri. Pada portofolio ini, saya merancang robot SCARA sederhana dan melakukan simulasi pick and place menggunakan Python.
Pengerjaan gambar dilakukan menggunakan aplikasi AutoCAD 2013 untuk membuat bentuk robot 3D (satuan dalam meter).
Pada gambar, joint atau sendi yang digunakan yaitu revolute joint dan prismatic joint sehingga robot ini memiliki tiga degrees of freedom. End effector pada gambar diasumsikan bertipe vacuum cups yang dapat menyedot barang-barang kecil menggunakan vakum untuk dipegang oleh robot.
Setelah bentuk robot sudah ditentukan, kemudian dilakukan pencarian parameter DH.
Pertama-tama, pencarian dilakukan dengan meletakkan frame ke setiap link pada robot, seperti peletakkan sumbu joint, titik origin, sumbu x, sumbu y, dan sumbu z. Lalu menghasilkan frame 0 (base), frame 1, frame 2, frame 3, dan frame tool pada robot. Kemudian dilakukan pencarian parameter DH seperti panjang link (link length), putaran link (link twist), perbedaan posisi link (link offset), dan sudut putar joint (joint angle). Semua parameter dimasukkan ke dalam tabel.
Import library
Import library import roboticstoolbox as rtb
from roboticstoolbox import DHRobot, RevoluteMDH, PrismaticMDH
from spatialmath import *
import numpy as np
from math import pi
import matplotlib.pyplot as plt
from matplotlib import cm
Program ini menggunakan Python sebagai bahasa pemrograman. Library atau pustaka python utama yang digunakan pada program ini adalah Robotics Toolbox for Python oleh Peter Corke yang digunakan untuk membuat model robot denavit-hartenberg dan trajectory generation. Pustaka kedua yang digunakan adalah Spatial Math for Python yang digunakan untuk membuat matriks transformasi yang menjabarkan posisi dan orientasi dari frame.
Pembuatan frame base dan tool
tool_offset = -0.1 # offset tool dari link 3
PosisiTool = SE3.Trans(0,0,tool_offset) # Posisi dan rotasi tool relative terhadap frame 3
RotasiTool = SE3.Rz(theta=0, unit='deg')
FrameBase = SE3.Trans(0,0,0)
FrameTool = PosisiTool * RotasiTool
print(FrameBase)
print(FrameTool)
SE3.trans menghasilkan matriks transformasi homogen murni posisi dan SE3.Rz menghasilkan matriks transformasi homogen murni rotasi. Jadi, nilai dari variabel frame adalah 4x4 matriks transformasi homogen yang mendeskripsikan posisi dan orientasi di ruang 3D kartesian. Berikut matriks keluarannya:
frame base
frame tool
Pembuatan model robot
Pada bagian ini, dengan menggunakan tabel parameter DH tadi, dapat dibuat model robot yang pemrosesannya dilakukan oleh pustaka robotics toolbox. Pembuatan model dilakukan dengan memasukkan parameter DH ke dalam format seperti pada kode.
deg = pi/180
robot = DHRobot(
[
RevoluteMDH(d=0.5, qlim=[-150*deg, 150*deg]), # Joint 1
RevoluteMDH(a=0.45, d=0.05, qlim=[-170*deg, 170*deg]), # Joint 2
PrismaticMDH(a=0.45, qlim=[0,0.5], flip=True) # Joint 3
],
name="SCARA MANIPULATOR",
base=FrameBase,
tool=FrameTool)
# konfigurasi joint
robot.addconfiguration_attr("q_zero",[0, 0, 0]) # nilai joint dengan 0 variabel
robot.addconfiguration_attr("q_awal",[90*deg, 45*deg, 0.05]) # nilai joint untuk posisi dan orientasi awal robot
robot.addconfiguration_attr("q_tujuan",[-45*deg, -150*deg, 0.45]) # nilai joint untuk posisi dan orientasi tujuan robot
print(robot)
keluarannya:
Joint 1 mempunyai limit sudut dari -150 derajat ke 150 derajat, Joint 2 mempunyai limit sudut dari -170 derajat ke 170 derajat, dan joint 3 mempunyai limit jarak dari 0 meter ke 0.5 meter. Nilai variabel q1, q2, dan q3 merupakan nilai joint yang dapat diganti berdasarkan konfigurasi joint yang digunakan. Konfigurasi joint q_awal dan q_tujuan digunakan untuk mencari posisi dan orientasi awal dan tujuan dari end effector atau tool. Berikut gambar robot menggunakan konfigurasi joint q_zero:
Forward kinematics
Forward kinematics dilakukan untuk mengetahui posisi dan orientasi dari end effector atau tool berdasarkan nilai-nilai joint yang sudah diketahui. Berikut koding dan keluarannya:
poseAwal = robot.fkine(robot.q_awal)
poseTujuan = robot.fkine(robot.q_tujuan)
print(poseAwal)
print(poseTujuan)
robot.plot(robot.q_awal)
robot.plot(robot.q_tujuan)
pose awal:
pose tujuan:
Penentuan lintasan robot
t = np.linspace(0,3,100) # time vector
traj = rtb.tools.trajectory.jtraj(robot.q_awal, robot.q_tujuan, t) # trajectory menggunakan quintic (orde 5) polynomial
traj.plot()
Gambar pertama adalah grafik posisi dari ketiga joint. Gambar kedua adalah kecepatan yang dialami oleh ketiga joint, dimulai dari kecepatan awal nol dan diakhiri dengan kecepatan nol. Gambar ketiga adalah percepatan dari tiap-tiap joint dari posisi awal sampai posisi tujuan.
Simulasi
Berikut simulasi robot SCARA dari posisi awal sampai posisi tujuan.
0 Orang Menyukai Karya Ini