Apa itu KRCI?
KRCI kepanjangan dari Kontes Robot Cerdas Indonesia. Kontes ini mulai diselenggarakan pada tahun 2004 bersamaan dengan pelaksanaan Kontes Robot Indonesia (KRI).
Kontes ini awalnya diusulkan oleh dosen ITB untuk mengimbangi KRI yang selalu didominasi oleh PENS-ITS dan Politeknik. Ternyata pada prakteknya KRCI tetap didominasi oleh Politeknik.
KRCI mengadopsi peraturan dari kontes robot pemadam api di Connecticut, Amerika. Dalam kontes ini sebuah robot berukuran maksimal 31 x 31 x 31 cm harus bisa memadamkan api lilin yang ditempatkan acak pada sebuah miniatur rumah dan kembali ke base (tempat start). Yang dinilai disini adalah kecepatan robot dalam menyelesaikan tugasnya.
Sebuah robot bersiap-siap didalam arena pertandingan
KRCI ini dibagi menjadi 2 divisi utama: senior dan expert. Senior dibagi lagi menjadi 2 beroda dan berkaki, adapun expert juga dibagi menjadi 2 single dan swarm. Divisi expert sendiri baru dimulai sejak tahun 2005 dan swarm baru dimulai pada tahun 2007. Tahun 2004 KRCI diselenggarakan di Balairung UI Depok diikuti oleh 14 peserta, 12 beroda dan 2 berkaki.
- S.M.A.R.T.1 - Institut Sains & Teknologi AKRPIND Yogyakarta – Beroda
- RADJA - Institut Teknologi Bandung – Beroda
- Fathonah - Politeknik Elektronika Negeri Surabaya – Beroda
- Kan_@yakan21 - Politeknik Manufaktur Bandung – Beroda
- EVO 113 - Politeknik Negeri Bandung – Beroda
- FIRE MOUSE - Universitas Bina Nusantara Jakarta – Beroda
- F R E E - Universitas Gajah Mada Yogyakarta – Beroda
- Zomblow - Universitas Indonesia Jakarta – Beroda
- F2R-UMJ - Universitas Muhammadyah Jember – Beroda
- EZI Universitas Negeri Jember – Beroda
- LOTUS TEAM - Universitas Negeri Malang –Beroda
- Smart Visy - Universitas Surabaya - Beroda
- Arachid - Universitas Surabaya – Berkaki
- IR-HEX - Institut Teknologi Sepuluh Nopember Surabaya – Berkaki
Pada KRCI ini kategori beroda dimenangkan oleh Evo 113 dan berkaki oleh Arachnid.
Arachnid dari Universitas Surabaya, Juara 1 KRCI 2004 Divisi Senior Berkaki
Evo 113 dari Polban, Juara 1 KRCI 2004 Divisi Senior Beroda
Pada KRCI kali ini hanya Evo 113 yang berhasil dengan sempurna menyelesaikan tuugasnya dengan waktu yang relatif cepat dan bisa kembali ke tempat start.
Ada cerita menarik dibalik sukses Evo 113.
Langkah Evo 113 menjadi jawara KRCI tidak mulus, setidaknya ada 2 kendala serius yang dialami oleh Robot ini. Pertama adalah rusaknya sensor api yang dimiliki oleh Evo 113 sehingga harus melibatkan istri dari sang dosen pembimbing untuk mengantar spare part dari Bandung ke Jakarta pada jam 11.00 malam. Kedua adalah rusaknya microcontroller robot sehingga harus mengorbankan robot otomatis tim KRI Polban (dan itu adalah robot punya saya, hiks hiks hiks).
Contoh Program Sederhana Robot Pemadam Api (KRCI) dengan BS2 dan OOPIC
Dibuat oleh Mr. Widodo
HP:08569887384
Helo, jika Anda ingin membuat robot cerdas, bahkan ingin mencoba untuk mengikuti KRCI, maka ada beberapa masukan dari saya, antara lain :
- Gunakan mikrokontroler yang memiliki fitur yang memuaskan dengan kemampuan memory yang besar, mikro seperti ATMega8535, BasicMicro, dan OOPIC dapat dicoba.
- Gunakan Sensor yang berkualitas dengan jumlah yang memadai, semakin banyak sensor dengan algoritma yang bagus semakin baik.
- Gunakan sensor penting lainnya seperti UVTRON, TPA81 Thermal array, sharp GP2D02 dll.
- Gunakan motor dc atau servo motor kecepatan tinggi dan daya yang besar seperti Hitech, minimal servo continuous parallax, atau mini servo MX35.
- Software yang paling enak untuk belajar dari dasar dan gak ruwet, cobalah basic stamp, kalau ingin bahasa assembly, kuasai dulu pemrograman assembly dasar.
Berikut dasar pseudocode konsep membuat robot cerdas
MULAI
INISIALISASI VARIABLE
PANGGIL FUNGSI BACASENSORSHARP
PANGGIL FUNGSI BACAULTRASONIC
PANGGIL FUNGSI BACASENSORAPI
PANGGIL FUNGI SERVOMAJU
BACA SENSOR LAGI
JIKA
JIKA
JIKA NILAI AMBANG API TERCAPAI, BERHENTI
HIDUPKAN KIPAS PEMADAM
DST
Anda dapat bersilahturahmi ke Mr. Widodo untuk melihat contoh robot GATOT KACA yang akan diikutsertakan di KRCI.
KRCI.BS2
'{$STAMP BS2p}
'{$PBASIC 2.5}
' Robot Pemadam Api
'
ping PIN 7
#SELECT $stamp
#CASE BS2,BS2E
trigger CON 5
scale CON $200
#CASE BS2SX, BS2P, BS2PX
trigger CON 13
scale CON $0cd
#ENDSELECT
rawtoin CON 889
rawtocm CON 2257
isHigh CON 1
isLow CON 0
rawDist VAR Word
inches VAR Word
cm VAR Word
val01 VAR Byte ' sensor sebelah kanan
val02 VAR Byte ' sensor sebelah kiri
i VAR Byte ' count variable for loop
'--------------------------------------------------------
' deklarasi konstanta
cl CON 14 ' pin 14 is output (clock) pada sensor Sharp GP2D02 sebelah kanan
dt CON 15 ' pin 15 is the input (data)
c2 CON 12 ' pin 12 is output (clock) pada sensor Sharp GP2D02 sebelah kiri
dt2 CON 13 'pin 13 is the input
'--------------------------------------------------------
' I/O pin setup for detector
INPUT dt ' make pin 15 the input
INPUT dt2
HIGH cl ' make pin 14 output and high
HIGH c2
wDist VAR Word
wDistkanan VAR Word
wDistkiri VAR Word
'sensor srf04 sebelah kanan
INITSRFKANAN CON 10
ECHOSRFKANAN CON 11
'sensor srf04 sebelah kiri
INITSRFKIRI CON 6
ECHOSRFKIRI CON 8
'sensor srf04 belakang robot
INIT CON 4
ECHO CON 5
' berjalan 1 arah 1 uS
'jarak=(echo time)/ faktor konversi
'gunakan 74 inchi (73.74 uS per inchi)
'gunakan 29 untuk sentimeter ( 29.033 per 1 cm)
convfac CON 74 ' use inches
counter VAR Byte
main:
GOSUB PingDepan
inches=rawDist ** RawToIn
cm=rawDist ** RawToCm
DEBUG CRSRXY, 15, 3,
DEC rawDist, CLREOL,
CRSRXY, 15,4,
DEC inches, CLREOL,
CRSRXY, 15,5,
DEC cm, CLREOL
PAUSE 100
GOSUB sr_sonar ' baca jarak depan
GOSUB sharp ' baca jarak sisi samping
DEBUG "Sensor SRF04 belakang:"
DEBUG DEC wDist, CR
DEBUG "Sensor SRF04 kanan:"
DEBUG DEC wDistKanan, CR
DEBUG "Sensor SRF04 kiri:"
DEBUG DEC wDistKiri, CR
‘jika di depan gak ada halangan dan cukup jauh >30cm
IF cm >30 AND val01 <145>
'maju terus
FOR counter = 1 TO 30
PULSOUT 0,1000 ‘arah putaran servo continuous Parallax
PULSOUT 1,3500
PAUSE 2
NEXT
ENDIF
'jika ada halangan dan sebelah kiri sempit
IF cm<=30 AND val01<140 class="SpellE">wdistKiri < class="SpellE">wdistKanan>8 THEN
'mundur dulu
FOR counter = 1 TO 50
PULSOUT 1,1000
PULSOUT 0,3500
PAUSE 2
NEXT
''belok kanan
FOR counter=1 TO 120
PULSOUT 1,3500
PAUSE 2
NEXT
ELSE
'selain dari itu
'maju dikit
FOR counter = 1 TO 20
PULSOUT 0,1000
PULSOUT 1,3500
PAUSE 2
NEXT
IF cm<=30 AND (wdistKiri < wdistKanan) THEN
'mundur dulu
FOR counter = 1 TO 50
PULSOUT 1,1000
PULSOUT 0,3500
PAUSE 2
NEXT
''belok kanan
FOR counter=1 TO 120
PULSOUT 1,3500
PAUSE 2
NEXT
ELSE
'selain dari itu
'maju dikit
FOR counter = 1 TO 20
PULSOUT 0,1000
PULSOUT 1,3500
PAUSE 2
NEXT
ENDIF
ENDIF
'jika ada halangan dan sebelah kanan sempit
IF cm<=30 AND wDistKiri >8 AND wDistKanan<8>
'mundur dulu
FOR counter = 1 TO 50
PULSOUT 1,1000
PULSOUT 0,3500
PAUSE 10
NEXT
'belok kiri
FOR counter=1 TO 120
PULSOUT 0,1000
PAUSE 10
NEXT
IF cm<=30 AND val02 <140 class="SpellE">wdistKiri > wdistKanan) THEN
'mundur dulu
FOR counter = 1 TO 50
PULSOUT 1,1000
PULSOUT 0,3500
PAUSE 2
NEXT
'belok kiri
FOR counter=1 TO 120
PULSOUT 0,1000
PAUSE 10
NEXT
ELSE
'selain dari itu
'maju dikit
FOR counter = 1 TO 20
PULSOUT 0,1000
PULSOUT 1,3500
PAUSE 2
NEXT
ENDIF
ENDIF
GOTO main
‘sensor ping di pasang di depan robot
PingDepan:
ping =IsLow
PULSOUT ping, trigger
PULSIN ping, isHigh, rawDist
rawDist=rawDist */Scale
rawDist =rawDist/2
RETURN
inches=rawDist ** RawToIn
cm=rawDist ** RawToCm
DEBUG CRSRXY, 15, 3,
DEC rawDist, CLREOL,
CRSRXY, 15,4,
DEC inches, CLREOL,
CRSRXY, 15,5,
DEC cm, CLREOL
PAUSE 100
‘sensor SRF04
sr_sonar:
PULSOUT INIT,5 ' 10us init pulse
PULSIN ECHO,1,wDist ' measure echo time
wDist=wDist/convfac ' convert to inches
PULSOUT INITSRFKANAN,5
PULSIN ECHOSRFKANAN, 1, WDistkanan
WdistKanan=wDistKanan/convfac
PULSOUT initSRFKIRI,5
PULSIN ECHOSRFKIRI,1 ,wDistKiri
WDistKiri=wDistKiri/convfac
RETURN
‘sensor SHARP
sharp:
GOSUB read01 ' call measurement routine
GOSUB read02
DEBUG "Sensor 1:"
DEBUG DEC val01, CR ' display the value
DEBUG "Sensor 2:"
DEBUG DEC val02, CR
PAUSE 10
RETURN
read01:
LOW cl ' turn on detector for reading
rl:
IF IN15 = 0 THEN rl ' wait for input high
SHIFTIN dt, cl, MSBPOST, [val01]
HIGH cl ' turn detector off
PAUSE 1 ' let detector reset
RETURN
read02:
LOW c2 ' turn on detector for reading
r2:
IF IN13 = 0 THEN r2 ' wait for input high
SHIFTIN dt2, c2, MSBPOST, [val02]
HIGH c2 ' turn detector off
PAUSE 1 ' let detector reset
RETURN
UVTRON.OSC
'
' UVTron Example for OOPic
'
dim uvOut as new oDio1 ' flame indicator
dim uvIn as new oDio1 ' UVTron input
dim uvPEvent as new oEvent ' UV pulse event
dim uvTEvent as new oEvent ' 1-second timer event
dim uvGate1 as new oGate ' UV event buffer
dim uvGate2 as new oGate ' Timer event buffer
dim uvCt as new oByte ' user pulse ct
dim uvCtx as new oByte ' temporary pulse ct
sub main()
call inituv
uvOut.ioline=17
uvOut.direction=cvOutput
do
if (uvCt >= 4) then
uvOut=1
else
uvOut=0
end if
loop
end sub
'------------------------------------------------------
' Event-Driven UVTron Monitoring routines
' uvCt is number of UVTron pulses per second
' (4 is a good flame threshold for stock UVTron)
'
sub inituv()
uvIn.ioline=8
uvIn.direction=cvInput
uvGate1.input1.link(uvIn)
uvGate1.output.link(uvPEvent.operate)
uvGate1.operate=cvtrue
uvGate2.input1.link(oopic.hz1)
uvGate2.output.link(uvTEvent.operate)
uvGate2.operate=cvtrue
uvCtx=0
uvCt=0
end sub
sub uvPEvent_code()
uvCtx=uvCtx+1
end sub
sub uvTEvent_code()
uvCt=uvCtx
uvCtx=0
end sub
Harga OOPI II+ Starter Package Rp 1.4jt.
Membuat Robot Explorer Hexapod
(Artikel lengkap baca pada majalah Elkom ed 4)
Widodo Budiharto
Guest Professor Univ. de Bourgogne, Prancis
Pendahuluan
Pada proyek robot kali ini, penulis memaparkan cara membuat robot berkaki 6 (hexapod) menggunakan 3 buah sensor, yaitu 1 sensor jarak SRF04 (
Blok Rangkaian
Robot ini bergerak berdasarkan informasi dari ketiga sensor jarak. Robot ini diharapkan dapat melakukan “eksplorasi” ke daerah yang dilaluinya, untuk memberikan informasi ke “pemiliknya” menggunakan kamera wireless misalnya, oleh karena itu robot ini dinamakan Explorer Hexapod. Gambar di bawah ini menampilkan blok rangkaian yang akan dibuat:
Gambar 1. Blok rangkaian robot Explorer Hexapod
Bahan –bahan
Berikut ini ialah bahan – bahan yang diperlukan, yang paling penting tentunya ialah kerangka dari kaki hexapod ini, yang dapat Anda buat sendiri atau membeli kit yang sudah jadi :
1. 2 buah servo motor HS311
2. Body dan kaki hexapod
(Dapat membeli kit kaki hexapod lengkap dengan 2 bh servo HS311)
3. Min. System ATmega 8535, ATmega16 atau Atmega32
4. Driver Motor DC 293D/ deKits SPC DC Motor
5. 1 sensor jarak ultrasonic SRF 04 (jarak 3cm-3m)
6. 2 sensor jarak infrared SharpGP2D12(10cm -80cm)
7. Tempat baterai 9V 2bh
Berikut ini ialah konstruksi dari kaki hexapod standar, yang digerakkan dari putaran motor servo continuous. Servo ini dikendalikan dari port B.0-3 melalui Driver motor yaitu kit DC motor Driver menggunakan IC L293D (dapat menggunakan juga kit dekits SPC DC Motor) atau jika ingin lebih kuat lagi menggunakan IC H bridge L298. Perlu diingat, kaki servo ini ada 3 pin, cukup gunakan 2 kaki yang menggerakan motor DC di dalam servo tersebut saja.
Gambar 2. Susunan sisi kaki hexapod
Servo HS311 merupakan servo dengan torsi yang cukup besar untuk menggerakkan robot dengan beban maksimal 1.5kg.
Cara kerja
Pertama, kita lihat dulu bagian sensor. Sensor SRF04 digunakan untuk mengetahui jarak depan robot, apakah ada penghalang atau tidak, yang mampu mendeteksi jarak dari 3cm hingga 3 meter. Sensor ini bekerja berdasarkan prinsip gelombang ultrasonic. Pencari jarak ini bekerja dengan cara memancarkan pulsa suara dengan kecepatan suara (0.9 ft/milidetik) berfrekwensi 40 KHz. Keluaran sensor ini dihubungkan ke Port C.0 dan Port C.1, dan dengan nilai trigger input sebesar 10 uS pada pulsa TTL. Alasan mengapa digunakan sensor ini, ialah karena sensor jarak ini paling banyak digunakan pada Kontes Robot Cerdas di Indonesia, sehingga pembaca pemula menjadi familiar. Anda dapat menambah sensor ini hingga 4 buah untuk digunakan pada sisi kanan, kiri dan belakang robot biar lebih akurat.
Gambar 3. Susunan kaki SRF04
Sedangkan 2 sensor infrared GP2D12 di sisi samping kanan dan kiri dapat mengukur jarak sejauh 10cm- 80cm dengan output analog, sehingga dapat langsung dihubungkan ke port A.0 dan port A.1 dari mikrokontroler AVR tersebut. Karakteristik dari sensor ini tidak linear, oleh karena itu idealnya perlu digunakan look up table untuk mengolah raw data dari sensor tersebut.
Hasil pembacaan sensor-sensor jarak ini diolah oleh mikrokontroler, untuk memutuskan gerakan yang akan dilakukan apakah maju, mundur atau belok. Dengan memutarnya servo, menyebabkan bagian kaki yang terhubung ke servo bergerak bergantian sehingga robot dapat berjalan.
Explorer.bas:
‘Program Demo Robot Explorer Hexapod
‘By Mr. Widodo Budiharto
‘Univ. de Bourgogne 2007
‘deklarasi fungsi dan variabel
Declare Sub Initialize_ultrasonic()
Declare Function Ultrasonic_depan() As Integer
Dim Jarakdepan As Integer
Dim Jaraksampingkanan As Word
Dim Jaraksampingkiri As Word
Dim W As Word
Config Portb = Output
Config Portd = Input
Config Portc = Output
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'konfigurasi ADC
Start Adc
Call Initialize_ultrasonic ‘panggil fungsi
Do
‘baca SRF04 untuk jarak depan
…
Print "jarak sampingkiri" ; Jaraksampingkiri
‘Demo jika ada halangan, maka belok kiri
If Jarakdepan > 40 Then
Portb = 8 'maju
Wait 2 ‘delay
Else if jarak depan <40 class="SpellE">jaraksampingkanan >150 then
Portb = 0 'belok kiri
Wait 2
End If
End
Function Ultrasonic_depan() As Integer
… ' set initial state pin trigger
… ' buat pulsa 5us @ 4 MHz
… ' ukur return pulse
End Function
Sub Initialize_ultrasonic ‘inisialisasi sensor ultrasonik
…
End Sub
Gambar berikut merupakan hasil yang sudah jadi yang dapat berjalan dengan cukup cepat dan kuat karena menggunakan servo torsi tinggi dari Hitec.
A. B.
Gambar 4. Robot in action a). Tampak samping b). Tampak depan
Pengembangan Selanjutnya
Untuk keperluan riset atau hobi, Anda dapat menambahkan kemampuan Artificial Intelligent menggunakan Fuzzy Logic, Algoritma Genetic atau Neural Network, agar robot ini menjadi robot yang cerdas. Silahkan baca artikel selanjutnya mengenai Neural Network di majalah kesayangan Anda ini.
Daftar Pustaka:
4. Delta Hexapod robot
5. Situs-situs dan buku pendukung lainnya.
Tidak ada komentar:
Posting Komentar