Model Nonholonomic Mobile Robot dengan 2 Roda (differential drive)

nonholonomic

Jadi, untuk kasus robot dengan dua roda (+satu caster buat penyeimbang) yang bergerak dengan metode differential drive seperti di atas, model geraknya yang cukup sederhana adalah,
1
Nah, kalau yang kita inginkan untuk pengendaliannya adalah kecepatan (v) dan kecepatan sudut(w), maka kita definisikan saja suatu titik di robot itu yang bukan titik pusat rotasinya, yang berjarak d dari titik pusat.
2
dengan mendiferensiasikan persamaan diatas, dan membolakbalik (meng-inverskan) matriksnya, maka akan didapatkan,
4

Percayalah..

————————–

Seharian ini saya menghabiskan waktu karena keangkuhan saya yang tidak percaya dengan model diatas. Padahal, cobalah lihat, semua penjelasannya sangat reasonable dan masuk akal (kalo mau, bisa diturunkan sendiri, capek nulisnya..hehe). Seharusnya tidak ada alasan lagi buat ragu, apalagi sampai menentang.

Ceritanya, hari ini saya mencoba menggunakan model ini untuk mengendalikan robot di tingkat low levelnya. Dan hasilnya adalah…hancur berantakan..haha
Ketika dijalankan, si robotpun berseliweran kemanamana, tak terkendali. Sontak saya bingung, apa yang salah ya. Saya hapuslah bagian-bagian program yang lain, dan coba menjalankan bagian ini saja. Namun, hasilnyapun, tetap hancur berantakan.

Mulailah saya merujuk ke berbagai ahli, saya carilah paper-paper terkait. Memang tidak banyak, tapi saya menemukan ada yang sudah berhasil menggunakan model ini, misinya tuntas.
Hm..saya berfikir..
“Ah, ga mungkin ini mah, ini buktinya saya coba jalanin bagian itu saja, tetep ga bisa. Mungkin bisa itu karena dia nerapin itu di robot zaman dulu, makanya bisa. Sekarang mah udah beda zamannya, robot sekarang beda, udah keren keren. Ga bisa lagi pake model itu, terlalu sederhana. Yang sekarang udah kompleks”
Padahal robot dua roda mah, ya intinya gitu-gitu juga.

Saya tetap menentang. Pikiran liar saya mulai menerawang kemana-mana. Mencari alasan logis untuk menyalahkan model ini.
Menemui jalan buntu, akhirnya sayapun mencoba sedikit membuka diri terhadap kebenaran model ini. Saya coba melalui simulasi dulu, perlahan, model itu saya terapkan.

eh, ternyata bisa.

saya berfikir lagi, merenung, mengevaluasi diri, dan..OH!
Ternyata ada satuan yang salah saya masukkan. Untuk sudut, yang harusnya radian, tapi yang saya masukkan derajat. Pantes aja hasilnya ngaco. Setelah diganti..waaa..ternyata bener.

————

Yap, saya menghabiskan seharian penuh hanya untuk itu. Sia-sia? Tidak juga, saya rasa saya jadi mendapat pelajaran berharga.

Gini.
Kalau hati penuh kesombongan, itulah akibatnya. Langsung menyalahkan tanpa mau berfikir ulang. Yah, untungnya ini hanya perkara model robot, dan bisa selesai dalam sehari. Untung juga akhir-akhirnya sadar.
Bayangkan kalau kesombongan itu adalah kesombongan terhadap kebenaran (al-Haq) dan ga sadar-sadar. Perkaranya kan dunia akhirat. Na’udzubillah..
Jangan sampai kita menentang ketika kebenaran datang pada kita. Karena kesombongan, jadi menutup diri.
Ketika disampaikan konsep kebenaran (ayat-ayat), yang jelas, rasional, masuk akal, tetap menolak untuk beriman.
Ketika pun ditambah lagi, ada contoh yang sudah menerapkannya (sunnah rasulullah), dan sudah nyata-nyata keberhasilannya, masih berdalih ini itu. Itu hanya dulu lah, tidak berlaku lagi sekarang, dll.
Jangan sampai ketika kebenaran itu datang, kita termasuk orang yang sibuk mencari-cari celah kesalahannya. Padahal mau dicari sampai kapanpun takkan pernah bisa ditemui, karena memang itu benar.

Huff..
Yang terpenting, introspeksi diri. Berubah memang tidak bisa ujug-ujug, yang penting kita terus istiqamah menapaki jalan yang benar, meskipun perlahan. Mulai dari yang mudah kita lakukan (ngejalanin model aja tadi dari simulasi dulu).

Semoga senantiasa diberi petunjuk oleh Nya..

الحق من ربك فلا تكونن من الممترين
Kebenaran itu adalah dari Tuhanmu, sebab itu jangan sekali-kali kamu termasuk orang-orang yang ragu.
(Al Baqarah 147)

9 thoughts on “Model Nonholonomic Mobile Robot dengan 2 Roda (differential drive)

  1. Pingback: Angle View – Pentingnya Tetap Berada di Range Tertentu | an afterthought

  2. i have a question,
    in your model, where is the origin point?
    if you put it in M, then what is the meaning of value rx or ry?
    or is it unnecessary to have origin point?

  3. Ini pake koordinat global. Origin point : somewhere in the map yang koordinatnya (0,0).
    Kalo pusat robotnya itu yang M (rx,ry).
    masalahnya adalah, kalo kita mau mencari w (kecepatan rotasi), kan nda bisa kalo di pusat robot -> lengannya 0 -> ga ada tangensial velocity -> seolah ga ngefek terhadap posisi sumbu x dan y robot, padahal kenyataannya ngefek banget.
    Makanya, licik2 dikit, coba kita tinjau titik (bebas) yang berjarak d dari si pusat robot. makanya butuh (x,y) itu.
    CMIIW…😉

    • 1.yg persamaan kedua (yg x dan y samadengan …) dicari turunannya (dapet x_dot sama y_dot), terus ganti semua rx_dot, ry_dot, teta_dot dengan yg dari persamaan pertama, sehingga sekarang kita dapet x_dot dan y_dot dalam variabel v dan w.
      misal
      x_dot = av + bw
      y_dot = cv + dw
      matriksnya jadi
      [x_dot;y_dot] = [a b; c d] [v;w]
      trus di invers deh buat dapet v sama w nya.

      2.asalkan casternya freewheel (bisa bergerak bebas) harusnya ga ngubah model dinamiknya si (secara general).
      *maaf jadi belepotan, mudah2an membantu🙂

  4. Boleh tanya lagi min?
    jwaban di atas dah jelas
    persamaan yang digunakan untuk mengatur posisi gerak robot dan kecepatan robot sama gak ya? kalau ada referensi blh mnta di share
    trmksh bnyk

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s