პროექტის საბოლოო სახე შემდეგ ნაირად გამოიყურება:
Category: Uncategorized
გაუმჯობესება გეგმაში
წარუმატებელი protothreading-ის შემდეგ გადავწყვიტეთ Zilean-ის ქონსტრუქციის მცირედი ცვლილება, რომლეიც გააუმჯობესებდა მის მოძრაობას სივრცეში. 4 ულტრასონიკის მაგივრად ვიყენებთ 2-ს. ერთი იქნება პასუხისმგებელი, რომ დისტანცია დაიცვას მომხმარებლისგან, ხოლო მეორე დამაგრებულია სერვო ძრავზე და წინ დაბრკოლების დანახვისას მოხვევამდე ეძებს თუ რომელ მხარს აქვს ყველაზე მეტი მანძილი წასასვლელად.
დღეს ამ ტიპის კონსტრუქციისთვის დავწერეთ კოდი, რათა გაგვეტესტა და რამდენიმე წარუმატებელი გაშვების შემდეგ დავწერეთ ოპტიმალური კოდი რომელიც ჩვენთვის ყველაზე მისაღებად ამოძრავებდა ჩვენს რობოტს.
Protothreading
ჩვენი შემდეგი მიზანი იყო ჩვენი დროდისთვის გამართული კოდის დაწერა. სწორედ ამიტომ ვცადეთ ე.წ. protothredaing – რომელიც საშულებას გვაძლევს კოდის რამდენიმე ფრაგმენტი პარალელურად გავუშვათ. არდუინოს აქვს მხოლოდ ერთი ბირთვი, ამის გამო არდუინოზე ზუსტად ერთდროულად კოდის ფრაგმნეტების გაშვება შეუძლებელია. თუმცა სწორედ proto აღნიშნავს იმას, რომ ეს მხოლოდ “მიბაძვა” ამისა. კოდის სხვადასხვა ფრაგმენტს სხვადასხვა დროის მონავეთს დაუთმობს. მიუხედავად იმისა რომ ეს არ არის multithreading, კოდის დაწერისთვისა და მისი ოპტიმიზაციისთვის კარგი ხერხია.
სწორედ ამის საშუალებით გავაუმჯობესეთ კოდი. თავიდან ბიბლიოთეკასთან დაკავშირებული პრობლემების გამო შეცდომებს აგდებდა, თუმცა ესეც გამოვასწორეთ.
შემდეგში შევეცდებით კოდის გაუმჯობესებას და მოქმედებაშიც ვნახავთ.
გაუმჯობესებული მოძრაობა
ჩვენმა Zilean-მა, როგორც უკვე ვთქვით მოძრაობა დაიწყო და სხვადასხვა დაბრკოლებებისთვის თავის არიდება უკვე შეეძლო, თუმცა ბევრსაც ვერ ართმევდა თავს. ამიტომ გადავწყვიტეთ გაგვეუმჯობესებინა ჩვენი კოდი და მოძრაობის ტექნიკები. ეს შევძლებით ულტრასონიკებისთვის უკვე მზა ბიბლიოთეკის გამოყენებით, სახელად NewPing. ეს ბიბლიოთეკა ზუსტად ამ მანძილის სენსორზეა მორგებული. იგი უფრო ეფექტურად და დალაგებულად ამუშავებს მათ.
ამ ბიბლიოთეკის გამოყენებისა და კოდის გაუმჯობესების შემდეგ ჩვენი დროიდი უკეთ ამოძრავდა. ძველ მოძრაობსთან შედარებთ ბევრად მეტ დაბრკოლებას აარიდა თავი და ბევრად რთული სიტუაციებიდან გამოძვრა. სწორედ ეს იყო ჩვენი მიზანიც. თუმცა მცირედ გაუმჯობესებებს საჭიროებს და ამასაც გამოვასწორებთ.
შემდეგი სესიისთვის გეგმაში გვაქვს უკვე ეკრანების დამაგრება და დროის მოდულით საათის გამართვა, რისი საშუალებითაც დროიდს ექნება მაღვიძარის ფუნქცია.
სივრცეში ორიენტაცია
დღევანდელი დღისთვის დაგეგმილი გვქონდა Zilean-ისთვის ელემენტარული მოძრაობების სწავლება, როგორიცაა დანახვის შედეგად “გაქცევა”, მიხვევ-მოხვევა და სხვა.
პირველ რიგში ჩვენი დროიდის კორპუსზე დავამაგრეთ 4 ცალი ულტრასონიკი, ერთი ცალი თითო მხარეს, რათა ყველა მხარეს ჰქონოდა ხედვის არეალი. ერთ-ერთი მხარე, როგორც დავგეგმეთ, გამიზნულია ე.წ. “მსხვერპლის” აღმოსაჩენად, რათა შემდეგი მისი საპირისპირო მიმართულებით გაიქცეს.
დარჩენილი 3 მხარე განკუთვნილი იყო მოძრაობისთვის, რომელიც, ამ ეტაპზე, ელემენტარული კოდით დავაპროგრამეთ და ავტვირთეთ არდუინოზე. თავდაპირველად კოდის მუშაობი სხარისხსის ვამოწმებით უბრალოდ წყაროზე შეერთებით და ბორბლების ტრიალის სიჩქარეზე დაკვირვებით. როდესაც ჩავთვალეთ, რომ კოდი შეძლების და გვარად გამართული იყო, Zilean-ი უკვე ნამდვილ და მკაცრ გარემოში გავუშვით.
რამდენიმე მძიმე გამოცდის შემდეგ ჩვენი მოლოდინები ნაწილობრივ გამართლდა. პატარა დროიდმა რამდენიმე დაბრკოლებისთვის თავის არიდების პრობლემას საკმაოდ გაართვა თავი, მიუხედავად იმისა, რომ წარუმატებელი ცდებიც იყო :).
შემდეგი სესიითვის დაგეგმილი გვაქს მოძრაობის ოპტიმიზაცია და ამ პატარა უზუსტობების გამოსწორება. მომავალ შეხვედრამდე ;).
Zilean-ის პირველი ნაბიჯები
დღეს დავიწყეთ პროექტზე მუშაობა და შევქმენით პირველი
პროტოტიპი მოძრაობისთვის. გამოვიყენეთ 4 DC მოტორი და motor
driver-ი რომლის საშუალებით ვცადეთ პლათფორმის დაძვრა.
პლათფორმა შედგება 4 ბორბლისგან თავდაპიველად ვცადეთ
პირველი ორის ამოძრავება, თუმცა უშედეგოდ, რადგან უკანა ორმა
ბორბალმა ვერ მოახერხა წინა ორი ბორბლის დაძვრა. ამის შემდეგ
წინა ორი DC მოტორიც ჩავრთეთ მაგრამ პოლარობები აგვერია და
ერთ-ერთი ბორბალი უკუღმა დატრიალდა. ეს ბაგი მალევე
აღმოვფხარით.
შემდეგი სესიისთვის გეგმაში გვაქვს მთავარ პრობლემაზე
მუშაობა(დაბრკოლებებისთვის თავის არიდება).
პროექტის შესრულების გეგმა
ჩვენ პროექტზე მუშაობის დაწყება გვინდა შევიმუშავოთ გეგმა რომლის მიხედვითაც შევეცდებით მივაღწიოთ სასურველ შედეგებს. ჩვენი გეგმა მდგომარეობს შემდეგში:
1) სემესტრის მე-12 კვირის ბოლოს დასრულებული უნდა
გვქონდეს DC ძრავებით პლათფორმის ამოძრავებაზე
მუშაობა.
2) მე-13 კვირის ბოლოსთვის დროიდს უკვე უნდა შეეძლოს
ულტრასონიკების მეშვეობით სივრცეში
დაბრკოლებებისთვის თავის არიდება.
3) მე-14 კვირა – წინა პუნქტის ოპტიმიზაცია thread-ების
მეშვეობით, რათა ბოტმა უფრო ბუნებრივად იმოძრაოს
გარემოში.
4) მე-15 კვირას დავუთმობთ დარჩენილი ფუნქციების
გამართვას, როგორიცაა მაღვიძარის ფუნქციონალის გამართვა,
ეკრანების ამუშავება და სხვა.
5) მე-16 კვირა დაეთმობა მთლიანი ბოტის ტესტირებას,
რეალურ სამუშაო გარემოში.
სწორედ ამ გეგმას შევეცდებით მივყვეთ, დავხვეწოთ ჩვენი პროექტი და მივიყვანოთ საბოლოო სახემდე.
პროექტის მოკლე მიმოხილვა
პროექტის მიზანია ემსახუროს ადამიანის კეთილდღეობას. კერძოდ კი მისი მთავარი ფუნქცია იქნება იყოს მაღვიძარა. ეს იქნება პატარა დროიდი(AlarmBot), რომელსაც შეეძლება მოძრაობა.
ჩვეულებრივ მაღვიძარისგან განსხვავებით მას მოძრაობა შეუძლია. აქედან გამომდინარე, როცა გაღვიძების დრო მოვა, მას ჩაერთვება გაქცევის ფუნქცია. როდესაც იგი რეკვას დაიწყებს, მომხმარებელი მის გამოსართავად წავა და მიახლოების შემთხვევაში დროიდი, სახელად Zilean, გაიქცევა რათა გაგირთულოს გამორთვის პროცესი :). ეს იქნება ლოგინიდან წამოდგომის მიზეზი, იმის ნაცვლად, რომ ტელეფონზე ე.წ. “სნუზ” ფუნქცია გამოიყენო ;).
ამგვარად, ამ პროექტის დანიშნულებაა დაეხმაროს ადამიანს დაგემილი დღის სწორად რეალიზაციაში. თუმცა ამ პროექტისგან უნდა ველოდოთ დამატებით ფუნქციებსაც, რომელსაც შემდეგ პოსტში აღვწერთ, როგორც ამ პროექტის გეგმას. ამ პროექტზე მუშაობს ორკაციანი ჯგუფი – გიორგი ობგაიძე და ლუკა ცირეკიძე.
The Journey Begins
Thanks for joining me!
Good company in a journey makes the way seem shorter. — Izaak Walton


