Სარჩევი:

MATLAB კონტროლირებადი Roomba: 5 ნაბიჯი
MATLAB კონტროლირებადი Roomba: 5 ნაბიჯი

ვიდეო: MATLAB კონტროლირებადი Roomba: 5 ნაბიჯი

ვიდეო: MATLAB კონტროლირებადი Roomba: 5 ნაბიჯი
ვიდეო: Remote Control Helicopter With Gravity Sensor unboxing and testing 2024, ივლისი
Anonim
MATLAB კონტროლირებადი Roomba
MATLAB კონტროლირებადი Roomba
MATLAB კონტროლირებადი Roomba
MATLAB კონტროლირებადი Roomba

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

ნაბიჯი 1: ნაწილები და მასალები

ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები
ნაწილები და მასალები

MATLAB 2018 ა

-MATLAB– ის 2018 წლის ვერსია არის ყველაზე სასურველი ვერსია, ძირითადად იმიტომ, რომ ის საუკეთესოდ მუშაობს კოდთან, რომელიც უკავშირდება მობილურ მოწყობილობას. ამასთან, ჩვენი კოდის უმეტესობის ინტერპრეტაცია შესაძლებელია MATLAB ვერსიების უმეტესობაში.

iRobot მოწყობილობის შექმნა

-ეს მოწყობილობა არის სპეციალური მოწყობილობა, რომლის ერთადერთი დანიშნულებაა პროგრამირება და კოდირება. (ეს არ არის ნამდვილი ვაკუუმი)

ჟოლო პი (კამერით)

- ეს არის ძვირადღირებული კომპიუტერის დაფა, რომელიც მუშაობს როგორც iRobot- ის ტვინი. ეს შეიძლება იყოს პატარა, მაგრამ შეუძლია ბევრი რამის გაკეთება. კამერა არის დამატებითი დანამატი. იგი ასევე იყენებს ჟოლოს pi ყველა მისი ფუნქციების და ბრძანებების მისაღებად. ზემოთ გამოსახული კამერა დამონტაჟებულია 3D დაბეჭდილ სტენდზე, შექმნილი ტენესის უნივერსიტეტის საინჟინრო საფუძვლების განყოფილებების მიერ

ნაბიჯი 2: Roomba მონაცემთა ბაზის ფაილი

Roomba მონაცემთა ბაზის ფაილი
Roomba მონაცემთა ბაზის ფაილი

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

შეგიძლიათ ჩამოტვირთოთ ფაილი ამ ბმულზე ან გადმოსაწერი ფაილი ქვემოთ

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

ნაბიჯი 3: რუმბასთან დაკავშირება

პირველ რიგში, თქვენ უნდა დარწმუნდეთ, რომ თქვენი რობოტი დაკავშირებულია თქვენს ჟოლოს დაფაზე მიკრო USB დანამატის გამოყენებით. შემდეგ თქვენ უნდა სწორად დააკავშიროთ თქვენი კომპიუტერი და რობოტი იმავე WiFi- ს. ამის დასრულების შემდეგ, თქვენ შეგიძლიათ ჩართოთ თქვენი რობოტი და დაუკავშირდეთ მას რობოტის მონაცემთა ბაზის ფაილში მოცემული ბრძანების გამოყენებით. (ყოველთვის ძნელი გადატვირთეთ თქვენი რობოტი გამოყენებამდე და მის შემდეგ). მაგალითად, ჩვენ ვიყენებთ ბრძანებას "r.roomba (19)" ჩვენს რობოტთან დასაკავშირებლად და ვანიჭებთ ცვლადს r ჩვენს მოწყობილობას. ეს ეხება მონაცემთა ბაზის ფაილს, რომელიც ქმნის ჩვენს ცვლადს, როგორც სტრუქტურას, რომლის მითითებაც ჩვენ შეგვიძლია ნებისმიერ მომენტში.

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

Კოდი
Კოდი
Კოდი
Კოდი

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

ჩვენ დავიწყეთ მარტივი ბრძანებით "r.setDriveVelocity (.06)", რომელიც ადგენს რობოტის წინსვლის სიჩქარეს.06 მ/წმ. ეს მხოლოდ იმისთვისაა, რომ რობოტი წინასწარ მოძრაობდეს

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

ხოლო true % while loop მიდის მანამ, სანამ რაღაც „ყალბი“არ მოხდება (ამ შემთხვევაში ის უსასრულოდ გრძელდება) მონაცემები = r.getCliffSensors; data2 = r.getBumpers; % იღებს მუდმივად მონაცემებს კლდის სენსორის მნიშვნელობების შესახებ და ანიჭებს მათ ცვლადს % img = r.getImage; იღებს სურათს დამონტაჟებული კამერიდან % image (img); % აჩვენებს გადაღებულ სურათს % red_mean = საშუალო (საშუალო (img (:,,, 1))); % იღებს საშუალო მნიშვნელობას მწვანე ფერისთვის data.rightFront <2000 r.turnAngle (-2); % აქცევს Roomba- ს დაახლოებით.2 გრადუს CW მას შემდეგ, რაც მარჯვენა წინა კლდის სენსორების ღირებულება 2000 რ. ქვემოთ ჩამოდის. setDriveVelocity (.05); elseif data.leftFront data.leftFront && 2000> data.rightFront r.moveDistance (.1); % ეუბნება Roomba- ს გააგრძელოს წინსვლა დაახლოებით.2 მ/წმ, თუ ორივე წინა და მარცხენა წინა სენსორების მნიშვნელობები 2000 % r.turnAngle (0) ქვემოთ ჩამოდის; % ეუბნება Roomba- ს, არ გადაუხვიოს თუ ზემოთ ჩამოთვლილი პირობები მართალია

elseif data2.right == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05); elseif data2.left == 1 r.moveDistance (-. 2); r.turnAngle (5); r.setDriveVelocity (.05); elseif data2.front == 1 r.moveDistance (-. 12); r.turnAngle (160); r.setDriveVelocity (.05);

ამ მარყუჟის შემდეგ, ჩვენ შევდივართ სხვა მარყუჟში, რომელიც იწვევს კამერის საშუალებით მიღებულ მონაცემებს. ჩვენ ვიყენებთ if განცხადებას ამ მარყუჟის შიგნით, რომელიც ამოიცნობს სურათს კონკრეტული პროგრამის (alexnet) გამოყენებით და სურათის იდენტიფიცირებისთანავე მაშინვე ააქტიურებს მობილურ მოწყობილობას დისტანციურ მართვას

anet = alexnet; % ანიჭებს alexnet ღრმა სწავლებას ცვლადი, ხოლო ჭეშმარიტი % Infinite while loop img = r.getImage; img = imresize (img, [227, 227]); label = კლასიფიკაცია (anet, img); თუ ეტიკეტი == "ქაღალდის პირსახოცი" || label == "მაცივარი" label = "წყალი"; დასასრულის სურათი (img); სათაური (სიმბოლო (ეტიკეტი)); დახატვა;

While მარყუჟი, რომელიც საშუალებას გვაძლევს გავაკონტროლოთ მოწყობილობა ჩვენი ტელეფონით, ვიღებთ მონაცემებს ტელეფონის გიროსკოპიდან და ვამაგრებთ მას მატრიცაში, რომელიც უწყვეტ რეჟიმში გადასცემს მონაცემებს კომპიუტერში MATLAB- ში. ჩვენ ვიყენებთ if განცხადებას, რომელიც კითხულობს მატრიცის მონაცემებს და იძლევა გამომავალს, რომელიც მოძრაობს მოწყობილობაზე ტელეფონის გიროსკოპის გარკვეული მნიშვნელობების საფუძველზე. მნიშვნელოვანია ვიცოდეთ, რომ ჩვენ გამოვიყენეთ მობილური მოწყობილობის ორიენტაციის სენსორები. სამივე ზემოთ ხსენებული მატრიცა კატეგორიზებულია ტელეფონის ორიენტაციის სენსორების თითოეული ელემენტის მიხედვით, რაც არის აზიმუტი, სიმაღლე და გვერდი. თუ დებულებებმა შექმნეს პირობები, სადაც ნათქვამია, როდესაც მხარე აღემატება 50 მნიშვნელობებს ან ეცემა ქვემოთ -50, მაშინ რობოტი მოძრაობს გარკვეულ მანძილზე წინ (დადებითი 50) ან უკან (უარყოფითი 50). და იგივე ეხება მოედნის ღირებულებას. თუ საფეხურის ღირებულება აღემატება 25 – ის ქვემოთ დაცემას 25 – ზე დაბლა, რობოტი ბრუნავს 1 გრადუსიანი კუთხით (დადებითი 25) ან უარყოფითი 1 გრადუსით (უარყოფითი 25)

ხოლო ჭეშმარიტი პაუზა (.1) %. პაუზა.5 წამი თითოეული მნიშვნელობის მიღებამდე Controller = iphone. Orientation; % ანიჭებს მატრიცას iPhone- ის ორიენტაციის მნიშვნელობებზე ცვლადი Azimuthal = Controller (1); % ანიჭებს მატრიცის პირველ მნიშვნელობას ცვლად Pitch = Controller (2); % ანიჭებს მატრიცის მეორე მნიშვნელობას ცვლადზე (იხრება წინ და უკან, როდესაც iPhone გვერდითაა გამართული) გვერდი = კონტროლერი (3); % მიანიჭებს მატრიცის მესამე მნიშვნელობას ცვლადზე (დახრილობა მარცხნივ და მარჯვნივ, როდესაც iPhone ინახება გვერდულად) % იწვევს გამომუშავებას ტელეფონის ორიენტაციის საფუძველზე, თუ გვერდი> 130 || მხარე 25 r.move დისტანცია (-. 1) % გადააქვს Roomba უკან დაახლოებით.1 მეტრი თუ iPhone დაიხრება უკან მინიმუმ 25 degress სხვა მხრივ დახრილია მინიმუმ 25 გრადუსი სხვაგვარად < / b> <25 r. turnAngle (1) % გადააქვს Roomba დაახლოებით 1 გრადუსი CW თუ iPhone დახრილია მინიმუმ 25 გრადუსი ბოლომდე

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

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

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

გირჩევთ: