Სარჩევი:

Roomba Scout Explorer: 8 ნაბიჯი
Roomba Scout Explorer: 8 ნაბიჯი

ვიდეო: Roomba Scout Explorer: 8 ნაბიჯი

ვიდეო: Roomba Scout Explorer: 8 ნაბიჯი
ვიდეო: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, ივლისი
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

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

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

ნაბიჯი 1: აღჭურვილობა

-რუმბა w/ მიმაგრებული კამერით (ცნობილია კონკრეტული სახელი)

-დაკავშირებული სერვერი

-Windows 10 / Mac ინტერნეტით

-ბრწყინვალე პლატფორმა

-მუქი სართული

-მონოქრომატული დიზაინის ნებისმიერი მაწანწალა ობიექტი

ნაბიჯი 2: MATLAB დაყენება

MATLAB დაყენება
MATLAB დაყენება

იმისათვის, რომ შექმნათ ამოცანები და ფუნქციები თქვენი ოთახისთვის, თქვენ უნდა გქონდეთ კონკრეტული კოდები და ინსტრუმენტარიუმები, რომლებიც შეიცავს roomba ბრძანებებს.

MATLAB 2016 ა და შემდგომ გადმოწერილი, შექმენით საქაღალდე, რომ შეიცავდეს ამ რობოტ ფაილებს და ჩადეთ შემდეგი MATLAB ფაილი ქვემოთ საქაღალდეში და გაუშვით, რომ დააინსტალიროთ დარჩენილი საჭირო ოთახის ფაილები.

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

ახლა, გამოიყენეთ ქვემოთ მოცემული ბრძანება ბრძანების ფანჯარაში, რომ შექმნათ roomba:

r = roomba (#).

სიმბოლო # არის მითითებული ოთახის ნომერი; თუმცა, თუ თქვენ უბრალოდ გსურთ ოთახის სიმულატორი, უბრალოდ ჩაწერეთ შემდეგი ბრძანება:

r = roomba (0).

სიმულაცია რეკომენდებულია მოძრაობის ნიმუშების შესამოწმებლად.

თუ გაინტერესებთ რა ბრძანებებს შეუძლია შეასრულოს roomba, ბრძანების ფანჯარაში ჩაწერეთ შემდეგი:

დოქ რუმბა.

უფრო დეტალური ინფორმაციისთვის ეწვიეთ შემდეგ ვებგვერდს:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

ნაბიჯი 3: ფუნქცია: მოძრაობა

ფუნქცია: მოძრაობა
ფუნქცია: მოძრაობა
ფუნქცია: მოძრაობა
ფუნქცია: მოძრაობა

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

-ზიანის შესამცირებლად, რობოტმა უნდა შეამციროს სიჩქარე უფრო დაბალ სიჩქარეზე.

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

-რამდენიმე დროის გასვლის შემდეგ, roomba საბოლოოდ გაჩერდება და გადაიღებს მიმდებარე ტერიტორიას

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

ნაბიჯი 4: ფუნქცია: სურათის დამუშავება

ფუნქცია: სურათის დამუშავება
ფუნქცია: სურათის დამუშავება

მოთხოვნისამებრ, ჩვენ გვქონდა დავალება შეცვალოთ რობოტის კამერის მიერ მიღებული სურათის (ან რამდენიმე სურათის) მონაცემები, რისთვისაც ჩვენ გადავწყვიტეთ, რომ roomba- მ „დაითვალოს“იმ ობიექტების რაოდენობა, რასაც ის ხედავს სურათზე.

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

გაითვალისწინეთ, რომ ეს ფუნქცია არ მუშაობს სიმულატორში, ვინაიდან კამერა არ არის გათვალისწინებული; მცდელობის შემთხვევაში მოხდება შეცდომა და გამოცხადდება მხოლოდ (:,:, 3) მატრიცის გამოყენება.

ნაბიჯი 5: ფუნქცია: რუქა

ფუნქცია: რუქა
ფუნქცია: რუქა
ფუნქცია: რუქა
ფუნქცია: რუქა
ფუნქცია: რუქა
ფუნქცია: რუქა
ფუნქცია: რუქა
ფუნქცია: რუქა

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

ფუნქციის ხანგრძლივობის ხანგრძლივობაზე ლიმიტის დამატების მიზნით, n <20 ლიმიტი while მარყუჟზე გამოიყენებოდა ტესტირების მიზნით.

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

ნაბიჯი 6: შედარება

შეპირისპირება
შეპირისპირება
შეპირისპირება
შეპირისპირება
შეპირისპირება
შეპირისპირება
შეპირისპირება
შეპირისპირება

ვინაიდან ეს ყველაფერი განთავსდება ერთ ფაილში, ჩვენ შევქმენით ფუნქცია წინა ორი ნაბიჯის თითოეული ქვეფუნქციის გამოყენებით. საბოლოო პროექტი შედგენილია რედუქსის ფუნქციის შემდეგი მოდიფიკაციით, სახელწოდებით "ხელახლა". MATLAB– ის დაბნეულობის თავიდან ასაცილებლად, „მრიცხველს“და „rombplot3“სკრიპტებს დაარქვეს, როგორც ჩამონტაჟებული ფუნქციები „CountR“და „plotr“, შესაბამისად.

რამდენიმე ცვლილება უნდა განხორციელებულიყო საბოლოო ვერსიაში წინა სკრიპტებისგან განსხვავებით:

-წარმოშობა ყოველთვის აღინიშნება წითელი წრით

-ყოველთვის, როცა ოთახის ბუდეები ჩერდება, ადგილმდებარეობა აღინიშნება შავი წრით

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

-ყოველთვის, როდესაც რუმბა წყვეტს ტერიტორიის შესწავლას, ადგილი აღინიშნება მწვანე წრით

-სურათები შეცვლილია ისე, რომ ზედა ნაწილი ამოღებულია დროის ბეჭდის გამო, რომელიც პოტენციურად ერევა შედეგებში

საზღვრები არ ჩაითვლება ობიექტად შეძენილი საკმაოდ დიდი რიცხვის გამო

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

ნაბიჯი 7: ტესტირება

ტესტირება
ტესტირება

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

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

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

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

ნაბიჯი 8: დასკვნა

დასკვნა
დასკვნა

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

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

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

გირჩევთ: