Isi kandungan:
- Langkah 1: Komponen yang Diperlukan
- Langkah 2: Menyusun Robot
- Langkah 3: Buat Maze Sendiri - Pilihan
- Langkah 4: Menyiapkan Alam Sekitar
- Langkah 5: Memprogram GiggleBot - Bahagian I
- Langkah 6: Memprogram Jauh - Bahagian II
- Langkah 7: Mentafsirkan Skrin Jauh
Video: Buat Robot Berpandu Lidar Dengan GiggleBot: 8 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Dalam tutorial ini, kami membuat GiggleBot mengatasi kesukaran labirin.
Kami memasang servo di GiggleBot yang kami pasangkan sensor jarak. Semasa berjalan, servo akan berputar bolak-balik sehingga sensor jarak dapat mengukur jarak hingga setiap rintangan. Ini berfungsi seperti sensor LIDAR yang biasanya jauh lebih mahal.
Pada masa yang sama, GiggleBot mengirimkan data ini ke mikro BBC terpencil: bit yang memaparkan ke matriks LED 5-by-5 yang kedudukannya relatif terhadap rintangan.
Tugas anda adalah untuk menavigasi GiggleBot hanya dengan melihat apa yang ditunjukkan pada mikro BBC lain: bit. Untuk mengawal GiggleBot, butang pada mikro BBC bit terpencil digunakan.
Kedengarannya menyeronokkan! Mari kita turun ke sana, kan?
Langkah 1: Komponen yang Diperlukan
Kami akan memerlukan:
- GiggleBot.
- Pek bateri untuk mikro BBC: bit. Ia disertakan dengan mikro BBC: bit dalam pakejnya.
- x3 bateri AA untuk GiggleBot.
- Kabel Grove untuk menyambungkan sensor jarak ke GiggleBot.
- Kit Servo dari DexterIndustries.
- x3 Mikro BBC: bit. Satu untuk GiggleBot dan satu lagi digunakan untuk mengawal robot dari jauh.
- Sensor Jarak dari DexterIndustries.
Dapatkan robot GiggleBot untuk mikro BBC: bit di sini!
Langkah 2: Menyusun Robot
Untuk membuat GiggleBot siap diprogramkan, kita perlu memasangnya, walaupun tidak banyak yang perlu dilakukan.
Masukkan 3 bateri AA di petaknya di bahagian bawah GiggleBot.
Pasangkan pakej servo. Pada lengan servo yang berputar, gunakan lubang terakhirnya untuk memasang servo ke penyambung depan GiggleBot. Anda boleh menggunakan skru dan / atau beberapa wayar untuk menjadikannya lebih stabil di tempatnya. Atau anda boleh merekatkannya ke papan. Dalam kes saya, saya menggunakan skru dan wayar pendek untuk mengikat lengan servo ke papan GiggleBot.
Semasa memasang lengan servo ke servo, pastikan servo sudah diatur ke posisi 80. Anda boleh melakukannya dengan memanggil gigglebot.set_servo (gigglebot. RIGHT, 80). Anda boleh membaca lebih lanjut mengenai perkara itu di sini.
Seterusnya, letakkan sensor jarak di bahagian depan pakej servo dan perbaiki seperti pada contoh di atas.
Akhirnya, sambungkan sensor jarak dengan kabel Grove ke mana-mana 2 port I2C dan motor servo ke port kanan yang duduk di GiggleBot - port kanan disebutkan di atasnya.
Langkah 3: Buat Maze Sendiri - Pilihan
Dalam kes ini, saya telah menggunakan sekumpulan kotak untuk membuat trek gelung tertutup, serupa dengan yang NASCAR.
Pada langkah ini, anda boleh menjadi sangat kreatif dan membuatnya sesat yang anda mahukan atau membuatnya terlalu lama kerana itu benar-benar terpulang kepada anda.
Atau jika anda sama sekali tidak menginginkan trek, anda boleh meletakkan GiggleBot di dapur atau ruang tamu misalnya - itu semestinya cukup baik kerana terdapat banyak dinding dan halangan yang masih perlu anda elakkan.
Langkah 4: 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 5: Memprogram GiggleBot - Bahagian I
Pertama, mari kita siapkan skrip GiggleBot. Skrip ini akan menjadikan GiggleBot memutar motor servo 160 darjah (80 darjah pada setiap arah) dan pada masa yang sama mengambil 10 bacaan dari sensor jarak per putaran.
Apabila dihidupkan, GiggleBot akan berdiri sehingga ia menerima arahan dari alat kawalan jauh. Hanya ada 3 perintah: bergerak ke depan, ke kiri atau ke kanan.
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 berasaskan LIDAR yang Dikawal Jauh
dari import gigglebot * |
dari jarak_sensor import DistanceSensor |
dari tidur import mikrob |
dari utime import ticks_us, sleep_us |
import ustruct |
mengimport radio |
# hentikan robot jika sudah bergerak |
berhenti () |
# aktifkan radio |
radio.on () |
# objek sensor jarak |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7 # diukur dalam beberapa saat |
rotate_span = 160 # diukur dalam darjah |
rotate_steps = 10 |
overhead_compensation = 1.05 # ditakrifkan dalam peratusan |
time_per_step = 10 ** 6 * rotate_time / (rotate_steps * overhead_compensation) |
last_read_time = 0 |
radar = bytearray (putar_ langkah) |
servo_rotate_direction = 0 # 0 untuk naik ke atas (0-> 160) dan 1 sebaliknya |
radar_index = 0 |
set_servo (KANAN, 0) |
sementara benar: |
# baca dari radar |
jika ticks_us () - last_read_time> time_per_step: |
# baca dari sensor jarak |
radar [radar_index] = int (ds.read_range_continuous () / 10) |
last_read_time = ticks_us () |
cetak (radar_index) |
# lakukan logik untuk memutar servo dari kiri ke kanan |
jika radar_index == rotate_steps -1 dan servo_rotate_direction == 0: |
set_servo (KANAN, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0dan servo_rotate_direction == 1: |
set_servo (KANAN, putar_span) |
servo_rotate_direction = 0 |
lain: |
radar_index + = 1if servo_rotate_direction == 0else-1 |
# dan hantarkan nilai radar |
radio.send_bytes (radar) |
cuba: |
# baca arahan robot |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# dan aktifkan motor sekiranya ada arahan yang diterima |
set_speed (lmotor, rmotor) |
memandu () |
kecuali TypeError: |
lulus |
lihat rawgigglebot_lidar_robot.py dihoskan dengan ❤ oleh GitHub
Langkah 6: Memprogram Jauh - Bahagian II
Yang perlu dilakukan ialah memprogram mikro BBC ke-2: bit yang berfungsi sebagai alat kawalan jauh.
Alat kawalan jauh digunakan untuk memaparkan pada layar buatan 5-dengan-5 piksel jarak relatif ke rintangan. Paling banyak, 10 piksel akan dihidupkan.
Pada masa yang sama, alat kawalan jauh memberi anda kemampuan untuk mengendalikan GiggleBot dengan menekan 2 butang: bergerak ke depan, ke kiri dan ke kanan.
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 berasaskan LIDAR - Kawalan Jauh - Kod Jauh
dari tidur impor mikrob, paparan, butang_a, butang_b |
import ustruct |
mengimport radio |
import matematik |
radio.on () |
rotate_steps = 10 |
rotate_span = 160 # dalam darjah |
rotate_step = rotate_span / rotate_steps |
max_distance = 50 # dalam sentimeter |
side_length_leds = 3 # diukur dalam # piksel |
radar = bytearray (rotate_steps) |
xar = bytearray (putar_ langkah) |
yar = bytearray (putar_ langkah) |
save_xar = bytearray (putar_ langkah) |
save_yar = bytearray (putar_ langkah) |
kelajuan motor = 50 |
sementara benar: |
status = radio.receive_bytes_into (radar) |
jika status tidak ada: |
# paparan. jelas () |
untuk c, val inenumerate (radar): |
jika radar [c] <= jarak_maksimum: |
# hitungkan koordinat 2d setiap jarak |
angle = rotate_steps / (rotate_steps -1) * rotate_step * c |
sudut + = (180- putar_span) /2.0 |
x_c = math.cos (sudut * math.pi /180.0) * radar [c] |
y_c = math.sin (sudut * math.pi /180.0) * radar [c] |
# skala jarak agar sesuai pada paparan mikrob 5x5 |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# koordinat reposisi |
x_c + = (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# koordinat bulat tepat di mana LED dijumpai |
jika x_c - math.floor (x_c) <0.5: |
x_c = math.floor (x_c) |
lain: |
x_c = math.ceil (x_c) |
jika y_c - math.floor (y_c) <0.5: |
y_c = math.floor (y_c) |
lain: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
lain: |
xar [c] = 0 |
yar [c] = 0 |
paparan. jelas () |
untuk x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# cetak (senarai (zip (xar, yar, radar))) |
stateA = button_a.is_pressed () |
stateB = button_b.is_pressed () |
jika stateA dan stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
cetak ('maju') |
jika menyatakanA dan bukan negeriB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
cetak ('kiri') |
ifnot stateA dan stateB: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
cetak ('kanan') |
ifnot stateA and not stateB: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
cetak ('berhenti') |
lihat rawgigglebot_lidar_remote.py dihoskan dengan ❤ oleh GitHub
Langkah 7: Mentafsirkan Skrin Jauh
"loading =" lazy "mengawal GiggleBot, anda mempunyai pilihan berikut:
- Tekan butang A dan butang B untuk menggerakkan GiggleBot ke hadapan.
- Tekan butang A untuk memutar GiggleBot ke kiri.
- Tekan butang B untuk memutar GiggleBot ke kanan.
Untuk melihat ke arah mana rintangan terdekat dapat dikesan, lihat pada skrin remote (mikro BBC jarak jauh: yang anda pegang). Anda seharusnya dapat mengawal GiggleBot dari jauh tanpa melihatnya.
Disyorkan:
Buat Osiloskop Sendiri (Mini DSO) Dengan STC MCU Dengan Mudah: 9 Langkah (dengan Gambar)
Buat Osiloskop Sendiri (Mini DSO) Dengan STC MCU Dengan Mudah: Ini adalah osiloskop sederhana yang dibuat dengan STC MCU. Anda boleh menggunakan DSO Mini ini untuk melihat bentuk gelombang. Selang Masa: Julat Voltan 100us-500ms: Mod Draw 0-30V: Vektor atau Titik
Radar pegun (LIDAR) Arrayino dengan Arduino: 10 Langkah (dengan Gambar)
Stasioner Radar (LIDAR) Arrayino Dengan Arduino: Semasa saya membina robot biped, saya selalu berfikir untuk mempunyai semacam alat yang hebat yang dapat mengesan lawan saya dan melakukan gerakan serangan dengannya. Terdapat banyak projek radar / lidar di sini. Namun, ada beberapa batasan untuk tujuan saya
Mari Buat Robot Berjalan Dengan Tin Coca-Cola di Rumah: 6 Langkah (dengan Gambar)
Mari Buat Robot Berjalan Dengan Tin Coca-Cola di Rumah: Halo semua, saya Merve! Kami akan membuat robot berjalan dengan timah Coca-cola minggu ini. * _ * Mari kita mulakan! ** SILA VOTE PROJEK INI DALAM PERTANDINGAN STICK IT
Buat PCB Hobi Dengan Alat CAD Profesional dengan Mengubah " Peraturan Reka Bentuk ": 15 Langkah (dengan Gambar)
Buat PCB Hobi Dengan Alat CAD Profesional dengan Mengubah " Peraturan Reka Bentuk ": Senang ada beberapa alat papan litar profesional yang tersedia untuk para penggemar. Berikut adalah beberapa petua untuk menggunakannya papan reka bentuk ito yang tidak memerlukan perancang profesional untuk membuatnya
Bina Robot Sangat Kecil: Buat Robot Beroda Terkecil di Dunia Dengan Pencengkeram .: 9 Langkah (dengan Gambar)
Bina Robot Sangat Kecil: Buat Robot Beroda Terkecil di Dunia Dengan Pencengkeram .: Bina robot berukuran 1/20 kubik dengan pencengkam yang dapat mengambil dan menggerakkan objek kecil. Ia dikendalikan oleh mikrokontroler Picaxe. Pada masa ini, saya percaya ini mungkin robot beroda terkecil di dunia dengan gripper. Yang pasti