4.1 Deskripsi Informal Sistem
Telah dijelaskan dalam Bab 2 sebelumnya mobile robot atau mobot adalah robot yang memiliki mekanisme penggerak (actuators) berupa roda (wheel) atau kaki (leg), untuk dapat berpindah tempat dari suatu tempat ke tempat yang lain. Dalam beroperasi mobot sering harus bergerak dalam rangka menjelajahi lingkungannya.
Navigasi mobot adalah sistem yang dibuat untuk memandu mobot agar tidak tersesat ketika menjelajahi lingkungannya. Melalui sistem ini mobot dapat mengetahui posisi kedudukan pada peta lingkungannya serta arah hadap mobot saat itu (sudut azimuth atau bearing) berdasarkan arah mata angin. Deskripsi informal sistem navigasi mobot dibuat berdasarkan hal-hal sebagai berikut :
a. Peta Lingkungan Mobot
Peta lingkungan mobot yang digunakan dalam penelitian ini adalah peta lingkungan (environment map) mobot dalam KRCI 2006 sebagaimana digambarkan dalam Gambar 4.1.
Gambar 4.1 Bentuk environment mobot dalam KRCI 2006.
Peta lingkungan di atas diasumsikan membentang dari barat hingga ke timur, artinya atas adalah utara (arah 90), kanan adalah timur (arah 0), bawah adalah selatan (arah 270), dan kiri adalah barat (arah 180). Derajat arah mata angin ini agak berbeda, disesuaikan dengan yang berlaku dalam program navigasi, dapat dilihat penjelasannya nanti pada bagian deskripsi kompas program navigasi.
b. Posisi Start dan Finish Mobot
Sesuai dengan persyaratan KRCI 2006, bahwa mobot harus dapat start maupun finish di posisi s
0, sedangkan persyaratan KRCI 2005 yang mungkin akan diberlakukan kembali pada KRCI mendatang, mobot harus dapat start maupun finish di posisi s
4. Untuk itu dalam penelitian diasumsikan start dan finish di s
0maupun s
4.
c. Tujuan (Goal) yang Ingin dicapai
KRCI mensyaratkan mobot start dari tempat yang telah ditentukan (misalnya s
0), mengunjungi (visiting) ke-empat ruangan (s
13, s
14, s
15, dan s
16) di mana setiap ruangan dikunjungi tepat 1 (satu) kali, dan kembali ke tempat semula (s
0).
d. Komponen Pendukung Navigasi
KRCI pada dasarnya tidak membatasi komponen yang digunakan dalam mobot, khususnya komponen pendukung navigasi. Berdasarkan komponen yang umumnya terpasang pada mobot KRCI, terdapat 2 komponen penting pendukung navigasi yaitu :
Sensor Penghalang
Sensor penghalang (obstacle sensor) adalah sensor
yang dapat mendeteksi adanya penghalang yang harus
dihindari oleh mobot (obstacle avoidance). Sensor dapat berupa sensor proximity (sensor yang hanya mampu mendeteksi keberadaan penghalang tanpa mampu mendeteksi jarak mobot ke penghalang) maupun sensor range (sensor yang mampu mendeteksi jarak mobot ke penghalang).
Selain bertujuan untuk menghindari penghalang, beberapa sensor ini secara bersama-sama dapat digunakan pula untuk menghasilkan ciri lingkungan robot sehingga dapat dilakukan abstraksi posisi mobot pada peta lingkungannya. Contoh untuk perempatan s
7akan memiliki ciri sebelah kiri, kanan, dan depan tidak ada penghalang.
Sensor Posisi Mobot
Sensor posisi mobot yang dimaksud di sini adalah kompas. Melalui kompas mobot dapat mengetahui arah hadapnya (berupa sudut azimuth atau bearing) berdasarkan arah mata angin.
4.2 Pra-Spesifikasi Sistem
Peta lingkungan mobot KRCI 2006 sebagaimana tergambar dalam Gambar 4.1 merupakan bentuk abstraksi kontinu, sedangkan spesifikasi sistem secara formal dilakukan pada trajectory yang baik dari abstraksi diskrit, untuk itu pra-spesifikasi sistem bertujuan melakukan transformasi lingkungan mobot kontinu ke diskrit, dan menentukan trajectory yang baik.
a. Transformasi Lingkungan Kontinu ke Diskrit
Sebagaimana telah diuraikan dalam bab 2, transformasi lingkungan kontinu ke diskret dilakukan dengan cara membagi- bagi hallway ke dalam ruang semu yang merepresentasikan status.
Sebagaimana telah diilustrasikan dalam Gambar 4.1 hallway pada
map dibagi menjadi s
0, s
1, s
2, …, s
12. Sedangkan untuk s
13, s
14, …, s
16adalah status tujuan (ruang yang harus dikunjungi).
b. Transformasi Lingkungan Diskrit ke Graf
Transformasi lingkungan diskrit ke graf dilakukan dengan membuat model graf dalam bentuk tuple Mobotenv = (S, I, F, T, G, P) di mana penjelasan tuple diuraikan dalam Tabel 4.1 dan sedangkan graf diilustrasikan dalam Gambar 4.2
Tabel 4.1 Penjelasan Tuple Mobotenv Variabel Keterangan
S Himpunan seluruh status di mana berlaku si Є S jika dan hanya jika 0 < i < 16
I Himpunan status awal (Initial state) di mana berlaku I = {s0, s4} dan I C S. Terdapat pula fungsi i(t) adalah fungsi i : T Æ I atau dengan kata lain fungsi i memetakkan trajectory t ke status awal si Є I
s0 jika t Є {0,1}
i(t) =
s4 jika t Є {2}
F Status akhir (Finish state) di mana berlaku F = {s0, s4} dan F C S. Terdapat pula fungsi f(t) adalah fungsi f : T Æ F atau dengan kata lain fungsi f memetakkan trajectory t ke status akhir si Є F
s0 jika t Є {0,1}
f(t) =
s4 jika t Є {2}
T Himpunan trajectory yang baik di mana berlaku ti Є T dan i = 0,1,2, …ti ditentukan melalui penelusuran (walk) secara heuristik.
G Himpunan status tujuan (goal) di mana berlaku G C S dan si Є G jika dan hanya jika maxvisited(si) = 1, dan bila ~(si
Є G) maka maxvisited(si) = ∞ (tak terhingga). Dalam kasus ini G = {s13, s14, s15, s16}
P Himpunan fungsi proposisi di mana berlaku : p(t,s) Є P dan p(t,s) adalah fungsi p : T,G Æ {┬, ┴}, atau dengan kata lain fungsi yang memetakkan T dan G ke suatu nilai logika ┬ (true) atau ┴ (false) dalam himpunan nilai logika, di mana t Є T dan s Є G.
c. Menentukan Trajectory yang Baik
Untuk menentukan trajectory yang baik dilakukan dalam 2 (dua) tahap sebagai berikut :
Pembobotan Edge Berdasarkan Matriks w(s
i,s
j)
Pembobotan edge berdasarkan matriks w(s
i,s
j) dilakukan dengan membuat tabel atau matriks 2 dimensi dengan ukuran ordo 6 x 6. Angka 6 ditentukan dari jumlah status tujuan yaitu ada 4 status tujuan dan 2 initial state (finish state adalah sama dengan initial state). Pada setiap sel matriks tersebut berisi nilai bobot terkecil dalam jumlah hop (ruang yang dilompati) dari s
ike s
j. Tabel 4.2 menjelaskan bobot edge dalam adjancy matrix.
S0
S8
S9 S7 S10
S13
S3 S1 S2
S4
S6 S0
S14
S11
S12
S16
S15
Gambar 4.2 Representasi graf hasil transformasi lingkungan diskrit.
Tabel 4.2 Adjancy matriks w(si,sj)
s0 s4 s13 s14 s15 s16
s0 0 ∞ 5 4 5 4
s4 ∞ 0 6 3 6 5
s13 5 6 0 5 6 5
s14 4 3 5 0 5 4
s15 5 6 6 5 0 3
s16 4 5 5 4 3 0
Pendekatan Heuristik Untuk Menentukan Trajectory yang Baik
Telah dijelaskan dalam bab 2 bahwa melalui pendekatan heuristik dapat dihasilkan (good trajectory) trajectory yang baik dengan cara memberi nilai sekecil mungkin pada matriks yang merepresentasikan jarak terdekat atau rute terpendek antara 2 status tujuan (misal s
idan s
jdimana s
idan s
jЄ G) yang belum pernah dikunjungi (unvisited) dan terhubung (adjacent) dengan status sekarang (current state). Dengan demikian diharapkan merupakan trajectory optimal, dan akan lebih cepat daripada mencoba seluruh kemungkinan secara permutasi.
Akhirnya trajectory yang baik dapat yang diperoleh dapat dilihat pada Tabel 4.3.
Tabel 4.3 Trajectory Yang Baik Nomor
Trajectory ( t )
Trajectory Nilai Path (Dihitung dengan w(si,sj)) 0 s0-s14-s16-s15-s13-s0 4+4+3+6+5 = 22 1 s0-s16-s15-s14-s13-s0 4+3+5+5+5 = 22 2 s4-s14-s16-s15-s13-s4 3+4+3+6+6 = 22
4.3 Spesifikasi Sistem
Spesifikasi sistem dilakukan dalam 2 (dua) tahap yaitu spesifikasi
fungsi proposisi dan spesifikasi formula proposisinya. Hasil akhir dari
spesifikasi sistem adalah formula proposisi untuk setiap trajectory t, yang
merepresentasikan pergerakan robot. Berikut ini adalah uraian setiap
tahap dalam spesifikasi sistem :
a. Fungsi Proposisi p(t,s)
Bila {┬, ┴} adalah himpunan nilai logika yang memiliki keanggotaan ┬ (true) dan ┴ (false), maka fungsi proposisi p(t,s) dengan t Є T dan s Є G adalah fungsi p : T,G Æ {┬, ┴} atau dengan kata lain fungsi yang memetakkan T,G ke suatu nilai logika
┬ (true) atau ┴ (false) dalam himpunan nilai logika tersebut.
Fungsi proposisi ini merepresentasikan pergerakan robot ke status s
idari sembarang status s
jyang adjacent dengan s
ipada trajectory t, dan akan menghasilkan nilai logika ┬ bila berhasil atau ┴ bila gagal.
b. Formula Proposisi Ø.
Hasil akhir dari spesifikasi model formal ini adalah formula proposisi. Formula proposisi dalam penelitian ini berupa suatu persamaan matematika yang disusun dari beberapa fungsi proposisi dengan menggunakan operator logika.
Agar pergerakan robot sesuai dengan trajectory yang optimal, maka formula proposisi untuk setiap trajectory disusun dalam bentuk sequencing atau keterurutan sebagaimana telah dijelaskan dalam Bab 2. Untuk itu Tabel 4.4 mengilustrasikan fungsi proposisi untuk setiap trajectory t adalah sebagai berikut :
Tabel 4.4 Formula Proposisi Untuk Trajectory Yang Baik Trajectory
( t ) Trajectory Formula Proposisi Ø
0 s0-s14-s16-s15-s13-s0 Ø = ◊(p(0,s14) ^ ◊(p(0,s16) ^ ◊(p(0,s15) ^
◊(p(0,s13) ^ ◊p(0,s0)))))
1 s0-s16-s15-s14-s13-s0 Ø = ◊(p(1,s16) ^ ◊(p(1,s15) ^ ◊(p(1,s14) ^
◊(p(1,s13) ^ ◊p(1,s0)))))
2 s4-s14-s16-s15-s13-s4 Ø = ◊(p(2,s14) ^ ◊(p(2,s16) ^ ◊(p(2,s15) ^
◊(p(2,s13) ^ ◊p(2,s4)))))
4.4 Prototipe Mobot
Verifikasi sistem dilakukan untuk memeriksa kebenaran
(correctness) formula proposisi yang dihasilkan dari spesifikasi sistem
secara formal. Dalam penelitian ini verifikasi sistem dilakukan secara
langsung pada prototipenya. Untuk itu sebelumnya perlu dilakukan disain prototipe mobot yang merupakan pra-kegiatan sebelum melaksanakan verifikasi sistem.
Prototipe mobot diwujudkan dalam pemrograman simulator dengan menggunakan MOBOTSIM versi 1.1.03. Sebelum memprogram dalam simulator, perlu ditetapkan terlebih dahulu property prototipe melalui disain aktuator, kerangka dan penempatan sensor, serta kompas.
Akhirnya sebagai inti dari prototipe ditetapkan pula disain fungsi proposisi, dan formula proposisi dalam perangkat lunak simulasi ini yang merupakan implementasi dari fungsi proposisi dan formula proposisi dalam model formal. Untuk lebih jelasnya, dapat dijelaskan sebagai berikut :
a. Disain Aktuator
Aktuator adalah bagian yang dikendalikan dalam sistem kendali (system control). Atau dapat dikatakan aktuator merupakan keluaran dari sistem kendali. Mobot ini didisain untuk menggunakan sistem kemudi (steering system) diferensial.
Untuk itu aktuator adalah berupa perilaku roda kiri dan kanan serta pengaruhnya terhadap arah gerakan. Untuk lebih jelasnya diuraikan dalam Tabel 4.5 di bawah ini.
Tabel 4.5 Perilaku Roda dan Pengaruh Arah Gerakan
Roda Kiri Roda Kanan Efek (Arah Gerakan) Clockwise Clockwise Maju
Clockwise Counterclockwise Kiri Counterclockwise Clockwise Kanan Counterclockwise Counterclockwise Mundur
Disain aktuator berkaitan erat dengan disain kinematik
yaitu disain gerakan mobot dengan mengabaikan pengaruh
dinamikanya atau pengaruh gaya-gaya yang bekerja pada sistem
tersebut. Kelebihan perangkat lunak MOBOTSIM ini adalah
terdapat sarana disain kinematik dengan cara mengendalikan
keluaran langsung pada gerakan robotnya dan mengabaikan
gerakan roda mobot. Hal ini dapat dilakukan melalui penggunaan
fungsi yang telah tersedia yaitu SetSteering(mobot, CenterSpeed,
RotationalSpeed). Untuk kesederhanaan, dalam penelitian ini menggunakan fungsi SetSteering dengan harapan dapat dipelajari pengaruhnya secara langsung pada gerakannya. Sebagai ilustrasi parameter fungsi SetSteering terdapat dalam Tabel 4.6 yaitu :
Tabel 4.6 Penjelasan parameter fungsi SetSteeringParameter Penjelasan mobot: index or name of mobot to set
the steering Nomor indeks mobole robot CenterSpeed: displacement speed at
the center point of the mobot in m/sec Kecepatan mobile robot terhadap titik pusat robot (karena bentuk robot adalah lingkaran) dalam mater per detik
RotaionalSpeed: steering rate in degrees/sec
Kecepatan putar atau belokan (angular) dalam derajat per detik
b. Disain Kerangka dan Sensor
Disain kerangka tampak atas robot ini berbentuk lingkaran, dan disain ini mempengaruhi pula penempatan sensor yang optimal, sehingga abstraksi lingkungan robot berdasarkan penerimaan sensor tersebut akan optimal pula.
Dari cara abstraksinya terdapat 2 macam sensor robot yaitu sensor proximity adalah sensor yang hanya mendeteksi penghalang (obstacle) tanpa mengetahui jaraknya, dan sensor jarak (range) adalah sensor yang dapat mendeteksi penghalang serta jarak antara sensor dan penghalang tersebut. Program simulasi ini telah menyediakan sensor simulasi jarak, sehingga abstraksi lingkungan robot dapat lebih baik lagi. Tabel 4.7 berikut ini menjelaskan bagaimana karakteristik bentuk kerangka dan sensornya.
Tabel 4.7 Karakteritik Kerangka dan Sensor
Karakteristik Keterangan Bentuk Kerangka Bentuk kerangka berupa lingkaran (tampak atas)
Jenis sensor Berupa sensor pengukur jarak (range sensor) Jumlah sensor 7 buah (sensor0, sensor1, …, sensor6) Penjelasan penempatan
posisi sensor s0 adalah sensor kanan, berturut-turut berlawanan arah jarum jam, s3 adalah sensor depan dan s6 adalah sensor kiri
Sudut antara 2 sensor 30o (30 derajat)
Jarak / Range Sensor Secara skala adalah 11 meter atau 80 % lebar hallway
c. Kompas Robot
Dalam program simulasi ini terdapat kompas robot untuk mengetahui arah gerakan robot. Sesuai dengan kompas pada umumnya, derajat arah adalah dalam modulo 360 derajat. Artinya untuk satu putaran 360 derajat, sudut arah akan kembali ke 0.
Sedangkan perbedaannya kalau pada kompas umumnya memiliki derajat arah yang mengacu pada utara = 0 derajat, maka kompas ini justru mengacu pada arah timur = 0 derajat. Untuk lebih jelasnya karakteristik kompas robot ini dan perbedaannya dengan kompas umumnya diuraikan dalam Tabel 4.8 berikut ini.
Tabel 4.8 Karakteritik Kompas Robot dan Perbedaan Dengan Kompas Umumnya Keterangan
Karakteristik
Kompas Umumnya Kompas Robot Simulasi Derajat Arah Utara : 0
Timur : 90 Selatan : 180 Barat : 270
Utara : 90 Timur : 0 Selatan : 270 Barat : 180 Putaran Dilihat dari derajat arah
di atas maka untuk putaran (belok) ke kiri akan memiliki sudut putar negatif dan sebaliknya untuk putaran (belok) ke kanan memiliki sudut putar positif
Dilihat dari derajat arah di atas maka untuk putaran (belok) ke kiri akan memiliki sudut putar positif dan sebaliknya untuk putaran (belok) ke kanan memiliki sudut putar negatif
d. Disain Proses
Proses perilaku pergerakan robot berdasarkan navigasi yang telah ditetapkan dalam spesifikasi sistem formal dilakukan dengan cara mengeksekusi formula proposisinya, yang selanjutnya akan mengeksekusi fungsi proposisi yang terlibat dalam formula proposisi tersebut.
Disain Fungsi Proposisi
Dalam spesifikasi sistem formal telah jelaskan
bahwa fungsi proposisi memiliki bentuk umum p(t,s) di
mana t Є T dan s Є S. Fungsi akan merepresntasikan
gerakan robot pada trajectory t ke status s dari sembarang status yang terhubung dengan status s, dan mengembalikan nilai logika true bila berhasil mengunjungi status s dan akan mengembalikan nilai logika false bila gagal.
Bentuk fungsi proposisi yang mengakomodasi trajectory t = 0,1,2 dengan berbagai status tujuan untuk setiap trajectory t dalam bahasa pemrograman SaxBasic adalah sebagai berikut :
Function P(t,s)
' Fungsi proposisi yang memetakkan trajectory dan state goal ke nilai proposisi true atau false
' Fungsi akan true bila trajectory reachcable (berhasil dieksekusi)
'Debug.Print "Starting P(";t;",";s;")"
'Stop
If t = 0 Then
' Trajectory 0 --> s0-s14-s16-s15-s13-s0 If s=14 Then
ElseIf s=16 Then ElseIf s=15 Then ElseIf s=13 Then ElseIf s=0 Then
End If
P=True ElseIf t = 1 Then
' Trajectory 1 --> s0-s16-s15-s14-s13-s0 If s=16 Then
ElseIf s=15 Then ElseIf s=14 Then ElseIf s=13 Then ElseIf s=0 Then
End If
P=True ElseIf t = 2 Then
' Trajectory 2 --> s4-s14-s16-s15-s13-s4 If s=14 Then
ElseIf s=16 Then
ElseIf s=15 Then ElseIf s=13 Then ElseIf s=4 Then
End If
P=True Else
P = False End If
EraseTrajectories End Function
Disain Formula Proposisi
Formula proposisi yang disusun sebagai representasi trajectory berupa suatu persamaan matematika logika dari beberapa fungsi proposisi yang dioperasikan dengan operator logika. Sebagai contoh dalam spesifikasi sistem formal untuk trajectory t = 0, bentuk formula proposisinya adalah :
Ø = ◊(p(0,s14) ^ ◊(p(0,s16) ^ ◊(p(0,s15) ^ ◊(p(0,s13) ^ ◊p(0,s0)))))
Maka dalam bahasa pemrograman SaxBasic bentuk formula proposisinya dapat digeneralisasikan menjadi :
proposisi = ((((P(t,cqget) And P(t,cqget)) And P(t,cqget)) And P(t,cqget)) And P(t,cqget))
di mana :
proposisi Variabel logika penampung nilai boolean hasil operasi logika pada formula proposisi
t Trajectory ke-t
cqget Antrian status (queue of state) pada trajectory ke-t
tanda () Digunakan untuk menjamin bahwa
precendence operasi logika adalah dari
kiri ke kanan, sesuai dengan semantik formula proposisi dalam spesifikasi sistem formal
4.5 Verifikasi Sistem
Verifikasi sistem dilakukan melalui pengamatan langsung pada perilaku prototipenya, bila perilaku prototipe sesuai dengan yang diharapkan maka spesifikasi sistem formal tersebut telah valid. Untuk menjelaskan verifikasi sistem berikut ini dijelaskan karakteristik untuk setiap trajectory dan pembahasan simulasi trajectory untuk setiap trajectory t di mana t = 0, 1, 2 adalah sebagai berikut :
a. Karakteristik Trajectory t = 0,1,2
Karakteristik setiap trajectory untuk trajectory t = 0,1,2 diilustrasikan dalam Tabel 4.9 adalah sebagai berikut :
Tabel 4.9 Karakteristik trajectory t = 0,1,2
Karakteristik Trajectory t = 0 Trajectory t = 1 Trajectory t = 2 Status Asal (Initial
State)
s0 s0 s4
Status Akhir
(Finish State) s0 s0 s4
Trajectory s0-s14-s16-s15-s13- s0
s0-s16-s15-s14-s13- s0
s4-s14-s16-s15-s13- s4
Fungsi Proposisi ◊p(0,s14) : Fungsi
proposisi untuk trajectory 0 dan akan bernilai benar setelah mobot
mengunjungi status 14
◊p(0,s16) : Fungsi
proposisi untuk trajectory 0 dan akan bernilai benar setelah mobot
mengunjungi status 16
◊p(0,s15) : Fungsi
proposisi untuk
◊p(1,s16) : Fungsi
proposisi untuk trajectory 1 dan akan bernilai benar setelah mobot
mengunjungi status 16
◊p(1,s15) : Fungsi
proposisi untuk trajectory 1 dan akan bernilai benar setelah mobot
mengunjungi status 15
◊p(1,s14) : Fungsi
proposisi untuk
◊p(2,s14) : Fungsi
proposisi untuk trajectory 2 dan akan bernilai benar setelah mobot
mengunjungi status 14
◊p(2,s16) : Fungsi
proposisi untuk trajectory 2 dan akan bernilai benar setelah mobot
mengunjungi status 16
◊p(2,s15) : Fungsi
proposisi untuk
trajectory 0 dan akan bernilai benar setelah mobot
mengunjungi status 15
◊p(0,s13) : Fungsi
proposisi untuk trajectory 0 dan akan bernilai benar setelah mobot
mengunjungi status 13
◊p(0,s0) : Fungsi
proposisi untuk trajectory 0 dan akan bernilai benar setelah mobot
mengunjungi status 0
trajectory 1 dan akan bernilai benar setelah mobot
mengunjungi status 14
◊p(1,s13) : Fungsi
proposisi untuk trajectory 1 dan akan bernilai benar setelah mobot
mengunjungi status 13
◊p(1,s0) : Fungsi
proposisi untuk trajectory 1 dan akan bernilai benar setelah mobot
mengunjungi status 0
trajectory 2 dan akan bernilai benar setelah mobot
mengunjungi status 15
◊p(2,s13) : Fungsi
proposisi untuk trajectory 0 dan akan bernilai benar setelah mobot
mengunjungi status 13
◊p(2,s4) : Fungsi
proposisi untuk trajectory 0 dan akan bernilai benar setelah mobot
mengunjungi status 0 Formula Proposisi Ø = ◊(p(0,s14) ^
◊(p(0,s16) ^
◊(p(0,s15) ^
◊(p(0,s13) ^
◊p(0,s0)))))
Ø = ◊(p(1,s16) ^
◊(p(1,s15) ^
◊(p(1,s14) ^
◊(p(1,s13) ^
◊p(1,s0)))))
Ø = ◊(p(2,s14) ^
◊(p(2,s16) ^
◊(p(2,s15) ^
◊(p(2,s13) ^
◊p(2,s4)))))
Jumlah Hop 5 5 5
b. Simulasi Trajectory.
1. Eksekusi Trajectory t=0
Eksekusi trajectory t=0 dapat dijelaskan pada setiap fungsi proposisi yang terdapat dalam formula proposisi
Ø = ◊(p(0,s14) ^ ◊(p(0,s16) ^ ◊(p(0,s15) ^ ◊(p(0,s13) ^ ◊p(0,s0)))))
Status Awal : Sebelum eksekusi fungsi proposisi, mobot
berada pada status awal (initial state), telah dijelaskan
status awal mobot ini adalah s
0.
Pada status ini mobot
memeriksa kompas yang menunjukkan arah hadapnya, dan
selanjutnya akan berbelok ke arah hadap 270 derajat atau
menghadap selatan. Di bawah ini adalah cuplikan 2
perintah program :
SetMobotPosition(0,20,5,sdt) ‘Menempatkan posisi mobot pada
‘status 0, dengan sudut hadap awal sdt bernilai sembarang
belok 270 ‘Robot menghadap
ke arah selatan atau 270 derajat pada kompas.
Proposisi ◊p(0,s
14) : Eksekusi proposisi status 14 untuk trajectory t = 0 adalah maju hingga persimpangan, belok ke timur menuju ke depan gerbang status 14, setelah tiba di depan gerbang status 14, belok ke utara hingga tiba di mulut gerbang. Lebih jelasnya, dijelaskan logika penggalan program di bawah ini.
' Maju sampai persimpangan
Do
bacasensor
selisih = jarak(6) - jarak(0)
If selisih > 0 Then
SetSteering(0,10,10) ElseIf selisih < 0 Then
SetSteering(0,10,- 10) Else
SetSteering(0,10,0) End If
StepForward
Loop Until (jarak(6)
= maxjarak) And (jarak(0) =maxjarak) belok 0
Maju hingga persimpangan, dimana bila sensor 6 dan sensor 0 tidak mendeteksi adanya dinding tembok, maka telah mencapai persimpangan tersebut.
Selanjutnya mobot akan belok menuju arah 0 derajat atau ke arah timur
' Maju sampai gerbang status 14
Do
bacasensor
SetSteering(0,10,0)
Maju hingga gerbang status 14, dimana bila sensor 0 mendeteksi tembok dan sensor6 tidak mendeteksi tembok, maka telah sampai di depan
StepForward Loop Until (jarak(0)
< maxjarak) And
(jarak(6) = maxjarak)
belok 90
gerbang status 14.
Selanjutnya mobot belok ke arah 90 derajat atau utara.
Do
bacasensor
If jarak(4) > 3 Then
SetSteering(0,10,10) ElseIf jarak(4) < 3 Then
SetSteering(0,10,- 10)
Else
SetSteering(0,10,0) End If
StepForward
Loop Until jarak(6)
< maxjarak visiting 14
Mobot berjalan lurus ke depan, bila sensor 6 mendeteksi adanya tembok, maka mobot telah tiba di mulut gerbang 14
Untuk selanjutnya mobot berjalan mengelilingi ruangan status 14 sebagai hasil eksekusi visiting 14
Akhirnya bila berhasil maka nilai proposisi ◊p(0,s
14) akan bernilai true atau benar.
Proposisi ◊p(0,s
16) : Mula-mula mobot di gerbang status 14 menghadap selatan (arah 270), dan telah siap berjalan ke status 16.
Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until jarak(3) < 3
Mobot berjalan menghadap selatan (arah
270) keluar dari status 14, menuju hallway atau lorong. Bila sensor depan (sensor 3) mendeteksi adanya dinding, maka mobot telah tiba di hall way.
belok 180 Selanjutnya mobot akan belok ke arah timur (arah 180) dan siap
berjalan menuju perempatan.
Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until jarak(6) = maxjarak
belok 270
Mobot berjalan lurus menuju perempatan.
Bila sensor 6 tidak mendeteksi dinding, maka mobot telah tiba di perempatan.
Selanjutnya mobot akan belok ke arah selatan (arah 270).
Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until (jarak(6) = maxjarak) And (jarak(4) <
maxjarak)
belok 0 visiting 16
Mobot berjalan lurus ke arah selatan hingga tiba di depan gerbang status 16, bila sensor 4 mendeteksi adanya dinding dan sensor 6 tidak mendeteksi adanya dinding, maka telah tiba di depan gerbang 14.
Mobot belok ke arah timur (arah 0) untuk siap masuk (visiting) ke ruangan status 16.
Akhirnya bila berhasil maka nilai proposisi ◊p(0,s
16) akan bernilai true atau benar.
Proposisi ◊p(0,s
15) : Posisi mobot ada di gerbang status 16, dengan arah hadap ke barat (arah 180) dan siap untuk melangkah keluar.
Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until jarak(3) < 4
Mobot berjalan lurus ke arah barat (arah 180) ke luar status 16. Bila sensor depan (sensor 3)
mendeteksi adanya dinding, maka mobot
belok 270
Do
bacasensor
If jarak(6) > 4 Then
SetSteering(0,10,10) ElseIf jarak(6) < 4 Then
SetSteering(0,10,-10) Else
SetSteering(0,10,0) End If
StepForward
Loop Until jarak(3) < 4 belok 180
visiting 15
telah tiba di hallway.
Mobot membelok ke arah selatan (270) untuk menuju status 15
Mobot berjalan lurus ke selatan hingga sensor depan mendeteksi adanya dinding, yang menandakan mobot telah tiba di depan gerbang status 15.
Mobot belok ke arah barat (arah 180) untuk siap masuk ke ruang status 15
Mobot mengunjungi status 15
Akhirnya bila berhasil maka nilai proposisi ◊p(0,s
15) akan bernilai true atau benar.
Proposisi ◊p(0,s
13) : Posisi mobot berada di gerbang status 15 menghadap ke arah timur (arah 0) dan siap keluar status 15.
Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until jarak(3) < 4
belok 90 Do
bacasensor
If jarak(6) > 7 Then
SetSteering(0,10,10) ElseIf jarak(6) < 7 Then
Mobot berjalan lurus ke timur (arah 0) hingga ke hallway, bila sensor depan (sensor 3) mendetaksi adanya dinding, maka mobot telah sampai di hall way
Mobot belok ke arah utara (arah 90)
Mobot berjalan lurus menuju perempatan, bila sensor kanan dan sensor 6 tidak mendeteksi dinding, maka mobot telah sampai di
SetSteering(0,10,-10) Else
SetSteering(0,10,0) End If
StepForward
Loop Until (jarak(0) = maxjarak) And (jarak(6) = maxjarak)
belok 180
Do
bacasensor
If jarak(6) > 4 Then
SetSteering(0,10,10) ElseIf jarak(6) < 4 Then
SetSteering(0,10,-10) Else
SetSteering(0,10,0) End If
StepForward
Loop Until (jarak(3) < 4) And (jarak(0) > 4)
belok 90 visiting 13
perempatan.
Mobot belok ke arah barat (arah 180) untuk siap menuju ke status 13
Mobot berjalan lurus ke timur hingga tiba di depan gerbang status 13, bila sensor kanan mendeteksi dinding dalam jarak > 4 meter dan sensor depan mendeteksi adanya dinding, maka mobot telah tiba di gerbang 13.
Mobot belok ke utara (arah 90) dan segera mengunjungi status 13.
Akhirnya bila berhasil maka nilai proposisi ◊p(0,s
13) akan bernilai true atau benar.
Proposisi ◊p(0,s
0) : Mobot berada di gerbang status 13 menghadap arah selatan (arah 270) dan siap keluar status 13.
Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until jarak(3) < 4 belok 0
Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until (jarak(0) > 7) And (jarak(6) > 7)
Mobot berjalan lurus ke selatan menuju hallway.
Bila sensor depan mendeteksi adanya dinding, maka mobot telah tiba di hall way Mobot belok ke arah timur (arah 0)
Mobot berjalan menuju perempatan, bila sensor kiri (sensor 7) dan sensor 6 tidak mendeteksi dinding,
belok 90
Do
bacasensor
If jarak(4) > 4 Then
SetSteering(0,10,10) ElseIf jarak(4) < 4 Then
SetSteering(0,10,-10) Else
SetSteering(0,10,0) End If
StepForward
Loop Until (jarak(0) > 7) And (jarak(3) < 4)
belok 0 belok 270
maka telah tiba di perempatan.
Mobot belok ke arah utara menuju status 0 (home).
Mobot berjalan lurus ke utara, hingga tiba di home, bila sensor kanan (sensor 0) tidak mendeteksi dinding, dan sensor depan (sensor 3) mendeteksi dinding, maka mobot telah tiba di home.
Mobot mengembalikan
arah hadapnya sebagaimana arah hadap
saat start yaitu ke arah selatan (arah 270) dengan cara putar (balik) kanan.
Akhirnya bila berhasil maka nilai proposisi ◊p(0,s
0) akan bernilai true atau benar.
Akhirnya formula proposisi untuk trajectory t = 0
Ø = ◊(p(0,s14) ^ ◊(p(0,s16) ^ ◊(p(0,s15) ^ ◊(p(0,s13) ^ ◊p(0,s0)))))
yang diprogram dengan bahasa pemrograman SaxBasic memiliki bentuk :
proposisi = ((((P(t,cqget) And P(t,cqget)) And P(t,cqget)) And P(t,cqget)) And P(t,cqget))
terbukti benar (valid).
3. Eksekusi Trajectory t = 1
Eksekusi trajectory t=1 dapat dijelaskan pada setiap fungsi proposisi yang terdapat dalam formula proposisi
Ø = ◊(p(1,s16) ^ ◊(p(1,s15) ^ ◊(p(1,s14) ^ ◊(p(1,s13) ^ ◊p(1,s0)))))
Status Awal : Sebelum eksekusi fungsi proposisi, mobot berada pada status awal (initial state) yaitu s
0, dan perilaku mobot ini sama dengan perilaku mobot di status awal s
0pada trajectory t=0 yang telah dijelaskan di atas.
Proposisi ◊p(1,s
16) : Mobot berada pada s
0dalam kondisi menghadap ke selatan (arah 270). Langkah selanjutnya dijelaskan dalam fungsi proposisi berikut ini :
Do
bacasensor
selisih = jarak(6) - jarak(0)
If selisih > 0 Then
SetSteering(0,10,10) ElseIf selisih < 0 Then
SetSteering(0,10,-10) Else
SetSteering(0,10,0)
End If
StepForward
Loop Until (jarak(6) = maxjarak) And (jarak(0)
=maxjarak) belok 270 Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until Abs(jarak(0)+jarak(6)) <= 11
Do
SetSteering(0,10,0) StepForward
bacasensor
Mobot bergerak maju dari status 0 menuju status 8, dan akan tiba dipersimpangan (status 7) dengan ciri sensor 6 dan sensor 0 tidak mendeteksi adanya dinding atau sensor
= maxjarak.
Mobot tiba dipersimpangan
(status 7) dan memantapkan arah ke selatan (arah 270) hingga tiba di dekat pintu status 16 yang dicirikan dengan salah satu dari sensor 0 atau 6 mengenai dinding.
Mobot berjalan hingga tiba di
Loop Until Abs(jarak(0)+jarak(6)) > 11
belok 0 Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until (jarak(6) <
maxjarak) visiting 16
status 11 atau tepat di depan pintu status 16 yang dicirikan dengan salah satu sensor 0 atau 6 tidak mendeteksi adanya dinding.
Mobot membelok ke arah timur atau arah
0, selanjutnya bergerak memasuki ruangan status 16
Mobot tiba (mengunjungi) status
16
Akhirnya bila berhasil maka nilai proposisi ◊p(1,s
16) akan bernilai true atau benar.
Proposisi ◊p(1,s
15) : Mobot berada di s
16dan menghadap ke barat (arah 180). Langkah selanjutnya dijelaskan dalam fungsi proposisi berikut ini :
P = P(0,s) Perilaku mobot untuk menuju ke status 15 dari status 16 pada
trajectory 1 sama
dengan perilaku mobot saat menuju status 15 pada trajectory 0.
Akhirnya bila berhasil maka nilai proposisi ◊p(1,s
15) akan bernilai true atau benar.
Proposisi ◊p(1,s
14) : Mobot berada di s
15dan menghadap ke timur (arah 0). Langkah selanjutnya dijelaskan dalam fungsi proposisi berikut ini :
Do
SetSteering(0,10,0) StepForward
bacasensor Loop Until jarak(3) < 4
Mobot keluar dari status 15 dan tiba di status 12 dengan ciri sensor depan
(sensor 3) mendeteksi adanya
belok 90 Do
bacasensor If jarak(6) > 7 Then SetSteering(0,10,10)
ElseIf jarak(6) < 7 Then
SetSteering(0,10,-10) Else
SetSteering(0,10,0)
End If
StepForward
Loop Until (jarak(0) = maxjarak) And (jarak(6) = maxjarak)
belok 0 Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until (jarak(0) <
maxjarak) And (jarak(6) >=
maxjarak)
belok 90 Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until (jarak(6) <
maxjarak)
visiting 14
dinding.
Mobot belok ke utara (arah 90)
Mobot berjalan lurus ke utara hingga tiba
di perempatan (status 7) yang dicirikan dengan sensor kanan (sensor 0) dan (sensor 6) tidak mendeteksi adanya dinding.
Mobot belok ke timur (arah 0), dan berjalan hingga tiba di status 6 yang dicirikan dengan (sensor 0 atau kanan mendeteksi adanya dinding dan sensor 6 atau kiri tidak mendeteksi adanya dinding)
Mobot belok ke utara (arah 90)
Mobot berjalan keutara menuju pintu
status 14 hingga tepat didepan pintu yang dicirikan dengan sensor kiri mendeteksi adanya dinding.
Mobot mengunjungi status 14
Akhirnya bila berhasil maka nilai proposisi ◊p(1,s
14) akan bernilai true atau benar.
Proposisi ◊p(1,s
13) : Mobot berada di s
14dan menghadap ke
selatan (arah 270). Langkah selanjutnya dijelaskan dalam
fungsi proposisi berikut ini :
Do
SetSteering(0,10,0) StepForward
bacasensor Loop Until (jarak(3) < 7)
belok 180 Do
SetSteering(0,10,0) StepForward
bacasensor Loop Until (jarak(3) < 4)
belok 90 Do
SetSteering(0,10,0) StepForward
bacasensor Loop Until (jarak(0) < 7)
visiting 13
Mobot menghadap selatan, dan keluar dari status 14, dan akan tiba di status 6 yang dicirikan dengan sensor depan (sensor 3) mendeteksi adanya dinding
Mobot belok ke barat (arah 180)
Mobot berjalan lurus hingga tiba di status 10 yang dicirikan dengan sensor depan (sensor 3) mendeteksi adanya dinding
Mobot belok ke utara (arah 90), dan segera menuju pintu status 13, yang mana akan dicirikan dengan sensor kanan (sensor 0) mendeteksi adanya dinding (kusen pintu) Mobot mengunjungi / memasuki status 13
Akhirnya bila berhasil maka nilai proposisi ◊p(1,s
13) akan bernilai true atau benar.
Proposisi ◊p(1,s
0) : Mobot berada di s
13dan menghadap ke selatan (arah 270). Langkah selanjutnya dijelaskan dalam fungsi proposisi berikut ini :
Do
SetSteering(0,10,0) StepForward
bacasensor Loop Until jarak(3) < 4
belok 0 Do
SetSteering(0,10,0) StepForward
bacasensor Loop Until (jarak(0) > 7) And (jarak(6) > 7)
Mobot menghadap selatan dan berjalan keluar status 13 dan tiba di status 10 yang dicirikan sensor depan (sensor 3) mendeteksi adanya dinding.
Mobot belok ke timur (arah 0), dan berjalan hingga perempatan (status 7) yang dicirikan dengan sensor kanan dan kiri (sensor 0 dan 6) tidak mendeteksi dinding
belok 90 Do
bacasensor If jarak(4) > 4 Then SetSteering(0,10,10) ElseIf jarak(4) < 4 Then
SetSteering(0,10,- 10)
Else
SetSteering(0,10,0)
End If
StepForward Loop Until (jarak(0) > 7) And (jarak(3) < 4)
belok 0 belok 270
Mobot belok ke arah utara (arah 90), dan berjalan hingga tiba di status 0 (home), yang dicirikan sensor kanan (sensor 0) tidak mendeteksi adanya dinding dan sensor depan (sensor 3) mendeteksi adanya dinding.
Mobot diparkir dengan cara balik kanan dan kembali menghadap selatan.
Akhirnya bila berhasil maka nilai proposisi ◊p(1,s
0) akan bernilai true atau benar.
Akhirnya formula proposisi untuk trajectory t = 1 :
Ø = ◊(p(1,s16) ^ ◊(p(1,s15) ^ ◊(p(1,s14) ^ ◊(p(1,s13) ^ ◊p(1,s0)))))yang diprogram dengan bahasa pemrograman SaxBasic memiliki bentuk :
proposisi = ((((P(t,cqget) And P(t,cqget)) And P(t,cqget)) And P(t,cqget)) And P(t,cqget))
terbukti benar (valid).
3. Eksekusi Trajectory t = 2
Eksekusi trajectory t=2 dapat dijelaskan pada setiap fungsi proposisi yang terdapat dalam formula proposisi
Ø = ◊(p(2,s14) ^ ◊(p(2,s16) ^ ◊(p(2,s15) ^ ◊(p(2,s13) ^ ◊p(2,s4)))))
Status Awal : Sebelum eksekusi fungsi proposisi, mobot berada pada status awal (initial state) yaitu s
4.
Pada status ini mobot memeriksa kompas yang menunjukkan arah hadapnya, dan selanjutnya akan berbelok ke arah hadap 180 derajat atau menghadap ke Barat. Di bawah ini adalah cuplikan 2 perintah program :
SetMobotPosition(0,45,25,sdt) Menempatkan
posisi mobot pada status 4 dengan sudut hadap awal sdt bernilai
sembarang
belok 180 Mobot belok ke
arah barat untuk menghadap ke barat
Proposisi ◊p(2,s
14) : Mobot berada di s
4(initial state) dan menghadap ke barat (arah 180). Langkah selanjutnya dijelaskan dalam fungsi proposisi berikut ini :
Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until (jarak(0) <
maxjarak) Do
bacasensor
If (jarak(4) >
jarak(0)) Then
SetSteering(0,10,20) Else
SetSteering(0,10,-20)
End If
StepForward
Loop Until (jarak(0) >=
Mobot berjalan dari status 4 menuju ke status 5 yang dicirikan dengan sensor kanan (sensor 0) mendeteksi adanya dinding.
Mobot berjalan hingga di depan pintu gerbang status 14 yang dicirikan dengan sensor kanan (sensor 0) tidak mendeteksi adanya dinding.
maxjarak) belok 90 Do
bacasensor
If (jarak(4) > 3) Then SetSteering(0,10,20) Else
SetSteering(0,10,-10)
End If
StepForward
Loop Until (jarak(6) <
maxjarak) visiting 14
Selanjutnya mobot belok ke utara ke arah 90
Mobot berjalan memasuki status 14 dicirikan dengan sensor kiri (sensor 6) mendeteksi adanya dinding.
Mobot mengunjungi status 14
Untuk proposisi ◊p(2,s
16), ◊p(2,s
15), dan ◊p(2,s
13) : perilaku mobot sama dengan proposisi ◊p(0,s
16), ◊p(0,s
15), dan
◊p(0,s
13), atau dengan kata lain memiliki perilaku yang sama dengan proposisi pada trajectory t=0.
Proposisi ◊p(2,s
4) : Mobot berada di s
13dan menghadap ke selatan (arah 270). Langkah selanjutnya dijelaskan dalam fungsi proposisi berikut ini :
Do
SetSteering(0,10,0) StepForward
bacasensor Loop Until jarak(3) < 4
belok 0 Do
SetSteering(0,10,0) StepForward
bacasensor
Loop Until (jarak(0) > 7) And (jarak(6) > 7)
Do
bacasensor If jarak(0) < 6 Then SetSteering(0,10,10) Else
SetSteering(0,10,-10)
Mobot berjalan keluar status 13
yang ditandai dengan sensor depan (sensor 3 mendeteksi adanya dinding)
Mobot belok ke timur, ke arah 0
Mobot berjalan hingga ke perempatan
(status 7) yang dicirikan dengan sensor kiri maupun kanan (sensor 0 maupun 6) tidak mendeteksi adanya dinding
Mobot melanjutkan berjalan lurus kea rah timur hingga tiba di status 4
End If StepForward Loop Until (jarak(3) < 4)
belok 180
yang ditandai dengan sensor depan (sensor 3) mendeteksi adanya dinding
Selanjutnya mobot akan menempatkan diri ke tempat semula menghadap ke barat (arah 180)
Akhirnya formula proposisi, untuk trajectory t = 2 :
Ø = ◊(p(2,s14) ^ ◊(p(2,s16) ^ ◊(p(2,s15) ^ ◊(p(2,s13) ^ ◊p(2,s4)))))yang diprogram dengan bahasa pemrograman SaxBasic memiliki bentuk :
proposisi = ((((P(t,cqget) And P(t,cqget)) And P(t,cqget)) And P(t,cqget)) And P(t,cqget))