BAB 2
TINJAUAN PUSTAKA
2.1
Real Time Operating System
Ahn dan Tran melakukan survey dan mengamati performa dari beberapa RTOS yang beredar di pasaran (Anh & Tan, 2009). Dalam hasil penelitiannya
menyatakan
bahwa
RTOS
sangat
baik
untuk
diimplementasikan dalam sebuah embedded system dibandingkan dengan generic OS. Hal tersebut dikarenakan beberapa faktor seperti preemptive, priority-based
scheduling,
predictability
in
task
synchronization,
deterministic behavior. Perbedaan utama yang perlu diperhatikan antara RTOS dengan generic OS adalah jika pada RTOS waktu harus bisa diprediksi dan tetap konsisten walaupun tugas yang dikerjakan bertambah sedangkan pada generic OS tidak dapat melakukan hal tersebut. RTOS jika diimplementasikan kedalam sebuah embedded system RTOS menjadi sangat baik dikarenakan beberapa hal seperti Optimizing softwere development yang menjadikan waktu pengembangan aplikasi menjadi singkat, better and safer synchronization membuat penggunaan shared variable menjadi lebih sedikit sehingga meminimalisir kemungkinan terjadinya data rusak, resource management memberikan pengembang dapat mengatur sistem utama dari RTOS, Timing can be easily manage by RTOS membuat sebuah sistem RTOS dapat diprediksi. Aroca melakukan penelitian tentang RTOS (Aroca & Caurin, 2009), Penelitian dilakukan untuk menghitung hasil kuantitatif dan kualitatif pada berbagai platform operating system seperti Windows CE, QNX neutrino, VxWorks, Linux, dan RTAI-Linux. Hasil dari penelitian ini mencakup waktu responsive terburuk dari latency, latency jitter, dan response time.
3
4
Gambar 2.1 Diagram Pengujian RTOS
(Aroca & Caurin, 2009)
Ekperimen dilakukan dengan menganggap sebuah RTOS sebagai sebuah system (blackbox). Tes dilakukan dengan menghasilkan sebuah sinyal eksternal menggunakan signal generator sebagai sinyal input dan menganalisis response time dari sinyal input tersebut dengan menggunakan oscilloscope. Untuk mendapatkan data yang baik, pengujian dilakukan dengan menggunakan platform yang sama dengan beberapa skenario pengujian. Adapun parameter pengukuran kuantitatif yang dijadikan sebagai parameter untuk mengukur sebuah RTOS adalah. Latency: latency dianalisa secara eksternal dimana RTOS diuji bersamaan dengan hardware sebagai sebuah system. Latency merupakan perbedaan waktu antara ketika sebuah interrupt terjadi dengan waktu ketika interrupt handler menghasilkan output dari interrupt tersebut. Jitter: jitter merupakan sebuah informasi yang dihasilkan dari beberapa pengukuran lantency, yang terdiri dari beberapa variasi nilai dari setiap latency yang terjadi. Jitter dapat mengakibatkan sebuah sistem menjadi tidak stabil. Untuk mengukur jitter perbedaan waktu antara dua interrupt latency yang berurutan dihitung. Nilai terbesarnya dijadikan sebagai waktu terburuk bagi sebuah jitter yang dihasilkan system.
5
Worst case response time : worst case response time adalah kebalikan dari frekeunsi maksimum yang diperoleh oleh system. Reddey melakukan penelitian untuk membandingkan FreeRTOS dan ChibiOS/RT (Reddy, G.S.R.Satyanarayana, & B.Seetaramanjaneyulu, 2014). FreeRTOS adalah salah satu RTOS yang banyak digunakan. RTOS ini menggunakan metode scheduling pre-emptive dan cooperative yang bisa diatur dari file FreeRTOS config file. Pada metode pre-emptive, task dengan prioritas tertinggi dieksekusi paling pertama. Jika ada lebih dari satu task yang memiliki prioritas tertinggi, maka digunakan metode round robin. Pada metode cooperative, programmer yang menentukan urutan eksekusi task-nya. Kernel task diatur melalui Task Control Block yang mengandung informasi keadaan task. ChibiOS/RT adalah RTOS open source, mudah dikonfigurasi dan berukuran kecil. Scheduler-nya menggunakan metode yang dikendalikan oleh event(event driven policy). Thread yang sudah siap diantrian dengan prioritas tertinggi akan dieksekusi terlebih dahulu. Jika thread-thread memiliki prioritas yang sama, maka dilakukan metode round robin. Jika thread yang sedang dieksekusi memanggil API ChThdyield(), maka thread itu akan ditunda eksekusinya dan OS akan mengeksekusi thread yang lainnya. Percobaan untuk membandingkan scheduling latency FreeRTOS dan ChibiOS dilakukan pada board STM32L. Timer interrupt dihasilkan dari TIMER2 dan dibuat 2 task dengan prioritas yang berbeda untuk dijalankan di dalam
sistem. Task dengan prioritas tinggi dibuat untuk menunggu ISR
TIMER2 mengeluarkan semaphore. Ketika semaphore dilepaskan, task tersebut akan masuk ke kondisi siap. Perhitungan waktu dilakukan dengan mengukur CPU clock menggunakan TIMER3. Perhitungan dimulai setelah ISR selesai mengerjakan
tugasnya dan task dengan prioritas tinggi
mendapatkan semaphore. Perhitungan waktu tergantung dari frekuensi prosesor, jika frekuensinya tinggi maka delay-nya kecil, begitu juga sebaliknya. Clock yang digunakan adalah 40 MHz. FreeRTOS dan ChibiOS dikonfigurasi untuk berjalan pada mode pre-emptive, jumlah maksimal tingkat prioritasnya diatur dan semaphore dinyalakan untuk digunakan pada program aplikasi. Hasilnya adalah scheduling latency FreeRTOS adalah 13.8 µsec, sedangkan ChibiOS 3.1 µsec, 5 kali lebih cepat dibandingkan FreeRTOS. Jadi, untuk menentukan RTOS mana yang cocok untuk
6
digunakan,
para
pengembang
harus
menentukan
sesuai
kebutuhan
aplikasinya. Dharmasanan
mengimplementasikan
RTOS
pada
sebuah
multiprocessor environment lebih spesifiknya adalah coupled shared-memory symentric multiprocessor system (SMP) dan bagaimana sistem tersebut dibantu oleh RTOS (Dharmasanam). Sistem ini merupakan sistem yang bekerja dengan menggunakan dua processor atau lebih yang terhubung pada satu jalur bus dan masing masing processor saling berbagi sumber daya seperti I/O peripheral device dan memory menggunakan satu bus.
Gambar 2.2 Gambaran Umum Akses 2 Prosesor Ke 1 Sumber
(Dharmasanam)
Untuk mengatasi masalah penggunaan resource secara bersamaan dalam satu bus digunakan preemptive RTOS. Hal ini membuat masing masing processor dapat mengerjakan task yang berbeda secara bersamaan. Preemptive RTOS mengatur task yang bekerja, dimana ketika ada task
7
dengan high priority siap dieksekusi, RTOS akan mengeksekusi high priority task terlebih dahulu, kemudian lower priority task.
2.1.1 ChibiOS
Giovanni De Sirio menyatakan bahwa ChibiOS merupakan sebuah Real Time Operation System(RTOS) mini yang dapat dimasukkan kedalam sebuah embedded system (Sirio, 2015). ChibiOS didesain dengan semua kemampuan RTOS yang sangat bagus dalam performa dan besar kodenya. ChibiOS dibagi kedalam dua sistem utama yaitu RT dan HAL. RT adalah adalah kernel dari ChibiOS yang bertugas menjalankan RTOS sedangkan HAL adalah bagian dari ChibiOS yang mengatur hubungan komunikasi antara software dengan hardware. RT ini sangat bagus performanya dalam menjalankan parameter parameter yang berhubungan dengan RTOS seperti context switch dan ISR Latency. Beberapa hal yang membuat performa RT sangat bagus adalah Data Structure, Context Switch, ISR Handling, Critical Zone, Call Protocol. Data Structure
RT menggunakan konsep double linked
circular list dalam pengolahan struktur data internal-nya, hal ini mengakibatkan waktu yang dibutuhkan untuk setiap memasukkan serta mengeluarkan data adalah konstan. Operasi context switch dilakukan secara synchronous dengan satu call function, hasilnya adalah waktu yang sangat cepat dalam proses switch dari satu thread ke thread lainnya. ISR handling membuat arsitektur alat yang mampu melakukan nested interrupt context switch hanya opsional dan dilakukan pada akhir ISR. Setiap ISR yang terjadi akan diatur oleh ISR handling sebelum akhirnya mengeksekusi program ISR. Critical Zone dalam RT tidak pernah nested, maksudnya adalah RT tidak memerlukan nesting counter atau variable untuk menyimpan kondisi yang sedang terjadi. Hal ini membuat API sangat
8
efisien dan membuat critical zone hanya dapat dimasuki dan keluar menggunakan fungsi yang sudah ada. Call protocol dalam RT membuat OS tidak pernah mengembalikan parameter yang salah hal ini berdasarkan bahwa dalam mengecek parameter membutuhkan waktu dan menghabiskan resource serta menambah conditional branch sehingga fitur pengecekan hanya dilakukan dalam proses pengembangan dan ketika selesai fitur ini dapat ditiadakan. HAL memberikan fitur API yang dapat mengakses peripheral peripheral yang ada pada hardware seperti I2C, GPIO, ADC, dll. Hal ini membuat proses pengembangan firmware menjadi lebih objectoriented serta internal hardware seperti inisialisasi hardware menjadi tidak terlihat oleh pengguna.
2.2
ARM CORTEX M4
ARM Corporation membuat sebuah processor ARM-Cortex M4 Processor merupakan processor dengan kemampuan yang sangat baik dalam hal embedded processor untuk mengolah sinyal yang aplikasinya diutamakan untuk motor control, otomotif, power management, embedded audio, dan industrial automation (ARM Corporation, 2015). Arm cortex M4 Processor dilengkapi dengan DSP instruction dan optional floating point unit. Dengan tambahan ini ARM CORTEX M4 dapat melakukan fungsi fungsi komputasi advance seperti operasi matriks yang membutuhkan waktu lama jika dioperasikan tanpa kedua fitur tersebut.
9
Berikut adalah gambar blok diagram dari ARM Cortex M4:
Gambar 2.3 Blok Diagram ARM Cortex-M4
(uk.mouser.com/Images/Microsites/ATSAM4L-blockdiagram.png)
Beberapa fitur penting yang dimiliki oleh ARM CORTEX M4 adalah •
Support Multiple Instruction Set
•
DSP Extensions
•
Floating Point Unit
•
Pipeline
•
Performance Efficiency
•
Memory Protection
•
Interrupts
•
Interrupt Priority Levels
•
Wake-up Interrupt Controller
•
Sleep Modes
•
Bit Manipulation
•
Debug and Trace
10
2.2.1 STM32 NUCLEO-F411RE
STMicroeletronics menyatakan STM32 NUCLEO-F411RE memberikan cara yang fleksibel dan terjangkau bagi pengguna untuk melakukan dan mengembangkan sebuah prototype. Board ini menggunakan core ARM Cortex M4 CPU dengan FPU dan Adaptive real-time accelerator dengan memory up to 512 Kbyte dan 128 Kbyte SRAM (STMicroelectronics, 2015).
Gambar 2.4 STM32 NUCLEO-F411RE
(STMicroelectronics, 2015)
Berikut ini spesifikasi STM32 NUCLEO-F411RE Board: •
Memiliki 2 tipe ekstensi untuk terhubung dengan berbagai peripheral: arduino shield dan ST Morpho 32 I/O
•
mbed-enabled(mbed.org): berfungsi untuk membuat dan melakukan kompilasi aplikasi yang dapat berjalan di STM32 NUCLEO-F411RE Board di website mbed.org, kemudian pengguna akan diberikan file binary yang akan disalinkan ke dalam board tanpa perlu burner tambahan.
11
•
Debugger/programmer yang terletak langsung di board, ST-LINK/V2-1
•
Catu daya yang fleksibel, dari 3,3V sampai dengan 12 V
•
Indikator LED untuk masing-masing komunikasi serial, power dan untuk keperluan pengguna lainnya
•
Memiliki 3 kemampuan yang berbeda pada satu port USB, yaitu komunikasi virtual, penyimpanan dan debug
•
Mendukung banyak IDE, seperti IAR, Keil dan IDE yang berbasis GCC
2.3
Gyroscope Sensor
Xie dan Fedder melakukan penelitian tentang Microelectromechanical (MEMS) Gyroscopes yang terintegrasi (Xie & Fedder, 2003). Paper ini membahas desain, fabrikasi, prinsip kerja, keuntungan dan kerugian dari beberapa model gyroscopes. Gyroscopes dengan model dual-resonator dan struktur ring memiliki kemampuan penolakan getaran dan suhu yang baik. Struktur bergetar bisa didesain untuk mendeteksi rotasi sumbu lateral dan vertikal secara translasi. Struktur ini juga menyediakan pendeteksi sudut pada sumbu lateral. Gyroscope dengan banyak sumbu yang terintegrasi dapat mengurangi ukuran fisik sensor dan biaya fabrikasi. Pengintegrasian tidak terbatas pada antar-muka, pengkondisi sinyal dan rangkaian perubah sinyal analog menjadi digital. Kompatibilitas CMOS menjamin sebanyak mungkin rangkian yang dibutuhkan dapat terintegrasi. Chip yang tidak membutuhkan daya dari luar, gyroscope yang ditambah accelerometer dengan komunikasi nirkabel juga memungkinkan. Oleh karena itu, penerapannya tidak hanya pada kendaraan, permainan komputer atau sistem navigasi luar angkasa, tapi tersebar juga ke alat elektronik rumah tangga dan alat elektronik seperti handphone.
12
2.4
Kalman filter
Greg Welch menyatakan Kalman filter merupakan recursive digital filter yang dapat memperkirakan kondisi dari sebuah proses (Greg Welch, 2006). Filter ini sangat baik karena bisa memperkirakan keadaan lampau, keadaan sekarang dan keadaan yang akan datang. Filter ini dapat mengurangi pengukuran yang terkena noise dari sensor-sensor sebelum masuk kedalam sistem kontrol. Algoritma filtering yang bagus merupakan algoritma yang dapat menghilangkan noise dari sinyal electromagnetic tetapi tetap mempertahankan informasi yang berguna. Kalman filter tidak hanya bekerja dengan baik dalam praktek, tetapi secara teoritis juga menarik karena dapat ditunjukan bahwa kalman filter merupakan salah satu filter yang dapat meminimalkan varian dari perkiraan error. Kalman filter seringkali diimplementasikan ke dalam sistem embedded control, karena untuk mengontrol suatu proses, diperlukan perkiraan yang akurat dari variabel proses. Dalam algoritma yang diterapkan pada microcontroller dengan perangkat lunak, digunakan persamaan matematika diskrit. Sistem yang akan diukur harus dimodelkan oleh sistem linier. Dapat dijelaskan dengan perhitungan : State Equation (2-1) Observation Equation (2-2)
Dimana : k = indeks waktu x = keadaan sistem u = masukan yang diketahui sistem z = keluaran yang diukur w = proses noise v = noise pengukuran A, B, H = matriks
13
2.5
Pengendali PID(Proportional, Integral, Derivative)
Atmel Corporation menyatakan Algoritma kontrol PID mengolah keluaran respon sistem yang dibutuhkan untuk mengontrol proses (ATMEL, 2006). Pengontrol PID akan membandingkan nilai dari proses dengan sebuah rujukan titik acuan. Selisih dari keduanya disebut dengan error. Error yang dihasilkan akan diproses menjadi sebuah input baru yang diproses kembali agar nilai dari proses sesuai dengan titik acuan. Pada dasarnya pengendali ini membaca kondisi sistem dengan sebuah sensor kemudian hasil pengukuran sensor akan mengurangi titik acuan untuk menghasilkan nilai error. Nilai error akan diolah dengan tiga buah penguatan(gain), yaitu proportional, derivative dan integral.
Gambar 2.5 Karakteristik Penguat-penguat PID
(http://ctms.engin.umich.edu/CTMS/index.php?example=Introduction§io n=ControlPID#introduction)
Penguat proportional (KP) memberikan kontrol proses yang sebanding dengan error. Error dari sistem dikalikan dengan penguat KP. Penguat KP juga mempercepat rise time dan settling time. Jika KP terlalu tinggi maka sistem akan menjadi tidak stabil. Sedangkan jika KP terlalu rendah, sistem tidak akan mencapai set point yang diinginkan. KP juga mengurangi steady state error.
14
Penguat integral (KI) berpengaruh dalam menghilangkan steady state error, juga membuat respon lebih lambat (dibanding P). Penguat KI juga menyediakan cara untuk menjumlahkan error sistem sampai keluaran proses mencapai set point yang diinginkan. Penguat KI sangat terpengaruh oleh integral wind up/saturation yang disebabkan karena error yang terjadi terlalu besar (dikarenakan gangguan dalam waktu yang lama), ini menyebabkan KI menjumlahkan error terus menerus dan menimbulkan ketidakstabilan. Integral wind up mencegah error signal menjadi 0 kembali. Maka untuk mencegah integral wind up, penjumlahan error mempunyai nilai maksimal dan minimal. Jika melebihi nilai maksimal atau minimal tersebut, penjumlahan error sama dengan nilai maksimal atau nilai minimal tersebut. Pada algoritma kontrol PID, penguat kontrol derivative (KD) berfungsi untuk
meningkatkan
stabilitas
sistem,
mengurangi
overshoot,
dan
mempercepat settling time. Kelemahan utama KD adalah sangat berpengaruh oleh sinyal noise, dan dalam kontrol sistem nilai KD yang tidak benar menyebabkan ketidakstabilan sistem. Noise dapat datang dari pengukuran noise sensor, maka diperlukan kalman filter untuk mengurangi sinyal noise.
2.6
Metode Tuning Ziegler-Nichols
Zigler Nichole melakukan tuning PID (J. G. Ziegler, 1942), dalam penelitian ini dilakukan dengan metode Ziegler-Nichols. Metode ini dapat mencari nilai KP, KI dan KD dengan cepat dan tepat, tanpa pemodelan matematis dari sistem yang akan dikendalikan. Hal pertama yang dilakukan adalah memberikan nilai 0 untuk ketiga penguatan PID. Kemudian nilai KP(dalam satuan derajat) dinaikan secara bertahap sampai bentuk sinyal error berosilasi terus-menerus dengan amplitudo yang sama dan nilainya paling kecil. Nilai sinyal saat mencapai tahap ini disebut juga dengan ultimate gain(KU) dan periodenya disebut dengan ultimate period(TU) dalam satuan menit. Lalu nilai KI dan KD dapat dicari dengan menggunakan rumus pada tabel dibawah ini.
15
Kp
Ti
Penguat P
0,5Ku
Penguat PI
0,45Ku
Tu/1.2
Penguat PID
0,6Ku
Tu/2
Td
Tu/8
Tabel 2.1 Metode Tuning PID Ziegler-Nichols
(Ziegler & Nichols, 1942) .
2.7
Two Wheeled Inverted Pendulum Robot
Tandil dan kawan kawan melakukan penelitian dengan judul “Pengaplikasian Kalman filter dan Kendali PID sebagai Penyeimbang Robot Roda Dua” (Tandil, Siahaan, & Willyanto, 2012), telah menghasilkan sebuah purwarupa robot roda dua yang dapat menyeimbangkan diri dengan menggunakan sensor accelerometer dan gyroscope dan kendali Proportional, Integral, Derivative (PID) untuk mengendalikan kecepatan robot agar dapat menyeimbangkan diri. Dalam penelitian ini kalman filter digunakan untuk memperkirakan proses dengan menggunakan skema umpan balik. Kemudian, filter akan memperkirakan keadaan sistem pada sebuah waktu, lalu mengambil nilai pengukuran yang terkontaminasi noise dalam bentuk umpan balik. Maka perhitungan dari kalman filter, terbagi menjadi dua bagian yaitu perhitungan kondisi prediksi dan perhitungan kondisi estimasi. a.
Time Update Step (kondisi prediksi) (1)
Current State (2-3)
16
keterangan : adalah perkiraan
•
kondisi sebelumnya berdasarkan kondisi sebelumnya dan perkiraan kondisi sebelumnya. adalah perkiraan
•
kondisi pada saat sampel waktu ke k berdasarkan kondisi sebelumnya dan perkiraan kondisi sebelumnya. adalah hasil perkiraan
• kondisi pada saat sampel waktu ke k •
Matriks
=
,berdasarkan hasil pengukuran accelerometer dan gyroscope. •
Matriks A =
•
dt = Ts = 10ms.
•
Matriks B =
•
adalah nilai dari pengukuran gyroscope pada sampel waktu ke k
(2)
Error Convariance Matrix (2-4)
17
dt
dt
dt
keterangan : Matriks
•
=
,
merupakan kovarian error. Matriks
• merupakan process noise
=
,
18
b.
Measurement Update Step (kondisi koreksi) (1)
Calculate Kalman Gain (2-5)
keterangan : =
•
, merupakan
Kalman Gain (penguat kalman). =
•
, merupakan
measurement noise. Matriks H = [1
•
0] ,
merupakan model pengamatan yang digunakan untuk menggambarkan keadaan ke dalam ruang pengamatan.
(2)
Update Estimate with Measurement (2-6)
+
19
+ keterangan : =
•
, merupakan
nilai perbaikan sudut estimasi. merupakan hasil
• pengukuran sudut oleh accelerometer.
merupakan perbedaan
• dengan keadaan sebelumnya.
(3)
Update Error Covariance (2-7)
keterangan : •
=
, merupakan Update error covariance.
20