28 April 2005
Bab II : Pengendalian Gerakan Dasar II.1. Pendahuluan Pengendalian dasar Robot Mobile, yang selanjutnya kita sebagai mobot, pada bab II ini meliputi beberapa penjelasan pengendalian tanpa menggunakan sensor sama sekali atau pengendalian gerakan dasar. Akan dijelaskan beberapa teknik atau cara untuk melakukan manuver-manuver mobot, penjelasan ini dibagi menjadi 3 bagian. Pada bagian pertama akan dijelaskan tentang gerakan dasar mobot, termasuk dampak jika dilakukan perubahan-perubahan fisik mobot. Dilanjutkan pada bagian kedua membahas tentang bagaimana caranya agar mobot bisa melakukan gerak belok (kanan maupun kiri) dengan sudut tertentu, sedangkan pada bagian ketiga atau terakhir akan dibahas tentang kombinasi gerakan maju, mundur, kekanan maupun kekiri. Pembahasan pada bab II ini dan juga bab-bab lainnya dilakukan dengan langsung memberikan program, berikut dengan layout mobot world-nya, teknik Learning By Doing.
II.2. Gerakan Dasar Mobot (Maju) Program COBA01 Keterangan Program COBA01 ini digunakan untuk menjelaskan bagaimana cara menggerakkan mobot secara sederhana menggunakan fungsi SetWheelSpeed yang digunakan untuk mengatur kecepatan masing-masing roda (ada 2 roda) menggunakan satuan RPM atau Rotation Per Minute atau Rotasi per Menit. Sintaksnya sebagai berikut: SetWheelSpeed(mobot, LeftWheelSpeed, RightWheelSpeed) Digunakan untuk mengatur kecepatan roda kanan, kiri atau kedua-duanya, dengan parameter: mobot LeftWheelSpeed RightWheelSpeed
nomor/nama mobot yang ingin diatur kecepatan rodanya kecepatan roda kiri kecepatan roda kanan
Selain fungsi tersebut, ada satu fungsi lain yang digunakan untuk mengatur kecepatan gerak robot, yaitu SetSteering, yang akan dibahas lebih lanjut pada program COBA03. Selain fungsi tersebut, pada COBA01 juga digunakan fungsi-fungsi lainnya, yaitu:
15
28 April 2005 EraseTrajectories Digunakan untuk menghapus seluruh jejak mobot. SetMobotPosition(mobot, x, y, theta) Digunakan untuk mengatur posisi atau koordinat lokasi serta arah penempatan mobot, jika pada koordinat yang bersangkutan terdapat objek (rintangan) atau mobot lain, maka mobot yang bersangkutan tidak akan berpindah tempat. Parameter yang digunakan: mobot x y theta
nomor mobot yang diatur letaknya koordinat dalam arah sumbu-x koordinat dalam arah sumbu-y arah pengarahan mobot (lihat gambar I.4)
SetTimeStep(NewTimeStep) Digunakan untuk mengatur langkah waktu simulasi yang baru. Nilai langkah waktu digunakan untuk fungsi StepForward untuk mensimulasikan dinamika mobot (dengan nilai saat itu untuk fungsi SetWheelSpeed maupun SetSteering), hanya menggunakan satu parameter NewTimeStep sebagai nilai langkah waktu dalam satuan detik. StepForward Digunakan untuk melakukan simulasi berdasar langkah waktu. Selain fungsi-fungsi tersebut, juga digunakan struktur pengulangan pasti yang menggunakan perintah For … to … next yang terdapat dalam Bahasa BASIC. Layout Mobot World Layout mobot world atau mobot frame untuk COBA01 ini ditunjukkan pada Gambar II.1. Perhatikan jarak antar titik adalah 1 meter. Program Penulisan program utama harus ada di dalam perintah Sub Main dan End Sub. Ini adalah subrutin program utama, semua simulasi diawali dari subrutin ini bukan subrutin lain (yang bukan utama atau main). Program COBA01 menggunakan dua mobot sekaligus, kedua mobot ini akan digunakan hingga program COBA05.
16
28 April 2005
Gambar II.1. Layout COBA01 Program diawali dengan menghapus jejak mobot dari hasil simulasi sebelumnya: ' menghapus sisa trajektori sebelumnya EraseTrajectories Dilanjutkan dengan mengatur posisi dan kecepatan dari mobot-0 dan mobot-1, masing-masing roda, baik untuk mobot-0 maupun mobot-1, diberikan kecepatan 1 RPM, artinya dalam 1 menit ada 1 putaran penuh. Sedangkan posisi mobot-0 dan mobot-1 dibuat bedampingan, mobot-0 pada lokasi (3,4) dan mobot-1 pada lokasi (4,4), semuanya menghadap ke 90 derajat (ke atas): ' mengatur posisi dan kecepatan mobot 0: 1 rpm SetMobotPosition(0,3,4,90) SetWheelSpeed(0,1,1) ' mengatur posisi dan kecepatan mobot 1: 1 rpm SetMobotPosition(1,4,4,90) SetWheelSpeed(1,1,1) Perlu diketahui, jika Anda berhenti membuat program hingga tahap ini kemudian langsung menjalankan simulasi, maka kedua mobot tetap akan diam. Kenapa? Perhatikan kembali fungsi SetTimeStep dan StepForward yang digunakan untuk menggerakkan atau melakukan dinamika mobot. Dengan demikian langkah selanjutnya adalah menyiapkan simulasi. Langkah waktu digunakan 0.4 detik dan diulang-ulang sebanyak 300 kali, dengan demikian akan diperoleh waktu simulasi: 17
28 April 2005 Langkah waktu x banyak pengulangan = lama simulasi 0.4 detik x 300 kali = 120 detik Selama 120 detik, berapa jarak yang ditempuh kedua mobot tersebut? Karena 120 detik = 2 menit dan kedua mobot diatur kecepatan kedua rodanya 1 RPM serta keliling lingkaran adalah 2 x 7 x R (jejari roda), maka Jarak tempuh = RPM x keliling lingkaran x menit Jarak tempuh = 1 RPM x (21R) x 2 menit Karena menggunakan ukuran roda standar, dengan diameter 0.2 meter atau jejari 0.1 meter maka diperoleh jarak tempuh sekitar 1.257 meter (menggunakan persamaan yang dijelaskan sebelumnya). ' mengatur langkah waktu 0.4 detik kerjakan sebanyak 300 x 0.4 = 120 detik ' selama 120 detik dengan kecepatan 1 RPM diperoleh: ' [120/60] x 1 = 2 rotasi SetTimeStep(0.4) For a=1 To 300 StepForward Next
' atur kecepatan simulasi 0.4 detik ' jalankan selama 30 * 0.4 = 120 detik
Catatan Anda bisa mengubah langkah waktu dengan nilai yang lain serta jumlah pengulangan juga bisa diganti, misalnya langkah waktunya 0.2 dan jumlah pengulangan 400, sehingga diperoleh 0.2 x 400 = 80 detik. Jarak tempuh mobot juga akan menyesuaikan, coba lakukan perhitungan sendiri (jawabannya sekitar 0.838 meter). Bagaimana jika ukuran roda diubah tanpa mengubah program utama? Apa yang terjadi? Ini yang akan dijelaskan pada program COBA02.
Program COBA02 Keterangan Pada program COBA02 ini dilakukan percobaan atau eksperimen dengan cara mengubah ukuran diameter kedua roda dari salah satu mobot, yaitu mobot-0 tetap dengan diameter 0.2 meter sedangkan mobot-1 dengan diamater 0.3 meter. Kemudian dilakukan simulasi untuk melihat dampak dari perbedaan diameter roda kedua mobot ini. Fungsi baru yang digunakan adalah: SetWheelDiameter(mobot, NewDiameter)
18
28 April 2005 Digunakan untuk mengubah diameter roda dari suatu mobot. Jika nilai yang diberikan tidak mengikuti aturan geometrik, misalnya diameter terlalu besar dibanding dengan ukuran mobotnya, maka fungsi ini akan mengalami kegagalan. Parameter yang digunakan adalah: mobot NewDiameter
indeks atau nama mobot yang bersangkutan diameter yang baru dalam satuan meter
Layout Mobot World Layout Mobot World masih sama dengan yang ditunjukkan pada Gambar II.1. Program Secara umum program COBA02 tidak terlalu jauh berbeda dengan COBA01, hanyasaja pada bagian inisialisasi mobot ditambahkan fungsi untuk mengubah ukuran diameter roda masing-masing mobot: SetWheelDiameter(0,0.2) SetWheelDiameter(1,0.3)
' ukuran roda mobot 0 sebesar 0.2 meter ' ukuran roda mobot 1 sebesar 0.3 meter
Karena sekarang diameter mobot-0 menjadi 0.3 meter atau jejarinya 0.15 meter, maka jarak tempuh mobot-1 menjadi sekitar 1.885 meter, hasil akhir simulasi ditunjukkan pada Gambar II.2.
Gambar II.2. Hasil simulasi COBA02 – posisi mobot-1 <> mobot-0 Catatan Dengan demikian jelaslah bahwa dengan berubah-nya diameter roda dan menjaga kecepatan roda tetap (dengan SetWheelSpeed) akan terjadi perubahan jarak tempuh. Lebih lanjut, Anda bisa memperkirakan adanya kombinasi antara diameter roda dan kecepatan putar roda (RPM) yang menghasilkan jarak tempuh yang sama, misalnya dua kombinasi berikut ini menghasilkan jarak tempuh selama 1 menit sekitar 1.571 meter: 19
28 April 2005 RPM = 1 RPM = 0.5
Diameter = 0.5 jejari 0.25 meter Diameter = 1 jejari 0.5 meter
Okey, masih ingatkah Anda, bahwa saya pernah menuliskan, bahwa selain menggunakan fungsi SetWheelSpeed untuk mengatur kecepatan gerak mobot ada lagi satu fungsi yang lain yang sama fungsinya? Yaitu SetSteering! Nah pada COBA03 dan COBA04 akan dijelaskan penggunaan fungsi ini serta apa pengaruh perubahan diameter roda mobot. Sehingga nantinya, dari keempat program pertama ini (COBA01 sampai COBA04) bisa disimpulkan perbedaan antara penggunaan SetWheelSpeed dan SetSteering. Okey?
Program COBA03 Keterangan COBA02 ini digunakan untuk menjelaskan fungsi SetSteering yang digunakan untuk mengatur kecepatan gerak mobot yang bersangkutan. Keterangan fungsi ini sebagai berikut: SetSteering(mobot, CenterSpeed, RotationalSpeed) Digunakan untuk laju perpindahan titik pusat dan sekaligus kecepatan putar mobot (terhadap poros tengah mobot). Parameter yang digunakan adalah mobot CenterSpeed RotationalSpeed
indeks atau nama mobot yang bersangkutan kecepatan perpindahan titik pusat mobot Kecepatan putar mobot (dari poros tengah mobot)
Layout Mobot World Layout Mobot World masih sama dengan yang ditunjukkan pada Gambar II.1. Program Secara umum program COBA03 juga tidak terlalu jauh berbeda dengan COBA01, hanyasaja sekarang digunakan fungsi SetSteering untuk mengatur kecepatan gerak mobot, masing-masing mobot diberi kecepatan titik pusat yang sama, yaitu 0.25 meter/detik: ' mengatur posisi dan kecepatan mobot 0: 1 rpm SetMobotPosition(0,3,4,90) ' kecepatan robot 0 = 0.25 m/detik, 0 derajat/det (lurus) SetSteering(0,0.25,0) ' mengatur posisi dan kecepatan mobot 1: 1 rpm SetMobotPosition(1,4,4,90) ' kecepatan robot 1 = 0.25 m/detik, 0 derajat/det (lurus) SetSteering(1,0.25,0)
20
28 April 2005 Kemudian dilanjutkan dengan mengatur langkah simulasi sebesar 0.01 detik dan dilakukan sebanyak 800 kali atau sama dengan lama simulasi selama 8 detik: SetTimeStep(0.01) For a=1 To 800 StepForward Next
' atur kecepatan simulasi 0.01 detik ' jalankan selama 800 * 0.01 = 8 detik
Jarak tempuh kedua mobot sama, yaitu 0.25 meter/detik x 8 detik = 2 meter! Catatan Anda bisa mengubah-ubah nilai kecepatan titik pusat (sementara kecepatan rotasi masih nol, karena kita belum membahas tentang gerak belok, akan dibahas pada Bagian 2 dengan program COBA06 sampai COBA12) untuk melihat perbedaannya secara lebih jelas.
Program COBA04 Keterangan Mirip dengan COBA02 sekarang akan dilakukan perubahan diameter pada salah satu mobot kemudian dilakukan simulasi untuk melihat dampak perubahan diameter jika digunakan fungsi SetSteering untuk mengatur kecepatan mobot. Layout Mobot World Layout Mobot World masih sama dengan yang ditunjukkan pada Gambar II.1. Program Secara umum program COBA04 juga tidak terlalu jauh berbeda dengan COBA02, hanya saja digunakan SetSteering untuk mengatur kecepatan gerak masing-masing mobot, perhatikan hasil simulasi COBA04 yang ditunjukkan pada Gambar II.3. ' Diameter roda MOBOT 0 tetap sedangkan MOBOT 1 diubah menjadi 0.3 ' apa yang terjadi? SetWheelDiameter(0,0.2) SetWheelDiameter(1,0.3) ' mengatur posisi dan kecepatan mobot 0: SetMobotPosition(0,3,5,90) ' kecepatan robot 0 = 0.25 m/detik, 0 derajat/det (lurus) SetSteering(0,0.25,0) ' mengatur posisi dan kecepatan mobot 1: SetMobotPosition(1,4,5,90)
21
28 April 2005 ' kecepatan robot 1 = 0.25 m/detik, 0 derajat/det (lurus) SetSteering(1,0.25,0) SetTimeStep(0.01) For a=1 To 800 StepForward Next
' atur kecepatan simulasi 0.01 detik ' jalankan selama 800 * 0.01 = 8 detik
Mobot-0 masih tetap menggunakan diameter roda 0.2 meter, sedangkan mobot-1 menggunakan diameter roda 0.3 meter.
Gambar II.3. Hasil simulasi COBA04, posisi mobot-0 = mobot-1 Catatan – Kesimpulan antara SetWheelSpeed dan SetSteering Dari hasil simulasi keempat program pertama, COBA01, COBA02, COBA03 dan COBA04, ternyata untuk SetSteering, perubahan diameter roda mobot tidak berpengaruh, karena yang dipentingkan adalah kecepatan perpindahan mobot, bukan kecepatan rodanya. Berbeda dengan SetWheelSpeed, yang diatur adalah kecepatan rodanya, bukan kecepatan perpindahan mobot itu sendiri. Jadi semakin jelas bukan? Tinggal mau digunakan yang mana itu terserah Anda, tergantung pada aplikasinya, okey? Mari kita lanjutkan dengan program berikutnya…
Program COBA05 Keterangan Program COBA05 digunakan untuk memberikan penjelasan cara menggerakkan mobot hingga jarak tempuh tertentu yang ditandai dengan suatu tanda atau mark, 22
28 April 2005 sebagaimana ditunjukkan pada layout mobot world pada Gambar II.4. Tanda yang dipasang disini hanya digunakan sebagai tanda bukan acuan, sebagai acuan dapat digunakan untuk sensor posisi yang akan dibahas lebih detil pada Bab 3. Layout Mobot World Layout untuk COBA05 ini ditunjukkan pada Gambar II.4, perhatikan penempatan masing-masing mobot denga masing-masing tanda, untuk mobot-0 dan mark-0 memiliki koordinat-x yang sama yaitu 2, demikian juga dengan mobot-1 dan mark-1 memiliki koordinat-x yang sama yaitu 4.
Gambar II.4. Layout mobot world untuk COBA05 Program Seperti biasa, program diawali dengan menghapus seluruh jejak mobot (dari hasil simulasi sebelumnya), mengatur posisi mobot 0 pada lokasi (2,6), mengatur kecepatan pusat mobot 0 sebesar 0.25 m/detik, mengatur posisi mobot 1 pada lokasi (4,6) dan mengatur kecepatan pusat mobot 1 sebesar 0.50 m/detik: ' menghapus sisa trajektori sebelumnya EraseTrajectories ' mengatur posisi dan kecepatan mobot 0: SetMobotPosition(0,2,6,90) ' kecepatan robot 0 = 0.25 m/detik, 0 derajat/det (lurus) SetSteering(0,0.25,0) ' mengatur posisi dan kecepatan mobot 1: SetMobotPosition(1,4,6,90) ' kecepatan robot 1 = 0.50 m/detik, 0 derajat/det (lurus)
23
28 April 2005 SetSteering(1,0.50,0)
Kecepatan kedua mobot jelas berbeda, yang paling cepat digunakan sebagai acuan untuk menghentikan simulasi. Jarak antara lokasi mobot dengan tanda adalah 4 meter, dengan kecepatan mobot 1 sebesar 0.5 m/detik, maka lama simulasi yang dibutuhkan adalah 4 m / 0.5 m/det = 8 detik. Jika digunakan langkah waktu sebesar 0.01 detik maka dibutuhkan pengulangan sebanyak 8 detik / 0.01 detik = 800 kali: SetTimeStep(0.01) For a=1 To 800 StepForward Next
' atur kecepatan simulasi 0.01 detik ' jalankan selama 800 * 0.01 detik = 8 detik
Catatan Sekali lagi saya sampaikan bahwa tanda yang digambarkan belum digunakan sebagai sensor posisi, hanya sebagai tanda saja, hasil simulasi akhir ditunjukkan pada Gambar II.5. Anda perhatikan mobot-1 digunakan untuk menghentikan simulasi setelah mencapai jarak tempuh 4 meter, yaitu jarak antara posisi awal mobot-1 (juga mobot-0) dengan posisi tanda atau mark. Untuk penggunaan tanda atau mark sebagai sensor posisi akan dibahas secara detil pada Bab 3.
Gambar II.5. Hasil simulasi akhir COBA05
24