Anda di halaman 1dari 57

JetBot AI Kit

JetBot adalah robot open-source berbasis NVIDIA


Jetson Nano. JetBot diprogram dari browser web . Cukup
sambungkan JetBot ke Wifi dan luncurkan JetBot Docker.
Ini memungkinkan lingkungan pemrograman web JetBot,
yang tersedia bahkan setelah JetBot di restart (hidupkan
kembali). Setelah JetBot hidup, cukup ketik alamat IP-nya
ke browser web Anda dan mulai pemrograman.

JetBot dibangun untuk membuat penjelajahan ide yang


terkait dengan robotika semenyenangkan mungkin. Oleh
karena ini adalah komputer AI (kecerdasan buatan) bertenaga baterai portabel dengan kamera yang
sangat mudah diprogram. Sehingga menjadikannya platform yang sempurna untuk mencoba ide-ide
baru yang terkait dengan AI, pemrosesan gambar, dan robotika.

Selamat datang di JetBot, robot pintar nyata yang ditenagai oleh Jetson Nano. Dengan mata
yang cerdas (kamera depan), pengenalan wajah, pelacakan objek, mengikuti garis otomatis, dan
menghindari tabrakan dapat dengan mudah dicapai. Itu juga dilengkapi dengan kode node ROS,
yang memudahkan untuk memulai dengan ROS open source (Robot Operating System), dan untuk
mempelajari kerangka kerja sistem dan konsep ROS. Dalam notebook Jupyter sudah mencakup
konsep dasar robotika seperti kontrol motor terprogram, hingga topik yang lebih canggih seperti
melatih AI khusus untuk menghindari tabrakan. Apa yang akan Anda pelajari tidak terbatas pada
JetBot. Anda akan mempelajari konsep yang terkait dengan pengumpulan dan pelatihan data
jaringan saraf yang meluas sejauh imajinasi Anda.
1. Perintah Dasar Linux
Ketika mengoperasikan OS Linux, kita harus menggunakan shell, yaitu interface yang
menyediakan akses ke layanan sistem operasi. Sebagian besar distribusi Linux menggunakan
antarmuka pengguna grafis atau graphic user interface (GUI) sebagai shell-nya, terutama untuk
memberikan kemudahan penggunaan bagi para user. Dengan demikian, penggunaan command-line
interface (CLI) sangat disarankan karena lebih powerful dan efektif. Task atau tugas yang
membutuhkan proses dengan banyak langkah melalui GUI dapat dilakukan hanya dalam waktu
sekian detik dengan mengetikkan command atau perintah ke CLI. Sebelum menjabarkan perintah
dasar sistem operasi Linux, kita harus membuka baris perintah (command line) terlebih dulu di
jupyterlab akan terlihat tampilan seperti ini.

1. pwd command
Perintah dasar Linux pwd berfungsi untuk mencari path dari direktori (folder) yang kita
gunakan saat ini. Perintah ini akan mengembalikan path yang absolut (penuh), yang pada dasarnya
merupakan path semua direktori yang diawali dengan garis miring depan /. Contoh dari path absolut
adalah /home/username.

2 cd command
Untuk menjelajahi file dan direktori Linux, gunakan perintah cd. Perintah Linux ini
memerlukan path penuh atau nama direktori, tergantung pada direktori yang Anda gunakan saat ini.
Misalkan saat ini Anda sedang berada di /home/username/Documents dan ingin membuka Photos,
subdirektori dari Documents. Untuk melakukannya, Anda hanya perlu mengetikkan command ini:
cd Photos. Contoh lainnya, ketika Anda ingin beralih ke direktori yang sepenuhnya baru, misalnya,
/home/username/Movies. Dalam contoh ini, ketik cd yang diikuti dengan path absolut direktori: cd
/home/username/Movies. Berikut beberapa jalan pintas (shortcut) untuk memudahkan navigasi:
• cd .. (dengan dua tanda titik) untuk memindahkan satu direktori ke atas.
• cd jika ingin langsung membuka folder home.
• cd- (dengan tanda penghubung) untuk berpindah ke direktori sebelumnya.
Satu hal yang perlu diperhatikan, shell Linux sangat sensitif. Jadi, Anda harus mengetikkan
nama direktori dengan benar dan tepat.

3. ls command
ls merupakan perintah dasar pada Linux yang digunakan untuk melihat konten atau isi
direktori. Secara default, command ini akan menampilkan isi dari direktori yang Anda gunakan saat
ini. Jika ingin melihat isi direktori lain, ketik ls, disusul dengan path direktori. Contoh, ketik ls
/home/username/Documents untuk melihat isi Documents. Berikut beberapa variasi yang bisa
dikombinasikan dengan perintah dasar Linux ls:
• ls -R akan membuat daftar semua file yang ada di sub-direktori.
• ls -a akan menampilkan file yang tersembunyi.
• ls -al akan membuat daftar file dan direktori yang memuat informasi mendetail, seperti
permission (hak akses), ukuran (size), pemilik (owner), dll.

4. cat command
cat akronim dari concatenate adalah salah satu perintah dasar sistem operasi Linux yang
sering digunakan. Perintah ini berfungsi untuk membuat daftar konten atau isi file pada standard
output (sdout). Untuk menjalankan command ini, ketik cat yang kemudian diikuti dengan nama dan
ekstensi file. Sebagai contoh: cat file.txt. Berikut beberapa cara untuk menggunakan perintah cat:
• cat > filename untuk membuat file baru.
• cat filename1 filename2>filename3 untuk menggabungkan dua file (1 dan 2) dan
menyimpan outputnya di file baru (3).
• cat filename | tr a-z A-Z >output.txt untuk mengonversi file ke penggunaan huruf besar atau
huruf kecil.

5. mkdir command
mkdir berfungsi sebagai cara untuk membuat direktori baru, Anda bisa menggunakan
perintah dasar Linux mkdir. Sebagai contoh, jika Anda mengetik mkdir Music, direktori baru yang
muncul disebut Music. Berikut beberapa command mkdir tambahan:
• Untuk membuat direktori baru di dalam direktori lain, gunakan command dasar Linux mkdir
Music/Newfile.
• Gunakan opsi p (parents) untuk membuat direktori di antara dua direktori yang sudah ada.
Misalnya, mkdir -p Music/2020/Newfile untuk membuat file baru “2020”.

6. rmdir command
Jika ingin menghapus direktori, gunakan perintah rmdir. Namun, rmdir hanya boleh
digunakan untuk menghapus direktori kosong.

7. rm command
rm adalah perintah dasar pada Linux yang berfungsi untuk menghapus direktori beserta
isinya. Jika hanya ingin menghapus direktorinya saja – alternatif command selain rmdir – gunakan
rm -r.
Catatan: Saat menggunakan command ini, Anda harus berhati-hati dan cek kembali direktori
di mana Anda berada saat ini. Sekali command rm dijalankan, maka semuanya akan
terhapus dan tidak bisa dikembalikan.

8. touch command touch


Adalah perintah dasar Linux yang memperbolehkan Anda membuat file baru yang kosong
melalui baris perintah Linux. Sebagai contoh, ketik touch /home/username/Documents/Web.html
untuk membuat file HTML berjudul Web di bawah direktori Documents.

9. grep command
Perintah dasar Linux lain yang sangat berguna untuk menyelesaikan task harian adalah grep.
Dengan command ini, Anda bisa melakukan pencarian di semua teks di dalam file yang diberikan.
Sebagai contoh, ketik grep blue notepad.txt untuk mencari kata blue di file notepad. Baris yang
memuat kata yang dicari akan ditampilkan sepenuhnya.

