Мазмуну:

Шахмат роботу LEGO жана Raspberry Pi менен жасалган: 6 кадам
Шахмат роботу LEGO жана Raspberry Pi менен жасалган: 6 кадам

Video: Шахмат роботу LEGO жана Raspberry Pi менен жасалган: 6 кадам

Video: Шахмат роботу LEGO жана Raspberry Pi менен жасалган: 6 кадам
Video: БАХШ ПЛОВ Бухарских Евреев 1000 летний РЕЦЕПТ КАК ПРИГОТОВИТЬ 2024, Июль
Anonim
Image
Image

Бул шахмат роботу менен досторуңузду таң калтырыңыз!

Эгерде сиз мурда LEGO роботторун жасаган болсоңуз жана жок дегенде компьютердик программалоо жана Linux боюнча баштапкы билимге ээ болсоңуз, аны куруу өтө кыйын эмес.

Робот өзүнүн кыймылын жасайт жана адамдын оюнчусунун кыймылын аныктоо үчүн визуалдык таанууну колдонот.

Бул роботтун жаңы нерселеринин бири - кыймылды таануу коду. Бул көрүнүш коду башка жолдор менен курулган шахмат роботтору үчүн да жарактуу (мисалы, менин ChessRobot Lynxmotion робот колун колдонуп).

Эч кандай атайын шахмат тактасы, камыш өчүргүчтөр жана башка нерселер талап кылынбайт (адамдын кыймылы визуалдык таануу менен аныкталат).

Менин кодум жеке колдонуу үчүн жеткиликтүү.

1 -кадам: талаптар

Жарыктар, Камера, Аракет!
Жарыктар, Камера, Аракет!

Бардык код Pythonдо жазылган, ал башка нерселер менен катар Raspberry Pi менен иштейт.

Raspberry Pi-бул экранга жана клавиатурага туташтырыла турган кредиттик карта өлчөмүндөгү компьютер. Бул арзан (40 доллардын тегерегинде), жөндөмдүү кичинекей компьютер, аны электроника долбоорлорунда жана робототехникада колдонууга болот жана рабочий компьютериңиздин көптөгөн нерселери үчүн.

Менин роботум Raspberry Pi жана Lego колдонот. RPi менен Lego Mindstorms EV3 моторлору менен сенсорлорунун ортосундагы аппараттык интерфейс Dexter Industriesтен BrickPi3 тарабынан камсыздалган.

Lego конструкциясы Lego Mindstorms процессоруна эмес, RPiди колдонуу режимдерине, мен өзгөрткөн Дарроуз Хадиге таандык "Чарли шахмат роботуна" негизделген. Lego Mindstorms EV3 моторлору жана сенсорлору колдонулат.

Ошондой эле сизге стол, камера, жарык, клавиатура, экран жана көрсөтүүчү түзүлүш (мисалы, чычкан) керек болот.

Жана, албетте, шахмат фигуралары жана тактай.

Мен мунун баарын кийинки кадамдарда кененирээк сүрөттөйм.

2 -кадам: Аппараттык түзүлүш

Image
Image

Мен мурда айткандай, көрүү кодунун жүрөгү ар кандай түзүлүштөр менен иштейт.

Мен роботумду Дарроуз Хадинин "Чарли шахмат роботуна" (EV3 версиясы) негиздегем, ал беттеги маалымат куруунун көрсөтмөлөрүн кантип алуу керектигин айтат. Бөлүктөрдүн тизмеси бул жерде.

Мен роботту бир нече жол менен өзгөрттүм.

1. басып алуучу. Бул мен үчүн иштеген жок. Редуктор тайып кетти, андыктан мен муну болтурбоо үчүн кошумча Lego бөлүктөрүн коштум. Анан кран түшүрүлгөндө, ал көп учурда тыгылып калат, ошондуктан мен муну алдын алуу үчүн Ватттын байланышын коштум.

Жогоруда өзгөртүлгөн шилтемени көрсөткөн кармоочу турат.

2. Оригиналдуу түзүлүш Lego Mindstorms EV3 процессорун колдонот, бирок мен Raspberry Pi колдоном, бул Python колдонууну оңойлотот.

3. Мен Raspberry Pi 3 Model B колдоном.

4. RPi'ди Lego менен интерфейстештирүү үчүн мен Dexter Industriesтен BrickPi3 колдоном. BrickPi Raspberry Pi -ге тиркелет жана бирге LEGO Mindstorms NXT же EV3 кышын алмаштырышат.

Сизде Lego Digital Designer файлы болгондо, LEGO бөлүктөрүн алуу маселеси бар. Сиз кирпичти түз LEGO дүкөнүнөн ала аласыз жана бул аларды алуудагы эң арзан ыкма. Бирок, алар сизге керектүү нерсенин баарына ээ боло албайт, кирпичтердин келиши үчүн бир нече жума же андан көп убакыт талап кылынышы мүмкүн.

Сиз ошондой эле Rebrickable колдоно аласыз: эсеп ачуу, LDD файлын жүктөө жана андан сатуучулардын тизмесин алуу.

Дагы бир жакшы булак - Bricklink.

3 -кадам: Роботту кыймылга келтирүүчү программа

Бардык код Python 2де жазылган.

  1. Dexter Industries EV3 моторлорун жылдырууну колдоо үчүн код менен камсыз кылат. Бул BrickPi3 менен келет.
  2. Мен моторлорду шахмат фигураларын жылдыра тургандай кылып кыймылдатуу үчүн кодду берем!
  3. Шахматтын мотору - Stockfish - ал бардык адамдарды жеңе алат! "Stockfish - дүйнөдөгү эң күчтүү шахмат кыймылдаткычтарынын бири. Ал ошондой эле эң мыкты адам шахмат гроссмейстерлеринен алда канча күчтүү".
  4. Шахмат кыймылдаткычын айдоонун коду, кыймылдын жарактуу экенин ырастоо жана башкалар ChessBoard.py
  5. Мен интерфейс үчүн https://chess.fortherapy.co.uk сайтынан кээ бир коддорду колдоном.
  6. Менин кодум (жогоруда 2де) анда интерфейс!

4 -кадам: Адамдын кыймылын таануу үчүн программа

Оюнчу өз кадамын жасагандан кийин, камера сүрөткө тартат. Шахмат тактасы кийинки сүрөткө дал келиши үчүн код муну эгилет жана айлантат. Шахмат тактасынын квадраттары төрт бурчтуу көрүнүшү керек !. Сүрөттө бурмалоо бар, анткени тактанын четтери тактанын ортосуна караганда камерадан алысыраак. Бирок, камера жетишерлик алыс болгондуктан, кесилгенден кийин, бул бурмалоо олуттуу болбойт. Робот компьютердин кыймылынан кийин бардык бөлүктөрдүн кайда экенин билет, демек, адам кыймыл кылгандан кийин жасалышы керек болгон нерсе, код төмөнкү үч учурдун айырмасын айта алат:

  • Бош аянт
  • Кандайдыр бир кара бөлүк
  • Ак түстөгү ар кандай түр.

Бул бардык учурларды камтыйт, анын ичинде кастинг жана өтүү.

Робот адамдын кыймылынын тууралыгын текшерет жана андай болбосо, аларга кабарлайт! Каралбаган жалгыз жагдай, адам оюнчусу ломбардды ханышага айландырбайт. Андан кийин оюнчу роботко эмне деп айтылганын айтып бериши керек.

Биз азыр образды шахмат тактасынын аянттары боюнча карай алабыз.

Баштапкы тактада биз ак жана кара бөлүктөрдүн кайда экенин жана бош квадраттар кайда экенин билебиз.

Бош квадраттардын ээлеген квадраттарына караганда түсү алда канча аз айырмаланат. Биз бардык пикселдер боюнча ар бир квадрат үчүн үч RGB түстөрдүн ар бири үчүн стандарттык четтөөнү эсептейбиз (аянттын чегине жакын болгондордон башка). Бош квадраттын максималдуу стандарттык четтөөсү, ээлеген квадраттын минималдуу стандарттык четтөөсүнөн бир топ аз, жана бул бизге кийинки оюнчу кыймылынан кийин кайсы квадраттар бош экенин аныктоого мүмкүндүк берет.

Бош жана ээленген квадраттардын босоголук маанисин аныктагандан кийин, азыр ээлеген квадраттар үчүн кесимдин түсүн аныктообуз керек:

Баштапкы тактада биз ар бир ак квадрат үчүн, ар бир R, G, B үчүн, анын пикселдеринин орточо (орточо) маанисин эсептейбиз (квадраттын чегине жакын жерден башка). Ар бир ак квадрат үчүн бул каражаттардын минимуму кара квадраттардын максимумунан чоңураак, ошондуктан биз ээлеген квадраттар үчүн кесимдин түсүн аныктай алабыз. Мурда да айтылгандай, бул адамдын оюнчусунун кадамы эмне болгонун аныктоо үчүн кылышыбыз керек болгон нерсе.

Алгоритмдер эң жакшы иштейт, эгер шахмат тактайында фигуралардын түсүнөн алысыраак түстө болсо! Менин роботумда фигуралар ак жана күрөң түстө, ал эми шахмат тактасы картада колго жасалган, жана ачык жашыл түстө, "кара" менен "ак" чарчылардын айырмасы жок.

Түзөтүү 17 Окт 2018: Мен азыр күрөң түстөгү бөлүктөрдү кара түскө боёгом, бул алгоритмдин өзгөрмөлүү жарык шартында иштешин шарттайт.

5 -кадам: Жарыктар, Камера, Аракет

Жарыктар

Тактайдын үстүнө бирдей жарык булагы керек. Мен муну amazon.co.uk сайтынан чындап эле арзан колдоном - жана amazon.comдо окшош нерсе бар экени шексиз. Бөлмөнүн жарыгы өчүп калганда.

Жаңыртуу: Менде азыр жарыктын бир калыптуу булагын берүү үчүн эки жарык бар

Камера

Албетте, сиз атайын Raspberry Pi камера модулун колдоно аласыз (узун кабель менен), бирок мен USB камерасын колдоном - "Logitech 960-001064 C525 HD веб -камерасы - Кара" - RPi менен иштейт. Камера тактага карата кыймылдабасын, мунараны куруу же аны бекем орнотуу үчүн бир жерге ээ болууңуз керек. Геометриялык бурмалоону азайтуу үчүн камера тактан бир топ жогору болушу керек. Менин камерам тактан 58 см жогору.

Жаңыртуу: Мен азыр HP Webcam HD 2300дү жакшы көрөм, анткени мен аны ишенимдүү деп эсептейм.

Таблица

Сизге бышык керек. Мен муну сатып алдым. Анын үстүнө менде MDF чарчы бар экенин көрө аласыз, анда троллейбус кыймылдап жатканда роботтун секирип кетүүсүн токтото турган нерселер бар. Камераны тактайдын үстүндө бир абалда кармоо жакшы идея!

Баскычтоп

RPiге биринчи орнотуу үчүн USB клавиатурасы керек. Мен муну кодду иштеп чыгуу үчүн колдоном. Роботко клавиатура керек болгон жалгыз нерсе - программаны баштоо жана шахмат саатына окшоштуруу. Мен булардын бирин алдым. Бирок, чынында, сизге чычкан же RPi менен туташкан GPIO баскычы гана керек

Дисплей

Мен өнүгүү үчүн чоң экранды колдоном, бирок роботко сиздин кыймылыңыздын жараксыз экенин, текшерүү ж.

Бирок дисплейди талап кылуунун ордуна, робот бул фразаларды сүйлөйт! Мен муну бул жерде айтылгандай кодду колдонуп текстти сүйлөөгө айландыруу жана кичине спикерди тиркөө аркылуу кылдым. (Мен "Гамбургер мини спикерин" колдоном).

Роботтун фразалары мындай дейт:

  • Текшерүү!
  • Checkmate
  • Жараксыз кыймыл
  • Сен жеңдиң!
  • Stalemate
  • Үч жолу кайталоо менен чийиңиз
  • 50 кыймыл эрежеси менен чийүү

Шахматтын элүү кадам эрежеси, эгер оюнчу акыркы элүү кыймылда эч кандай басып алынбаса жана эч кандай пешка жылдырылбаса, тең чыгууну талап кыла алат деп айтылат (бул үчүн "жылыш" кезегин аяктаган оюнчудан турат, андан кийин Каршы өз кезегин аяктады).

Сиз роботтун жогорудагы кыска "келесоо жолдошу" видеосунда сүйлөй турганын уга аласыз (эгер үнүңүздү бир топ бийикке бурсаңыз)!

6 -кадам: Программаны кантип алуу керек

1. Стокфиш

Эгерде сиз RPBиңизде Raspbian иштетсеңиз, Stockfish 7 кыймылдаткычын колдоно аласыз - бул бекер. Жөн эле чуркаңыз:

sudo apt-get stockfish орнотуу

2. ChessBoard.py

Муну бул жерден алыңыз.

3. https://chess.fortherapy.co.uk/home/a-wooden-chess… негизинде код

Менин кодум менен келет.

4. BrickPi3 үчүн Python драйверлери:

Буларды бул жерден алыңыз.

5. Жогорудагы бардык кодду чакырган жана роботту кыймылга келтирүүчү менин кодум жана менин көрүү кодум.

Муну комментарий калтыруу менен менден алыңыз, мен жооп берем.

Сунушталууда: