Агуулгын хүснэгт:

Цөцгийн тос робот: Аристино робот оршин тогтнох хямралтай: 6 алхам (зурагтай)
Цөцгийн тос робот: Аристино робот оршин тогтнох хямралтай: 6 алхам (зурагтай)

Видео: Цөцгийн тос робот: Аристино робот оршин тогтнох хямралтай: 6 алхам (зурагтай)

Видео: Цөцгийн тос робот: Аристино робот оршин тогтнох хямралтай: 6 алхам (зурагтай)
Видео: ЖИЗНЬ В ГОРНЫХ СЁЛАХ ДАГЕСТАНА (Отрывок из Большого фильма про Дагестан) #Дагестан #Кавказ 2024, Долдугаар сарын
Anonim
Image
Image

Энэхүү төсөл нь "Рик ба Морти" хүүхэлдэйн цуврал дээр суурилсан болно. Нэг хэсэгт Рик цөцгийн тос авчрах цорын ганц зорилго бүхий робот хийдэг. Брюсфелийн (Брюсселийн Инженерийн факультет) оюутнуудын хувьд бид санал болгосон сэдэв дээр үндэслэн робот бүтээх мехатроникийн төслийн даалгавартай. Энэхүү төслийн даалгавар нь: Зөвхөн цөцгийн тосоор үйлчилдэг робот хий. Энэ нь экзистенциал хямралтай байж болно. Мэдээжийн хэрэг Рик ба Морти киноны робот бол нэлээд төвөгтэй робот тул зарим хялбарчлалыг хийх шаардлагатай байна.

Цөцгийн тос авчрах нь цорын ганц зорилго учраас илүү хялбар сонголтууд байдаг. Роботыг цөцгийн тос мэт харагдуулж, шүүрч авахын оронд зөв хүн рүү авчрахаас өмнө робот цөцгийн тосыг байнга авч явж болно. Гол санаа нь цөцгийн тосыг шаардлагатай газарт нь хүргэж өгдөг тэрэг хийх явдал юм.

Робот цөцгийн тос тээвэрлэхээс гадна цөцгийн тосыг хаанаас авчрах ёстойгоо мэдэх шаардлагатай. Энэ хэсэгт Рик дуу хоолойгоо ашиглан роботыг дуудаж, тушаажээ. Энэ нь үнэтэй дуу таних систем шаарддаг бөгөөд төвөгтэй байх болно. Үүний оронд ширээн дээр байгаа бүх хүмүүс товчлууртай болно: энэ товчлуурыг идэвхжүүлсний дараа робот энэ товчлуурыг олж, түүн рүү шилжих боломжтой болно.

Дахин хэлэхэд робот дараахь шаардлагыг хангасан байх ёстой.

  • Энэ нь аюулгүй байх шаардлагатай: энэ нь саад бэрхшээлээс зайлсхийж, өөрөө ширээн дээрээс унахаас урьдчилан сэргийлэх ёстой;
  • Робот жижиг байх ёстой: ширээн дээрх зай хязгаарлагдмал бөгөөд цөцгийн тосоор үйлчилдэг боловч ширээний тал хэмжээтэй хэмжээтэй роботыг хэн ч хүсэхгүй байх;
  • Роботыг ажиллуулах нь хүснэгтийн хэмжээ, хэлбэрээс хамаардаггүй тул үүнийг өөр өөр ширээн дээр ашиглаж болно.
  • Энэ нь цөцгийн тосыг ширээн дээр байгаа зөв хүн рүү авчрах хэрэгтэй.

Алхам 1: Үндсэн ойлголт

Өмнө дурьдсан шаардлагуудыг өөр техник ашиглан хангаж болно. Энэхүү дизайны талаархи шийдвэрийг энэ алхамд тайлбарласан болно. Эдгээр санаануудыг хэрхэн хэрэгжүүлэх талаархи дэлгэрэнгүй мэдээллийг дараах алхамуудаас авах боломжтой.

