Სარჩევი:

თვითნასწავლი ქაოტური რობოტი: 3 ნაბიჯი
თვითნასწავლი ქაოტური რობოტი: 3 ნაბიჯი

ვიდეო: თვითნასწავლი ქაოტური რობოტი: 3 ნაბიჯი

ვიდეო: თვითნასწავლი ქაოტური რობოტი: 3 ნაბიჯი
ვიდეო: #დღემუზეუმში სალომე დადუნაშვილთან ერთად - მერაბ აბრამიშვილის გამოფენა 2024, ივლისი
Anonim
თვითნასწავლი ქაოტური რობოტი
თვითნასწავლი ქაოტური რობოტი

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

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

ნაბიჯი 1: აპარატურა AKA Robot

აპარატურა რობოტი
აპარატურა რობოტი
აპარატურა რობოტი
აპარატურა რობოტი
აპარატურა რობოტი
აპარატურა რობოტი

Შენ გჭირდება:

- 1 Arduino due

- 8 მიკროსერვო

- 1 PS/2 მაუსი

- 1 დონის შემცვლელი

- სენსორული ფარის ზოგიერთი ვარიანტი ან მსგავსი, დავიღალე სენსორული ფარისგან და შევიმუშავე საკუთარი.

-მავთულები

-გარე 5V კვების ბლოკი სერვოებისთვის

- რკინის ჯართის ნაჭრები, წებო და ფოლადის ძაფი. და ფირზე!

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

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

შეაერთეთ სერვისები დასაშვებ დონეს, ჩემს შემთხვევაში ისინი დაკავშირებულია D39, 41, 43, 45, 47, 49, 51, 53.

შეაერთეთ servos გარე 5V კვების ბლოკთან. ამისათვის ააშენეთ რაიმე სახის ფარი, ან გამოიყენეთ სენსორული ფარი ან მსგავსი. ნუ მიირთმევთ სერვისს 5V პინიდან, ეს არ არის საკმარისი, იმის გამო დაიწვება. მე გამოვიყენე პატარა პროტოტიპის დაფა, რომ 5 ვ ვანაწილო ყველა სერვისზე. ეს დაფა ასევე ფლობს დონის ცვლის PS/2 მაუსის საათს და მონაცემთა ხაზებს. დაფა ასევე კვებავს მაუსს 5V- ით. დაიმახსოვრე, დაუკავშირე მიწა გარე ენერგიიდან არდუინოს დანიშნულ ადგილზე! სქემა გვიჩვენებს, თუ როგორ უნდა დააკავშიროთ ეს ყველაფერი.

შეაერთეთ PS/2 დენს (5V) და მიწას. შეაერთეთ PS/2 – ის საათი და მონაცემთა ხაზი due– ს დონის გადამრთველის საშუალებით. (გამოდის 3.3V, PS/2 მიდის 5V). შეაერთეთ საათი D12– ზე და მონაცემები D13– ზე.

PS/2 პროტოკოლის დეტალებისთვის, ეს არის ძალიან კარგი ინსტრუქცია:

www.instructables.com/id/Optical-Mouse-Od…

PS/2 ბიბლიოთეკა jazzycamel– ით, რომელიც მე გამოვიყენე:

ნაბიჯი 2: კოდი

Კოდი
Კოდი

თავიდან ნება მომეცით ვთქვა: მე არ ვარ პროგრამისტი. ზოგიერთი ნაწილი არის ძალიან ვრცელი, გამოცდილი პროგრამისტს რა თქმა უნდა შეეძლო მისი შემცირება და ასე და ასე.

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

ეს ასევე ნიშნავს იმას, რომ თქვენ შეგიძლიათ გამოიყენოთ ეს კოდი თქვენი რობოტის გასაწვრთნელად სხვა რამის გაკეთება, სანამ ის იზომება და რობოტს დაუბრუნდება!

როგორც სურათებში ხედავთ, თაგვი გაყვანილია წვრილ კაბელზე. თავიდან ის გადაიტანეს მაუსის კაბელში. თუმცა, კაბელი საკმაოდ მკაცრია, ამიტომ რობოტმა ისწავლა თაგვის შერყევა, იმის ნაცვლად, რომ გადაათრია. შერყევამ წარმოშვა მაღალი ქულები…

კოდი იყენებს 50 ინდივიდს. ამის ბირთვი არის მასივი 50x50 ბაიტი.

ინდივიდი არის ბაიტების მასივი. როდესაც ინდივიდი გამოიყენება რობოტის გასაშვებად, ეს ინდივიდი იგზავნება ფუნქციაში კოდით სახელწოდებით "tolken".

გარბენის დასაწყისში არის 8 ცვლადი m1, m2, m3, m4, m5, m6, m7 და m8 (თითო თითოეულ სერვოზე). ამ რობოტში მათ აქვთ მუდმივი საწყისი მნიშვნელობები. "ტოლკენში" mś გარდაიქმნება საქმის/სვიჩის მარყუჟში, ინდივიდის ღირებულებების მიხედვით. მაგალითად "1" მნიშვნელობა ასრულებს შემდეგს: m1 = m1 + m2.

თუ ინდივიდი არის: 1, 2, 3, 0, 0, 0, 0….. მაშინ mś გარდაიქმნება შემდეგნაირად:

მ 1 = მ 1 + მ 2;

მ 1 = მ 1 + მ 3;

მ 1 = მ 1 + მ 4;

ტოლკენი არის 256 სხვადასხვა მათემატიკური ოპერაციის სია, ამიტომ ინდივიდუალური მასივის ყველა შესაძლო მნიშვნელობა წარმოადგენს m მნიშვნელობების მათემატიკურ ცვლილებას.

გადასახადის გაანგარიშება ხდება 4-ჯერ, ყოველ წრეებს შორის იკითხება, თითოეული ოთხი მეტრისთვის იქმნება ოთხი განსხვავებული საავტომობილო კოდი. საავტომობილო კოდები არის ის ღირებულებები, რომლებიც მოგვიანებით იგზავნება სერვისებზე.

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

თუ არცერთი ინდივიდი საერთოდ არ ასრულებს, ინდივიდების მუტაცია მოხდება ახლის წარმოქმნის მიზნით.

თქვენ შეგიძლიათ იპოვოთ კოდი GitHub– ზე:

ნაბიჯი 3: როგორ გავავარჯიშოთ ის?

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

მე ჩავდე რამდენიმე გამშვები პუნქტი კოდის შიგნით, რათა დავრწმუნდე, რომ რობოტი საწყის პოზიციაშია.

ასე რომ გაათანაბრეთ რობოტი და გაუშვით.

ის ამოწმებს 4 ინდივიდს და შემდეგ ირჩევს საუკეთესო 2 მშობელს. მას შემდეგ, რაც ყველაზე უარესი ჩვილით შეიცვალა, ის დაბეჭდავს მონაცემებს ინდივიდების მუშაობის შესახებ. იგი ასევე ბეჭდავს 50x50 მასივს. გონივრულია მისი გადაწერა Excel– ის ფურცელში ან მსგავსში. (ან დაწერეთ დამუშავების პროცესში საჭირო კოდი) თუ დროულად აღდგება (ეს ხდება სხვადასხვა მიზეზის გამო) თქვენ არ დაკარგავთ სასწავლო სამუშაოს. თქვენ შეგიძლიათ დააკოპიროთ/ჩასვათ მასივი კოდში და განაგრძოთ ვარჯიში, როცა დარჩით.

ჩემმა რობოტმა ისწავლა სეირნობა რამდენიმე საათის შემდეგ. ჩამოტვირთეთ ვიდეო, რომ ნახოთ, რომ ის დაისვენოს. ის არ წავიდა იმ მიმართულებით, როგორც მეგონა!

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

შესაძლო გაუმჯობესება:

1. უკეთესი იქნებოდა გქონდეთ ცალკე ნანო PS/2 თაგვის წასაკითხად და სერიულად გადატანილი მანძილი ნანოზე გაეგზავნათ. ჩემი PS/2 თაგვის კითხვა ოდნავ შეირყა. ეს არის მაუსის წაკითხვის/კოდის ნაწილების გაწმენდის მიზეზი.

2. ერთგვარი საცდელი მექანიზმი, რომელმაც რობოტი საწყის პოზიციაში დააბრუნა, დააჩქარებდა სწავლებას.

3. მე ვფიქრობ, რომ გონივრულია მისი ვარჯიში ცოტა ნელა, ვიდრე მე. ნელი ვარჯიში გვარწმუნებს, რომ ის არის მომზადებული "სწორი მიმართულებით". რამდენიმე ტესტის საშუალო შესრულება შეიძლება იყოს შესაძლო გზა.

გირჩევთ: