Სარჩევი:

ჭადრაკის რობოტი დამზადებულია LEGO და ჟოლოს პიით: 6 ნაბიჯი
ჭადრაკის რობოტი დამზადებულია LEGO და ჟოლოს პიით: 6 ნაბიჯი

ვიდეო: ჭადრაკის რობოტი დამზადებულია LEGO და ჟოლოს პიით: 6 ნაბიჯი

ვიდეო: ჭადრაკის რობოტი დამზადებულია LEGO და ჟოლოს პიით: 6 ნაბიჯი
ვიდეო: BİM AKTÜEL ÜRÜNLER | 06 OCAK 2023 CUMA 2024, ივლისი
Anonim
Image
Image

გააოცეთ თქვენი მეგობრები ამ საჭადრაკო რობოტით!

არც ისე რთულია მშენებლობა, თუ თქვენ უკვე შექმენით LEGO რობოტები და თუ გაქვთ მინიმუმ ელემენტარული ცოდნა კომპიუტერული პროგრამირებისა და Linux– ის შესახებ.

რობოტი აკეთებს საკუთარ ნაბიჯებს და იყენებს ვიზუალურ ამოცნობას ადამიანის მოთამაშის ნაბიჯის დასადგენად.

ამ რობოტში ერთ -ერთი ახალი რამ არის მოძრაობის ამოცნობის კოდი. ეს ხედვის კოდი ასევე გამოსაყენებელია ჭადრაკის რობოტებისთვის, რომლებიც აშენებულია მრავალი სხვა გზით (მაგალითად, ჩემი ChessRobot Lynxmotion რობოტული მკლავის გამოყენებით).

არ არის საჭირო საჭადრაკო დაფა, ლერწმის გადამრთველები ან სხვა რამ (ვინაიდან ადამიანის ნაბიჯი განისაზღვრება ვიზუალური აღიარებით).

ჩემი კოდი ხელმისაწვდომია პირადი სარგებლობისთვის.

ნაბიჯი 1: მოთხოვნები

განათება, კამერა, მოქმედება!
განათება, კამერა, მოქმედება!

ყველა კოდი დაწერილია პითონში, რომელიც სხვა საკითხებთან ერთად მუშაობს ჟოლოს პიზე.

Raspberry Pi არის საკრედიტო ბარათის ზომის კომპიუტერი, რომლის ჩართვა შესაძლებელია ეკრანზე და კლავიატურაზე. ეს არის იაფი (დაახლოებით $ 40), შეუძლია პატარა კომპიუტერი, რომელიც შეიძლება გამოყენებულ იქნას ელექტრონიკის პროექტებში და რობოტექნიკაში და ბევრი რამისთვის, რასაც თქვენი დესკტოპის კომპიუტერი აკეთებს.

ჩემი რობოტი იყენებს Raspberry Pi და Lego. RPi და Lego Mindstorms EV3 მოტორებსა და სენსორებს შორის აპარატურის ინტერფეისი უზრუნველყოფილია BrickPi3– ით Dexter Industries– დან.

ლეგოს აგება ემყარება "ჩარლი ჭადრაკის რობოტს", დარუს ჰადის მიერ, ჩემ მიერ მოდიფიცირებული, მათ შორის RPi– ს გამოყენების მოდემით, ვიდრე Lego Mindstorms პროცესორით. გამოიყენება Lego Mindstorms EV3 ძრავები და სენსორები.

თქვენ ასევე დაგჭირდებათ მაგიდა, კამერა, განათება, კლავიატურა, ეკრანი და საჩვენებელი მოწყობილობა (მაგ. მაუსი).

და რა თქმა უნდა, ჭადრაკის ფიგურები და დაფა.

ამ ყველაფერს უფრო დეტალურად აღვწერ მომდევნო ნაბიჯებში.

ნაბიჯი 2: აპარატურის შექმნა

Image
Image

როგორც უკვე აღვნიშნე, ხედვის კოდის გული იმუშავებს სხვადასხვა ნაგებობებით.

მე დავამყარე ჩემი რობოტი დარუს ჰადის "ჩარლი ჭადრაკის რობოტი" (EV3 ვერსია), ამ გვერდზე განთავსებული ინფორმაცია ამბობს, თუ როგორ უნდა მივიღოთ მშენებლობის ინსტრუქცია. ნაწილების სია აქ არის.

რობოტი შევცვალე რამდენიმე გზით.

