İçindekiler:
- Adım 1: Gereksinimler
- 2. Adım: Donanım Yapısı
- Adım 3: Robotu Hareket Ettiren Yazılım
- Adım 4: İnsanın Hareketini Tanıma Yazılımı
- Adım 5: Işıklar, Kamera, Eylem
- Adım 6: Yazılım Nasıl Edinilir
Video: LEGO ve Raspberry Pi ile Yapılmış Satranç Robotu: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bu satranç robotuyla arkadaşlarınızı şaşırtın!
Daha önce LEGO robotları yaptıysanız ve en azından temel düzeyde bilgisayar programlama ve Linux bilgisine sahipseniz, inşa etmek çok zor değil.
Robot kendi hareketlerini yapar ve insan oyuncunun hareketini belirlemek için görsel tanıma kullanır.
Bu robottaki yeni şeylerden biri, hareket tanıma kodudur. Bu görüntü kodu, diğer birçok şekilde oluşturulmuş satranç robotları için de kullanılabilir (örneğin, Lynxmotion robotik kolunu kullanan ChessRobot'um gibi).
Özel bir satranç tahtası, saz anahtarı veya herhangi bir şey gerekmez (insanın hareketi görsel tanıma ile belirlenir).
Kodum kişisel kullanım için kullanılabilir.
Adım 1: Gereksinimler
Tüm kod, diğer şeylerin yanı sıra bir Raspberry Pi üzerinde çalışacak olan Python'da yazılmıştır.
Raspberry Pi, ekrana ve klavyeye takılabilen kredi kartı boyutunda bir bilgisayardır. Elektronik projelerde ve robotikte ve masaüstü bilgisayarınızın yaptığı birçok şey için kullanılabilecek ucuz (yaklaşık 40 $), yetenekli küçük bir bilgisayardır.
Robotum bir Ahududu Pi ve Lego kullanıyor. RPi ve Lego Mindstorms EV3 motorları ve sensörleri arasındaki donanım arayüzü, Dexter Industries'den BrickPi3 tarafından sağlanmaktadır.
Lego yapısı, Lego Mindstorms işlemcisi yerine bir RPI kullanmak için modlar da dahil olmak üzere, benim tarafımdan değiştirilen Darrous Hadi'nin "Charlie the Chess Robot" a dayanmaktadır. Lego Mindstorms EV3 motorları ve sensörleri kullanılmaktadır.
Ayrıca bir masaya, kameraya, aydınlatmaya, klavyeye, ekrana ve işaretleme aygıtına (örneğin fare) ihtiyacınız olacak.
Ve tabii ki, satranç taşları ve bir tahta.
Tüm bunları sonraki adımlarda daha ayrıntılı olarak açıklayacağım.
2. Adım: Donanım Yapısı
Daha önce belirttiğim gibi, vizyon kodunun kalbi çeşitli yapılarla çalışacak.
Robotumu Darrous Hadi'nin "Charlie the Chess Robot" (EV3 versiyonu) üzerine kurdum, o sayfadaki bilgiler yapım talimatlarının nasıl alınacağını söylüyor. Parça listesi burada.
Robotu birkaç şekilde değiştirdim.
1. kapmak. Bu benim için işe yaramadı. Dişliler kaydı, ben de bunu önlemek için ek Lego parçaları ekledim. Ve sonra vinç indirildiğinde genellikle sıkışıyordu, bu yüzden bunu önlemek için bir Watt'ın bağlantısı ekledim.
Yukarıda, değiştirilmiş bağlantıyı gösteren kapmak hareket halindedir.
2. Orijinal yapı Lego Mindstorms EV3 işlemciyi kullanıyor, ancak Python'u kullanmayı kolaylaştıran bir Raspberry Pi kullanıyorum.
3. Raspberry Pi 3 Model B kullanıyorum.
4. RPi'yi Lego'ya bağlamak için Dexter Industries'den BrickPi3 kullanıyorum. BrickPi, Raspberry Pi'ye bağlanır ve birlikte LEGO Mindstorms NXT veya EV3 Brick'in yerini alır.
Lego Digital Designer dosyasına sahip olduğunuzda, o zaman LEGO parçalarını alma meselesi var. Tuğlaları doğrudan LEGO mağazasından temin edebilirsiniz ve bu, onları elde etmenin en ucuz yoludur. Ancak, ihtiyacınız olan her şeye sahip olmayacaklar ve tuğlaların gelmesi birkaç hafta veya daha uzun sürebilir.
Rebrickable'ı da kullanabilirsiniz: bir hesap açın, LDD dosyasını yükleyin ve bundan satıcı listesini alın.
Bir başka iyi kaynak da Bricklink.
Adım 3: Robotu Hareket Ettiren Yazılım
Tüm kod Python 2'de yazılmıştır.
- Dexter Industries, EV3 motorlarının vb. hareket ettirilmesini desteklemek için kod sağlar. Bu, BrickPi3 ile birlikte gelir.
- Motorları satranç taşlarını hareket ettirecek şekilde hareket ettirmek için kodu veriyorum!
- Satranç motoru Stockish - her insanı yenebilir! "Stockfish dünyanın en güçlü satranç motorlarından biridir. Aynı zamanda en iyi insan satranç ustalarından çok daha güçlüdür."
- Satranç motorunu çalıştıran, bir hamlenin geçerli olduğunu doğrulayan kod ChessBoard.py'dir.
- Bununla arayüz oluşturmak için https://chess.fortherapy.co.uk adresinden bazı kodlar kullanıyorum.
- Kodum (yukarıda 2'de) daha sonra bununla arayüz oluşturur!
Adım 4: İnsanın Hareketini Tanıma Yazılımı
Oyuncu hamlesini yaptıktan sonra kamera bir fotoğraf çeker. Kod, satranç tahtasının sonraki görüntüye tam olarak uyması için bunu kırpar ve döndürür. Satranç tahtası kareleri kare görünmelidir!. Tahtanın kenarları, kameranın merkezinden daha uzakta olduğu için görüntüde bozulma var. Ancak, kamera yeterince uzakta olduğundan, kırptıktan sonra bu bozulma önemli değildir. Robot, bilgisayar hareket ettikten sonra tüm parçaların nerede olduğunu bildiği için, insan bir hamle yaptıktan sonra yapılması gereken tek şey, kodun aşağıdaki üç durum arasındaki farkı söyleyebilmesidir:
- Boş bir kare
- Herhangi bir siyah parça
- Herhangi bir beyaz parça.
Bu, rok ve en passant dahil tüm durumları kapsar.
Robot, insanın hareketinin doğru olup olmadığını kontrol eder ve yanlışsa onları bilgilendirir! Kapsanmayan tek durum, insan oyuncunun bir piyonu vezir olmayana terfi ettirdiği durumdur. Oyuncu daha sonra robota terfi edilen parçanın ne olduğunu söylemelidir.
Şimdi görüntüyü satranç tahtası kareleri olarak düşünebiliriz.
İlk tahta kurulumunda tüm beyaz ve siyah parçaların nerede olduğunu ve boş karelerin nerede olduğunu biliyoruz.
Boş kareler, dolu karelere göre çok daha az renk çeşitliliğine sahiptir. Her kare için tüm pikselleri boyunca (karenin sınırlarına yakın olanlar dışında) üç RGB renginin her biri için standart sapmayı hesaplıyoruz. Herhangi bir boş kare için maksimum standart sapma, dolu herhangi bir kare için minimum standart sapmadan çok daha azdır ve bu, sonraki bir oyuncu hamlesinden sonra hangi karelerin boş olduğunu belirlememizi sağlar.
Boş ve dolu kareler için eşik değerini belirledikten sonra, şimdi dolu kareler için parça rengini belirlememiz gerekiyor:
İlk tahtada her beyaz kare için, R, G, B'nin her biri için piksellerinin ortalama (ortalama) değerini (karenin sınırlarına yakın olanlar dışında) hesaplarız. Herhangi bir beyaz kare için bu ortalamaların minimumu, herhangi bir siyah karedeki araçların maksimumundan daha büyüktür ve böylece dolu kareler için parça rengini belirleyebiliriz. Daha önce de belirtildiği gibi, insan oyuncunun hamlesinin ne olduğunu belirlemek için yapmamız gereken tek şey bu.
Satranç tahtasının rengi, taşların renginden çok uzaksa, algoritmalar en iyi sonucu verir! Robotumda, parçalar kirli beyaz ve kahverengidir ve satranç tahtası karttan el yapımıdır ve "siyah" ve "beyaz" kareler arasında çok az fark olan açık yeşildir.
Edit 17 Ekim 2018: Algoritmanın daha değişken aydınlatma koşullarında çalışmasını sağlayan kahverengi parçaları mat siyaha boyadım.
Adım 5: Işıklar, Kamera, Eylem
Işıklar
Tahtanın üzerine yerleştirilmiş eşit bir ışık kaynağına ihtiyacınız var. Ben amazon.co.uk'den gerçekten ucuz olan bunu kullanıyorum - ve şüphesiz amazon.com'da benzer bir şey var. Oda ışıkları kapalıyken.
Güncelleme: Artık daha eşit bir ışık kaynağı sağlamak için iki ışığım var
Kamera
Hiç şüphe yok ki özel Raspberry Pi kamera modülünü (uzun bir kablo ile) kullanabilirsiniz, ancak ben RPi ile çalışan bir USB kamera - "Logitech 960-001064 C525 HD Webcam - Black" - kullanıyorum. Bir kule inşa ederek veya sağlam bir şekilde sabitleyecek bir yere sahip olarak kameranın tahtaya göre hareket etmemesini sağlamalısınız. Geometrik bozulmayı azaltmak için kameranın panonun oldukça üzerinde olması gerekir. Fotoğraf makinem tahtanın 58 cm yukarısında.
Güncelleme: Artık daha güvenilir bulduğum için HP Webcam HD 2300'ü tercih ediyorum.
Tablo
Sağlam birine ihtiyacın var. Bunu aldım. Bunun üzerine, araba hareket ettiğinde robotun zıplamasını durdurmak için bazı şeylerle birlikte bir kare MDF'ye sahip olduğumu görebilirsiniz. Kamerayı tahta üzerinde aynı konumda tutmak iyi bir fikirdir!
Tuş takımı
RPi'nin ilk kurulumu için bir USB klavyeye ihtiyacı vardır. Ve bunu kodu geliştirmek için kullanıyorum. Robotun klavyeye ihtiyacı olan tek şey programı başlatmak ve satranç saatini vurmayı simüle etmektir. Bunlardan birini aldım. Ama gerçekten, yalnızca RPi'ye bağlı bir fareye veya GPIO'ya bağlı bir düğmeye ihtiyacınız var
Görüntülemek
Geliştirme için büyük bir ekran kullanıyorum, ancak robotun ihtiyaç duyduğu tek şey hareketinizin geçersiz olduğunu, kontrol edin vb.
Ancak bir gösterime ihtiyaç duymak yerine, robot bu cümleleri söyleyecek! Bunu, burada açıklandığı gibi kodu kullanarak metni konuşmaya dönüştürerek ve küçük bir hoparlör ekleyerek yaptım. ("Hamburger mini hoparlörü" kullanıyorum).
Robotun söylediği ifadeler:
- Kontrol etmek!
- Şah Mat
- Geçersiz hareket
- Kazandın!
- çıkmaz
- Üç kat tekrarla çizin
- 50 hamle kuralıyla beraberlik
Satrançtaki elli hamle kuralı, bir oyuncunun son elli hamlede hiçbir piyon hareket ettirilmediği ve ele geçirilmediği takdirde beraberlik talep edebileceğini belirtir (bu amaçla bir "hamle", sırasını tamamlayan bir oyuncunun ardından Rakip sırasını tamamlıyor).
Yukarıdaki kısa "aptalın arkadaşı" videosunda robotun konuşmasını duyabilirsiniz (sesini oldukça açarsanız)!
Adım 6: Yazılım Nasıl Edinilir
1. Stok balığı
Raspbian'ı RPi'nizde çalıştırırsanız Stockish 7 motorunu kullanabilirsiniz - ücretsizdir. Sadece koş:
sudo apt-get install stockfish
2. ChessBoard.py
Bunu buradan al.
3. Kod
Kodumla birlikte geliyor.
4. BrickPi3 için Python sürücüleri:
Bunları buradan alın.
5. Yukarıdaki tüm kodları çağıran ve robotun hamle yapmasını sağlayan kodum ve görüntü kodum.
Bir yorum göndererek bunu benden alın, ben de cevap vereceğim.
Önerilen:
Satranç Robotu Raspberry Pi Lynxmotion AL5D Kolu: 6 Adım
Satranç Robotu Raspberry Pi Lynxmotion AL5D Kol: Bu satranç robotunu yapın ve herkesi yendiğini görün! Kolun nasıl oluşturulacağına dair talimatları takip edebiliyorsanız ve en azından temel bilgisayar programlama ve Linux bilgisine sahipseniz, inşa etmek oldukça kolaydır. . Beyaz oynayan insan,
Akıllı Çalar Saat: Raspberry Pi İle Yapılmış Akıllı Çalar Saat: 10 Adımda (Resimlerle)
Akıllı Çalar Saat: Raspberry Pi ile Yapılan Akıllı Çalar Saat: Hiç akıllı saat istediniz mi? Eğer öyleyse tam size göre bir çözüm! Akıllı Çalar Saat yaptım, siteye göre alarm saatini değiştirebileceğiniz bir saat bu. Alarm çaldığında bir ses (buzzer) duyulacak ve 2 ışık yanacaktır
Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin: 5 Adım
Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin: Gençliğimden beri çok fazla satranç oynuyorum ve web'de bilgisayarlara veya canlı rakiplere karşı satranç oynamak için çok sayıda web sitesi bulunduğundan, bir kez bile bir web sitesi bulamadım. gerçekte oynadığınız satranç oyununuzu takip eden
Elektronik Satranç Tahtasının 4x4 Demosu/ Arduino Mega + RFID Okuyucu + Hall Etkisi Sensörleri ile: 7 Adım
4x4 Elektronik Satranç Tahtası Demosu/ Arduino Mega + RFID Okuyucu + Hall-etki Sensörleri ile: Merhaba yapımcılar, ben Tahir Miriyev, Orta Doğu Teknik Üniversitesi, Ankara / Türkiye 2018 mezunuyum. Uygulamalı Matematik alanında uzmanlaştım, ancak özellikle elektronik, tasarım ve programlama ile ilgili bazı el işleri söz konusu olduğunda, bir şeyler yapmayı her zaman sevdim
Müzikli Menora (Arduino ile Yapılmış): 13 Adım (Resimli)
Müzikal Menorah (Arduino ile yapıldı): Hanuka çok yakında geliyor! Bu yüzden tatille ilgili bir proje yapmanın harika bir fikir olacağını düşündüm. Bu harika Chanukah Menorah'ı, düğmeye basarak geceyi her değiştirdiğinizde farklı bir şarkı çalan bir Arduino ile yaptım. LED'ler