Pergerakan licin di sepanjang garis hitam ev3. Lego EV3. Pergerakan sepanjang garis hitam. Penderia warna - mod "Kecerahan cahaya persekitaran".

Dalaman

Untuk membuat robot bergerak dengan lancar di sepanjang garis hitam, anda perlu memaksanya untuk mengira kelajuan pergerakan itu sendiri.

Seseorang melihat garis hitam dan sempadannya yang jelas. Sensor cahaya berfungsi sedikit berbeza.

Sifat penderia cahaya ini - ketidakupayaan untuk membezakan dengan jelas antara putih dan hitam - yang akan kami gunakan untuk mengira kelajuan pergerakan.

Mula-mula, mari kita perkenalkan konsep "Titik trajektori yang ideal."

Bacaan sensor cahaya berkisar antara 20 hingga 80, selalunya pada warna putih bacaannya adalah lebih kurang 65, pada hitam kira-kira 40.

Titik yang ideal ialah titik konvensional kira-kira di tengah-tengah warna putih dan hitam, yang mana robot akan bergerak di sepanjang garis hitam.

Di sini lokasi titik adalah asas - antara putih dan hitam. Ia tidak mungkin untuk menetapkannya tepat pada putih atau hitam atas sebab matematik; mengapa akan menjadi jelas kemudian.

Secara empirik, kami telah mengira bahawa titik ideal boleh dikira menggunakan formula berikut:

Robot mesti bergerak dengan ketat di sepanjang titik ideal. Jika terdapat penyelewengan dalam mana-mana arah, robot mesti kembali ke titik itu.

Jom mengarang huraian matematik masalah.

Data awal.

Titik ideal.

Bacaan sensor cahaya semasa.

Hasilnya.

Kuasa putaran motor V.

Kuasa putaran motor C.

Penyelesaian.

Mari kita pertimbangkan dua situasi. Pertama: robot melencong dari garis hitam ke arah garis putih.

Dalam kes ini, robot mesti meningkatkan kuasa putaran motor B dan mengurangkan kuasa motor C.

Dalam keadaan di mana robot memasuki garis hitam, sebaliknya adalah benar.

Lebih banyak robot menyimpang dari titik ideal, lebih cepat ia perlu kembali kepadanya.

Tetapi mewujudkan pengawal selia sedemikian adalah tugas yang agak sukar, dan ia tidak selalu diperlukan secara keseluruhannya.

Oleh itu, kami memutuskan untuk menghadkan diri kami hanya kepada pengawal selia P, yang bertindak balas secukupnya kepada penyelewengan daripada garis hitam.

Dalam bahasa matematik ia akan ditulis seperti ini:

dengan Hb dan Hc ialah kuasa akhir bagi motor B dan C, masing-masing,

Base – kuasa asas tertentu motor yang menentukan kelajuan robot. Ia dipilih secara eksperimen, bergantung pada reka bentuk robot dan ketajaman lilitan.

Itek – bacaan semasa sensor cahaya.

Iid – titik ideal yang dikira.

k – pekali perkadaran, dipilih secara eksperimen.

Dalam bahagian ketiga kita akan melihat bagaimana untuk memprogramkan ini dalam persekitaran NXT-G.

Beginilah cara seseorang melihat garis:

Beginilah cara robot melihatnya:


Kami akan menggunakan ciri ini apabila mereka bentuk dan memprogramkan robot untuk kategori pertandingan "Trajektori".

Terdapat banyak cara untuk mengajar robot melihat garisan dan bergerak di sepanjangnya. Terdapat program yang kompleks dan yang sangat mudah.

Saya ingin bercakap tentang kaedah pengaturcaraan yang kanak-kanak dalam darjah 2-3 pun boleh kuasai. Pada usia ini, lebih mudah bagi mereka untuk memasang struktur mengikut arahan, dan pengaturcaraan robot adalah untuk mereka tugas yang susah. Tetapi kaedah ini akan membolehkan kanak-kanak memprogramkan robot ke mana-mana laluan trek dalam masa 15-30 minit (dengan mengambil kira ujian langkah demi langkah dan pelarasan beberapa ciri trajektori).

Kaedah ini telah diuji pada pertandingan robotik perbandaran dan wilayah di wilayah Surgut dan Khanty-Mansi Autonomous Okrug-Yugra dan membawa sekolah kami tempat pertama. Di sana saya menjadi yakin bahawa topik ini sangat relevan untuk banyak pasukan.

Baiklah, mari kita mulakan.

Apabila bersedia untuk jenis pertandingan ini, pengaturcaraan hanyalah sebahagian daripada penyelesaian kepada tugas itu. Anda perlu bermula dengan mereka bentuk robot untuk laluan tertentu. Dalam artikel seterusnya saya akan memberitahu anda bagaimana untuk melakukan ini. Nah, kerana pergerakan sepanjang garisan berlaku sangat kerap, saya akan mulakan dengan pengaturcaraan.

Mari kita pertimbangkan pilihan robot dengan dua sensor cahaya, kerana ia lebih mudah difahami oleh pelajar sekolah rendah.

Penderia cahaya disambungkan ke port 2 dan 3. Motor ke pelabuhan B dan C.
Penderia diletakkan di tepi garisan (cuba bereksperimen dengan meletakkan penderia pada jarak yang berbeza antara satu sama lain dan pada ketinggian yang berbeza).
Perkara penting. Untuk kerja yang lebih baik Untuk skim sedemikian, adalah dinasihatkan untuk memilih sepasang sensor mengikut parameter. Jika tidak, adalah perlu untuk memperkenalkan blok untuk melaraskan nilai sensor.
Memasang penderia pada casis mengikut skema klasik(segi tiga), lebih kurang seperti dalam gambar.

Program ini akan terdiri daripada sebilangan kecil blok:


1. Dua unit sensor cahaya;
2. Empat blok "Matematik";
3. Dua blok motor.

Dua motor digunakan untuk mengawal robot. Kuasa setiap satu ialah 100 unit. Untuk skim kami, kami akan mengambil nilai purata kuasa motor bersamaan dengan 50. Iaitu, kelajuan purata apabila bergerak dalam garis lurus akan bersamaan dengan 50 unit. Apabila menyimpang dari gerakan garis lurus, kuasa motor akan meningkat atau berkurang secara berkadar, bergantung pada sudut sisihan.

Sekarang mari kita fikirkan cara menyambung semua blok, konfigurasikan program dan apa yang akan berlaku di dalamnya.
Mari sediakan dua penderia cahaya dan tetapkan port 2 dan 3 kepada mereka.
Ambil blok matematik dan pilih "Penolakan."
Mari sambungkan penderia cahaya daripada output "Intensiti" dengan bas ke blok matematik kepada input "A" dan "B".
Jika penderia robot dipasang secara simetri dari tengah garisan trek, maka nilai kedua-dua penderia akan sama. Selepas penolakan kita mendapat nilai - 0.
Blok matematik seterusnya akan digunakan sebagai pekali dan anda perlu menetapkan "Pendaraban" di dalamnya.
Untuk mengira pekali, anda perlu mengukur tahap "putih" dan "hitam" menggunakan blok NXT.
Mari kita anggap: putih -70, hitam -50.
Seterusnya, kami mengira: 70-50 = 20 (perbezaan antara putih dan hitam), 50/20 = 2.5 (kami menetapkan nilai kuasa purata apabila bergerak dalam garis lurus dalam blok matematik kepada 50. Nilai ini ditambah dengan kuasa tambahan apabila melaraskan pergerakan hendaklah sama dengan 100)
Cuba tetapkan nilai kepada 2.5 pada input "A", dan kemudian pilihnya dengan lebih tepat.
Ke input "B" blok matematik "Pendaraban", sambungkan output "Hasil" blok matematik sebelumnya "Penolakan".
Seterusnya datang sepasang - blok matematik (Tambahan) dan motor B.
Menyediakan blok matematik:
Input "A" ditetapkan kepada 50 (separuh kuasa motor).
Output blok "Result" disambungkan oleh bas ke input "Kuasa" motor B.
Pasangan seterusnya ialah blok matematik (Tolak) dan motor C.
Menyediakan blok matematik:
Input "A" ditetapkan kepada 50.
Input "B" disambungkan oleh bas ke output "Hasil" bagi blok matematik "Pendaraban".
Output blok "Result" disambungkan oleh bas ke input "Kuasa" motor C.

Hasil daripada semua tindakan ini, anda akan mendapat program berikut:

Memandangkan semua ini akan berfungsi dalam kitaran, kami menambah "Kitaran", pilihnya dan alihkan semuanya ke "Kitaran".

Sekarang mari kita cuba memikirkan bagaimana program ini akan berfungsi dan cara mengkonfigurasinya.


Semasa robot bergerak dalam garis lurus, nilai penderia bertepatan, yang bermaksud bahawa output blok "Penolakan" akan menjadi nilai 0. Output blok "Pendaraban" juga memberikan nilai 0. Nilai ini dibekalkan selari dengan pasangan kawalan motor. Oleh kerana blok ini ditetapkan kepada 50, menambah atau menolak 0 tidak menjejaskan kuasa motor. Kedua-dua motor beroperasi pada kuasa 50 yang sama, dan robot bergolek dalam garis lurus.

Mari kita anggap bahawa trek membuat pusingan atau robot menyimpang dari garis lurus. Apa yang akan berlaku?

Angka tersebut menunjukkan bahawa pencahayaan penderia yang disambungkan ke port 2 (selepas ini dirujuk sebagai penderia 2 dan 3) meningkat, apabila ia bergerak ke medan putih, dan pencahayaan penderia 3 berkurangan. Mari kita anggap bahawa nilai penderia ini menjadi: penderia 2 – 55 unit, dan penderia 3 – 45 unit.
Blok "Penolakan" akan menentukan perbezaan antara nilai dua penderia (10) dan menyuapkannya ke blok pembetulan (darab dengan pekali (10*2.5=25)) dan kemudian ke blok kawalan
motor.
Dalam blok matematik (Tambahan) kawalan motor B kepada nilai kelajuan purata 50
25 akan ditambah dan nilai kuasa 75 akan dibekalkan kepada motor B.
Dalam blok matematik (Penolakan) untuk mengawal motor C, 25 akan ditolak daripada nilai kelajuan purata 50 dan nilai kuasa 25 akan dibekalkan kepada motor C.
Dengan cara ini, sisihan dari garis lurus akan diperbetulkan.

Jika trek membelok tajam ke sisi, penderia 2 bertukar menjadi putih dan penderia 3 berwarna hitam. Nilai pencahayaan sensor ini menjadi: sensor 2 - 70 unit, dan sensor 3 - 50 unit.
Blok "Penolakan" akan menentukan perbezaan antara nilai dua penderia (20) dan menyuapkannya ke blok pembetulan (20*2.5=50) dan kemudian ke unit kawalan motor.
Sekarang dalam blok matematik (Tambahan) kawalan motor B, nilai kuasa 50 +50 =100 akan dibekalkan kepada motor B.
Dalam blok matematik (Penolakan) kawalan motor C, nilai kuasa 50 – 50 = 0 akan dibekalkan kepada motor C.
Dan robot akan membuat pusingan tajam.

Di medan putih dan hitam, robot mesti memandu dalam garis lurus. Jika ini tidak berlaku, cuba pilih penderia dengan nilai yang sama.

Sekarang mari buat blok baru dan kami akan menggunakannya untuk menggerakkan robot di sepanjang mana-mana laluan.
Pilih kitaran, kemudian dalam menu "Edit" pilih arahan "Buat blok saya".

Dalam kotak dialog "Block Designer", berikan nama pada blok kami, sebagai contoh, "Go", pilih ikon untuk blok dan klik "DONE".

Sekarang kita mempunyai blok yang boleh digunakan dalam kes di mana kita perlu bergerak mengikut garisan.

Salah satu pergerakan asas dalam pembinaan ringan adalah mengikut garis hitam.

Teori am dan contoh khusus Penciptaan program diterangkan di laman web wroboto.ru

Saya akan menerangkan cara kami melaksanakan ini dalam persekitaran EV3, kerana terdapat perbezaan.

Perkara pertama yang robot perlu tahu ialah maksud "titik ideal" yang terletak di sempadan hitam dan putih.

Lokasi titik merah dalam rajah sepadan dengan tepat dengan kedudukan ini.

Pilihan pengiraan yang ideal adalah untuk mengukur nilai hitam dan putih dan mengambil purata aritmetik.

Anda boleh melakukan ini secara manual. Tetapi kelemahannya dapat dilihat dengan serta-merta: walaupun dalam tempoh yang singkat, pencahayaan mungkin berubah, dan nilai yang dikira akan menjadi tidak betul.

Jadi, anda boleh mendapatkan robot untuk melakukannya.

Semasa eksperimen, kami mendapati bahawa tidak perlu mengukur kedua-dua hitam dan putih. Hanya putih boleh diukur. Dan nilai titik ideal dikira sebagai nilai putih dibahagikan dengan 1.2 (1.15), bergantung pada lebar garis hitam dan kelajuan robot.

Nilai yang dikira mesti ditulis kepada pembolehubah untuk mengaksesnya kemudian.

Pengiraan "titik ideal"

Parameter seterusnya yang terlibat dalam pergerakan ialah pekali putaran. Semakin besar, semakin tajam robot bertindak balas terhadap perubahan dalam pencahayaan. Tetapi terlalu banyak sangat penting akan menyebabkan robot bergoyang-goyang. Nilai dipilih secara eksperimen secara individu untuk setiap reka bentuk robot.

Parameter terakhir ialah kuasa asas motor. Ia menjejaskan kelajuan robot. Meningkatkan kelajuan pergerakan membawa kepada peningkatan dalam masa tindak balas robot kepada perubahan pencahayaan, yang boleh membawa kepada penyingkiran dari trajektori. Nilai juga dipilih secara eksperimen.

Untuk kemudahan, parameter ini juga boleh ditulis ke dalam pembolehubah.

Nisbah Pusingan dan Kuasa Asas

Logik bergerak di sepanjang garis hitam adalah seperti berikut: sisihan dari titik ideal diukur. Semakin besar, semakin kuat robot itu harus berusaha untuk kembali kepadanya.

Untuk melakukan ini, kami mengira dua nombor - nilai kuasa setiap motor B dan C secara berasingan.

Dalam bentuk formula ia kelihatan seperti ini:

Di mana Isens ialah nilai bacaan sensor cahaya.

Akhir sekali, pelaksanaan dalam EV3. Ia adalah paling mudah untuk mengaturnya dalam bentuk blok berasingan.

Pelaksanaan algoritma

Ini betul-betul algoritma yang telah dilaksanakan dalam robot untuk kategori pertengahan WRO 2015

Algoritma untuk mengawal robot LEGO mudah alih. Pergerakan garisan dengan dua penderia cahaya

Guru pendidikan tambahan

Kazakova Lyubov Alexandrovna


Pergerakan sepanjang garisan

  • Dua sensor cahaya
  • Pengawal berkadar (pengawal P)

Algoritma untuk bergerak di sepanjang garis hitam tanpa pengawal berkadar

  • Kedua-dua motor berputar dengan kuasa yang sama
  • Jika sensor cahaya kanan mencecah garisan hitam, maka kuasa motor kiri (contohnya B) berkurangan atau berhenti
  • Jika sensor cahaya kiri mencecah garisan hitam, maka kuasa motor lain (contohnya C) berkurangan (kembali ke garisan), berkurangan atau berhenti
  • Jika kedua-dua penderia berwarna putih atau hitam, maka pergerakan rectilinear

Pergerakan diatur dengan menukar kuasa salah satu motor


Contoh program untuk memandu sepanjang garis hitam tanpa pengawal P

Pergerakan diatur dengan menukar sudut putaran


  • Pengawal berkadar (pengawal P) membolehkan anda melaraskan kelakuan robot bergantung pada sejauh mana kelakuannya berbeza daripada yang diingini.
  • Semakin robot menyimpang dari matlamat, semakin banyak usaha yang perlu dilakukan untuk kembali kepadanya.

  • Pengawal P digunakan untuk memastikan robot dalam keadaan tertentu:
  • Memegang kedudukan manipulator Bergerak sepanjang garisan (sensor cahaya) Bergerak sepanjang dinding (sensor jarak)
  • Memegang kedudukan manipulator
  • Pergerakan garisan (sensor cahaya)
  • Pergerakan sepanjang dinding (penderia jarak)

Pergerakan garisan dengan satu sensor

  • Matlamatnya adalah untuk bergerak di sepanjang sempadan "putih-hitam".
  • Seseorang boleh membezakan sempadan antara putih dan hitam. Robot tidak boleh.
  • Matlamat untuk robot adalah dalam warna kelabu

Memandu melalui persimpangan

Apabila menggunakan dua penderia cahaya, adalah mungkin untuk mengatur pergerakan di sepanjang laluan yang lebih kompleks



Algoritma untuk memandu di sepanjang lebuh raya dengan persimpangan

  • Kedua-dua penderia berwarna putih - robot memandu lurus (kedua-dua motor berputar dengan kuasa yang sama)
  • Jika penderia cahaya kanan mencecah garisan hitam dan yang kiri mencecah garisan putih, maka belok kanan berlaku
  • Jika penderia cahaya kiri mencecah garisan hitam dan yang kanan mencecah garisan putih, maka ia membelok ke kiri
  • Jika kedua-dua penderia berwarna hitam, maka gerakan linear berlaku. Anda boleh mengira persimpangan atau melakukan sebarang tindakan


Prinsip operasi pengawal selia P

Kedudukan sensor

O=O1-O2


Algoritma untuk bergerak di sepanjang garis hitam dengan pengawal berkadar

HC = K*(C-T)

  • Ts - nilai sasaran (ambil bacaan dari sensor cahaya pada putih dan hitam, hitung purata)
  • T - nilai semasa - diperoleh daripada sensor
  • K - pekali kepekaan. Lebih banyak, lebih tinggi sensitiviti



Untuk melihat persembahan dengan gambar, reka bentuk dan slaid, muat turun failnya dan bukanya dalam PowerPoint pada komputer anda.
Kandungan teks slaid pembentangan:
"Algoritma untuk bergerak sepanjang garis hitam dengan satu sensor warna" Kelab pada "Robotik" Guru sebelum Yezidov Akhmed ElievichAt MBU DO "Shelkovskaya TsTT" Untuk mengkaji algoritma untuk bergerak sepanjang garis hitam, robot akan digunakan Lego Mindstorms EV3 dengan satu penderia warna Penderia warna Penderia warna membezakan 7 warna dan boleh mengesan ketiadaan warna. Seperti dalam NXT, ia boleh berfungsi sebagai sensor cahaya. Medan untuk pertandingan robot "Barisan S" Padang latihan yang dicadangkan dengan trek dalam bentuk huruf "S" akan membolehkan anda menjalankan satu lagi ujian menarik robot yang dicipta untuk kelajuan dan tindak balas. Mari kita pertimbangkan algoritma paling mudah pergerakan di sepanjang garis hitam pada satu penderia warna pada EV3. Algoritma ini adalah yang paling perlahan, tetapi paling stabil. Robot tidak akan bergerak dengan ketat di sepanjang garis hitam, tetapi di sepanjang sempadannya, membelok ke kiri dan kanan dan secara beransur-ansur bergerak ke hadapan. Algoritma adalah sangat mudah: jika sensor melihat hitam, maka robot bertukar ke satu arah, jika putih - ke arah yang lain. Mengikuti garisan dalam mod kecerahan cahaya yang dipantulkan dengan dua penderia Kadangkala penderia warna tidak cukup berkesan untuk membezakan antara hitam dan warna putih. Penyelesaian kepada masalah ini ialah menggunakan sensor bukan dalam mod pengesanan warna, tetapi dalam mod kecerahan cahaya yang dipantulkan. Dalam mod ini, mengetahui nilai sensor pada permukaan gelap dan terang, kita boleh secara bebas mengatakan apa yang akan dianggap putih dan apa yang akan menjadi hitam. Sekarang mari tentukan nilai kecerahan pada permukaan putih dan hitam. Untuk melakukan ini, dalam menu blok EV3 kami menemui tab "Aplikasi Modul". Kini anda berada dalam tetingkap paparan port dan boleh melihat bacaan semua penderia pada masa semasa. penderia kami harus menyala merah, yang bermaksud ia beroperasi dalam mod pengesanan kecerahan cahaya yang dipantulkan. Jika ia bersinar biru, dalam tetingkap paparan port pada port yang dikehendaki, tekan butang tengah dan pilih mod COL-REFLECT. Sekarang mari letakkan robot supaya kedua-dua penderia terletak di atas permukaan putih. Kami melihat nombor dalam port 1 dan 4. Dalam kes kami, nilai masing-masing adalah 66 dan 71. Ini akan menjadi nilai putih penderia. Sekarang mari letakkan robot supaya penderia terletak di atas permukaan hitam. Mari lihat nilai port 1 dan 4 sekali lagi. Kami mempunyai 5 dan 6, masing-masing. Ini adalah makna hitam. Seterusnya, kita akan menukar program sebelumnya. Iaitu, kami akan menukar tetapan suis. Buat masa ini mereka mempunyai Sensor Warna -> Pengukuran -> Warna dipasang. Kita perlu menetapkan Penderia Warna -> Perbandingan -> Kecerahan Cahaya Terpantul. Kini kita perlu menetapkan "jenis perbandingan" dan "nilai ambang". Nilai ambang adalah nilai beberapa "kelabu", nilai yang kurang daripada yang akan kita anggap hitam, dan lebih banyak - putih. Untuk anggaran pertama, adalah mudah untuk menggunakan nilai purata antara putih dan hitam setiap sensor. Oleh itu, nilai ambang sensor pertama (port No. 1) ialah (66+5)/2=35.5. Mari kita bulatkan kepada 35. Nilai ambang sensor kedua (port No. 4): (71+6)/2 = 38.5. Mari bulatkan kepada 38. Sekarang kita tetapkan nilai ini dalam setiap suis dengan sewajarnya. Itu sahaja, blok dengan pergerakan kekal di tempatnya tanpa perubahan, kerana jika kita meletakkan tanda "jenis perbandingan"<», то все, что сверху (под галочкой) будет считаться черным, а снизу (под крестиком) – белым, как и было в предыдущей программе.Старайтесь ставить датчики так, чтобы разница между белым и черным была как можно больше. Если разница меньше 30 - ставьте датчики ниже. Это было краткое руководство по программированию робота Lego ev3, для движения по черной линии, с одним и двумя датчиками цвета