ROBOT PENYEIMBANG DIRI DUA RODA MENGGUNAKAN SISTEM OPERASI WAKTU NYATA BERBASIS ARM CORTEX-M4 Ario Seto Wijayanto, Luthfi Fathur Rahman, Calvin S. Wairara, Wiedjaja Universitas Bina Nusantara, Jalan Syahdan No. 9, Jakarta, 11480, 021-534 5830
[email protected],
[email protected],
[email protected],
[email protected]
ABSTRAK Sistem Operasi Waktu Nyata sudah sangat banyak digunakan dalam sebuah sistem tertanam. Berdasarkan hal tersebut dilakukan sebuah penelitian untuk membuat sebuah purwarupa robot beroda dua yang dapat menyeimbangkan diri dengan menggunakan ChibiOS/RT sebagai salah satu aplikasi dari RTOS serta dilakukan pengukuran performa dari RTOS tersebut. Robot berusaha untuk menyeimbangkan diri menggunakan pengendali PID dengan umpan balik dari sensor accelerometer dan gyroscope yang digabungkan dengan menggunakan kalman filter dan complementary filter. Pengukuran latency dan jitter dari ChibiOS/RT menunjukkan perbedaan yang signifikan ketika RTOS berjalan dengan beban dan tanpa beban program. Hasilnya adalah robot belum dapat menyeimbangkan diri, dikarenakan jitter yang dihasilkan oleh sistem sangat banyak dan parameter PID yang belum disetel dengan tepat. Kesimpulannya ChibiOS/RT sangat responsif karena latency yang dihasilkan sangat kecil, bacaan dari sensor menunjukkan bacaan yang akurat, dan robot hanya dapat mempertahankan kestabilannya selama 3 detik. Kata Kunci: Accelerometer, Gyroscope, Kalman filter, Complementary filter, PID, RTOS, Jitter, Latency
Pendahuluan Latar Belakang Penelitian tentang Inverted Pendulum sangat menarik dikarenakan penggunaan sistem kendali dan pemograman pada robot yang menjaga robot agar dapat bergerak dan tetap seimbang. Selain itu, dengan mempelajari robot ini, dapat diaplikasikan untuk keperluan yang beragam. Salah satu aplikasi dari robot two wheeled inverted pendulum adalah Segway PT. Segway Personal Transporter(PT) adalah robot yang mampu menyeimbangkan diri, perangkat transportasi listrik yang memiliki sistem keselamatan yang baik dan sangat ideal untuk perjalanan yang terlalu jauh untuk berjalan dan terlalu dekat untuk berkendara (Segway inc, 2014). Kendaraan listrik pribadi seperti Segway PT adalah salah satu alternatif untuk mengurangi pencemaran udara dan kemacetan yang terjadi di kota besar seperti Jakarta. Diharapkan dengan purwarupa hasil dari penelitian ini akan mempermudah langkah untuk membuat kendaraan pendulum terbalik beroda dua.Dengan menggunakan Real Time Operating System sebagai sistem utama diharapkan purwarupa robot ini mampu memberikan respon yang maksimal.
Rumusan Masalah Apakah robot two wheeled inverted pendulum mampu bergerak sesuai dengan yang diinginkan dan setimbang serta apakah sistem mampu mengoperasikan input dan output secara real time dengan beban yang diberikan?
Tujuan Tujuan dari penelitian ini adalah merancang sebuah purwarupa robot two wheeled inverted pendulum yang mampu bekerja sesuai dengan parameter yang ditentukan.
Metode Penelitian Rancangan sistem
Gambar 1. Diagram Blok Alat Alat dapat menyeimbangkan diri dengan mengenal perubahan posisi yang dideteksi oleh sensor Inertial Measurement Unit MPU6050 (terdiri dari sensor accelerometer dan gyroscope dalam satu chip), kemudian menggerakan motor DC untuk merespon perubahan tersebut. Setiap perubahan yang terjadi akan dimasukkan pada microcontroller di sistem utama untuk diproses dan menghasilkan keluaran untuk diberikan ke motor DC agar bergerak dengan kecepatan dan arah yang sesuai. Sistem utama yang digunakan adalah STM32 NUCLEO-F411RE Board dengan microcontroller ARM Cortex-M4. Pembacaan data kecepatan putaran motor DC(Revolution Per Minute, RPM) dilakukan oleh magnetic quadrature encoder sensor yang terpasang pada bagian belakang setiap motor DC. Modul motor driver L298N berfungsi sebagai pengendali pergerakan motor yang menerima data masukan dari microcontroller. Motor DC yang digunakan adalah 50:1 Metal Gearmotor 37Dx54Lmm dengan 64 CPR encoder.
Rancang Bangun Alat dibuat bertingkat yang terdiri dari 3 buah platform. Jarak antar platform adalah 9,7 cm yang disangga dengan baut. Platform terbawah digunakan untuk STM32 Nucleo Board, sensor IMU, modul L298N dan meletakkan motor DC dibagian bawahnya. Platform tengah digunakan untuk meletakkan modul catu daya. Platform teratas digunakan untuk meletakkan baterai (pada bagian bawah platform) dan beban(pilihan). Bahan untuk setiap platform adalah papan kayu dengan ketebalan 1,2 cm. Dimensi alat secara keseluruhan
adalah 21,6 cm x 9 cm x 28,6 cm. Dimensi masing-masing platform adalah 17 cm x 9 cm, dengan pusat massa berada di titik (8,5 , 4,5) cm. Diameter roda adalah 9 cm dengan ketebalan 0,7 cm. Alat dikatakan bergerak maju jika selisih set point (90°) dengan hasil bacaan sensor IMU bernilai negatif, sedangkan dikatakan mundur jika selisih set point dan sensor IMU bernilai positif.
Gambar 2. Rancang Bangun Alat
Gambar 3. Diagram Hubungan Antar Modul
Algoritma
Gambar 4. State Diagram Thread Utama Sistem utama pada saat awal dinyalakan akan menginisialisasi semua sistem pendukung. Kemudian mengambil data mentah yang didapatkan dari pembacaan sensor IMU. Data mentah yang diambil akan diproses untuk mendapatkan data dalam sudut. Nilai sudut tersebut akan digabungkan menggunakan Algoritma Kalman filter atau Complementary filter. Data keluaran Kalman filter atau Complementary filter akan dijadikan masukan untuk algoritma kendali PID. Nilai keluaran kendali PID akan menentukan arah dan kecepatan putar kedua motor DC. Metode Percobaan Pengambilan data dilakukan pada 3 tempat yang berbeda dengan radius 10 meter pada waktu pagi, sore dan malam. Pengambilan data dilakukan sebanyak 50 kali untuk setiap percobaan. Aplikasi yang digunakan adalah SerialChart untuk melihat data dalam bentuk grafik secara langsung. Aplikasi ini digunakan untuk melakukan pengamatan cepat sebelum mengambil dan menyimpan data dengan menggunakan aplikasi RealTerm. Data yang diambil dari aplikasi ini diolah ke dalam bentuk tabel dan grafik.
Hasil dan Bahasan Hasil Implementasi Mekanik
Gambar 5. Hasil Implementasi Mekanik Robot Hasil dari implementasi mekanika ini adalah robot akan tetap dalam keadaan seimbang (tidak jatuh) pada jangkauan -10° sampai 10°. Sudut jatuh maksimal (sudut dimana robot tidak mampu mengejar untuk menyeimbangkan diri) adalah -30° dan 30°. Jika lebih dari 30° dan kurang dari 30° robot sudah tidak mampu mengejar untuk menyeimbangkan diri.
Pengamatan RTOS (ChibiOS)
Gambar 6. Hasil Pengukuran Performa ChibiOS Tanpa Beban Program dan Dengan Beban Program
Pengamatan data dilakukan selama 30 menit untuk masing-masing pengkuruan performa, ChibiOS tanpa beban program dan dengan beban program. Hal yang diukur dalam mengamati performa dari ChibiOS adalah Interupt Latency dan Context Switching. Berdasarkan gambar diatas terlihat bahwa waktu yang diperlukan oleh sistem untuk melakukan Context Switching sebesar 1.20 µs dengan Interrupt Latency pada rising time sebesar 520 ns dan falling time sebesar 580 ns. Dalam kondisi ini dapat dilihat pula Jitter yang dihasilkan oleh sistem bervariasi. Jitter ini menandakan kondisi dimana waktu yang dibutuhkan oleh sistem dalam mengeksekusi sebuah proses berbeda-beda dan tidak selalu sama. Dengan kondisi tanpa beban ini ChibiOS mampu berjalan dengan cukup cepat. Jitter yang dihasilkan pun baik karena sinyal jitter yang dihasilkan tidak melebihi setengah dari sinyal aslinya. Tetapi, Jitter yang dihasilkan ketika sistem diberi beban sangat banyak dan sudah melebihi setengah dari sinyal aslinya. Dapat dilihat pula sinyal input yang diberikan memiliki banyak Jitter sebelum masuk kedalam sistem. Hal ini menandakan bahwa ketika sistem diberikan beban maka tingkat interferensi dari sistem meningkat yang mengakibatkan output dari sistem tidak benar. Sehingga untuk mengukur Context Switching dan Interrupt Latency menjadi sulit. Hal ini terjadi ketika sistem menjalankan thread proses pengiriman dan penerimaan data dari sensor IMU, thread ini diketahui sebagai penyebab jitter yang banyak dengan mematikan seluruh subsistem dari ChibiOS serta seluruh thread yang bekerja dan kemudian dilakukan pengecekan dengan cara mengaktifkan satu persatu subsistem tersebut. Pada thread pengiriman dan penerimaan data ini, sistem mengeksekusi proses tersebut dengan prioritas tinggi karena pada robot ini, data dari sensor sangatlah penting untuk menyeimbangkan posisi robot, sehingga proses yang lain atau dengan prioritas rendah dimasukkan kedalam antrian.
Percobaan Motor DC
Gambar 7. Grafik Pengukuran Arus dan RPM Motor DC Dari gambar diatas menunjukkan bahwa kemampuan kedua motor DC tidak sama. Motor kiri membutuhkan arus yang lebih besar dibandingkan dengan motor kanan. Untuk pengukuran RPM, pada duty cycle 1,8% nilai RPM dari kedua motor mulai meningkat, dibawah dari duty cycle tersebut RPM tidak naik, hal ini dikarenakan arus yang dibutuhkan oleh motor belum cukup untuk menggerakkan shaft dan ketika duty
cycle 100%. Dari percobaan ini terlihat bahwa RPM motor kiri lebih besar dibandingkan dengan motor kanan dan arus maksimal yang ditarik oleh motor DC tidak melebihi kemampuan masing-masing kanal output dari motor driver, yaitu 2A.
Percobaan Sensor Accelerometer dan Gyroscope
Gambar 8. Grafik Hasil Pengukuran Keakuratan Accelerometer dan Gyroscope Drift Sudut-sudut yang diukur hanya sudut yang ada didalam jangkauan kerja robot, yaitu -30° sampai 30° dari set point(90°). Sensor IMU MPU6050 yang digunakan pada penelitian ini menghasilkan bacaan sudut yang realtif tidak akurat, jika tidak diperbaiki akan menyebabkan ketidak-akuratan juga pada percobaanpercobaan berikutnya, maka robot tidak akan pernah bisa seimbang. Didalam sudut jangkauan seimbang robot, yaitu -10° sampai 10° dari set point, akurasi pengukuran accelerometer mencapai hasil terbaik, dengan nilai error terbesar adalah ±1°. Diluar dari jangkauan tersebut akurasi semakin menurun. Rata-rata error dari sudut yang diukur adalah 0,59%. Nilai error dari percobaan accelerometer tanpa offset akan dijadikan konstanta offset untuk memperbaiki akurasi bacaan sudut dari accelerometer, dengan cara mapping masingmasing hasil bacaan sudut. Perbaikan ini perlu dilakukan agar algoritma yang menerima bacaan accelerometer sebagai input-nya tidak salah melakukan perhitungan. Setelah dilakukan perbaikan dengan offset, rata-rata error menurun menjadi 0,47%. Pada Gambar 4, grafik menunjukan perbandingan hasil pengukuran accelerometer dengan dan tanpa offset untuk melihat perbandingan diantara keduanya (gambar kiri), dan menunjukan gyroscope drift (gambar kanan). Ketika gyroscope dinyalakan, kondisi robot adalah tegak dan diam. Dimana kondisi tegak ini dalam sudut robot adalah 90°. Hasilnya adalah drift yang dihasilkan menunjukkan error yang terus bertambah ke arah negatif seiring dengan lamanya sensor dinyalakan.
Percobaan Kalman Filter dan Complementary Filter
Gambar 9. Grafik Hasil Keluaran Kalman Filter, Complenentary Filter dan Accelerometer
Dalam keadaan diam tanpa gerak lurus, accelerometer saja memang paling akurat dibandingkan dengan complementary filter atau kalman filter. Tetapi jika robot bergerak, maka accelerometer akan terkena noise yang menyebabkan kesalahan pada pembacaan sudut, karena nilai asli yang diukur accelerometer adalah percepatan gerak lurus, dalam satuan gravity(1 g = 9,8 m/s2) yang kemudian diubah menjadi bacaan sudut, maka ini jugalah yang menjadi kelemahan accelerometer ketika robot bergerak. Maka, digunakan kalman filter atau complementary filter untuk menutupi kekurangan accelerometer ini dengan menambahkan nilai gyroscope pada perhitungan kedua filter tersebut. Kedua filter tidak digunakan secara bersamaan saat melakukan percobaan PID nantinya, tetapi dipilih salah satu yang terbaik, yaitu kalman filter.
Percobaan PID
Gambar 10. Grafik Hasil Tuning PID Percobaan ini dilakukan untuk menyeimbangkan robot pada posisi 90°. Hal pertama yang harus dilakukan adalah mencari nilai Kp. Nilai error adalah selisih dari set point dengan sudut keluaran Kalman Filter. Nilai error akan langsung dikalikan dengan nilai KP pada perhitungan algoritma kendali PID saat hanya menggunakan Kp. Pada percobaan mencari nilai KP ini, nilai KI tak terhingga(Ti = 0) dan KD bernilai 0. Nilai KP dibawah 400 belum cukup untuk membuat robot berosilasi. Idealnya nilai KP dicari hingga robot berosilasi secara konstan dengan nilai besaran yang konstan juga, tetapi karena ketidak-stabilan sistem, maka hal ini sulit untuk dicapai, sehingga diambil nilai KP terbaik yaitu 500 sebagai penguatan ultimate (KU), karena pada nilai ini robot berosilasi paling konstan dibandingkan dengan nilai yang lain. Nilai KP diatas 500 membuat sistem overshoot dan tetapi pada kondisi tersebut, tidak akan kembali ke titik acuan. Kemudian untuk mencari nilai KI, nilai KP yang digunakan adalah 45% dari nilai KP sebelumnya, yaitu 225. Nilai KI diperoleh dari pembagian KP oleh TI (reset rate). Secara keseluruhan terlihat bahwa sistem dapat mendekati titik acuan, walaupun banyak spike sepanjang waktu. Nilai TI paling optimal adalah 3,214. Ditambahkannya
nilai KD membuat nilai KP dan KI bisa menjadi lebih besar, spike yang terjadi pada saat mencari KP dan KI juga dapat dihilangkan, tetapi, membuat sistem menjadi terus-menerus berosilasi walaupun besar osilasinya semakin menurun seiring waktu. Oleh sebab itu, diputuskan bahwa pengaturan pengendali PID paling optimum yang dapat dicapai oleh sistem adalah dengan menggunakan penguat P dan I saja dengan nilai KP 225 dan TI 3,214.
Evaluasi Sistem Keseluruhan Setelah keseluruhan sistem digabungkan, robot dinyalakan dan dilihat pergerakannya. Robot pada awal mulai aktif berada pada posisi datar dengan dibantu oleh tangan untuk menyeimbangkannya. Ketika robot dilepas untuk berusaha menyeimbangkan dirinya, robot berusaha melawan kemiringan yang didapatkannya dengan memutar arah putaran motor dc kearah dimana robot itu miring, secara teori dengan semakin bertambah kemiringannya maka kecepatan motor akan semakin bertambah pula hingga mencapai posisi keseimbangannya kecepatan motor akan berkurang dan bertahan di posisi tersebut, tetapi robot ini belum bisa bertahan di posisi keseimbangannya, sehingga pada akhirnya robot ini akan jatuh. Hasilnya adalah robot hanya mampu mempertahankan keseimbangannya selama 3 detik. Sehingga, tujuan penelitian ini untuk membuat purwarupa robot dua roda yang dapat menyeimbangkan diri belum tercapai.
Simpulan dan Saran Simpulan Setelah melakukan penelitian ini, dapat disimpulkan bahwa: 1. Dari hasil percobaan Interrupt Latency pada ChibiOS tanpa beban program terlihat bahwa sistem ini responsif dengan nilai latency yang kecil, dengan nilai saat rising time 520 ns dan falling time 580 ns. 2. Pada kondisi tanpa beban program jitter pada ChibiOS sangat baik, yaitu tidak sampai 50% dari panjang latency, tetapi pada saat diberi beban program jitter-nya menjadi lebih dari 100% panjang latency karena noise di sinyal input. Hal ini menunjukan bahwa sistem tidak stabil. 3. Error dari pengukuran sensor IMU setelah diperbaiki dengan menggunakan offset agar input ke kalman filter/complementary filter dan PID lebih akurat meningkat dari 0,59% menjadi 0,47%. Hal ini menunjukan bahwa sensor dapat menghasilkan pengukuran yang akurat. 4. Kalman filter dapat menghasilkan output yang lebih baik dari complementary filter dengan perbandingan persentase error 0,38% berbanding 0,54%. Kalman filter juga dapat mengestimasi nilai sudut lebih cepat dari complementary filter. 5. Implementasi mekanikal robot harus dilakukan dengan sangat teliti karena sangat mempengaruhi keseimbangan robot. 6. Robot hanya dapat menyeimbangkan diri selama 3 detik karena belum mendapatkan nilai parameter dari PID yang tepat dan karena ketidakstabilan sistem.
Saran Adapun saran yang dapat diberikan untuk pengembangan dan penyempurnaan dari sistem: 1. Lakukan evaluasi lebih dalam untuk memastikan apakah jitter yang terjadi merupakan kesalahan software atau electrical dari robot. 2. Buat sebuah software yang dapat terhubung dengan robot secara nirkabel untuk mempermudah penyetelan penguat-penguat PID.
Referensi A., W., M., H., & L., J. (n.d.). REAL TIME LINUX PERFORMANCE EVALUATION ON MULTICORE ARM PROCESSOR. Anh, T. N., & Tan, S.-L. (2009). Survey and performance evaluation of real-time operating systems (RTOS) for small microcontrollers. Aroca, R. V., & Caurin, G. (2009). A Real Time Operating Systems (RTOS) Comparison. ATMEL. (2006). Retrieved from www.atmel.com: www.atmel.com/literature Dharmasanam, S. (n.d.). Using an RTOS to Implement Symmetric Multiprocessing. Unknown, 1-11. Faragher, & Ramsey. (2012, September). Understanding the Basis of the Kalman filter. IEEE SIGNAL PROCESSING MAGAZINE, p. 128. Greg Welch, G. B. (2006, 7 24). An Introduction To The Kalman filter. Reddy, B. K., G.S.R.Satyanarayana, & B.Seetaramanjaneyulu. (2014). Scheduling Latency Comparison of two Open-Source RTOSs on Cortex-M3. International Conference on Embedded Systems. Segway inc. (2014). About Segway. Retrieved from Segway: http://www.segway.com/about-segway/ Sirio, G. D. (2015). Retrieved from ChibiOS: http://www.chibios.org/dokuwiki/doku.php?id=chibios:product:rt:start Tandil, D., Siahaan, I. S., & Willyanto, Y. (2012). Pengaplikasian Kalman filter dan Kendali PID sebagai Penyeimbang Robot Roda Dua. Pengaplikasian Kalman filter dan Kendali PID sebagai Penyeimbang Robot Roda Dua. Jakarta Barat, DKI Jakarta, Indonesia: Universitas Bina Nusantara. Xie, H., & Fedder, G. K. (2003). Integrated Microelectromechanical Gyroscopes. Journal of Aerospace Engineering, 65-75. Ziegler, J., & Nichols, N. (1942). Optimum Settings For Automatic Controllers. TRANSACTIONS OF THE A.S.M.E.
Riwayat Penulis Ario Seto Wijayanto lahir di kota Jakarta pada 15 Juli 1993. Penulis menamatkan pendidikan S1 di Universitas Bina Nusantara, Jakarta, Indonesia, dalam bidang Sistem Komputer (Computer Engineering) pada tahun 2015. Luthfi Fathur Rahman lahir di kota Bandung pada 07 Oktober 1993. Penulis menamatkan pendidikan S1 di Universitas Bina Nusantara, Jakarta, Indonesia, dalam bidang Sistem Komputer (Computer Engineering) pada tahun 2015. Calvin S. Wairara lahir di kota Jakarta pada 11 Mei 1993. Penulis menamatkan pendidikan S1 di Universitas Bina Nusantara, Jakarta, Indonesia, dalam bidang Sistem Komputer (Computer Engineering) pada tahun 2015.