10. sudo command


sudo merupakan singkatan dari “SuperUser Do” dan berfungsi untuk menjalankan task yang
memerlukan hak akses (permission administrative) atau root. Namun, tidak menyarankan
penggunaan command sudo untuk task harian karena bisa terjadi error kapan saja bila Anda
melakukan kesalahan.
11. diff command
diff adalah perintah dasar Linux yang membandingkan konten atau isi dua file berdasarkan
baris demi baris. Setelah menganalisis file, perintah ini akan menghasilkan output berupa line atau
baris yang tidak cocok. Programmer sering menggunakan command ini ketika mereka perlu
membuat perubahan program, alih-alih menulis kembali semua kode source. Format paling
sederhana dari command dasar Linux ini adalah diff file1.ext file2.ext.

12. chmod command


chmod adalah perintah dasar Linux lainnya yang digunakan untuk membaca, menulis, dan
menjalankan permission (hak akses) file dan direktori. Karena perintah ini cukup sulit, maka untuk
menjalankannya

13. ping command


Command ping berfungsi untuk mengecek status konektivitas ke server. Misalnya, dengan
menambahkan ping google.com, command akan mengecek apakah Anda sudah terhubung ke
Google atau belum dan juga mengukur waktu respons.

14. wget command


Perintah dasar Linux ini sangat berguna – Anda bahkan bisa mengunduh file dari internet
dengan bantuan command wget. Anda hanya perlu mengetikkan wget yang diikuti dengan link
unduhan.

15. history command


Kalau sudah lihai menggunakan Linux, Anda bisa menjalankan ratusan command atau
perintah setiap hari. Misalnya, penggunaan command history untuk mengecek kembali (review)
command yang sudah ditambahkan sebelumnya.

16. echo command


Perintah dasar Linux ini digunakan untuk memindahkan beberapa data ke dalam satu file.
Misalnya, jika ingin menambahkan teks, “Hello, my name is John” ke file yang bernama name.txt,
yang perlu diketik adalah echo Hello, my name is John >> name.txt.

17. zip, unzip


command Gunakan perintah zip untuk meng-compress file ke arsip zip dan perintah unzip
untuk mengekstrak file zip ke arsip zip.
Tips dan Trik
Gunakan command clear untuk membersihkan terminal jika di dalamnya sudah terdapat
banyak sekali command. Coba tombol TAB untuk mengisi secara otomatis (autofill) apa yang
sedang Anda ketikkan. Sebagai contoh, jika ingin mengetik Documents, mulailah dengan
menambahkan command terlebih dulu (misalnya cd Docu, kemudian tekan tombol TAB) dan
terminal akan melengkapinya. Hasilnya akan seperti ini: cd Documents. Ctrl+C dan Ctrl+Z
digunakan untuk memberhentikan command apa pun yang saat ini sedang dijalankan. Ctrl+C akan
memberhentikan command dengan aman, sedangkan CTRL+Z akan memaksa command untuk
berhenti. Bila Anda secara tidak sengaja ‘membekukan’ terminal dengan menekan Ctrl+S, untuk
membatalkan ‘pembekuan’ tersebut cukup tekan Ctrl+Z. Ctrl+A membawa Anda ke awal baris,
sedangkan Ctrl+E mengarahkan Anda ke akhir baris. Anda bisa menjalankan banyak command atau
perintah di dalam satu command dengan menggunakan “;” untuk memisahkan command-command
tersebut. Misalnya, Command1; Command2; Command3. Atau gunakan && jika Anda hanya ingin
menjalankan command selanjutnya setelah command pertama berhasil dijalankan.

Kesimpulan
Perintah dasar Linux membantu user atau penggunanya untuk menjalankan task dengan
mudah dan efektif. Memang bukan hal yang mudah untuk mengingat semua perintah Linux di atas.
Namun, semuanya akan teratasi bila Anda terus berlatih dan berlatih.
2. Python Dasar

1. Pendahuluan
Python adalah bahasa pemrograman interpretatif multiguna. Tidak seperti bahasa lain yang
sulit dibaca dan dipahami, python lebih kepada keterbacaan kode untuk memudahkan pemahaman
sintaks. Hal ini membuat Python sangat mudah dipelajari baik untuk pemula maupun yang sudah
menguasai bahasa pemrograman lain. Bahasa ini pertama kali muncul pada tahun 1991, dirancang
oleh seseorang bernama Guido van Rossum. Hingga saat ini Python masih terus dikembangkan oleh
Python Software Foundation. Bahasa Python mendukung hampir semua sistem operasi, bahkan
untuk sistem operasi Linux, hampir semua distro sudah menyertakan Python di dalamnya.

2. Print() Function
print() dapat digunakan untuk menampilkan ke dalam console. pada sistem operasi yang kita
gunakan adalah ubuntu 18.04 dimana mengunakan console yang dikenal dengan sebutan Terminal.
Untuk menggunakan fungsi print(), kita akan gunakan pada contoh kali ini bersama dengan tipe
data Strings Strings Adalah salah satu tipe data yang berarti text atau tulisan. beberapa jenis tipe
data yang lain seperti : Integer, Boolean, Float, Double, Constant, dll. sebuah tipe data string,
memiliki ciri-ciri sebuah kata atau kalimat yang di awali dan di akhiri dengan tanda petik baik itu
petik satu '...' maupun petik dua "..."

2.1 Penerapan

kedua bentuk string di atas tidak menghasilkan output yang berbeda antara menggunakan dua petik
atau satu petik ' atau ''
2.2 Escape Character
Escape character adalah karakter yang di awali dengan tanda \ (baca: backslash), dimana
untuk masing-masing escape character memiliki makna sendiri-sendiri. Misalnya kita ingin menulis
sebuah kalimat yang di dalamnya terdapat kata yang menggunakan tanda apostrof ('), seperti:
Jum’at, AlQur’an, dll.

Terjadi kesalahan berupa invalid syntax dengan pointer menunjuk pada huruf t. Kita dapat
memperbaiki kesalah ini dengan mengganti satu petik ' yang mengapit kalimat tersebut dengan dua
petik ".

Namun, ini bukan penyelesaian dengan menggunakan escape character, karena bahasan kita
adalah escape character maka kita akan menggunakan cara yang sesuai dengan topik ini. Seperti ini
cara memperbikinya.

Yaitu dengan menambahkan tanda \ tepat sebelum tanda ', sehingga menjadi seperti ini \'.
Dapat diartikan bahwa tanda \ akan membuat tanda ' yang seharusnya merupakan sintaks untuk
membuka dan menutup sebuah string, menjadi terabaikan dan hanya akan ditampilkan berupa '.

Cara memperbaiki dengan menggunakan escape character.


2.3 Print: Multi Line Print
Untuk melakukan print() pada banyak baris, kita dapat melakukannya dengan sangat mudah.
Kita cukup mengapitnya dengan tanda petik tiga '''...''' atau """...""". Hal ini sama seperti saat kita
memberikan komentar pada banyak baris. Aturan mengenai cara pemberian komentar pada baris
kode, akan kita bahas pada materi selanjutnya. Berikut ini adalah cara menampilkan print() pada
banyak baris.

2.4 Latihan Buatlah


hasil print function seperti gambar berikut

2.5 Strings: f-strings


Python mendukung banyak cara untuk melakukan formatted strings. Formatted
strings di sini artinya, “membentuk strings”. Jadi kita dapat membentuk output strings
sesuai dengan yang kita inginkan. Metode-metode tersebut antara lain seperti
menggunakan %-formatting, str.format, dan string.Template.
2.6 Latihan
Buatlah Perkenalan diri seperti contoh gambar ini
3. Matematika Dasar
3.1 Penjumlahan
Kamu dapat melakukan operasi penjumlahan dengan menggunakan operator
matematika berupa tanda tambah +. Operasi matematika dapat dilakukan dengan
menjumlahkan integer dengan integer, float dengan float, maupun integer dengan
float.

3.2 Pengurangan
Untuk dapat melakukan operasi matematika berupa pengurangan, kamu dapat
menggunakan tanda -.

3.3 Perkalian
Untuk dapat melakukan operasi matamatika berupa perkalian, kamu dapat
menggunakan tanda *.
3.4 Pembagian
Untuk dapat melakukan operasi matematika berupa pembagian, kamu dapat
menggunakan tanda /. Hasil keluaran (output) dari operasi pembagian berupa tipe
data float.

3.5 Pemangkatan
Untuk dapat melakukan operasi matematika berupa pemangkatan atau exponen
dalam aljabar, kamu dapat menggunakan tanda **.
3.6 Akar Kuadrat
Untuk dapat melakukan operasi matematika berupa akar kuadrat (square root), terlebih
dahulu kamu harus melakukan import terhadap module bernama math. Kemudian, cara
menggunakannya dengan memasukkan nilai yang akan di akar kuadratkan ke dalam tanda kurung
math.sqrt(...).

3.7 Latihan
buat dengan bahasa pemograman python
1. Oji memiliki 550 kelereng lalu dia bermain bersama Pila lalu kalah sebanyak 350 kelereng.
Kemudian dia membeli lagi kelereng sebanyak 250. Jadi jumlah kelereng milik Oji sekarang
adalah
2. Rian pergi ke toko alat tulis untuk membeli bolpoin. Harga 1 buah bolpoin Rp 1.750. Jika
Rian membeli 1 lusin bolpoin dan Ia membayar 5 lembar uang lima ribuan. Berapa uang
kembalian yang Rian terima?
4. Variabel dan Tipe Data
Hampir di setiap program Python akan menggunakan variable. Variable dapat diibaratkan
sebuah ember yang digunakan untuk menampung data. Variable dalam Python dapat menampun
bermacam-macam data. Data yang ditampung dapat berupa string, integer, float, boolean, array,
function, dan mungkin masih banyak lagi. Variable membantu program dapat lebih dinamis dan
dapat membantu programmer mereferensikan sebuah nilai yang panjang di dalam sebuah wadah,
ketimbang harus mengetik nilai yang panjang berulang kali.
Variable dapat dibuat dengan nama apapun kecuali nama yang sama dengan nama sintaks
dan function pada 'Python'. Hal ini dapat menyebabkan sebuah konflik. Variable juga tidak dapat
ditulis dengan awalan angka dan simbol, kecuali simbol '_' (baca: underscore). Sebagai contoh,
kamu tidak dapat memberikan nama sebuah variable dengan nama 'print' karena akan terjadi konflik
dengan print() function.

Apabila ini dilakukan, maka hasil dari print('Ini tidak dapat dilakukan !') tetap akan tampil
pada console. Namun, saat kita akan memanggil atau menggunakan variable yang bernama print
akan terjadi kegagalan.
4.1 Variable dengan
a. Nilai String
Nah sekarang yang benernya. Kita sudah mempelajari print() function pada materi pertama.
Sekarang, Yuk! Kita coba kombinasikan print() function dengan variable.

Devika Marina bukan merupakan tipe data yang tepat. Apabila kamu bermaksud membuat Devika
Marina menjadi sebuah string, maka kamu harus menuliskannya dengan mengawali dan mengakhiri
dengan tanda petik ('...' atau "...").

Atau, kamu dapat menerapkan concatenation yang sudah kita pelajari pada materi pertama.
b. Integer atau Float
Selain bernilai string, variable juga dapat bernilai integer maupun float

c. Boolean
Variable dapat pula bertipe data boolean, yaitu True atau False. Penulisan nilai boolean harus di
awali dengan huruf besar.

4.2 Variable dengan Banyak Nilai


a. Tuples
Tuple adalah variable yang berisi / bernilai bermacam-macam data / tipe data yang dipisahkan oleh
tanda koma , yang membuatnya mirip dengan list (list, dalam bahasa pemrograman lain disebut
array). Namun, yang menjadikan tuple berbeda dengan list adalah tuple memiliki sifat immutable
yang artinya kekal atau tidak dapat diubah-ubah.

Pada contoh di atas, menggunakan contoh pemanggilan isi dari variable tuple dengan menggunakan
urutan dari indeksnya. [0] dibaca indeks ke nol. Indeks pada bahasa pemrograman Python dimulai
dari 0, selanjutnya diikuti 1, 2, 3, 4, 5, dst…
Kamu dapat menuliskan sebuah variable tuple dengan mengawali dengan tanda kurung ( dan
menutupnya dengan ). Seperti ini (..., ..., ...). Namun, tidak menggunakan tanda kurung (...) juga
tidak masalah. Seperti ini ..., ..., ... Sehingga secara default, apabila kamu mendeklarasikan sebuah
variable yang memiliki banyak nilai dan dipisahkan dengan tanda koma, maka Python akan
mengenalinya sebagai variable dengan tipe data tuple.

b. Python Lists
Selanjutnya kita memiliki variable yang lebih populer dibandingkan tuple, yaitu Python list. List
adalah variable struktur data yang berisi / bernilai bermacam-macam data / tipe data yang
dipisahkan dengan tanda koma , yang membuatnya mirip dengan tuple. Namun, yang
membedakannya denga tuple adalah kita mendeklarasikan sebuah variable bertipe data list dengan
mengapit data tersebut menggunakan tanda kurung kotak [..., ..., ...].
c. Python list
ini tidak bersifat immutable sehingga memungkinkan kita untuk dapat memodifikasinya,
seperti: append, extend, insert, count, remove, reverse, sort, dll. Nanti akan ada pembahasan
tersendiri untuk modifikasi Python list.

d. Dictionary
Python Dictionary adalah sebuah variable struktur data yang hampir mirip dengan array.
Dictionary kalo diartikan secara bahasa akan bermakna kamus. Ya! Persis selayaknya kamus, yang
isinya terdapat kata kunci dan setiap kata kunci memiliki arti yang dapat lebih dari satu arti.
Dictionary tidak diurutkan berdasarkan sesuatu. Karakteristik yang khas dari Python dictionary
adalah memiliki kunci dan nilai (kunci:nilai). Setiap kunci berbentuk unik dan hanya satu.
Sedangkan nilainya dapat mengandung lebih dari satu data / tipe data, baik dalam bentuk tipe data
apapun seperti: string, integer, float, tuple, list, bahkan dictionary juga. Untuk mendeklarasikan
sebuah variable dengan tipe struktur data dictionary, kita perlu mengawalinya dengan menggunakan
tanda kurung kurawal{ dan menutupnya dengan }

Apabila kita ingin mengetahui berapakah nomor punggung dari Davy, maka kita cukup memanggil
kuncinya saja.

Perlu diperhatikan, pemanggilan kunci berupa string, haruslah sama persis dengan kunci
yang sudah di deklarasikan di dalam variable dictionary. Namanya saja kunci, kalo kuncinya tidak
sama, maka pintu tidak akan dapat dibuka. Selain kunci yang berbentuk string, kunci dapat pula
berupa integer.
4.3 Variable yang Mengandung
Proses Variable tidak melulu mengandung nilai-nilai. Variable juga dapat kita manfaatkan
untuk menyimpan proses.
5. Perulangan while
Kamu pernah merasa jenuh untuk melakukan pekerjaan yang berulang-ulang ? Untungnya
dalam bahasa pemrograman kita dapat membuat proses perulangan itu berjalan secara otomatis.
Pada dasarnya, kita hanya perlu mengatur dan menentukan kapan perulangan itu dimulai dan kapan
harus berhenti berulang, bahkan kita bisa menentukan pola perulangannya Misalnya kita ingin
menampilkan nama-nama pemain basket yang ada di dalam tim inti.

Ini adalah cara menampilkan isi dari variable Python list dengan cara manual. Dapat kita lihat
bersama, bahwa kita melakukan print() function sebanyak lima kali. Dalam bahasa pemrograman
Python, teradapat dua cara perulangan (loop) yang dapat kita gunakan untuk menyelesaikan
masalah mengenai perulangan. while dan for. Kedua-duanya memiliki tujuan akhir yang sama,
yaitu untuk menyelesaikan masalah perulangan. Keduanya juga dapat dipakai secara bergantian.
Tergantung pada preferensi masing-masing dari programmer atau efisiensi. Pada umumnya for loop
selalu lebih efisien dibandingkan dengan while loop, namun tidak selalu. Pada topik ini, kita akan
terlebih dahulu membahas mengenai while loop. Ide dari while loop adalah, ketika sesuatu kondisi
sesuai dengan fakta yang ada, lakukan sesuatu sesuai dengan yang telah ditentukan.
5.1 Bongkar Kode
Nah, ini adalah dua buah pernyataan yang ada di dalam blok while loop pada baris kedua.
Pada baris sebelumnya sudah menghasilkan kondisi yang bernilai True, maka kedua baris ini akan
di jalankan secara berurutan dimulai dari atas.
> print('Umur Balita =',umurBalita)
Teman-teman pasti sudah paham baris ini digunakan untuk apa dan akan menghasilkan output
seperti apa. Ya, print() digunakan untuk menampilkan output ke dalam console. Kemudian,
pernyataan kedua,
> umurBalita += 1
Ini adalah bentuk pendeklarasian variable yang mengandung proses di dalamnya. Seperti yang
sudah disinggung pada materi tentang variable pada post sebelumnya. Bentuk operasi penjumlahan
seperti di atas, dapat kita uraikan menjadi bentuk seperti ini.
> umurBalita = umurBalita + 1
Pada awal dari kode, variabel umurBalita sudah di deklarasikan bernilai 1. Yang berarti variable ini
adalah variable dengna tipe data integer. Sehingga dapat kita baca seperti ini.
>1=1+1
Maka setelah melewati pernyataan ini, variabel umurBalita akan berubah nilainya, dari semula
bernilai 1, akan berubah menjadi 2. Kemudian, setelah semua pernyataan yang ada di dalam blok
kode while loop telah habis di baca oleh Python interpreter, maka pembacaan akan di mulai
kembali ke baris yang menyatakan perulangan, yaitu baris yang mengandung sintaks while loop.
Pada saat ini, variable umurBalita sudah berubah nilainya menjadi 2. Kemudian, akan dibandingkan
dengan kondisi yang telah ditentukan, `murBalita <= 5, hasil dari perbandingna ini adalah True,
maka pernyataan di dalam blok kode while loop akan di jalankan persis sama seperti sebelumnya.
Proses yang berulang ini akan berhenti sampai, kondisi yang sudah ditentukan oleh while loop
mendapatkan nilai False. Yaitu, dimana variable `umurBalita` sudah mencapai nilai 6. Maka tahap
ini, kondisi akan bernilai False. Apabila telah mencapai kondisi yang salah, maka pernyataan di
dalam blok kode while loop, tidak akan dijalankan. Untuk memudahkan kita melihat apa yang
dilakukan oleh Python interpreter dalam melakukan proses perulangan, mungkin kita bisa buatkan
tabel perulangannya.
5.2 Contoh kasus lain
While loop juga akan dapat membantu dalam kasus-kasus seperti ini, misalkan, kalian memiliki
sebuah alat, robot, atau mesin yang dapat mendeteksi sesuatu, misalkan hujan. while True: do
something ode di atas akan menghasilkan perulangan tanpa batas (infinite loop). Kalo kamu
terjebak dalam kondisi seperti ini di console, kamu dapat menghentikan proses perulangan ini
dengan menekan kombinasi tombol Ctrl + C. Kita juga dapat mengatur kapan perulangan harus
dimulai, berhenti, dan bagaimana cara berulangnya. Saya akan mengambil contoh kode perulangan
umur balita di atas.
6. Perulangan for
Setelah sebelumnya kita membahas perulangan menggunakan while (while loop),
perulangan selanjutnya yang akan kita bahas adalah perulangan menggunakan for (for loop). Prinsip
dari pengulangan menggunakan for loop adalah perulangan yang berdasarkan sesuatu.
> for setiapHal in halIni: # kondisi
> jalankan PernyataanIni # pernyataan

Misalkan, di dalam sebuah tim basket terdapat 5 anggota. Kita akan memberikan setiap anggotanya
botol air. Kira-kira bentuk kodenya akan seperti ini.

6.1 Bongkar Kode


Saya rasa, temen-temen pasti sudah paham mengenai konsep dari perulangan, seperti yang
sudah dibahas pada materi while loop. for loop pun juga digunakan untuk menyelesaikan
permasalahan yang membutuhkan perulangan agar lebih efisien. for loop biasanya digunakan untuk
melakukan perulangan yang banyaknya telah diketahui sebelumnya. Seperti contoh di atas. Kita
telah mengetahui banyaknya indeks pada variable timBasket berjumlah lima. Sehingga, kita sudah
mengetahui bahwa perulangan akan bermula dari indeks ke 0 dan berhenti pada indeks ke 4.

Terdapat contoh lain dari penggunaan for loop yang pernah saya temui. Seperti ini. Misalkan, kita
ingin membuat perualngan sebanyak 10 kali, sambil menampilkan output dari urutan perulangan
yang sudah terjadi ke dalam console.
range() adalah sebuah built-in function dalam Python yang berguna untuk menghasilkan
sebuah object dalam tipe data integer yang berurutan dari start sampai stop dengan step tertentu.
Rumus dari fungsi range adalah,
> range(start, stop, step)
Dapat kita lihat bahwa fungsi range() memiliki 3 buah parameter. Parameter adalah syarat yang
diperlukan oleh sebuah fungsi agar dapat melakukan tugasnya. Pembahasan lebih lanjut mengenai
parameter akan kita bahas pada materi yang lain. Secara default, range() memiliki nilai parameter
start = 0. Dan memiliki minimal 1 parameter yang harus kita penuhi. Hal ini membuat kita dapat
menuliskan fungsi range() seperti ini.

Artinya, range(start=0, stop=4, step=0). Sehingga akan menghasilkan output berupa. Atau,
Misalkan kita ingin menghitung berapakah total hasil penjumlahan yang ada pada sebuah list.
7. Pernyataan Bersyarat (Conditional statement Python)
Merupakan aliran yang mengontrol kode program Python berdasarkan pengujian pernyataan
bersyarat. Seperti bahasa pemrograman lainnya, conditional statement (pernyataan bersyarat)
merupakan salah satu control flow (aliran kontrol) di bahasa pemrograman Python. Pernyataan
bersyarat dapat berisi fungsi, operator matematika dan operator logika. Syntax yang digunakan
untuk membuat control flow berupa conditional statement di Python adalah if, elif, dan else.
Syntax if, elif, dan else merupakan syntax yang digunakan untuk membuat conditional statement di
bahasa pemrograman Python.

1. Conditional statement dimulai dari pertama, saat ada pernyataan yang terpenuhi maka
perintahnya pernyataan akan dijalankan dan conditional statemen dihentikan
2. Conditional expression dimulai dengan syntax if
3. Conditional expression adalah pernyataan bersyarat yang diujikan yang dapat berisi operator
matematika, fungsi, dan logika.
4. Setiap conditional expression diakhiri tanda colon :
5. Setiap conditional expression mempunyai kode perintah dalam penulisan indentasi
6. Conditional_expression_1 merupakan pernyataan bersyarat pertama dengan perintah
command_1
7. Conditional expression kedua dan seterusnya dimulai dengan syntax elif
8. Conditional_expression_2 merupakan pernyataan bersyarat kedua dengan perintah
command_2
9. Conditional_expression_3 merupakan pernyataan bersyarat ketiga dengan perintah
command_3
10. Kondisi alternatif ditulis diakhiri dengan syntax else:
11. alternative_command merupakan perintah alternatif, digunakan saat semua kondisi bersyarat
tidak terpenuhi
7.1 Conditional Statement pada Python
a. if (Tunggal)
Misalnya dibuat program Python yang dapat mengetahui suatu bilangan yang dimasukkan
pengguna bernilai nol.

b. if ... elif ... (Beberapa Kondisi Bersyarat)


Misalnya dibuat program kuis, mengenai hari kemerdekaan republik Indonesia
c. if ... elif ... else ... (Kondisi Bersyarat dengan Alternatif)
Misalnya dibuat program Python yang dapat mengetahui suatu bilangan yang dimasukkan
pengguna bernilai nol, positif, atau negatif
8. Pengertian Fungsi (def) Pada Python
Apa itu fungsi (def) pada python? Fungsi pada python adalah kumpulan perintah atau baris
kode yang dikelompokkan menjadi satu kesatuan untuk kemudian bisa dipanggil atau digunakan
berkali-kali. Sebuah fungsi bisa menerima parameter, bisa mengembalikan suatu nilai, dan bisa
dipanggil berkali-kali secara independen. Dengan fungsi kita bisa memecah program besar yang
kita tulis, menjadi bagian-bagian kecil dengan tugasnya masing-masing. Juga, fungsi akan membuat
kode program kita menjadi lebih “reusable” dan lebih terstruktur.
Di dalam python, sintaks pembuatan fungsi terlihat seperti berikut:
> def (parameters):
> statements
Sintaks di atas secara umum terbagi menjadi 4 bagian:
1. Kata kunci def yang menjadi pertanda bahwa blok kode program adalah sebuah fungsi
2. Nama fungsi yang kita buat
3. Parameters yang akan diterima oleh fungsi yang kita buat (tidak wajib)
4. Dan blok kode fungsi yang di sana akan kita tulis perintah-perintah yang harus dilakukan
oleh sebuah fungsi

blok kode program di dalam python didefinisikan dengan indentasi Contoh sebuah fungsi sederhana
dengan nama halo_dunia():

Fungsi di atas, jika dipanggil, akan mengeksekusi perintah print() yang ada di dalamnya.
Bagaimana cara memanggil fungsi yang telah kita definisikan? Sederhana. Cukup ketik nama
fungsinya, ditambah dengan tanda kurung () seperti berikut:

8.1 Fungsi dengan Argumen atau Parameter


Sebuah fungsi juga bisa menerima parameter atau pun argumen. Ia merupakan suatu nilai/variabel
yang dilemparkan ke dalam fungsi untuk diproses lebih lanjut. Sebagai contoh, perhatikan output
berikut:
> Halo Nurul, selamat datang!
> Halo Lendis, selamat datang!
> Halo Fabri, selamat datang!
> Halo Isa, selamat datang!
Lalu, bagaimana cara kita memproduksi output seperti itu dengan python? Ada banyak cara. Bisa
dengan list, perulangan, dan lain sebagainya. Akan tetapi, dari pada kita melakukan 4x print seperti
di atas, kita bisa memanfaatkan fungsi dan parameter pada python.

8.2 Parameter Wajib


Parameter di dalam python bisa lebih dari satu, bisa wajib semua (harus diisi), dan bisa juga bersifat
opsional. Perhatikan contoh fungsi berikut:

Tapi jika kita memanggilnya dengan parameter tidak lengkap, justru kita akan mendapatkan error:

8.3 Parameter Opsional (atau Default)


Tidak semua parameter fungsi pada python itu bersifat wajib. Ada yang opsional. Parameter
opsional adalah parameter yang seandainya tidak diisi, dia sudah memiliki nilai default. Perhatikan
contoh berikut:
Dua parameter pertama adalah bersifat wajib dan harus diisi, sedangkan parameter ketiga tidak
wajib. Jika tidak kita isi, maka nilai default-nya adalah “celcius”. Sekarang, kita coba panggil fungsi
tersebut dengan 2 cara:

8.4 Fungsi Dengan Parameter Tidak Berurut


Jika kita perhatikan lagi fungsi suhu_udara(), kita akan dapati kalau parameter yang bersifat
opsional hanya ada 1, dan hanya ada di belakang. Tapi, bagaimana jika ternyata parameter
opsionalnya ada lebih dari 1? Coba perhatikan:

Pada fungsi tersebut, kita telah mengatur nilai default untuk parameter derajat. Sehingga sekarang
kita memiliki dua buah parameter. Kita coba panggil dengan 2 parameter seperti ini:

Kenapa demikian? Padahal kita inginnya hanya mengisi 2 parameter saja: Satu untuk parameter
daerah Dan yang kedua untuk parameter satuan Tapi di sini malah terisi adalah parameter derajat.
Untuk mengatasi hal ini, kita bisa mendefinisikan nama argumen/parameter yang akan kita isi.

Dengan mendefinisikan nama argumen yang kita passing, kita sekarang bisa memanggilnya bahkan
secara tidak berurutan sekalipun:
8.5 Ruang Lingkup (dan Siklus Hidup) Variabel Pada Fungsi
Variabel memiliki ruang lingkup dan siklus hidup. Secara umum, terdapat dua ruang lingkup
variabel pada python: Variabel global Dan variabel lokal Variable global adalah variabel yang bisa
dipanggil dari manapun dari satu file python. Sedangkan variable lokal adalah variabel yang hanya
hidup di dalam satu blok kode tertentu (seperti di dalam fungsi, seperti kasus kita pada pertemuan
ini). Perhatikan contoh berikut:

Pada kode di atas, variabel kota yang ada di dalam fungsi, adalah variabel kota yang sama dengan
yang ada di luar fungsi. Tapi, coba kita ubah kode programnya:

1. Kita membuat 2 buah variabel dengan nama kota dan provinsi


2. Kita mengubah variabel `provinsi` pada fungsi hello()
3. Saat fungsi hello() dieksekusi, benar saja variabel `provinsi` berubah.
4. Tapi, ketika kita tampilkan lagi (secara langsung) variabel `provinsi`, nilainya kembali ke
nilai semula.
Kenapa?
Karena ketika kita mengubah variabel `provinsi` pada fungsi hello(), itu sebenarnya kita tidak
merubah variabel provinsi yang ada di luar, melainkan kita membuat variabel baru dengan nama
yang sama, akan tetapi dengan ruang lingkup lokal yang hanya bisa diakses pada fungsi hello() saja.
1. Gerakan Rotasi
Selamat datang di pelatihan Dasar Jetbot pelatihan ini akan dimulai dengan gerakan pada
jetbot dengan menggunakan antarmuka Jupyter Lab Untuk memulai pemrograman JetBot, kita perlu
mengimpor library Robot. Kelas ini memungkinkan kita dengan mudah mengontrol motor jetbot
library Robot Ini terdapat dalam paket jetbot. paket pada dasarnya adalah folder yang berisi file
kode. File kode ini disebut juga dengan modul.

baris kode diatas adalah perintah untuk mengimpor kode library Robot yang terdapat dalam modul
jetbot. Sekarang setelah kita mengimpor kelas Robot, kita dapat menginisialisasi kelas instance
sebagai berikut.

Sekarang kita telah membuat inisialisasi Robot yang kita beri nama "robot", kita dapat
menggunakan inisialisasi ini untuk mengontrol robot. Untuk membuat robot berputar berlawanan
arah jarum jam pada 10% dari kecepatan maksimumnya, kita dapat memanggil dengan kode
sebagai berikut:
PERINGATAN: Perintah selanjutnya ini akan membuat robot bergerak!

Keren, Anda akan melihat robot berputar berlawanan arah jarum jam dan juga searah jarum jam
dengan perintah right. kecepatan diatur dalam persen dengan mengganti inisialisasi dari speed
dalam desimal dari 0 - 1 (0.3) Sekarang, untuk menghentikan robot kita dapat memanggil metode
stop.

Mungkin kita hanya ingin menjalankan robot untuk jangka waktu tertentu. Untuk itu, kita dapat
menggunakan paket time Python.
Paket ini mendefinisikan fungsi sleep, yang menyebabkan eksekusi kode diblokir selama beberapa
detik tertentu sebelum menjalankan perintah berikutnya. Coba cara berikut agar robot belok kiri
hanya setengah detik.

Kita akan melihat robot berbelok ke kiri sebentar lalu berbelok kekanan dengan menambah
kecepatan menjadi 0.2 dan kemudian berhenti. Kenapa kita tidak menuliskan perintah speed= di
dalam metode left / right ? Python memungkinkan kita untuk mengatur parameter fungsi dengan
nama , atau urutan di mana didefinisikan (tanpa menentukan nama). Robot() juga memiliki metode
forward, dan backwards

berikut merupakan coding jetbot melakukan putaran berlawanan arah jarum jam hingga kembali ke
titik semula, dengan kecepatan 0,1

1.1 Latihan
kembangkanlah kode di atas dengan menggunakan perulangan for pada python sehingga dapat
melakukan perputaran sebanyak 3 kali
2. Kontrol Gerakan
Pada bagian sebelumnya kita melihat bagaimana kita dapat mengontrol robot menggunakan
perintah seperti kiri, kanan, maju, dan mundur. Tetapi bagaimana jika kita ingin mengatur kecepatan
masing-masing motor satu per satu? Nah, ada dua cara sehingga kita bisa melakukannya Cara
pertama adalah memanggil metode set_motors. Misalnya, untuk berbelok ke kiri selama satu detik
kita bisa mengatur motor kiri menjadi 30% dan motor kanan menjadi 60% seperti berikut.

> jangan lupa untuk mengimport paket yang di perlukan

Kelas Robot memiliki dua atribut bernama left_motor(motor_kiri) dan right_motor(motor_kanan)


yang mewakili setiap motor satu per satu. Atribut ini adalah instance kelas Motor, masing-masing
berisi atribut value. Atribut value ini adalah traitlet yang menghasilkan events saat diberi nilai baru.

Kita akan melihat robot bergerak dengan cara yang sama persis!

2.1 Menghubungkan motor ke traitlets


Fitur yang sangat keren tentang traitlets ini adalah kami dapat juga menautkannya ke "traitlet!"
lainnya. Ini sangat berguna karena Jupyter Notebooks memungkinkan kita untuk membuat widget.
Ini berarti kita dapat mengatur motor kita ke widget untuk mengontrolnya dari browser, atau hanya
memvisualisasikan nilainya. Untuk menunjukkan bagaimana melakukan ini, mari buat dan
tampilkan dua slider yang akan kita gunakan untuk mengontrol motor kita.

Anda akan melihat dua bilah geser vertikal ditampilkan di atas.


TIPS MEMBANTU: Di Jupyter Lab, Kita sebenarnya dapat "meletakkan" output sel ke
jendela yang sepenuhnya terpisah! Itu akan tetap terhubung ke notebook, tetapi ditampilkan
secara terpisah. Ini berguna jika kita ingin menyematkan output dari kode yang kita jalankan
di tempat lain. Untuk melakukannya, klik kanan output sel dan pilih Buat Tampilan Baru
untuk Output. Anda kemudian dapat menyeret jendela baru ke lokasi yang menurut Anda
menyenangkan. Sekarang coba seret penggeser (perlahan pada awalnya). Anda harus
melihat putaran motor masing-masing!
Fungsi link yang kita buat di atas sebenarnya membuat tautan dua arah! Itu berarti, jika kita
mengatur nilai motor di tempat lain, slider akan diperbarui! Coba jalankan blok kode di bawah ini

kita akan melihat bilah geser merespons perintah motor! Jika kita ingin menghapus koneksi ini, kita
dapat memanggil metode unlink dari setiap link.

Tetapi bagaimana jika kita tidak menginginkan tautan dua arah, katakanlah kita hanya ingin
menggunakan penggeser untuk menampilkan nilai motor, tetapi tidak mengontrolnya. Untuk itu kita
bisa menggunakan fungsi dlink. Input kiri adalah source dan input kanan adalah target
Sekarang coba pindahkan slider. kita akan melihat bahwa robot tidak merespons. Tetapi ketika
mengatur motor menggunakan metode yang berbeda, slider akan memperbarui dan menampilkan
nilainya!

2.2. Membuat Fungsi ke Events


Cara lain untuk menggunakan traitlets, adalah dengan melampirkan fungsi seperti forward ke
events. Fungsi-fungsi ini akan dipanggil setiap kali terjadi perubahan pada objek, dan akan
diberikan beberapa informasi tentang perubahan tersebut seperti nilai lama dan nilai baru. Mari kita
buat dan tampilkan beberapa tombol yang akan kita gunakan untuk mengontrol robot.

Kita akan melihat satu set kontrol robot ditampilkan di atas! Tapi sekarang tombol ini tidak akan
melakukan apa-apa (tidak berfungsi). Untuk melakukannya, kita perlu membuat beberapa fungsi
yang akan kita lampirkan ke event on_click tombol.

Sekarang setelah kita mendefinisikan fungsinya, mari kita lampirkan ke event on-click dari setiap
tombol
Sekarang ketika Kita mengklik setiap tombol, Anda akan melihat robot bergerak!
2.3 Heartbeat Killswitch
Di sini kami menunjukkan cara menghubungkan 'Heartbeat' untuk menghentikan robot agar tidak
bergerak. Ini adalah cara sederhana untuk mendeteksi apakah koneksi robot masih hidup. Kita dapat
menurunkan penggeser di bawah untuk mengurangi periode dalam detik Heartbeat. Jika komunikasi
bolak-balik antara browser tidak dapat dilakukan dalam dua Heartbeat, atribut 'status' dari Heartbeat
akan disetel mati. Segera setelah koneksi dipulihkan, atribut status akan kembali ke hidup.
1. pengontrol gamepad
Dalam contoh ini kita akan mengontrol Jetbot dari jarak jauh dengan pengontrol gamepad yang
terhubung ke mesin browser web kita. membuuat pengontrol gamepad Hal pertama yang ingin kita
lakukan adalah membuat instance dari widget Controller, yang akan kita gunakan untuk
menggerakkan robot. Widget Controller mengambil parameter index, yang menentukan nomor
pengontrol. Ini berguna jika Kita memiliki beberapa pengontrol yang terpasang, atau beberapa
gamepad muncul sebagai beberapa pengontrol. Untuk menentukan indeks pengontrol yang kita
gunakan,

1. Kunjungi [http://html5gamepad.com](http://html5gamepad.com).

2. Tekan tombol pada gamepad yang Anda gunakan

3. Ingat index dari gamepad yang merespon penekanan tombol

Selanjutnya, kita akan membuat dan menampilkan controller kita menggunakan index.
2. Kamera
Sebelumnya kita akan memanggil kode gamepad untuk menghubungkan dengan controller

a. Membuat dan Menampilkan widget Gambar

Pertama, mari kita tampilkan widget Image yang akan kita gunakan untuk menampilkan umpan
kamera langsung kita. Kita akan mengatur height dan width menjadi hanya 300 piksel sehingga
tidak memakan terlalu banyak ruang.

FYI: Tinggi dan lebar hanya mempengaruhi rendering di sisi browser, bukan resolusi
gambar asli sebelum transportasi jaringan dari robot ke browser.
b. Membuat instance kamera

Nah, saat ini belum ada gambar yang ditampilkan, karena kita belum menetapkan nilainya. Kita
dapat melakukannya dengan membuat kelas Camera dan melampirkan atribut value kamera ke
atribut value dari gambar. Pertama, mari kita buat instance kamera, kita panggil metode instance
yang akan membuat kamera baru jika belum dibuat. Jika dulu sudah ada, cara ini akan
mengembalikan kamera yang ada.

c. Menghubungkan kamera ke Image widget

Kelas kamera kita saat ini hanya menghasilkan nilai dalam format BGR8 (biru, hijau, merah, 8bit),
sedangkan widget gambar kita menerima nilai dalam format JPEG terkompresi. Untuk
menghubungkan kamera ke gambar, kita perlu memasukkan fungsi bgr8_to_jpeg

untuk memudahkan kita akan membagi jupyter lab seperti gambar berikut

dengan kode di atas kita telah berhasil menghubungkan gamepad dengan motor dan kamera
d. Simpan foto dengan tombol gamepad

Sekarang, Kita ingin dapat menyimpan beberapa gambar dari robot. Mari kita buat perintah tombol
B (indeks 1) menyimpan snapshot dari gambar langsung saat ini. Kita akan menyimpan gambar di
direktori foto/, dengan nama yang unik menggunakan paket python uuid menggunakan pengenal
uuid1.

Sebelum menutup notebook ini dan mematikan kernel Python untuk notebook, pastikan menutup
koneksi kamera dengan benar sehingga dapat menggunakan kamera di notebook lain.
1. Pengumpulan Data (Dataset)
Jika kita menjalankan program gerak dasar, kita menikmati betapa mudahnya membuat Jetbot
bergerak! Itu sangat keren! Tapi yang lebih keren lagi, membuat JetBot bergerak sendiri! Ini adalah
tugas yang sangat sulit, yang memiliki banyak pendekatan, tetapi seluruh masalah biasanya dipecah
menjadi sub masalah yang lebih mudah. Dapat dikatakan bahwa salah satu sub masalah yang paling
penting untuk dipecahkan, adalah masalah mencegah robot memasuki situasi berbahaya! kita
menyebutnya penghindaran tabrakan.
Dalam materi kali ini, kita akan mencoba memecahkan masalah menggunakan pembelajaran
mendalam atau yang biasa disebut Deep Learning dan satu sensor yang sangat serbaguna: kamera.
kita akan melihat bagaimana dengan jaringan saraf (Neural Network), kamera, dan NVIDIA Jetson
Nano, kami dapat mengajari robot perilaku yang sangat berguna! Pendekatan yang kita ambil untuk
menghindari tabrakan adalah dengan membuat safety bubble virtual di sekitar robot. Dalam
pengaman ini, robot dapat berputar dalam lingkaran tanpa menabrak benda apa pun (atau situasi
berbahaya lainnya seperti jatuh dari jalur). Tentu saja, robot dibatasi oleh apa yang ada di bidang
penglihatannya, dan kita tidak dapat mencegah objek ditempatkan di belakang robot, dll.
Tetapi kita dapat mencegah robot memasuki skenario yang kita buat. Cara yang akan kita lakukan
ini sangat sederhana: Pertama, kita akan menempatkan robot secara manual dalam skenario yang
akan kita buat di mana safety bubble dilanggar, dan memberi label skenario ini blocked. kita akan
menyimpan cuplikan (gambar) dari apa yang dilihat robot bersama dengan label ini. Kedua, kita
akan menempatkan robot secara manual dalam skenario yang aman untuk bergerak maju sedikit,
dan memberi label skenario ini free. Demikian juga, kami menyimpan snapshot bersama dengan
label ini. Itu saja yang akan kita lakukan dalam materi kali ini; pengumpulan data. Setelah kita
memiliki banyak gambar dan label, kami akan mengunggah data ini ke mesin berkemampuan GPU
tempat kami akan melatih jaringan saraf untuk memprediksi.
CATATAN PENTING: Saat JetBot berputar di tempatnya, ia sebenarnya berputar di sekitar
pusat di antara kedua roda, bukan di tengah sasis robot itu sendiri. Ini adalah detail penting
yang perlu diingat ketika kita mencoba memperkirakan apakah safety bubble robot dilanggar
atau tidak. Tapi jangan khawatir, tidak harus tepat. Jika ragu, lebih baik bersandar pada sisi
yang berhati-hati. Kita ingin memastikan JetBot tidak memasuki skenario yang tidak dapat
dihindari dengan memutar di tempatnya.
a. Menampilkan kamera secara langsung
Jadi mari kita mulai. Pertama, mari kita inisialisasi dan menampilkan kamera kita seperti yang kita
lakukan pada materi teleoperasi. Jaringan saraf kita mengambil gambar 224x224 piksel sebagai
masukan. kita akan mengatur kamera ke ukuran itu untuk meminimalkan ukuran file dari kumpulan
data. Dalam beberapa skenario, mungkin lebih baik untuk mengumpulkan data dalam ukuran
gambar yang lebih besar dan menurunkan skala ke ukuran yang diinginkan nanti.

Luar biasa, selanjutnya mari kita buat beberapa direktori tempat kita akan menyimpan semua data
kita. kita akan membuat folder dataset yang akan berisi dua sub-folder free dan blocked, di mana
kita akan menempatkan gambar untuk setiap skenario.

Jika kira me-refresh browser file Jupyter di sebelah kiri, Anda sekarang akan melihat direktori
tersebut muncul. Selanjutnya, mari kita buat dan tampilkan beberapa tombol yang akan kita
gunakan untuk menyimpan snapshot untuk setiap label kelas. Kita juga akan menambahkan
beberapa kotak teks yang akan menampilkan berapa banyak gambar dari setiap kategori yang telah
kami kumpulkan sejauh ini. Ini berguna karena kami ingin membuat tentu saja kita mengumpulkan
gambar free sebanyak gambar bloked. Ini juga membantu untuk mengetahui berapa banyak gambar
yang telah kami kumpulkan secara keseluruhan.

Saat ini, tombol-tombol ini tidak akan melakukan apa-apa. Kita harus melampirkan fungsi untuk
menyimpan gambar untuk setiap kategori ke fungsi on_click tombol. lalu kita akan menyimpan
nilainya widget Image, sudah dalam format JPEG terkompresi! Untuk memastikan kita tidak
mengulangi nama file yang sama (bahkan di mesin yang berbeda!), kami akan menggunakan paket
uuid dalam python, yang mendefinisikan metode uuid1 untuk menghasilkan pengenal unik.
Pengidentifikasi unik ini dihasilkan dari informasi seperti waktu saat ini dan alamat mesin.

Sekarang tombol di atas akan menyimpan gambar ke direktori free dan blocked. Kita dapat
menggunakan browser file Jupyter Lab untuk melihat file-file ini! Sekarang lanjutkan dan
kumpulkan beberapa data
1. Tempatkan robot dalam skenario di mana robot diblokir dan tekan tambahkan yang di
bloked
2. Tempatkan robot dalam skenario gratis dan tekan menambahkan free
3. Ulangi 1, 2
PENGINGAT: Kita dapat memindahkan widget ke jendela baru dengan mengklik kanan sel
dan mengklik Buat Tampilan Baru untuk Output. Atau, Kita bisa menampilkannya kembali
bersama-sama seperti yang akan kita lakukan di bawah ini
Berikut adalah beberapa tip untuk mengambil data
1. Coba orientasi yang berbeda
2. Coba pencahayaan yang berbeda
3. Cobalah berbagai jenis objek/tabrakan; dinding, tepian, benda
4. Coba lantai / benda bertekstur yang berbeda; bermotif, halus, kaca, dll.
Pada akhirnya, semakin banyak data yang kita miliki tentang skenario yang akan dihadapi robot di
dunia nyata, semakin baik perilaku menghindari tabrakan kita. Ini penting untuk mendapatkan
bervariasi data (seperti yang dijelaskan oleh tip di atas) dan bukan hanya banyak data, tetapi Anda
mungkin memerlukan setidaknya 100 gambar dari setiap kelas Tapi jangan khawatir, itu berjalan
cukup cepat begitu kita mulai
2. Train Model (ResNet18)
Kali ini kita akan melakukan training data foto yang telah kita ambil sebelumna.dengan kita akan
melatih pengklasifikasi gambar untuk mendeteksi dua kelas free dan bloked, yang akan kita
gunakan untuk menghindari tabrakan. Untuk ini, kita akan menggunakan lirary deep learning yang
populer yaitu PyTorch

a. Membuat contoh kumpulan data


Sekarang kita menggunakan kelas dataset ImageFolder yang tersedia dengan paket
torchvision.datasets. kita melampirkan transformasi dari paket torchvision.transforms untuk
menyiapkan data untuk pelatihan.

b. Pisahkan dataset menjadi set train dan test


Selanjutnya, Kita akan membagi dataset menjadi set training dan test. Set tes akan digunakan untuk
memverifikasi keakuratan model yang kita train.

Membuat Data Loaders untuk memuat data dalam batch


Kita akan membuat dua instance DataLoader, yang menyediakan utilitas untuk mengacak data,
menghasilkan batch gambar, dan memuat sampel secara paralel.
c. Menentukan jaringan saraf (Neural Network)
Sekarang, kita mendefinisikan jaringan saraf yang akan kita latih. Paket torchvision menyediakan
kumpulan model pre-trained yang dapat kita gunakan. Dalam proses ini disebut transfer learning,
kita dapat menggunakan kembali model yang telah dilatih sebelumnya (dilatih pada jutaan gambar)
untuk tugas baru yang mungkin memiliki lebih sedikit data yang tersedia. Fitur penting yang
dipelajari dalam pelatihan asli model pre-trained dapat digunakan kembali untuk tugas baru. Kita
akan menggunakan model resnet18.

Model resnet18 awalnya dilatih untuk kumpulan data yang memiliki 1000 label kelas, tetapi
kumpulan data kita hanya memiliki dua label kelas! Kita akan mengganti lapisan terakhir dengan
lapisan baru yang tidak terlatih yang hanya memiliki dua keluaran.

Selanjutnya, Kita mentransfer model untuk dieksekusi di GPU

d. Melatih jaringan saraf (Training Neural Network)


Dengan menggunakan kode di bawah ini, kita akan melatih jaringan saraf selama 30 epoch,
menyimpan model dengan performa terbaik setelah setiap epoch. Epoch akan menjalankan penuh
data kami.
2. Live Demo
Dalam notebook ini kita akan menggunakan model yang kita latih untuk mendeteksi apakah robot
free atau bloked untuk mengaktifkan perilaku menghindari tabrakan pada robot.

a. Memuat model yang telah terlatih


Kita akan berasumsi bahwa telah mengunduh best_model.pth ke workstation. Sekarang, Kita harus
mengunggah model ini ke direktori buku catatan ini dengan menggunakan alat pengunggahan
Jupyter Lab. Setelah selesai, seharusnya ada file bernama best_model.pth di direktori notebook ini.
Pastikan file sudah terupload lengkap sebelum memanggil sel berikutnya Jalankan kode di bawah
ini untuk menginisialisasi model PyTorch. Ini akan terlihat sangat familiar dari buku catatan
pelatihan.

Selanjutnya, muat trained weights dari file best_model_resnet18.pth yang Anda unggah

Saat ini, model weights yang terletak di memori CPU. Kita akan mengeksekusi kode di bawah ini
untuk ditransfer ke perangkat GPU.

b. Membuat fungsi pra-pemrosesan


Kita sekarang telah memuat model, tetapi ada sedikit masalah. Format yang kita latih model kami
tidak persis cocok dengan format kamera. Untuk melakukan itu, kita perlu melakukan beberapa
preprocessing. Ini melibatkan langkah-langkah berikut:
1. Konversi dari tata letak HWC ke tata letak CHW
2. Normalisasi menggunakan parameter yang sama seperti yang kami lakukan selama pelatihan
(kamera kami memberikan nilai dalam rentang [0, 255] dan gambar yang dimuat pelatihan
dalam rentang [0, 1] sehingga kami perlu menskalakan 255,0
3. Transfer data dari memori CPU ke memori GPU
4. Tambahkan dimensi batch
Kita sekarang telah mendefinisikan fungsi pra-pemrosesan yang dapat mengonversi gambar dari
format kamera ke format input jaringan saraf. Sekarang, mari kita mulai dan menampilkan kamera
kita. Kita juga akan membuat penggeser yang akan menampilkan probabilitas bahwa robot diblokir.
Kita juga akan menampilkan penggeser yang memungkinkan Kita mengontrol kecepatan dasar
robot.

Kita juga akan membuat instance robot yang diperlukan untuk menggerakkan motor.

Selanjutnya, kita akan membuat fungsi yang akan dipanggil setiap kali nilai kamera berubah.
Fungsi ini akan melakukan langkah-langkah berikut:
1. Pre-trained gambar kamera
2. Jalankan jaringan saraf
3. Sementara output jaringan saraf menunjukkan bahwa apakah kita berhenti, kita akan belok
kiri, jika tidak kita maju.
Keren! Kita telah membuat fungsi eksekusi jaringan saraf (Neural Network), tetapi sekarang Kita
perlu melampirkannya ke kamera untuk diproses. dengan melakukannya fungsi observe.
PERINGATAN: Kode ini dapat memindahkan robot!! Sesuaikan penggeser kecepatan yang
telah kita tentukan sebelumnya untuk mengontrol kecepatan robot dasar. bergerak cepat, jadi
mulailah dengan lambat, dan tingkatkan nilainya secara bertahap.

Luar biasa! Jika Kita ingin menghentikan perilaku ini, Kita dapat melepaskan panggilan balik
(callback) dengan menjalankan kode di bawah ini.

Mungkin Kita ingin robot berjalan tanpa streaming video ke browser. kita dapat memutuskan tautan
kamera seperti di bawah ini.

Sekali lagi, mari kita tutup koneksi kamera dengan benar agar kamera dapat digunakan di notebook
lain.

Anda mungkin juga menyukai