Үүргээ биелүүлэхийн тулд робот зорьсон газартаа хүрэх хүртэл хөдлөх хэрэгтэй. Роботын хэрэглээг харгалзан үзэхэд "алхах" хөдөлгөөний оронд дугуй ашиглах нь түүнийг хөдөлгөхөд илүү дээр юм. Ширээ нь хавтгай гадаргуу бөгөөд робот маш өндөр хурданд хүрч чаддаггүй тул хоёр идэвхжүүлсэн дугуй, нэг кастер бөмбөг нь удирдахад хамгийн хялбар бөгөөд хамгийн хялбар шийдэл юм. Идэвхжүүлсэн дугуйг хоёр хөдөлгүүрээр тэжээх шаардлагатай. Мотор нь том эргүүлэх чадвартай байх ёстой, гэхдээ өндөр хурданд хүрэх шаардлагагүй тул тасралтгүй servo моторыг ашиглах болно. Серво хөдөлгүүрийн өөр нэг давуу тал бол Arduino -ийг ашиглахад хялбар байдал юм.

Саад тотгорыг илрүүлэх ажлыг зайг хэмжих хэт авианы мэдрэгч ашиглан хийж болно. LDR мэдрэгч ашиглан ирмэгийг илрүүлж болно. LDR мэдрэгчийг ашиглахын тулд LED гэрэл болон LDR мэдрэгч агуулсан төхөөрөмжийг бүтээх шаардлагатай болно. LDR мэдрэгч нь тусгасан гэрлийг хэмждэг бөгөөд үүнийг ямар нэгэн зайн мэдрэгч гэж үзэж болно. Үүнтэй ижил зарчим нь хэт улаан туяаны гэрэлд байдаг. Хэт улаан туяаны ойролцоо мэдрэгч байдаг бөгөөд дижитал гаралттай: ойрхон эсвэл ойрхон биш. Энэ бол робот ирмэгийг илрүүлэхэд яг хэрэгтэй зүйл юм. Хоёр шавьжны антен, нэг идэвхжүүлсэн хэт авианы мэдрэгч шиг байрлуулсан 2 ирмэг мэдрэгчийг нэгтгэснээр робот нь саад бэрхшээл, ирмэгээс зайлсхийх боломжтой байх ёстой.

Мөн товчлуурыг илрүүлэх ажлыг IR мэдрэгч, LED ашиглан хийж болно. IR -ийн давуу тал нь үл үзэгдэх бөгөөд үүнийг ашиглах нь ширээн дээр байгаа хүмүүст саад болохгүй. Лазерыг бас ашиглаж болно, гэхдээ хэн нэгэн лазерыг өөр хүний нүд рүү чиглүүлэхэд гэрэл харагдах бөгөөд бас аюултай болно. Түүнчлэн, хэрэглэгч робот дээрх мэдрэгчийг зөвхөн нимгэн лазер туяагаар чиглүүлэх шаардлагатай бөгөөд энэ нь нэлээд ядаргаатай байх болно. Роботыг хоёр IR мэдрэгчээр тоноглож, хэт улаан туяа бүхий товчлуурыг хийснээр IR гэрлийн эрч хүчийг дагаж ямар чиглэлд явах ёстойгоо мэддэг. Товчлуур байхгүй үед роботууд аль нэг товчлуураас дохиог авах хүртэл эргэж чадна.

Цөцгийн тосыг роботын дээд хэсэгт байрлах тасалгаанд хийнэ. Энэхүү тасалгаа нь хайрцаг болон хайрцгийг онгойлгох зориулалттай тагнаас бүрдэж болно. Тагийг онгойлгож, хэт авианы мэдрэгчийг хөдөлгөхийн тулд бидэнд хоёр мотор хэрэгтэй бөгөөд энэ зорилгоор тасралтгүй servo моторууд илүү тохирсон байдаг, учир нь мотор тодорхой байрлалд явж, энэ байрлалыг хадгалах шаардлагатай байдаг.

Төслийн нэмэлт онцлог нь роботын дуу хоолойгоор гадаад орчинтой харилцах явдал байв. Дуут дохио нь энгийн бөгөөд энэ зорилгоор тохируулагдсан байдаг, гэхдээ өнөөгийн сугалаа өндөр байгаа тул хэзээ ч ашиглах боломжгүй.

Төслийн гол бэрхшээл нь кодчилолд суурилдаг, учир нь механик хэсэг нь маш энгийн бөгөөд робот гацах эсвэл хүсээгүй зүйл хийхгүй байхын тулд олон тохиолдлыг анхаарч үзэх хэрэгтэй. Бидний шийдвэрлэх ёстой гол бэрхшээл бол саад бэрхшээлээс болж IR дохиог алдаж, товчлуур дээр ирэхэд зогсох явдал юм.

Алхам 2: Материал

Механик эд анги

  • 3D принтер ба лазер хэрчих машин

    • PLA нь 3D хэвлэхэд ашиглагддаг боловч та ABS ашиглаж болно
    • 3 мм хэмжээтэй хус фанерыг лазер хайчлах зориулалтаар ашиглах бөгөөд энэ нь дараа нь хялбархан өөрчлөлт хийх боломжийг олгодог тул плексиглазыг бас ашиглаж болох боловч лазераар огтлоод устгалгүйгээр өөрчлөхөд илүү төвөгтэй байдаг.
  • Боолт, самар, угаагч

    Ихэнх бүрэлдэхүүн хэсгүүдийг M3 товчлуур, угаагч, самар ашиглан холбодог боловч зарим хэсэгт M2 эсвэл M4 боолтыг тохируулах шаардлагатай байдаг. Боолтны урт нь 8-12 мм байна

  • ПХБ -ийн тусгаарлагч, 25 мм ба 15 мм
  • Тохиромжтой дугуйтай 2 servo мотор
  • 1-2 мм диаметртэй зарим зузаан төмөр утас

Цахим эд анги

  • Микроконтроллер

    1 arduino UNO самбар

  • Servo мотор

    • 2 том servo мотор: Feetech тасралтгүй 6Kg 360 градус
    • 2 бичил servo мотор: Feetech FS90
  • Мэдрэгч

    • 1 Хэт авианы мэдрэгч
    • 2 IR ойрхон мэдрэгч
    • 2 хэт улаан туяаны фотодиод
  • Батерей

    • 1 9V зай эзэмшигч + зай
    • 1 4АА зай эзэмшигч + батерей
    • 1 9В батерейны хайрцаг + зай
  • Нэмэлт бүрэлдэхүүн хэсгүүд

    • Зарим үсрэх утас, утас, гагнуурын хавтан
    • Зарим эсэргүүцэл
    • 1 IR LED
    • 3 унтраалга
    • 1 дуугаралт
    • 1 товчлуур
    • 1 Arduino -аас 9V зайны холбогч

Алхам 3: Электроникийг турших

Электроникийг туршиж байна
Электроникийг туршиж байна
Электроникийг туршиж байна
Электроникийг туршиж байна

Товчлуур үүсгэх:

Энэхүү товчлуурыг зүгээр л унтраалга, хэт улаан туяаны LED, 9 Ом батерейгаар тэжээгддэг 220 Ом эсэргүүцэлтэй холбон хийдэг. Үүнийг 9V батерейны багцад багтаасан бөгөөд авсаархан, цэвэрхэн дизайнтай.

Хэт улаан туяаны хүлээн авагчийн модулийг бий болгох:

Эдгээр модулийг нүхний гагнуурын хавтангаар хийсэн бөгөөд дараа нь боолттой роботод бэхлэх болно. Эдгээр модулийн хэлхээг ерөнхий схемд дүрсэлсэн болно. Энэ зарчим нь хэт улаан туяаны гэрлийн эрч хүчийг хэмжих явдал юм. Хэмжилтийг сайжруулахын тулд тодорхой чиглэлд анхаарлаа төвлөрүүлэхийн тулд коллиматорыг (агшилтын хоолойгоор хийсэн) ашиглаж болно.

Төслийн янз бүрийн шаардлагыг электрон төхөөрөмж ашиглан гүйцэтгэх шаардлагатай. Харьцангуй бага төвөгтэй байдлыг хадгалахын тулд төхөөрөмжийн тоог хязгаарлах ёстой. Энэ алхам нь бүх хэсгүүдийг тусад нь шалгахын тулд утаснуудын схем, код бүрийг агуулдаг.

  • Тасралтгүй servo мотор;
  • Хэт авианы мэдрэгч;
  • Тасралтгүй Servo мотор;
  • Дуу чимээ;
  • IR товчлуурын чиглэлийг илрүүлэх;
  • Ойролцоох мэдрэгчээр ирмэгийг илрүүлэх;

Эдгээр кодууд нь бүрэлдэхүүн хэсгүүдийг эхэн үед ойлгоход тусалдаг боловч хожим нь дибаг хийхэд маш хэрэгтэй байдаг. Хэрэв тодорхой асуудал гарвал бүх бүрэлдэхүүн хэсгүүдийг тусад нь туршиж үзвэл алдааг илүү хялбар илрүүлж чадна.

Алхам 4: 3D хэвлэмэл болон лазер хайчлах хэсгүүдийн дизайн

3D хэвлэмэл болон лазер хайчлах хэсгүүдийн загвар
3D хэвлэмэл болон лазер хайчлах хэсгүүдийн загвар
3D хэвлэмэл болон лазер хайчлах хэсгүүдийн загвар
3D хэвлэмэл болон лазер хайчлах хэсгүүдийн загвар
3D хэвлэмэл болон лазер хайчлах хэсгүүдийн загвар
3D хэвлэмэл болон лазер хайчлах хэсгүүдийн загвар

Лазер хайчлах хэсгүүд

Угсрах хэсэг нь ПХБ -ийн тусгаарлагчаар бэхлэгдсэн гурван үндсэн хэвтээ хавтангаар хийгдсэн бөгөөд хэрэв шаардлагатай бол электрон төхөөрөмжид хялбар нэвтрэх боломжийг олгодог нээлттэй дизайнтай болно.

Эдгээр хавтангуудыг эцсийн угсралтын зориулалтаар тусгаарлагч болон бусад эд ангиудыг шургуулахын тулд шаардлагатай нүхийг огтлох шаардлагатай. Үндсэндээ бүх гурван ялтсууд нь ижил байрлалд тусгаарлагчийн нүхтэй бөгөөд хавтан тус бүр дээр электроникийн тусгай цоорхойтой байдаг. Дунд хавтан нь дундуур утас дамжуулах нүхтэй болохыг анхаарна уу.

Жижиг хэсгүүдийг угсрах хэсэгт засахын тулд том servo -ийн хэмжээгээр хайчилж авдаг.

3D хэвлэсэн хэсгүүд

Лазер хайчлахаас гадна зарим хэсгийг 3D хэвлэх шаардлагатай болно.

  • Хэт авианы мэдрэгчийн дэмжлэг нь үүнийг нэг микро servo мотортой холбодог
  • Касторын дугуй ба хоёр IR ирмэг мэдрэгчийн дэмжлэг. Хэт улаан туяаны мэдрэгчийн хайрцаг хэлбэртэй хэсгийн тодорхой загвар нь зөвхөн газар дээр болж буй зүйлд анхаарлаа хандуулах шаардлагатай IR туяа ялгаруулдаг товчлуур ба IR мэдрэгчийн хоорондох хөндлөнгөөс зайлсхийх дэлгэц юм.
  • Тагийг нээх бичил servo моторын дэмжлэг
  • Эцэст нь таг нь нээгдэж буй микро servo мотортой мөргөлдөхөөс зайлсхийж, илүү том ажиллах өнцөгтэй байхын тулд хоёр хэсгээс бүрдсэн таг:

    • Доод тал нь дээд хавтан дээр бэхлэгдэх болно
    • Доод талыг нь нугасаар холбож, зузаан металл утас ашиглан servo -ээр идэвхжүүлдэг. Бид роботод толгой өгөх замаар бага зэрэг зан чанарыг нэмж өгөхөөр шийдсэн.

Бүх хэсгүүдийг зохион бүтээж, файлуудыг ашигласан машинуудын зөв форматаар экспортлосны дараа тэдгээрийг үнэхээр хийж болно. 3D хэвлэх нь маш их цаг хугацаа шаардагддаг, ялангуяа тагны дээд хэсгийн хэмжээг харгалзан үзэх хэрэгтэй. Бүх хэсгийг хэвлэхийн тулд танд нэг эсвэл хоёр өдөр хэрэгтэй болно. Лазер огтлох нь хэдхэн минутын л асуудал юм.

Бүх SOLIDWORKS файлуудыг зип хавтаснаас олж болно.

Алхам 5: Угсралт ба утас

Image
Image
Угсралт ба утас
Угсралт ба утас
Угсралт ба утас
Угсралт ба утас
Угсралт ба утас
Угсралт ба утас

Угсралт нь утаснуудын холимог байх бөгөөд бүрэлдэхүүн хэсгүүдийг доороос дээш хүртэл шургуулна.

Доод хавтан

Доод хавтанг 4АА батерейны багц, servo мотор, хэвлэсэн хэсэг (бөмбөгийг хавтан доор байрлуулна), хоёр ирмэгийн мэдрэгч, 6 эмэгтэй-эмэгтэй зайтай холбоно.

Дунд хавтан

Дараа нь дунд хавтанг холбож, хоёр хавтангийн хоорондох servo моторыг шахаж болно. Дараа нь өөр хавтанг өөр дээр нь байрлуулснаар энэ хавтанг засч болно. Зарим кабелийг төвийн нүхээр дамжуулж болно.

Хэт авианы модулийг Arduino, 9V батерейны багц (arduino-ийг тэжээдэг), роботын урд талд байрлах хэт улаан туяаны хүлээн авагч хоёр модуль бүхий дунд хавтан дээр суурилуулсан тасралтгүй servo-д холбож болно. Эдгээр модулийг нүхний гагнуурын хавтангаар хийж, хавтан дээр боолтоор бэхлэнэ. Эдгээр модулийн хэлхээг ерөнхий схемд дүрсэлсэн болно.

Дээд хавтан

Угсралтын энэ хэсэгт унтраалгыг засаагүй боловч робот нь таг хийх шаардлагатай үйлдлүүдээс бусад бүх зүйлийг хийх боломжтой тул гурвуулаа засах, хөдөлгөөний кодыг дасан зохицуулах, хялбар болгохын тулд тест хийх боломжийг бидэнд олгодог. arduino портууд руу нэвтрэх.

Энэ бүхэнд хүрсний дараа дээд хавтанг тусгаарлагчийн тусламжтайгаар засах боломжтой. Хоёр унтраалга, товчлуур, servo, дуугаралт, тагны систем болох сүүлчийн эд ангиудыг угсрах ажлыг дуусгахын тулд дээд хавтан дээр бэхлэх боломжтой.

Туршилт хийж, засах хамгийн сүүлийн зүйл бол тагийг зөв онгойлгохын тулд servo -ийн өнцөг юм.

Хажуугийн мэдрэгчийн босгыг өөр өөр ширээний гадаргуу дээр багтаасан потенциометрээр (хавтгай халив ашиглан) тохируулах ёстой. Цагаан ширээ нь хүрэн ширээнээс бага босго байх ёстой. Түүнчлэн мэдрэгчийн өндөр нь шаардлагатай босгод нөлөөлнө.

Энэ алхмын төгсгөлд угсралт дуусч, үлдсэн хамгийн сүүлийн хэсэг нь дутуу кодууд юм.

Алхам 6: Кодлох: Бүх зүйлийг нэгтгэх

Роботыг ажиллуулахад шаардлагатай бүх кодыг татаж авах боломжтой зип файлд оруулсан болно. Хамгийн чухал нь роботын тохиргоо, функциональ хүрдийг багтаасан "үндсэн" код юм. Бусад функцуудын ихэнхийг дэд файлд бичдэг (мөн зип хавтас дотор). Эдгээр дэд файлуудыг Arduino-д байршуулахаасаа өмнө үндсэн скрипттэй ижил хавтсанд ("үндсэн" гэж нэрлэдэг) хадгалагдах ёстой.

Эхлээд роботын ерөнхий хурдыг "сануулах" хувьсагчийн хамт тодорхойлно. Энэхүү "сануулах" нь робот аль чиглэл рүү эргэж байсныг санаж буй утга юм. Хэрэв "сануулах = 1" бол робот зүүн тийш эргэж байсан бол "сануулах = 2" бол робот баруун тийш эргэж байв.

int хурд = 9; // Роботын ерөнхий хурд

int сануулах = 1; // Анхны чиглэл

Роботыг тохируулахдаа програмын өөр өөр дэд файлуудыг эхлүүлдэг. Эдгээр дэд файлд мотор, мэдрэгч,… хяналтын үндсэн функцуудыг бичсэн болно. Тохиргоог эхлүүлснээр эдгээр файл тус бүрт тайлбарласан функцуудыг үндсэн давталтад ашиглаж болно. R2D2 () функцийг идэвхжүүлснээр робот нь Star Wars киноны франчайзын R2D2 робот шиг дуу чимээ гаргах болно. энэ нь эхэлдэг. Энд r2D2 () функц идэвхгүй болж, дуугарагч хэт их гүйдэл авахаас сэргийлнэ.

// Тохируулах @ дахин тохируулах // ----------------