1. დამტაცებელი. ეს არ გამომივიდა. გადაცემათა სრიალი, ასე რომ მე დავამატე დამატებითი ლეგოს ცალი ამის თავიდან ასაცილებლად. შემდეგ კი, როდესაც ამწე დაიწია, ის ხშირად იჭერებოდა, ამიტომ ამის თავიდან ასაცილებლად დავამატე ვატის კავშირი.

ზემოთ არის მტაცებელი, რომელიც აჩვენებს შეცვლილ კავშირს.

2. ორიგინალური აღნაგობა იყენებს Lego Mindstorms EV3 პროცესორს, მაგრამ მე ვიყენებ Raspberry Pi- ს, რაც აადვილებს პითონის გამოყენებას.

3. მე ვიყენებ Raspberry Pi 3 Model B- ს.

4. RPi– ს ლეგოსთან დასაკავშირებლად, მე ვიყენებ BrickPi3– ს Dexter Industries– დან. BrickPi ერთვის Raspberry Pi- ს და ერთად ისინი ცვლის LEGO Mindstorms NXT ან EV3 Brick.

როდესაც თქვენ გაქვთ Lego ციფრული დიზაინერის ფაილი, მაშინ ჩნდება კითხვა, რომ მიიღოთ LEGO ნაწილები. თქვენ შეგიძლიათ აგური მიიღოთ პირდაპირ LEGO მაღაზიიდან და ეს არის მათი მოპოვების ყველაზე იაფი გზა. თუმცა, მათ არ ექნებათ ყველაფერი რაც თქვენ გჭირდებათ და აგურის ჩამოსვლას შეიძლება რამდენიმე კვირა ან მეტი დასჭირდეს.

თქვენ ასევე შეგიძლიათ გამოიყენოთ Rebrickable: გახსენით ანგარიში, ატვირთეთ LDD ფაილი და აქედან მიიღეთ გამყიდველების სია.

კიდევ ერთი კარგი წყაროა Bricklink.

ნაბიჯი 3: პროგრამული უზრუნველყოფა, რომელიც რობოტს მოძრაობს

ყველა კოდი ჩაწერილია პითონში 2.

  1. Dexter Industries აწვდის კოდს EV3 ძრავების გადაადგილების მხარდასაჭერად და ა.შ. ამას გააჩნია BrickPi3.
  2. მე ვაძლევ კოდს, რომ ძრავები მოძრაობდეს ისე, რომ ჭადრაკის ფიგურები გადაადგილდეს!
  3. ჭადრაკის ძრავა არის Stockfish - რომელსაც შეუძლია ნებისმიერი ადამიანის დამარცხება! "სტოკ თევზი არის ერთ -ერთი უძლიერესი საჭადრაკო ძრავა მსოფლიოში. ის ასევე ბევრად ძლიერია, ვიდრე ჭადრაკის საუკეთესო ოსტატები."
  4. საჭადრაკო ძრავის მართვის კოდი, გადამოწმება, რომ ნაბიჯი სწორია და ასე შემდეგ ChessBoard.py
  5. მე ვიყენებ კოდს https://chess.fortherapy.co.uk– დან ამის დასაკავშირებლად.
  6. ჩემი კოდი (ზემოთ 2 -ში) შემდეგ ინტერფეისით ამას!

ნაბიჯი 4: ადამიანის მოძრაობის ამოცნობის პროგრამული უზრუნველყოფა

მას შემდეგ, რაც მოთამაშემ გადადგა ნაბიჯი, კამერა იღებს ფოტოს. კოდი ამუშავებს და ბრუნავს ისე, რომ ჭადრაკის დაფა ზუსტად შეესაბამება მომდევნო სურათს. ჭადრაკის დაფის კვადრატები უნდა გამოიყურებოდეს კვადრატად !. გამოსახულება არის დამახინჯებული, რადგან დაფის კიდეები უფრო შორს არის კამერიდან, ვიდრე დაფის ცენტრი. თუმცა, კამერა საკმაოდ შორს არის ისე, რომ მოჭრის შემდეგ ეს დამახინჯება არ არის მნიშვნელოვანი. იმის გამო, რომ რობოტმა იცის, სად არის ყველა ნაწილი კომპიუტერის გადაადგილების შემდეგ, მაშინ ყველაფერი რაც უნდა გაკეთდეს მას შემდეგ, რაც ადამიანი გადადის, არის ის, რომ კოდმა შეძლოს განასხვავოს შემდეგი სამი შემთხვევა:

  • ცარიელი მოედანი
  • ნებისმიერი სახის შავი ნაჭერი
  • ნებისმიერი სახის თეთრი ნაჭერი.

