Isi kandungan:
- Langkah 1: Komponen yang Diperlukan
- Langkah 2: Siapkan Trek
- Langkah 3: Menyiapkan Alam Sekitar
- Langkah 4: Memprogram GiggleBot
- Langkah 5: Membiarkannya Berjalan
Video: Pengikut Garis GiggleBot Menggunakan Python: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Kali ini, kami memprogram di MicroPython the Dexter Industries GiggleBot untuk mengikuti garis hitam menggunakan sensor pengikut baris terbina dalam.
GiggleBot harus dipasangkan dengan mikro BBC: bit agar dapat dikendalikan dengan tepat.
Sekiranya tutorial ini terlalu maju untuk anda dan pengaturcaraan GiggleBot terlalu banyak buat masa ini, anda selalu dapat melalui tutorial pemula yang menunjukkan kepada anda bagaimana robot dapat diprogramkan di MakeCode di sini. Tutorial yang dipautkan akan memandu anda melalui asas-asasnya.
Langkah 1: Komponen yang Diperlukan
Komponen perkakasan berikut diperlukan:
- Bateri x3 AA - dalam kes saya, saya menggunakan bateri yang boleh dicas semula yang mempunyai voltan lebih rendah secara keseluruhan.
- Robot Dexter Industries GiggleBot untuk mikro: bit.
- Mikro BBC: bit.
Sudah tentu, anda juga memerlukan kabel USB mikro untuk memprogram mikro BBC: bit - kabel ini biasanya terdapat dalam paket BBC mikro: bit atau anda selalu boleh menggunakan kabel yang digunakan untuk mengecas telefon pintar (Android).
Dapatkan GiggleBot untuk mikro: bit di sini
Langkah 2: Siapkan Trek
Anda perlu melalui mencetak beberapa jubin dan merancang trek anda sendiri. Anda boleh menggunakan jubin kami sendiri sehingga anda yakin 100% anda meniru syarat kami. Atau jika anda merasa suka berpetualang, anda boleh menggunakan pita hitam dan membuatnya sendiri. Inilah PDF untuk jubin yang telah kami gunakan.
Trek di atas terdiri daripada bilangan jubin yang berbeza berikut:
- 12 jubin jenis # 1.
- 5 jubin jenis # 2.
- 3 templat jenis jubin # 5.
- 3 templat jenis jubin # 6 - di sini, anda akan mendapat satu jubin tambahan.
Seterusnya, cetak dan potong. Cuba letakkan seperti di foto di atas dan ingat bahawa di bahagian kanan atas trek, 2 jubin harus bertindih satu sama lain - ini dijangkakan sekiranya anda tertanya-tanya jika anda melakukan sesuatu yang salah.
Langkah 3: Menyiapkan Alam Sekitar
Agar anda dapat memprogram mikro BBC: bit di MicroPython, anda harus menyediakan editor untuknya (Penyunting Mu) dan menetapkan GiggleBot MicroPython Runtime sebagai waktu operasinya. Untuk itu, anda mesti mengikuti arahan di halaman ini. Pada masa ini, versi v0.4.0 runtime digunakan.
Langkah 4: Memprogram GiggleBot
Sebelum melihatnya, runtime GiggleBot MicroPython mengandungi runtime klasik untuk BBC: bit dan perpustakaan lain untuk menyokong GiggleBot dan Sensor Industri Dexter lain.
Setelah menyiapkannya, buka skrip berikut di editor Mu dan klik pada Flash. Ini akan memancarkan GiggleBot MicroPython Runtime dan skrip yang baru anda buka ke mikro BBC anda: bit. Skrip juga ditunjukkan di bawah.
Setelah proses flashing selesai, tumpukan mikro BBC: masukkan GiggleBot dengan neopixel papan menghadap ke depan, letakkan di trek dan hidupkan.
Perhatikan bahawa dalam skrip, PID dan 2 pemalar lain (speed setpoint dan minimum speed constants) sudah ditetapkan.
Catatan: Skrip berikut mungkin tidak mempunyai ruang kosong dan ini mungkin disebabkan oleh beberapa masalah dalam menampilkan GitHub Gists. Klik pada inti untuk membawa anda ke halaman GitHubnya di mana anda boleh menyalin-menampal kodnya.
GiggleBot PID Line Follower - Ditala dengan NeoPixels
dari import mikrob * |
dari import gigglebot * |
dari utime import sleep_ms, ticks_us |
import ustruct |
# mulakan neopixel GB |
neo = init () |
# masa |
kemas kini_kadar = 50 |
# keuntungan / pemalar (dengan anggapan voltan bateri sekitar 4.0 volt) |
Kp = 25.0 |
Ki = 0.5 |
Kd = 35.0 |
trigger_point = 0.3 |
min_speed_percent = 0.3 |
asas_kelajuan = 70 |
setpoint = 0.5 |
last_position = setpoint |
kamiran = 0.0 |
run_neopixels = Betul |
center_pixel = 5 # di mana piksel tengah senyuman terletak pada GB |
# turquoise = tuple (peta (lambda x: int (x / 5), (64, 224, 208))) # warna untuk digunakan untuk menarik ralat dengan neopixel |
# turquoise = (12, 44, 41) # yang betul-betul turquoise di atas memberikan komen di atas ini |
error_width_per_pixel = 0.5 / 3 # ralat maksimum dibahagi dengan bilangan segmen antara setiap neopixel |
defupper_bound_linear_speed_reducer (abs_error, trigger_point, upper_bound, terkecil_motor_power, tertinggi_motor_power): |
asas_kelajuan global |
jika abs_error> = trigger_point: |
# x0 = 0.0 |
# y0 = 0.0 |
# x1 = atas_batas - titik pemicu |
# y1 = 1.0 |
# x = abs_error - trigger_point |
# y = y0 + (x - x0) * (y1 - y0) / (x1 - x0) |
# sama seperti |
y = (abs_error - trigger_point) / (upper_bound - trigger_point) |
motor_power = base_speed * (terkecil_motor_power + (1- y) * (tertinggi_motor_power - terkecil_motor_power)) |
mengembalikan motor_power |
lain: |
return base_speed * tertinggi_motor_power |
lari = Salah |
sebelumnya_kesalahan = 0 |
sementara benar: |
# jika butang a ditekan maka mulailah mengikuti |
jika button_a.is_pressed (): |
lari = Betul |
# tetapi jika butang b ditekan hentikan pengikut garis |
jika button_b.is_pressed (): |
lari = Salah |
kamiran = 0.0 |
error_ sebelumnya = 0.0 |
piksel_off () |
berhenti () |
tidur_ms (500) |
jika dijalankan isTrue: |
# baca sensor baris |
start_time = ticks_us () |
kanan, kiri = read_sensor (LINE_SENSOR, KEDUA) |
# garisan berada di sebelah kiri ketika kedudukan <0.5 |
# garis berada di sebelah kanan ketika kedudukan> 0.5 |
# garisan berada di tengah ketika kedudukan = 0.5 |
# itu adalah aritmetik berwajaran |
cuba: |
kedudukan = kanan / terapung (kiri + kanan) |
kecuali ZeroDivisionError: |
kedudukan = 0.5 |
# julat mestilah (0, 1) dan bukan [0, 1] |
jika kedudukan == 0: kedudukan = 0.001 |
jika kedudukan == 1: kedudukan = 0.999 |
# gunakan alat kawalan PD |
ralat = kedudukan - setpoint |
kamiran + = ralat |
pembetulan = Kp * ralat + Ki * integral + Kd * (ralat - ralat sebelumnya) |
kesalahan_ sebelumnya = ralat |
# hitung kelajuan motor |
motor_speed = upper_bound_linear_speed_reducer (abs (ralat), setpoint * trigger_point, setpoint, min_speed_percent, 1.0) |
leftMotorSpeed = kelajuan motor + pembetulan |
rightMotorSpeed = motor_speed - pembetulan |
# menerangi neopixel mengikut kesalahan yang diberikan |
jika run_neopixels isTrueand total_counts% 3 == 0: |
untuk i in '\ x00 / x01 / x02 / x03 / x04 / x05 / x06 / x07 / x08': |
neo = (0, 0, 0) |
untuk i inb '\ x00 / x01 / x02 / x03': |
ifabs (error)> error_width_per_pixel * i: |
jika ralat <0: |
# neo [center_pixel + i] = pirus |
neo [center_pixel + i] = (12, 44, 41) |
lain: |
# neo [center_pixel - i] = pirus |
neo [center_pixel + i] = (12, 44, 41) |
lain: |
peratus = 1- (error_width_per_pixel * i -abs (ralat)) / error_width_per_pixel |
# nyalakan piksel semasa |
jika ralat <0: |
# neo [center_pixel + i] = tuple (peta (lambda x: int (x * peratusan), pirus)) |
neo [center_pixel + i] = (int (64 * peratus / 5), int (224 * peratus / 5), int (208 * peratus / 5)) |
lain: |
# neo [center_pixel - i] = tuple (peta (lambda x: int (x * peratusan), pirus)) |
neo [center_pixel - i] = (int (64 * peratus / 5), int (224 * peratus / 5), int (208 * peratus / 5)) |
rehat |
neo.show () |
cuba: |
# klip kelajuan motor |
jika dibiarkanMotorSpeed> 100: |
leftMotorSpeed = 100 |
rightMotorSpeed = rightMotorSpeed - leftMotorSpeed +100 |
jika betulMotorSpeed> 100: |
betulMotorSpeed = 100 |
leftMotorSpeed = leftMotorSpeed - kananMotorSpeed +100 |
jika dibiarkanMotorSpeed <-100: |
leftMotorSpeed = -100 |
jika betulMotorSpeed <-100: |
betulMotorSpeed = -100 |
# aktifkan motor |
set_speed (leftMotorSpeed, rightMotorSpeed) |
memandu () |
# cetak ((ralat, kelajuan motor)) |
kecuali: |
# sekiranya kita menghadapi masalah yang tidak dapat diperbaiki |
lulus |
# dan mengekalkan frekuensi gelung |
end_time = ticks_us () |
delay_diff = (end_time - start_time) / 1000 |
if1000.0 / update_rate - delay_diff> 0: |
tidur (1000.0 / update_rate - delay_diff) |
lihat rawgigglebot_tuned_line_follower.py dihoskan dengan ❤ oleh GitHub
Langkah 5: Membiarkannya Berjalan
Terdapat 2 butang pada mikro BBC: bit: butang A dan butang B:
- Menekan butang A menetapkan GiggleBot mengikuti garis (jika ada).
- Menekan butang B menghentikan GiggleBot dan menetapkan semula semuanya sehingga anda dapat menggunakannya semula.
Sangat disarankan untuk tidak mengangkat GiggleBot semasa mengikuti garis dan kemudian meletakkannya semula kerana kesalahan yang dikira dapat terkumpul dan benar-benar merosakkan laluan robot. Sekiranya anda ingin mengangkatnya, tekan butang B dan kemudian apabila anda meletakkannya kembali tekan A sekali lagi.
Disyorkan:
Robot Pengikut Line Menggunakan Arduino Uno dan L298N: 5 Langkah
Line Follower Robot Menggunakan Arduino Uno dan L298N: Line Flower adalah robot yang sangat mudah dan sesuai untuk elektronik pemula
Cara Membuat Robot Pengikut Line Tanpa Menggunakan Arduino (Mikrokontroler): 5 Langkah
Cara Membuat Robot Pengikut Talian Tanpa Menggunakan Arduino (Mikrokontroler): Dalam arahan ini, saya akan mengajar anda bagaimana membuat garis berikut robot tanpa menggunakan Arduino. Saya akan menggunakan langkah-langkah yang sangat mudah untuk dijelaskan. Robot ini akan menggunakan IR Proximity Sensor untuk ikuti talian. Anda tidak memerlukan pengalaman pengaturcaraan apa pun untuk
Pengikut Talian Mudah Menggunakan Arduino: 5 Langkah
Simple Line Follower Menggunakan Arduino: Arduino Line Follower RobotDalam tutorial ini, kita akan membincangkan cara kerja garis Arduino berikut robot yang akan mengikuti garis hitam di latar belakang putih dan mengambil giliran yang betul setiap kali ia mencapai lengkung di jalannya. Arduino Line Follower Co
Menala Pengikut Garis GiggleBot - Lanjutan: 7 Langkah
Menala Pengikut Garis GiggleBot - Lanjutan: Dalam Instruksional yang sangat pendek ini, anda akan menyesuaikan GiggleBot anda sendiri untuk mengikuti garis hitam. Dalam tutorial lain GiggleBot Line Follower ini, kami mengekodkan nilai-nilai penalaan untuk berfungsi sesuai dengan senario itu. Anda mungkin mahu menjadikannya bersikap
Cara Membuat Garis Mengikuti Robot Menggunakan Langkah-langkah Rpi 3: 8
Cara Membuat Robot Mengikuti Garis Menggunakan Rpi 3: Dalam tutorial ini, Anda akan belajar membuat robot robot berikut sehingga dapat mengelilingi trek dengan mudah