Sabtu, 27 Februari 2010

Error Pembacaan Jarak sensor PING

.
Sudah cukup lama si sekitar 2.5 tahun yang lalu..
Ketika saya sedang memprogram mobil robot peraba / pengikut dinding menggunakan metode Fuzzy.
Plan berikut adalah tugas akhir saya yaitu :
"Proyeksi posisi dinding menggunakan metode Fuzzy dgn Mobil Robot"
intinya :
Sebuah mobil robot dan perangkat komunikasi wireless dgn komputer yang akan berjalan pada ruangan labirin kemudian "memetakan" posisi dinding (apakah posisi dinding dikiri atau dikanan atau dikedua sisi mobil robot) sehingga pada komputer akan digambarkan secara Realtime bentuk ruangan yang dilalui mobil robot tersebut.

Dulu saya tidak mengenal wireless seperti Zigbee, RFM12B, RLP434 + TLP434, dsb sehingga wireless seadanya saja dan komunikasi berupa karakter singkat dengan jarak maksimum 8 meter. Wallhasil kurang maksimal.

Kali ini hanya fokus pada permasalahan pembacaan sensor PING-nya.

Catatan PayZ :
Mobil robot menggunakan 3 buah sensor PING yang berada pada posisi depan semua. 1 buah sensor tegak lurus menghadap ke depan berfungsi agar mobil robot tidak menabrak dinding didepannya, 1 buah sensor menghadap depan kiri dengan sudut 45° dan 1 buah sensor lg menghadap depan kanan dengan sudut 45°.
Posisi sensor ping pada mobil robot seperti berikut.
Setelah sudah di program semua...lalu Test Drive..
Set point jarak yang diinginkan antara sensor PING dengan dinding adalah 24 cm - 26 cm, dan karena sensor PING miring 45° terhadap dinding sehingga jaraknya bisa mendekati 18cm - 22 cm. Anehnya mengapa kadang-kadang bisa lebih dekat dari 13 cm bahkan kurang.
Bingung..bingung..bingung...

Awalnya kupikir porgram Fuzzy-nya salah sehingga Crisp output Fuzzy-nya salah. Dan untuk mengurangi kesalahan, mobil robot di program, koneksi komputer via port COM dengan kabel (Ban tidak menapak), dan proses Fuzzy-nya ditampilkan di komputer pada HyperTerminal atau CoViAVR.

Simulasi dinding menggunakan telapak tangan yang didekatkan dengan sensor PING dan hasil yang ditampilkan di komputer semuanya benar dari Set Point, Jarak Aktual, Error, DError, ufError (derajat keanggotaan error 1 hingga 5), ufdError (derajat keanggotaan delta error 1 hingga 5), output Fuzzy Rule, Num, Denum, dan Crisp sudah benar semua.
Lalu apa.. apaaaa... (lebay).














Lama...lama...lama... istirahat.. lama.. lama.. lama..
Suatu saat, Uji coba lagi ah tapi kali ini simulasi tidak menggunakan tangan tetapi menggunakan Styrofoam sebagai simulasi dinding (labirinnya memang menggunakan Styrofoam sebagai dinding).
Styrofoam saya gerakkan pelan-pelan terhadap sensor PING dan hal mengejutkan ternyata tampak (alah) yaitu ketika pembacaan sensor PING sebagai berikut :
23 cm
24 cm
25 cm
26 cm
300 cm
300 cm
26 cm
25 cm

Mengapa setelah 26 bukannnya 27 melainkan 300 dan memang dalam program saya batasi nilai maksimum adalah 300 (dan ini kesalahan harusnya batasi 30 saja). Nilai error 300 inilah yang menyebabkan Mobil robot bergerak cepat mendekati dinding karena mobil robot "pikir dia sangat jauh dari dinding" sehingga terkadang mobil robot terlalu dekat dengan dinding.
Setelah dianalisa lalu diketahui bahwa pada sudut-sudut tertentu yaitu sudut pancaran ultrasonik terhadap dinding Styrofoam, kadang sinyal ultrasonik yang dipancarkan oleh pemancar tidak diterima oleh penerima karena Styrofoam / dinding memantulkan suara ultrasonik tersebut ke arah lain yang tidak mengenai sensor penerima.
Solusinya yaitu dengan menambahkan sensor PING untuk pembacaan yang lebih baik atau dengan mengatur secara manual posisi sudut sensor PING terhadap dinding sehingga didapatkan pembacaan jarak yang lebih baik..

Saya lebih suka cara kedua.. hemat...

Problem Solved.... (",)v

Topik yang Populer