Სარჩევი:
- ნაბიჯი 1: რატომ გამოვიყენოთ ინერტული საზომი ერთეული?
- ნაბიჯი 2: როგორ გამოვიყენოთ BNO055 2D ლოკალიზაციისთვის?
- ნაბიჯი 3: აპარატურის წერტილი Vue
- ნაბიჯი 4: როგორ მუშაობს ის?
- ნაბიჯი 5: არქიტექტურა და პროგრამული უზრუნველყოფა
- ნაბიჯი 6: რა ვისწავლე?
ვიდეო: ინერტული საზომი ერთეულის გამოყენების გზა?: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:15
Კონტექსტი:
გასართობად ვაშენებ რობოტს, რომლითაც მინდა ავტონომიურად გადავიდე სახლის შიგნით.
ეს გრძელი სამუშაოა და მე ვაკეთებ ეტაპობრივად.
მე უკვე გამოვაქვეყნე 2 ინსტრუქცია ამ თემაზე:
- ერთი ბორბლის კოდირების დამზადების შესახებ
- ერთი wifi კავშირის შესახებ
ჩემს რობოტს მართავს 2 DC ძრავა, ჩემი სახლის ბორბლის კოდირების დახმარებით.
მე ამჟამად ვაუმჯობესებ მოძრაობის კონტროლს და გარკვეული დრო გავატარე გიროსკოპით, აქსელერომეტრით და IMU– ით. სიამოვნებით გაგიზიარებ ამ გამოცდილებას.
გსურთ გაიგოთ მეტი ლოკალიზაციის შესახებ? აქ არის სტატია, თუ როგორ უნდა გაერთიანდეს ხელოვნური ინტელექტი და ულტრაბგერითი რობოტის ლოკალიზება
ნაბიჯი 1: რატომ გამოვიყენოთ ინერტული საზომი ერთეული?
მაშ რატომ გამოვიყენე IMU?
პირველი მიზეზი ის იყო, რომ თუ ბორბლის კოდირება არის საკმარისად ზუსტი იმისათვის, რომ გააკონტროლოს სწორი მოძრაობა, დარეგულირების შემდეგაც კი, მე ვერ მივიღე სიზუსტე ბრუნვისთვის +- 5 დეგრაზე ნაკლები და ეს არ არის საკმარისი.
ამიტომ ვცადე 2 განსხვავებული სენსორი. პირველ რიგში ვიყენებ მაგნიტომეტრს (LSM303D). პრინციპი მარტივი იყო: როტაციის წინ მიიღეთ ჩრდილოეთის ორიენტაცია, გამოთვალეთ სამიზნე და შეცვალეთ ნაბიჯი მიზნის მიღწევამდე. ეს ოდნავ უკეთესი იყო, ვიდრე კოდირებით, მაგრამ ძალიან გაფანტული. ამის შემდეგ ვცადე გიროსკოპის გამოყენება (L3GD20). პრინციპი იყო მხოლოდ სენსორის მიერ მოწოდებული ბრუნვის სიჩქარის ინტეგრირება ბრუნვის გამოსათვლელად. და კარგად მუშაობდა. მე შევძელი როტაციის გაკონტროლება +- 1 გრადუსზე.
მიუხედავად ამისა, მე დავინტერესდი, რომ რაიმე IMU ვცადო. მე ვირჩევ BNO055 კომპონენტს. გარკვეული დრო გავატარე ამ IMU– ს გასაგებად და შესამოწმებლად. ბოლოს გადავწყვიტე ამ სენსორის არჩევა შემდეგი მიზეზების გამო
- მე შემიძლია გავაკონტროლო როტაცია, ისევე როგორც L3GD20
- მე შემიძლია გამოვავლინო უმნიშვნელო ბრუნვა პირდაპირ მოძრაობისას
- მე უნდა მივიღო ჩრდილოეთის ორიენტაცია რობოტის ლოკალიზაციისთვის და BNO055 კომპასის დაკალიბრება ძალიან მარტივია
ნაბიჯი 2: როგორ გამოვიყენოთ BNO055 2D ლოკალიზაციისთვის?
BNO055 IMU არის Bosch 9 ღერძი ინტელექტუალური სენსორი, რომელსაც შეუძლია აბსოლუტური ორიენტაციის უზრუნველყოფა.
მონაცემთა ცხრილში მოცემულია სრული დოკუმენტაცია. ეს არის მაღალტექნოლოგიური კომპონენტი, ეს არის საკმაოდ რთული პროდუქტი და რამდენიმე საათი გავატარე იმის შესასწავლად, თუ როგორ მუშაობს იგი და შევეცადე მისი გამოყენების სხვადასხვა ხერხი.
მე ვფიქრობ, რომ შეიძლება სასარგებლო იყოს ამ გამოცდილების გაზიარება.
პირველ რიგში გამოვიყენე ადაფრუტის ბიბლიოთეკა, რომელიც იძლევა კარგ ინსტრუმენტს სენსორის დაკალიბრებისა და აღმოსაჩენად.
დასასრულს და ბევრი ტესტის შემდეგ გადავწყვიტე
- გამოიყენეთ ადაფრუტის ბიბლიოთეკა მხოლოდ კალიბრაციის შესანახად
- გამოიყენეთ BNO055– ის ყველა შესაძლო რეჟიმიდან 3 (NDOF, IMU, Compss)
- დაუთმეთ არდუინო ნანოს BNO055 ზომების საფუძველზე ლოკალიზაციის გამოთვლა
ნაბიჯი 3: აპარატურის წერტილი Vue
BNO055 არის I2C კომპონენტი. ასე რომ, მას სჭირდება კვების ბლოკი, SDA და SCL კომუნიკაციისთვის.
უბრალოდ გაუფრთხილდით Vdd ძაბვას თქვენი შეძენილი პროდუქტის მიხედვით. Bosch ჩიპი მუშაობს დიაპაზონში: 2.4V დან 3.6V და თქვენ ნახავთ 3.3v და 5v კომპონენტს.
არ არსებობს სირთულეები ნანოსა და BNO055– თან დასაკავშირებლად.
- BNO055 იკვებება ნანოთი
- SDA & SCL დაკავშირებულია 2 x 2k გამყვანი რეზისტენტებით.
- 3 LED დაკავშირებული ნანოს დიაგნოზის დასადგენად (რეზისტენტებით)
- 2 კონექტორი გამოიყენება ჩატვირთვის შემდეგ რეჟიმის დასადგენად
- 1 კონექტორი BNO– სკენ (Gnd, Vdd, Sda, Scl, Int)
- 1 კონექტორი რობოტის/მეგას მიმართულებით (+9V, Gnd, sda, Scl, Pin11, Pin12)
ცოტაოდენი შედუღება და ეს არის!
ნაბიჯი 4: როგორ მუშაობს ის?
საკომუნიკაციო წერტილიდან:
- ნანო არის I2C ავტობუსის ოსტატი
- Robot/Mega და BNO055 არიან I2C მონები
- ნანომ მუდმივად წაიკითხა BNO055 რეგისტრები
- რობოტი/მეგა ამატებს ციფრულ სიგნალს, რომ მოითხოვოს სიტყვა ნანოდან
Vue გაანგარიშების ადგილიდან: ნანო BNO055- თან ერთად აწვდის
- კომპასის სათაური (გამოიყენება ლოკალიზაციისთვის)
- ნათესავი სათაური (გამოიყენება როტაციის გასაკონტროლებლად)
- აბსოლუტური სათაური და პოზიცია (გამოიყენება მოძრაობების გასაკონტროლებლად)
Vue ფუნქციური თვალსაზრისით: ნანო:
- მართავს BNO055 კალიბრაციას
- მართავს BNO055 პარამეტრებსა და ბრძანებებს
ქვესისტემა Nano & BNO055:
- თითოეული რობოტის ბორბლისთვის გამოთვალეთ აბსოლუტური სათაური და ლოკალიზაცია (მასშტაბის ფაქტორით)
- გამოთვალეთ შეფარდებითი სათაური რობოტის როტაციის დროს
ნაბიჯი 5: არქიტექტურა და პროგრამული უზრუნველყოფა
ძირითადი პროგრამული უზრუნველყოფა მუშაობს Arduino Nano– ზე
- არქიტექტურა ემყარება I2C კომუნიკაციას.
- მე შევარჩიე ნანოს მიძღვნა იმის გამო, რომ ატმეგა, რომელიც რობოტს მართავს, უკვე დატვირთული იყო და ეს არქიტექტურა სხვაგან ხმარებას უადვილებს.
- ნანო კითხულობს BNO055 რეგისტრებს, გამოთვლის და ინახავს სათაურს და ლოკალიზაციას საკუთარ რეესტრებში.
- Arduino Atmega, რომელიც მართავს რობოტის კოდს, აგზავნის ბორბლებს კოდირების ინფორმაციას ნანოში და კითხულობს სათაურებს და ლოკალიზაციას ნანოს რეესტრებში.
იქ არის ქვესისტემის (ნანო) კოდი აქ GitHub– ზე
ადაფრუტის დაკალიბრების ინსტრუმენტი თუ აქ GitHub– ზე (დაკალიბრება შეინახება eeproom– ში)
ნაბიჯი 6: რა ვისწავლე?
რაც შეეხება I2C- ს
პირველ რიგში შევეცადე მყავდეს 2 ოსტატი (არდუინო) და 1 მონა (სენსორი) ერთ ავტობუსში, მაგრამ ბოლოს შესაძლებელია და უადვილესი იყოს მხოლოდ ნანოს ოსტატი და გამოვიყენო GPIO კავშირი ორ არდუინოს შორის "ნიშნის მოთხოვნისათვის" რა
რაც შეეხება BNO055 2D ორიენტაციას
შემიძლია კონცენტრირება გავაკეთო 3 სხვადასხვა რეჟიმზე: NDOF (კომბინირება გიროსკოპი, ამაჩქარებელი და კომპასი) როდესაც რობოტი უმოქმედოა, IMU (გიროსკოპის კომბინირება, ამაჩქარებელი) რობოტის მოძრაობისას და კომპასი ლოკალიზაციის ფაზაში. ამ რეჟიმებს შორის გადართვა ადვილი და სწრაფია.
კოდის ზომის შესამცირებლად და შენახვის შესაძლებლობის შესანარჩუნებლად BNO055 შეწყვეტით, მირჩევნია არ გამოვიყენო ადაფრუტის ბიბლიოთეკა და გავაკეთო ეს დამოუკიდებლად.
გირჩევთ:
როგორ გადაამუშაოთ Android ტელეფონები BOINC ან დასაკეცი მოწყობილობისთვის ბატარეების გამოყენების გარეშე: 8 ნაბიჯი
როგორ გადაამუშაოთ Android ტელეფონები BOINC– ისთვის ან დასაკეცი მოწყობილობისთვის ბატარეების გამოყენების გარეშე: გაფრთხილება: მე არ ვარ პასუხისმგებელი თქვენს მოწყობილობაზე ამ სახელმძღვანელოს მიყენებული ნებისმიერი ზიანისათვის. ეს სახელმძღვანელო უფრო ეფექტურია BOINC მომხმარებლებისთვის (პირადი არჩევანი / მიზეზები), ის ასევე შეიძლება გამოყენებულ იქნას დასაკეციდ ვინაიდან მე არ მაქვს ძალიან ბევრი დრო, მინდა
დაამატეთ გამოყენების მონიტორი სახლის თერმოსტატს: 4 ნაბიჯი
დაამატეთ გამოყენების მონიტორი სახლის თერმოსტატს: დიდი ხნის წინ, დიდი ხნით ადრე, იყო ისეთი რამ, როგორიცაა " ჭკვიანი " თერმოსტატი, მე მქონდა სახლის თერმოსტატი, რომელიც ყოველდღიურად (მგონი - შესაძლოა ყოველკვირეულად) სულ " დროულად " ჩემი გათბობისა და კონდიცირების სისტემისთვის. რამე შეიცვალა … ლას
როგორ გააკეთოთ ერთეულის დამლაგებელი Minecraft– ში: 12 ნაბიჯი
როგორ გააკეთოთ ერთეულის დახარისხება Minecraft– ში: ეს არის 11 – საფეხურიანი გაკვეთილი, თუ როგორ უნდა გააკეთოთ ნივთების დასალაგებელი Minecraft– ში
საათის რადიოს განახლება - Bluetooth ერთეულის მორგება: 6 ნაბიჯი
საათის რადიოს განახლება-Bluetooth ერთეულის მორგება: ამ მოდიფიკაციის ორი ნაწილია, ერთი არის არსებული რადიო საათი და მეორე არის " ინტეგრირებული Bluetooth Hands-free MP3 დეკოდირების დაფა ZTV-M01BT Shell & დისტანციური მართვა " რომელსაც დასჭირდება დამატებითი აუდიო გამაძლიერებელი. საათი
HC - 06 (მონა მოდული) შეცვლის "NAME" გამოყენების გარეშე "მონიტორი სერიული Arduino" რომ "მუშაობს მარტივად": უნაკლო გზა!: 3 ნაბიჯი
HC - 06 (მონა მოდული) იცვლება "სახელი" გამოყენების გარეშე "მონიტორი სერიული არდუინო" … რომ "მუშაობს მარტივად": უნაკლო გზა!: შემდეგ " დიდხანს " ცდილობს შეცვალოს სახელი HC - 06 (მონა მოდული), გამოყენებით " Arduino– ს სერიული მონიტორი, " წარმატება ", მე ვიპოვე კიდევ ერთი მარტივი გზა და გაზიარების საშუალება მაქვს! გაერთეთ მეგობრებო