Seminar Tugas Akhir – Juli 2012
Dosen Pembimbing :
Dr. Ir. Djoko Purwanto, M.Eng Rudy Dikairono, ST, M.Sc
Oleh:
Dhuha Abdul Aziz – 2208 100 152
RANCANG BANGUN SISTEM PERINTAH GERAK MOBILE ROBOT MENGGUNAKAN METODE PENGENALAN ISYARAT TUBUH DENGAN SENSOR KINECT
1 Latar Belakang
Penggunaan perangkat kendali robot seperti keyboard, mouse, joystick, gamepad dan lain
sebagainya yang memiliki kontak langsung dengan operator semakin dikurangi karena
dapat mengurangi mobilitas dan
membahayakan keselamatan operator
Adanya perangkat tambahan tersebut juga tidak lagi relevan dengan prinsip ubiquitous
computing yang tengah berkembang pesat saat
ini
2 Tujuan
Menggunakan kinect sebagai sensor untuk mengenali Isyarat Tubuh dari Operator
Menginterpretasikan Isyarat Tubuh dari Operator menjadi data yang dapat digunakan sebagai
sistem perintah gerak mobile robot.
Meng implementasikan sistem perintah gerak
kepada mobile robot
3 Batasan Masalah
Bagian tubuh yang akan ditangkap oleh kinect pergelangan tangan kanan dan kiri dan kepala.
Sistem perintah gerak terdiri dari gerak
maju, mundur, belok kanan, dan belok kiri.
Mobile robot yang digunakan adalah robot dengan dua roda
Perintah dilakukan oleh satu operator
4
BLOK SISTEM
Isyarat Tubuh
Kinect
CPU
LCD 2x16
Mobile Robot – Differential Wheel
Arduino Mega 128
18 Isyarat Tubuh
Natural User Interfaces (NUI) adalah suatu sistem interaksi manusia-komputer bahwa
pengguna beroperasi melalui tindakan intuitif
yang berkaitan dengan alam, perilaku manusia
sehari-hari.
18 KINECT
Sensor Kinect adalah sebuah gabungan antara RGB kamera dengan sensor infra merah
sehingga dapat menampilkan citra dan
menentukan jarak dari sebuah objek
18 KINECT SDK
Kinect SDK (software Development Kit) adalah library dan driver yang disediakan oleh
Microsoft secara open source agar para
pengembang dapat mengembangkan aplikasi
menggunakan kinect.
18 SKELETON SPACE
Model skeleton dari pengguna
diekspresikan pada koordinat x, y, dan z dalam meter.
Z X Y
Perhitungan meter didapat setelah konversi dari pixel ke transformasi skeleton space
18 SKELETON SPACE
Perhitungan meter didapat setelah konversi dari pixel ke transformasi skeleton space
private void CameraPosition(FrameworkElement element, ColorImagePoint point) {
Canvas.SetLeft(element, point.X - element.Width / 2);
Canvas.SetTop(element, point.Y - element.Height / 2);
}
private void ScalePosition(FrameworkElement element, Joint joint) {
Joint scaledJoint = joint.ScaleTo(1280, 720, .3f, .3f);
Canvas.SetLeft(element, scaledJoint.Position.X);
Canvas.SetTop(element, scaledJoint.Position.Y);
}
18 SKELETAL MODEL
18 WPF APPLICATION
Windows Presentation Foundation (WPF) adalah sebuah sistem presentasi untuk membangun aplikasi-aplikasi klien Windows dengan user experiences secara visual
18
Kinect
Capture Skeletal Tracking Joint AcquisitionGet data x,y,z
Body Gesture Interpretation Board Arduino
CPU
Software
Kirim
18 Skeletal Tracking
metode untuk mendeteksi model tubuh manusia.
Depth Stream Image Stream
18 Skeletal Tracking
Skeleton GetFirstSkeleton(AllFramesReadyEventArgs e) {
using (SkeletonFrame skeletonFrameData = e.OpenSkeletonFrame()) {
if (skeletonFrameData == null) {
return null;
}
skeletonFrameData.CopySkeletonDataTo(allSkeletons);
//get the first tracked skeleton
Skeleton first = (from s in allSkeletons
where s.TrackingState == SkeletonTrackingState.Tracked select s).FirstOrDefault();
return first;
}
18 Joint Acquisition
Proses mendapatkan Joint dari Skeletal Model, berikut fungsi yang digunakan
//head
DepthImagePoint headDepthPoint =
depth.MapFromSkeletonPoint(first.Joints[JointType.Head].Position);
//left hand
DepthImagePoint leftDepthPoint =
depth.MapFromSkeletonPoint(first.Joints[JointType.HandLeft].Position);
//right hand
DepthImagePoint rightDepthPoint =
depth.MapFromSkeletonPoint(first.Joints[JointType.HandRight].Position);
18 Get Data X,Y, dan Z
//pemanggilan titik X untuk joint kepala first.Joints[JointType.Head].Position.X //pemanggilan titik Y untuk joint kepala first.Joints[JointType.Head].Position.Y //pemanggilan titik Z untuk joint kepala first.Joints[JointType.Head].Position.Z
//pemanggilan titik X untuk joint pergelangan tangan kanan first.Joints[JointType.WristRight].Position.X
Fungsi mendapatkan nilai koordinat x,y, dan z yang dipilih
18
Body Gesture Interpretation
END
Nilai X,Y,Z pada head, wrist left, wrist right
Head.Z <
wristleft.Z
&&
wrist.right.Y
>Head Y
Mundur, sendData4
Head.Z >
wristright.Z
Maju, sendData1
Head.X >
wristright.X
Kiri, sendData2
Head.X <
wristright.X
Kanan, sendData3
Diam START
YES
YES
YES
YES NO
NO
NO
18 Pengiriman Data
using System.IO.Ports;
private SerialPort serialPort1;
//Inisialisasi COM PORT dan kecepatan baudrate
serialPort1 = new SerialPort("COM12", 9600, Parity.None, 8, StopBits.One);
serialPort1.DataReceived += new
SerialDataReceivedEventHandler(serialPort1_DataReceived);
// Fungsi Mengirim data serial private void SendSerialData() {
byte[] SerialData = new byte[4];
[...]
serialPort1.Write(SerialData, 0, SerialData.Length);
}
18 Board Arduino 128
Microcontroller ATmega1280
Operating Voltage 5V
Input Voltage 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 54 (15 provide PWM output)
Analog Input Pins 16
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 128 Kb of which 4 Kb for bootloader
SRAM 8 Kb
EEPROM 4 Kb
Clock Speed 16 MHz
18 Board Arduino 128
Aplikasi WPF Sketch
PC
ARDUINO MEGA USB
USER
ID PIN
Data
I/O
Paket data
byte[0] identitas fungsi untuk melakukan eksekusi
byte[1] nomor pin untuk mengakses input atau output pada arduino byte[2] Data, most significant byte (MSB)
byte[3] Data, least significant byte (LSB)
18 Board Arduino 128
public byte[] Data_SetFlexFlag(int iValue)
{ _serialdata[0] = (byte)SET_FLEXFLAG; // ID _serialdata[1] = 0;
_serialdata[2] = 0;
_serialdata[3] = (byte)iValue;
return _serialdata; } Protokol Komunikasi
Fungsi variabel data yang dikirim void sendData(int val)
{
SerialData_set = Data_SetFlexFlag(val);
serialPort1.Write(SerialData_set, 0, SerialData_set.Length);
}
Pengujian
Pengujian Sensor Kinect
Z’ideal Zideal error Z’maks Zmaks error
2,98 3 0,02 4,17 4,1 0,03
Pengujian Jarak Z
Joint X’max Y’max Xmax Ymax
Head 1,23 1,43 1,2 1,40
Wrist Left 1,23 1,43 1,2 1,40 Wrist Right 1,23 1,44 1,2 1,41 Joint Z’min Z’max Zmin Zmax
Head 0,83 4,17 0,8 4,1
Wrist Left 0,86 4,08 0,81 3,98 Wrist Right 0,84 4,08 0,8 3,98
Pengujian Jarak X dan Y
Analisa Error
Joint
Error
X'max-Xmax Y'min-Ymin Z'min-Zmin Z'max-Zmax
Head 0.03 0.03 0.03 0.07
Wrist Left 0.03 0.03 0.05 0.1
Wrist Right 0.03 0.03 0.04 0.1
Mean 0.03 0.03 0.04 0.09
Jumlah 0.0475
Jadi rata-rata error pengukuran sensor kinect adalah sebesar 0.0475 m atau
4,75
cmPengujian Akurasi Pengenalan Orientasi Arah
Percobaan ke-
Gerakan yang dilakukan
Display pada PC
Gerakan yang dilakukan
Display pada PC
1
A (maju)
A
C (kanan)
C
2 A C
3 A C
4 A C
5 C C
1
B (mundur)
B
D (kiri)
D
2 B D
3 B D
4 B D
5 B D
maju akurasi tingkat keberhasilan sebesar
90%
, sedangkan untuk gerakan mundur, belok kanan, dan belok kiri sebesar100%.
Pengujian Sistem
Percobaan ke-
Pengujian (Hasil sesungguhnya)
Maju mundur kanan kiri
1 Maju Mundur Kanan Kiri
2 Maju Mundur Kanan Kiri
3 Maju Mundur Kanan Kiri
4 Maju Mundur Kanan Kiri
5 Kanan Kiri Kanan Kiri
6 Maju Mundur Kanan Kiri
7 Kanan Mundur Kanan Kiri
8 Maju Mundur Kanan Kiri
9 Maju Mundur Kanan Kiri
10 maju mundur Kanan kiri
perintah maju sistem memiliki tingkat akurasi hingga 80%,untuk perintah
mundur tingkat akurasi hingga 90 %, dan untuk perintah kanan dan kiri tingkat akurasi mencapai 100 %
Penutup
Diperlukan pengembangan dalam kompleksitas navigasi seperti penambahan rotary encoder dan sensor proximity berupa limit switch, sensor ultrasonic, dan Infra merah sehingga memungkinakn robot dapat melakukan navigasi walaupun di dalam ruangan yang memiliki banyak obstacle
Setelah interfacing Kinect dengan mikrokontroler
terpecahkan, maka diharapkan pengembangan dalam penambahan hardware dapat dilakukan, seperti
penambahan bionic arm sehingga harapan dari robot ini sebagai servis robot dapat terwujud.
Pengembangan software juga diperlukan untuk
memperbanyak parameter perintah yang dapat dijadikan sebagai input sehingga robot dapat melakukan berbagai variasi gerakan.
Any Quest ?
WPF SkeTrck Kinect