хүчингүй тохиргоо () {initialize_IR_sensors (); саад бэрхшээл ба хязгаарыг эхлүүлэх (); initialize_movement (); эхлүүлэх_лид (); эхлүүлэх_buzzer (); // r2D2 (); int сануулах = 1; // анхны чиглэл Эхлэл (сануулах); }

Эхлэх (сануулах) функцийг эхлээд тохиргоонд дууддаг. Энэ функц нь роботыг эргүүлж, товчлууруудын аль нэгний IR дохиог хайхад хүргэдэг. Энэ товчлуурыг олсны дараа програм нь 'cond' хувьсагчийг худал болгож өөрчлөх замаар Starter функцээс гарах болно. Үүнийг үргэлжлүүлэн эргэхээс өмнө үүнийг шалгадаг. Робот саад, ирмэгийг илрүүлсний дараа эдгээр саад бэрхшээл, ирмэгээс зайлсхийх протоколыг гүйцэтгэх болно. Эдгээр протоколуудыг энэ алхамд сүүлд тайлбарлах болно. Starter функц нь нэг хувьсагчтай бөгөөд өмнө нь авч үзсэн сануулах хувьсагч юм. Стартер функцэд сануулах утгыг өгснөөр робот товчлуурыг хайхын тулд аль чиглэл рүү эргэх ёстойгоо мэддэг.

// Starter Loop: Эргүүлээд товчлуурыг хайна уу // ------------------------------------ ----------------

void Starter (int сануулах) {if (isedgeleft () || isedgeright ()) {// Ирмэгийн ирмэгийг илрүүлэхDetected (сануулах); } өөр {bool cond = үнэн; while (cond == true) {if (buttonleft () == false && buttonright () == false && isButtonDetected () == true) {cond = false; } өөр {if (сануулах == 1) {// Бид (isobstacleleft ()) {stopspeed (); саад бэрхшээлээс зайлсхийх (сануулах); } else if (isedgeleft () || isedgeright ()) {// Ирмэгийн ирмэгийг илрүүлэхDetected (сануулах); } өөр {эргэх (хурд); }} өөр if (сануулах == 2) {if (isobstacleright ()) {stopspeed (); саад бэрхшээлээс зайлсхийх (сануулах); } else if (isedgeleft () || isedgeright ()) {// Ирмэгийн ирмэгийг илрүүлэхDetected (сануулах); } өөр {эргэх (хурд); }}}}}}

Хэрэв робот товчлуурыг олвол эхний гарааны давталтаас гараад роботын үндсэн, функциональ давталт эхэлнэ. Энэхүү гол давталт нь нэлээд төвөгтэй байдаг тул робот нь урд талд нь ямар нэгэн саад бэрхшээл, ирмэг байгаа эсэхийг олж мэдэх шаардлагатай байдаг. Хоёр IR мэдрэгчийг ашигласнаар бид гурван нөхцөл байдлыг ялгаж чадна.

  • зүүн ба баруун мэдрэгчээр илрүүлсэн IR гэрлийн ялгаа нь тодорхой босго хэмжээнээс том бөгөөд товчлуур байдаг.
  • IR гэрлийн ялгаа нь босго хэмжээнээс бага бөгөөд роботын өмнө товчлуур байдаг.
  • IR гэрлийн ялгаа нь босго хэмжээнээс бага бөгөөд роботын өмнө NO товчлуур байхгүй байна.

Гүйлтийн зам дараах байдлаар ажилладаг: товчлуурыг илрүүлэх үед робот эргэж байсан чиглэл рүү эргүүлэх замаар (сануулах хувьсагчийг ашиглан) товчлуур руу хөдөлж, тэр үед бага зэрэг урагшлах болно. Хэрэв робот хэт хол эргэвэл товчлуур дахин алдагдах бөгөөд энэ үед робот өөр зүг рүү эргэх хэрэгтэйгээ санаж байна. Үүнийг бага зэрэг урагшлахад бас хийдэг. Үүнийг хийснээр робот байнга зүүн, баруун тийш эргэдэг боловч энэ хооронд товчлуур руу урагшилсаар байна. Робот товчлуурыг олох бүртээ түүнийгээ алдах хүртэл эргүүлсээр байх бөгөөд энэ тохиолдолд нөгөө чиглэлд хөдөлж эхэлнэ. "turnleft ()" эсвэл "turnright ()", харин гол давталт нь "moveleft ()" ба "moveright ()" -ийг ашигладаг. Зүүн/баруун чиг үүрэг нь роботыг эргүүлээд зогсохгүй түүнийг урагшлуулахад хүргэдэг.

/ * Функциональ давталт ---------------------------- Энд зөвхөн трекийн зам байна */

int алдагдсан = 0; // Хэрэв алдагдсан = 0 бол товчлуур олдох болно, хэрэв алдагдсан бол = 1 товчлуур алдагдсан бол void loop () {if (isedgeleft () || isedgeright ()) {

if (! isobstacle ()) {

урагшлах (хурд); саатал (5); } өөр {зайлсхийх_ саад бэрхшээл (сануулах); } else {if (сануулах == 1 && lost == 1) {// Бид зүүн эргэлтийн хурдыг эргүүлж байв (); if (! isobstacleright ()) {moveright (speed); // Товчлуурыг олохын тулд эргүүлээрэй} өөр {зайлсхийх_ саад бэрхшээл (сануулах); } сануулах = 2; } else if (сануулах == 2 && lost == 1) {stopspeed (); if (! isobstacleleft ()) {moveleft (speed); // Бид баруун тийш эргэж байсан} өөр {зайлсхийх_ саад бэрхшээл (сануулах); } сануулах = 1; } else if (алдагдсан == 0) {if (сануулах == 1) {// Бид (! isobstacleleft ()) {moveleft (speed); // Бид баруун тийш эргэж байсан} өөр {stopspeed (); саад бэрхшээлээс зайлсхийх (сануулах); } //} else if (сануулах == 2) {if (! isobstacleright ()) {moveright (speed); // Товчлуурыг олохын тулд эргүүлээрэй} else {stopspeed (); саад бэрхшээлээс зайлсхийх (сануулах); }}} саатал (10); алдагдсан = 0; }} //}}

Одоо хамгийн төвөгтэй хоёр горимын талаар бага зэрэг тайлбарлав.

Ирмэгээс зайлсхий

Ирмэгээс зайлсхийх протоколыг "хөдөлгөөн" дэд файлд бичсэн "edgeDetection ()" функцээр тодорхойлдог. Энэхүү протокол нь робот зорьсон газартаа хүрэх үед л ирмэг дээр тулгарах ёстой гэсэн товчлуур дээр тулгуурладаг. Робот ирмэгийг илрүүлсний дараа хамгийн түрүүнд хийх зүйл бол ирмэгээс аюулгүй зайнд байхын тулд бага зэрэг ухрах явдал юм. Үүнийг хийсний дараа робот 2 секунд хүлээнэ. Хэрэв хэн нэгэн энэ хоёр секундын дотор роботын урд талын товчлуурыг дарвал цөцгийн тос хүссэн хүнд хүрч, цөцгийн тосны тасалгааг онгойлгож, цөцгийн тос бэлэглэж байгааг робот мэднэ. Энэ үед хэн нэгэн роботоос цөцгийн тос авч болно. Хэдэн секундын дараа робот хүлээхээс залхаж, цөцгийн тосны тагийг хаах болно. Тагийг хаасны дараа робот өөр товчлуур хайхын тулд гарааны гогцоог ажиллуулна. Хэрэв робот зорьсон газартаа хүрэхээсээ өмнө ирмэгтэй тулгарч, роботын урд талын товчлуурыг дарахгүй бол робот цөцгийн тосны тагийг нээхгүй бөгөөд гарааны гогцоог шууд ажиллуулах болно.

Саад бэрхшээлээс зайлсхий

Avoid_obstacle () функц нь мөн "хөдөлгөөн" дэд файлд байрладаг. Саад бэрхшээлээс зайлсхийх хамгийн хэцүү зүйл бол робот нь нэлээд том сохор толботой байдаг. Хэт авианы мэдрэгчийг роботын урд талд байрлуулсан бөгөөд энэ нь саад тотгорыг илрүүлж чадна, гэхдээ хэзээ дамжуулсныг мэдэхгүй байна. Үүнийг шийдэхийн тулд дараах зарчмыг баримтална: Робот ямар нэгэн саад бэрхшээлтэй тулгарсан бол нөгөө талдаа эргэхийн тулд реминг хувьсагчийг ашигладаг. Ийм байдлаар робот саад тотгорыг мөргөхөөс зайлсхийдэг. Хэт авианы мэдрэгч саад тотгорыг илрүүлэхгүй болтол робот эргэж байна. Робот эргэж байх үед саадыг илрүүлэх хүртэл тоолуур нэмэгддэг. Энэ тоолуур нь саадны уртыг ойролцоогоор харуулдаг. Дараа нь урагш хөдөлж, тоолуурыг бууруулснаар саад бэрхшээлээс зайлсхийх боломжтой. Тоолуур 0 хүрсний дараа товчлуурын байрлалыг өөрчлөхийн тулд Starter функцийг дахин ашиглаж болно. Мэдээжийн хэрэг, робот нь саадтай тулгарахаасаа өмнө санасан чиглэл рүүгээ эргүүлэх замаар Starter функцийг гүйцэтгэдэг (дахин сануулах хувьсагчийг ашиглан).

Та кодыг бүрэн ойлгосон тул үүнийг ашиглаж эхэлж болно!

Босго хэмжээг хүрээлэн буй орчиндоо дасан зохицуулахаа мартуузай (IR туяа тусгал нь цагаан хүснэгтэд илүү өндөр байдаг), өөр өөр параметрүүдийг өөрийн хэрэгцээнд нийцүүлэх. Түүнчлэн, янз бүрийн модулийг асаахад ихээхэн анхаарал хандуулах хэрэгтэй. Серво хөдөлгүүр нь Arduino 5V портоор тэжээгддэггүй, учир нь маш их гүйдэл авдаг (энэ нь микроконтроллерыг гэмтээж болзошгүй юм). Хэрэв servo -ийг тэжээдэг мэдрэгчтэй ижил тэжээлийн эх үүсвэр ашиглавал хэмжилтийн зарим асуудал тулгарч магадгүй юм.

Зөвлөмж болгож буй: