Ilmu Robotika semakin berkembang dari tahun ke tahun. Ilmu ini semakin digemari karena sesuai dengan perkembangan zaman terutama dalam pengembangan robot-robot di masa depan.
Jika ingin mulai coding robot, algoritma apa sih yang paling cocok?
Jika ingin mulai coding robot, algoritma apa sih yang paling cocok?
Pada dasarnya akan banyak sekali ditemukan jawaban. Namun, pada tulisan ini, kami sajikan beberapa algoritma robotika yang paling populer.
Berikut ini kami sajikan beberapa pengetahuan tentang algoritma dalam robotika.
Zero-order convergence: (source: http://www.it.uu.se/edu)
first-order convergence: (source: http://www.it.uu.se/edu)
Algoritma yang terkenal adalah algoritma prinsip tangan kanan. algoritma ini sederhana: taruh tangan kanan kamu pada tembok, lalu jalanlah sesuai dengan tembok yang menempel pada tangan. Maka, kamu akan menemukan jalan keluar dari maze.
- Pastikan posisi tempat kita berada saat ini adalah posisi start
- Untuk mencari jalan keluar dari labirin, periksa tembok-tembok dimulai dari kanan, atas, kiri, bawah.
Fuzzy Logic memungkinkan nilai keanggotaan antara 0 dan 1, abu-abu, hitam atau putih, “sedikit”, “lumayan”, “sangat”, atau “paling”. Fuzzy logic sangat berhubungan dengan teori kemungkinan.
Merupakan algoritma yang digunakan untuk mapping, yakni mencari dan menggambarkan peta jalan keluar dari labirin (maze).
Algoritma ini terdistribusi secara paralel dan memunyai kecenderungan untuk menyimpan pengetahuan yang didapatkannya dari pengalaman. Oleh karena itu, algoritma akan selalu merubah strukturnya untuk memecahkan masalah berdasarkan informasi eksternal maupun internal yang telah didapatkannya.
Algoritma Djikstra menghitung jarak semua verteks pada sebuah graf dari current verteks. Algoritma ini hanya berlaku pada kondisi: graf terhubung, edge yang tidak berarah, bobot edge(distance) tidak bernilai negatif.
Alat Penyimpanan Data
Kenapa Data di Flashdisk Sering Hilang
Belajar Komputer dari Nol Masuk Sini
Cara Partisi Harddisk Tanpa Install Ulang
Modem Huawei Eror, Di Sini Solusinya
Algoritma Coding Robot
Ulasan tentang Jaringan Saraf Tiruan
Terobosan Terbaru dari Random Access Memory
Selamat menikmati..
Algoritma-algoritma Robotika Paling Populer
#1 Algoritma Dead Reckoning
Dead Reckoning adalah sebuah proses dalam memperkirakan posisi berdasarkan posisi sebelumnya yang telah diketahui kecepatan, waktu dan jarak yang telah diketahui. Dead Reckoning banyak digunakan oleh binatang sebagai suatu cara navigasi untuk mengetahui posisinya berdasarkan pergerakan yang telah mereka buat sejak lokasi terakhir yang diketahui mereka.
Dengan Dead Reckoning, kamu bisa memprediksi posisi berikutnya melalui perhitungan kecepatan dan jarak saat ini.
Di dalam dunia networking, dead reckoning adalah sebuah metode yang digunakan untuk mengurangi lag yang disebabkan oleh network latency dan masalah bandwidth. Program melakukan hal ini dengan memprediksi state berikutnya dari sebuah entitas berdasarkan state saat ini.
Dengan Dead Reckoning, kamu bisa memprediksi posisi berikutnya melalui perhitungan kecepatan dan jarak saat ini.
Di dalam dunia networking, dead reckoning adalah sebuah metode yang digunakan untuk mengurangi lag yang disebabkan oleh network latency dan masalah bandwidth. Program melakukan hal ini dengan memprediksi state berikutnya dari sebuah entitas berdasarkan state saat ini.
Pseudocode
ada dua jenis Dead Reckoning, zero-order convergence dan first-order convergence.Zero-order convergence: (source: http://www.it.uu.se/edu)
For each shared object
{
PredictedPathVector = Last_KnownPos - Last_Last_KnownPos
DeltaTime = Last_KnownTime - Last_Last_KnownTime
DeltaVelocity = PredictedPathVector / DeltaTime
NewDeltaTime = CurrentTime - LastLastKnownTime
NewPos = LastKnownPos + NewDeltaTime * DeltaVelocity
}
first-order convergence: (source: http://www.it.uu.se/edu)
For each shared object{
PrevPredictedPathVector = Last_KnownPos[1]-
Last_KnownPos[2]
PrevDeltaTime = Last_KnownTime[1] - Last_KnownTime[2]
StartDeltaTime = Last_KnownTime[0] - Last_KnownTime[2]
PrevVelocity = PrevPredictedPathVector / PrevDeltaTime
StartPos = Last_KnownPos[2] + StartDeltaTime *
PrevVelocity
CurrentDeltaTime = Now - Last_KnownTime[0]
PredictedPathVector = Last_KnownPos[0] -
Last_KnownPos[1]
DeltaTime = Last_KnownTime[0] - Last_KnownTime[1]
EndPos = Last_KnownPos[0] + CurrentDeltaTime *
PredictedPathVector / DeltaTime
LinearConvergenceVector = EndPos - StartPos
Velocity = LinearConvergenceVector / DeltaTime
NewPos = StartPos + CurrentDeltaTime * Velocity
}
#2 Follow Line
Algoritma ini digunakan oleh sebuah objek untuk tetap pada garis yang tercetak pada lantai. Biasa digunakan pada robot yang dilombakan pada berbagai kompetisi dimana sang robot harus berjalan mengikuti garis yang tercetak pada lantai sampai tujuan.#3 Follow Wall
Algoritma ini digunakan oleh sebuah objek untuk dapat mengikuti arah dimana tembok berada. algoritma ini banyak digunakan pada maze solving (keluar dari labirin). Kesesuaian arah disesuaikan dengan yang diminta.Algoritma yang terkenal adalah algoritma prinsip tangan kanan. algoritma ini sederhana: taruh tangan kanan kamu pada tembok, lalu jalanlah sesuai dengan tembok yang menempel pada tangan. Maka, kamu akan menemukan jalan keluar dari maze.
Flow Algoritma
Algoritma ini dapat digambarkan sebagai berikut:- Pastikan posisi tempat kita berada saat ini adalah posisi start
- Untuk mencari jalan keluar dari labirin, periksa tembok-tembok dimulai dari kanan, atas, kiri, bawah.
- Periksa kanan: jika ada tembok, periksa atas. Jika tidak ada tembok, belok kanan.
- Periksa atas: jika ada tembok, periksa kiri. Jika tidak ada tembok, jalan lurus.
- Periksa kiri, jika ada tembok, periksa bawah. Jika tidak ada tembok, belok kiri.
- Periksa bawah, jika ada tembok, kembali periksa atas. Jika tidak ada tembok, jalan mundur.
- Begitu seterusnya hingga menemukan jalan keluar.
Pseudocode
function maze(kanan, atas, kiri, bawah){
set array[#][#] as maze
start[x][y] = array[0][0] // start dimulai dari titik (0,0)
if(start[x+1][y])==null //kanan
turn right;
maze(bawah, kanan, atas, kiri);
if(start[x][y+1])==null //atas
turn ahead;
maze(kanan, atas, kiri, bawah);
if(start[x-1][y])==null//kiri
turn left;
maze(atas, kiri, bawah, kanan);
if(start[x][y-1])==null//bawah
turn down;
maze(kiri, bawah, kanan, atas);
}
Potongan Program
void maze(){
string finishY, finishX, startY, startX;
string y1 = startY;
string y2 = startX;
while(!(yl == finishY && xl == finishX)){
if(trace[yl][xl+1] ==”tembok”)
else if(trace[yl+1][xl] ==”tembok”)
else if(trace[yl][xl-1] ==”tembok”)
else trace[yl-1][xl]= “jalan”;
...dst...
}
#4 Fuzzy Logic
Fuzzy Logic menggantikan kebenaran konsep logika Boolean (yang menyatakan bahwa segala hal dapat direpresentasikan dengan 0 atau 1) dengan konsep “tingkat kebenaran”.Fuzzy Logic memungkinkan nilai keanggotaan antara 0 dan 1, abu-abu, hitam atau putih, “sedikit”, “lumayan”, “sangat”, atau “paling”. Fuzzy logic sangat berhubungan dengan teori kemungkinan.
Pseudocode
Sebagai contoh, dalam kasus mengontrol temperatur. Daripada kita harus selalu bergelut dengan permasalahan:if (Tz>100C && Z==”Cair”)//Tz adalah temperatur Z, Z adalah logamlebih baik kita ganti dengan alternatif baru yang tidak perlu menggunakan kompleksnya angka:
then “buat pedang”;
if(Tz sudah sangat panas && Z telah mencair)Di dalam Fuzzy Logic, tidak ada pernyataan seperti “tingginya 1.2 m” atau “tingginya 1.67 m”. tetapi, nilai tinggi diberikan dalam suatu batasan range.
maka kita buat pedang;
Laki-laki pendek sekali = [0, 1.3] mkonsekuensinya, 2 nilai(true atau false) saja tidak cukup. Dibutuhkan nilai yang lebih banyak. Misal:
laki-laki pendek = [1.3, 1.5] m
laki-laki sedang = [1.5, 1.8] m
laki-laki tinggi = [1.8, 2.0] m
laki-laki raksasa > 2.0 m
tidak setuju = 0
agak setuju = 1
setuju = 2
sangat setuju = 3
#5 Maze Mapping
Merupakan algoritma yang digunakan untuk mapping, yakni mencari dan menggambarkan peta jalan keluar dari labirin (maze).
#6 Algoritma Neural Networks
Neural Networks Algorithm, atau disebut juga algoritma jaringan saraf, merupakan sebuah algoritma yang meniru sistem kerja jaringan saraf manusia. Algoritma ini meniru sistem kerja otak manusia dalam menerjemahkan kompleksnya input untuk kemudian dijadikan output.Algoritma ini terdistribusi secara paralel dan memunyai kecenderungan untuk menyimpan pengetahuan yang didapatkannya dari pengalaman. Oleh karena itu, algoritma akan selalu merubah strukturnya untuk memecahkan masalah berdasarkan informasi eksternal maupun internal yang telah didapatkannya.
#7 Shortest Path
Shortest Path, atau biasa dikenal dengan istilah Algoritma Djikstra, merupakan sebuah cara pencarian yang dilakukan pada graph dimana hanya dibutuhkan jalur yang paling pendek untuk sebuah graph. Algoritma ini menemukan jalur pencapaian tujuan dengan biaya yang paling rendah.Algoritma Djikstra menghitung jarak semua verteks pada sebuah graf dari current verteks. Algoritma ini hanya berlaku pada kondisi: graf terhubung, edge yang tidak berarah, bobot edge(distance) tidak bernilai negatif.
Flow Algoritma
- Buat list untuk jarak, verteks sebelumnya, verteks yang telah dikunjungi, dan verteks saat ini.
- Set semua verteks dengan nilai tak hingga, kecuali pada verteks awal-yang diset dengan nol.
- Semua nilai pada list verteks yang telah dikunjungi, diset dengan false.
- Set semua nilai pada list verteks sebelumnya dengan nilai yang spesial yang menandakan bahwa mereka belum didefinisikan, seperti null.
- Set verteks saat ini dengan verkteks awal.
- Tandai verteks saat ini bahwa telah dikunjungi.
- Update jarak dan list sebelumnya berdasarkan verteks yang bisa secara langsung dicapai dari verteks saat ini.
- Update verteks saat ini dengan verteks yang belum dikunjungi yang bisa dicapai dengan jalur terpendek (shortest path) dari verteks awal.
- Ulang sampai langkah 6 hingga semua node dikunjungi
Pseudocode
function Dijkstra(Graph, source): (source: wikipedia)for each vertex v in Graph: // Inisialisasi
dist[v] := infinity // jarak yang belum diketahui
previous[v] := undefined // node sebelumnya
dist[source] := 0 // jarak dari source ke source
Q := the set of all nodes in Graph
while Q is not empty: // main loop
u := node in Q with smallest dist[] // jarak terpendek
remove u from Q // ambil u
for each neighbor v of u:
alt := dist[u] + dist_between(u, v)
if alt
Penutup
Demikian pembahasan sederhana kami tentang beberapa algoritma dasar robotika paling populer. Semoga ulasan ini dapat bermanfaat bagi perembangan robotika di Indonesia. Semoga dapat pula membantu kamu yang sedang berjuang mengikuti lomba KRCI, ya!
Wawasan Penting Untuk Laki
Saat Laptop Kamu Mengeluarkan Bunyi AnehAlat Penyimpanan Data
Kenapa Data di Flashdisk Sering Hilang
Belajar Komputer dari Nol Masuk Sini
Cara Partisi Harddisk Tanpa Install Ulang
Modem Huawei Eror, Di Sini Solusinya
Algoritma Coding Robot
Ulasan tentang Jaringan Saraf Tiruan
Terobosan Terbaru dari Random Access Memory
Allo lam kenal
BalasHapuswa agak bingung yang ttg following wall, soalnya pake atas n bawah coba pake depan n belakang karena memang seperti itu.
trus penjelasan ttg :
# Periksa kanan: jika ada tembok, periksa atas. Jika tidak ada tembok, belok kanan.
# Periksa atas: jika ada tembok, periksa kiri. Jika tidak ada tembok, jalan lurus.
# Periksa kiri, jika ada tembok, periksa bawah. Jika tidak ada tembok, belok kiri.
# Periksa bawah, jika ada tembok, kembali periksa atas. Jika tidak ada tembok, jalan mundur.
wa agak bingung klo menurut wa :
# Pastikan berada pada posisi start.
# Tentukan dinding yang ingin diraba (Follow) jika kanan maka seterusnya kanan n jika kiri maka seterusnya kiri.
# Follow kanan maka:
- Jika depan tidak ada n kanan ada maka terus lurus.
- Jika depan ada atau tidak ada n kanan tidak ada maka belok kanan.
- Jika depan ada n kanan ada maka belok kiri lalu Follow dinding kanan.
- Jika depan ada n kanan ada n kiri ada maka rotasi 360 derajat lalu Follow dinding kanan (yg tadinya kiri).
Gmana?
Bacaan menarik, wa jd lebih tau byk ttg metode-metodenya.
Thanks Bro.
sebenernya pendapatmu dengan tulisanku itu sama maknanya, hanya penyampaiannya saja yang berbeda. silakan dicek kembali..
BalasHapuscoba lihat pernyataanmu poin ke dua:
"Jika depan ada atau tidak ada n kanan tidak ada maka belok kanan"
itu sama saja dengan pernyataanku poin pertama:
"Periksa kanan: jika ada tembok, periksa atas. Jika tidak ada tembok, belok kanan", dst..
btw, ternyata tulisanku ada yang salah, untuk poin ke empat,
"Periksa bawah, jika ada tembok, kembali periksa atas. Jika tidak ada tembok, jalan mundur",
seharusnya:
"# Periksa bawah, jika ada tembok, kembali periksa kanan. Jika tidak ada tembok, jalan mundur."
btw, thx ya atas kunjungannya, salam kenal..
permisi mau tanya tentang logika yang periksa atas dan periksa bawah itu gmn maksudnya?
BalasHapusmaaf yach ..say amasih awam banget...
tapi cukup tertarik buat belajar...!!!
thank's before
@anonymous:
BalasHapusiya, tak mengapa, saya pun masih belajar. tapi bisa saya jelaskan sedikit:
algoritma Follow Wall yang saya bahas, yakni algoritma tangan kanan, menggunakan logika yang lumayan sederhana. mungkin untuk memperjelasnya, ada beberapa hal yang harus kita perhatikan:
1. bayangkan labirin yang kita hadapi merupakan sebuah bidang 2 dimensi seperti pada game-game sejenis packman
2. asumsikan terdapat 4 macam arah : atas (atau depan), kanan, bawah(atau belakang), kiri
dengan asumsi-asumsi di atas, maksud dari 'periksa atas' tidak lain adalah 'periksa sisi depan'. sedangkan 'periksa bawah' adalah 'periksa sisi belakang'. begitu kira2..
makasih atas kunjungannya!