ეს მოიცავს ყველა შემთხვევას, მათ შორის castling და en passant.

რობოტი ამოწმებს, რომ ადამიანის ნაბიჯი სწორია და აცნობებს მათ, თუ ეს ასე არ არის! ერთადერთი შემთხვევა, რომელიც არ არის გაშუქებული არის ის, როდესაც ადამიანი მოთამაშეს ხელს უწყობს პაიკს არა-დედოფლად. მოთამაშემ უნდა უთხრას რობოტს რა არის დაწინაურებული ნაჭერი.

ახლა ჩვენ შეგვიძლია განვიხილოთ სურათი ჭადრაკის დაფის კვადრატების თვალსაზრისით.

დაფის საწყის შემადგენლობაში ჩვენ ვიცით სად არის ყველა თეთრი და შავი ნაწილი და სად არის ცარიელი კვადრატი.

ცარიელ კვადრატებს აქვთ გაცილებით ნაკლები ცვალებადობა, ვიდრე დაკავებული კვადრატები. ჩვენ გამოვთვლით სტანდარტულ გადახრას თითოეული 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 კლავიატურა მისი პირველი კონფიგურაციისთვის. და ამას ვიყენებ კოდის შემუშავებისთვის. რობოტს კლავიატურა სჭირდება მხოლოდ პროგრამის დაწყება და ჭადრაკის საათის დარტყმის სიმულაცია. მე მივიღე ერთი მათგანი. სინამდვილეში, თქვენ გჭირდებათ მხოლოდ მაუსი ან ღილაკი GPIO, რომელიც დაკავშირებულია RPi– სთან

ჩვენება

მე ვიყენებ დიდ ეკრანს განვითარებისათვის, მაგრამ ერთადერთი რაც რობოტს სჭირდება არის გითხრათ რომ თქვენი ნაბიჯი არასწორია, შეამოწმეთ და ა.შ. მე მივიღე ერთი მათგანი, ასევე ხელმისაწვდომია amazon.com– ზე.

ვიდრე ჩვენების მოთხოვნით, რობოტი იტყვის ამ ფრაზებს! მე ეს გავაკეთე ტექსტით მეტყველებად გადაქცევით აქ აღწერილი კოდის გამოყენებით და დავამაგრე პატარა სპიკერი. (მე ვიყენებ "ჰამბურგერის მინი დინამიკს").

ფრაზები რობოტი ამბობს:

  • Ჩეკი!
  • გამშვები
  • არასწორი ნაბიჯი
  • Შენ მოიგე!
  • ჩიხი
  • დახაზეთ სამჯერ გამეორებით
  • დახაზეთ 50 სვლის წესით

ჭადრაკში ორმოცდაათი ნაბიჯის წესი აცხადებს, რომ მოთამაშეს შეუძლია მოითხოვოს ფრე, თუ ბოლო 50-ჯერ არ მოხდა ტყვედ ჩავარდნა და სალომბარდე არ არის გადატანილი (ამ მიზნით "სვლა" შედგება მოთამაშისაგან, რომელიც ასრულებს თავის რიგს, რასაც მოჰყვება მოწინააღმდეგე ასრულებს თავის რიგს).

თქვენ შეგიძლიათ მოუსმინოთ რობოტს, რომელიც ლაპარაკობს ზემოთ "სულელის მეგობრის" ვიდეოზე (თუ ხმას საკმაოდ მაღლა აიმაღლებთ)!

ნაბიჯი 6: როგორ მივიღოთ პროგრამული უზრუნველყოფა

1. თევზის თევზი

თუ Raspbian– ს აწარმოებთ თქვენს RPi– ზე, შეგიძლიათ გამოიყენოთ Stockfish 7 ძრავა - ის უფასოა. Უბრალოდ გაიქეცი:

sudo apt-get დააინსტალირეთ stockfish

2. ChessBoard.py

მიიღეთ ეს აქ.

3. კოდი დაფუძნებულია

მოყვება ჩემი კოდი.

4. პითონის დრაივერები BrickPi3– ისთვის:

მიიღეთ ეს აქ.

5. ჩემი კოდი, რომელიც მოიხსენიებს ყველა კოდს ზემოთ და რომელიც აიძულებს რობოტს განახორციელოს მოძრაობები და ჩემი ხედვის კოდი.

მიიღეთ ეს ჩემგან კომენტარის გამოქვეყნებით და მე გიპასუხებთ.

გირჩევთ: