Სარჩევი:
- ნაბიჯი 1: ავტომობილის აწყობა
- ნაბიჯი 2: ძრავების დამონტაჟება
- ნაბიჯი 3: Vivado ბლოკის დიზაინის შექმნა
- ნაბიჯი 4: ურთიერთობა LiDAR– თან
- ნაბიჯი 5: დაბრკოლებების ქსელის შევსება
- ნაბიჯი 6: ურთიერთობა მოტორებთან
- ნაბიჯი 7: გზის დაგეგმვა
ვიდეო: ავტონომიური მანქანა: 7 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
ეს პროექტი არის ავტონომიურად ნავიგაციის რობოტი, რომელიც ცდილობს მიაღწიოს მიზნის პოზიციას, ხოლო თავიდან აიცილოს დაბრკოლებები გზაზე. რობოტი აღჭურვილი იქნება LiDAR სენსორით, რომელიც გამოყენებული იქნება მის შემოგარენში საგნების გამოსაკვლევად. როდესაც ობიექტები გამოვლენილია და რობოტი მოძრაობს, რეალურ დროში რუკა განახლდება. რუკა გამოყენებული იქნება იდენტიფიცირებული დაბრკოლებების ადგილმდებარეობის შესანახად. ამ გზით, რობოტი არ შეეცდება ხელახლა სცადოს მიზნის პოზიციისკენ წარუმატებელი გზა. ამის ნაცვლად ის შეეცდება ბილიკებს, რომლებსაც ან არ აქვთ დაბრკოლებები ან ბილიკები, რომლებიც ჯერ კიდევ არ არის შემოწმებული დაბრკოლებებზე.
რობოტი გადაადგილდება ორი DC ძრავით და ორი ბორბლით. ძრავები მიმაგრებული იქნება წრიული პლატფორმის ბოლოში. ძრავებს გააკონტროლებს ორი ძრავის მძღოლი. ძრავის მძღოლები მიიღებენ PWM ბრძანებებს Zynq პროცესორისგან. თითოეული ძრავის კოდირება გამოიყენება მანქანების პოზიციისა და ორიენტაციის თვალყურის დევნისთვის. მთელი სისტემა იკვებება LiPo ბატარეით.
ნაბიჯი 1: ავტომობილის აწყობა
რობოტი იკვებება ორი ძრავით, რომლებიც მიმაგრებულია გვერდით ბორბლებზე და შემდეგ დამატებით უჭერს მხარს ორ ბორბალს, ერთი წინა და მეორე უკანა. პლატფორმა და ძრავის საყრდენები დამზადებულია ალუმინის ფურცლისგან. შეძენილია საავტომობილო კერა ბორბლების ძრავაზე მიმაგრებისთვის. თუმცა, საჭირო იყო საბაჟო შუალედური წყვილი, რადგან კერას ხვრელი განსხვავებული იყო ბორბლის ხვრელისგან.
არჩეული ძრავა იყო Port Escap 12V DC ძრავა ჩაშენებული კოდირებით. ამ ძრავის შეძენა შესაძლებელია ebay– ზე ძალიან გონივრულ ფასად (იხ. მასალების ბილეთი). მოძებნეთ საკვანძო სიტყვები "12V Escap 16 Coreless Geared DC Motor with Encoders" ebay ძრავის საპოვნელად. ჩვეულებრივ, გამყიდველების სამართლიანი რაოდენობაა ასარჩევად. ძრავების მახასიათებლები და პინუტები ნაჩვენებია ქვემოთ მოცემულ დიაგრამაში.
რობოტის შეკრება დაიწყო შასის CAD მოდელური დიზაინით. ქვემოთ მოყვანილი მოდელი აჩვენებს შასისათვის განკუთვნილი 2D ფორმის პროფილის ზედა ხედს.
ვარაუდობენ, რომ შასი უნდა იყოს დაპროექტებული როგორც 2Dprofile, რათა მისი ადვილად წარმოება მოხდეს. ჩვენ დავჭრათ ალუმინის 12”X12” ფურცელი შასის ფორმაში წყლის ჭავლის საჭრელის გამოყენებით. შასის პლატფორმა ასევე შეიძლება გაჭრილიყო ბენდის ხერხით.
ნაბიჯი 2: ძრავების დამონტაჟება
შემდეგი ნაბიჯი არის ძრავის დამონტაჟების გაკეთება. ვარაუდობენ, რომ ძრავის სამაგრები დამზადებული უნდა იყოს 90 გრადუსიანი ლითონის ალუმინისგან. ამ ნაწილის გამოყენებით, ძრავა შეიძლება მიმაგრდეს კონსოლი ფურცლის ლითონის ერთ სახეზე ორის გამოყენებით
ძრავისა და მეორე სახის M2 ხვრელები შეიძლება დაიხუროს პლატფორმაზე. ძრავის საყრდენში ხვრელები უნდა იყოს გაბურღული ისე, რომ ხრახნები შეიძლება გამოყენებულ იქნას ძრავის საყრდენზე და ძრავის დასაყრდენზე პლატფორმაზე დასაფიქსირებლად. ძრავის დამონტაჟება ჩანს ზემოთ მოცემულ ფიგურაში.
შემდეგ პოლოუს საავტომობილო კერა (იხ. მასალების ბილიკი) მოთავსებულია ძრავის ლილვზე და იჭიმება მითითებული ხრახნითა და ალენის სამაგრებით. Pololu საავტომობილო ცენტრის ხვრელის ნიმუში არ ემთხვევა VEX ბორბლის ხვრელის ნიმუშს, ამიტომ უნდა გაკეთდეს ინდივიდუალური შუალედური წყვილი. ვარაუდობენ, რომ ჯართის ფურცელი ალუმინი, რომელიც გამოიყენება შასის პლატფორმის დასამზადებლად, გამოიყენება შესაკრავის დასამზადებლად. ამ წყვილის ხვრელის ნიმუში და ზომები ნაჩვენებია ქვემოთ მოცემულ ფიგურაში. ალუმინის საბურავის გარე დიამეტრი და ფორმა (არ უნდა იყოს წრე) არ აქვს მნიშვნელობა, სანამ ყველა ხვრელი ჯდება ნაწილზე.
ნაბიჯი 3: Vivado ბლოკის დიზაინის შექმნა
- დაიწყეთ ახალი Vivado პროექტის შექმნით და შეარჩიეთ Zybo Zynq 7000 Z010, როგორც სამიზნე მოწყობილობა.
- შემდეგი დააწკაპუნეთ ახალი ბლოკის დიზაინის შექმნაზე და დაამატეთ Zynq IP. ორჯერ დააწკაპუნეთ Zynq IP– ზე და შემოიტანეთ Zynq– ისთვის მოწოდებული XPS პარამეტრები. შემდეგ ჩართეთ UART0 MIO 10..11 MIO კონფიგურაციის ჩანართში და ასევე დარწმუნდით, რომ ტაიმერი 0 და Watchdog ტაიმერი ჩართულია.
- დაამატეთ ორი AXI GPIOS ბლოკის დიზაინს. GPIO 0– სთვის ჩართეთ ორმაგი არხი და დააყენეთ ორივე ყველა გამოსასვლელზე. დააყენეთ GPIO სიგანე არხი 1 -დან 4 ბიტამდე და არხი 2 -დან 12 ბიტამდე, ეს არხები გამოყენებული იქნება ძრავის მიმართულების დასადგენად და პროცესორისთვის კოდირების ზომების რაოდენობის გასაგზავნად. GPIO 1 -ისთვის დააყენეთ მხოლოდ ერთი არხი ყველა შეყვანისთვის, რომლის არხის სიგანე 4 ბიტია. ეს გამოყენებული იქნება კოდირების მონაცემების მისაღებად. ყველა GPIO პორტი გარეგანი გახადეთ.
- შემდეგი დაამატეთ ორი AXI ტაიმერი. გააკეთეთ pwm0 პორტები ორივე ტაიმერზე გარედან. ეს იქნება pwms, რომლებიც აკონტროლებენ ძრავების ბრუნვის სიჩქარეს.
- საბოლოოდ გაუშვით ბლოკის ავტომატიზაცია და კავშირის ავტომატიზაცია. დარწმუნდით, რომ თქვენ გაქვთ ბლოკის დიზაინი, რომელიც მოწოდებულია.
ნაბიჯი 4: ურთიერთობა LiDAR– თან
ეს LiDAR იყენებს SCIP 2.0 პროტოკოლს UART– თან კომუნიკაციისთვის, თანდართული ფაილი აღწერს მთელ პროტოკოლს.
LiDAR– თან დასაკავშირებლად ჩვენ ვიყენებთ UART0– ს. LiDAR აბრუნებს 682 მონაცემთა წერტილს, თითოეული წარმოადგენს მანძილს ობიექტთან ამ კუთხით. LiDAR სკანირებს საათის ისრის მიმართულებით -30 გრადუსიდან 210 გრადუსამდე, საფეხურით 0.351 გრადუსი.
- LiDAR– თან ყველა კომუნიკაცია ხდება ASCI სიმბოლოებით, მიმართეთ SCIP პროტოკოლს გამოყენებული ფორმატისთვის. ჩვენ ვიწყებთ QT ბრძანების გაგზავნით LiDAR- ის ჩასართავად. შემდეგ ჩვენ რამდენჯერმე ვაგზავნით GS ბრძანებას, რომელიც ითხოვს ერთდროულად 18 მონაცემთა წერტილს UARTS 64 ბაიტ FIFO– ში. LiDAR– დან დაბრუნებული მონაცემები შემდეგ გაანალიზებულია და ინახება SCANdata გლობალურ მასივში.
- თითოეული შენახული მონაცემთა წერტილი არის 2 ბაიტი დაშიფრული მონაცემები. ამ მონაცემების დეკოდერში გადატანა დააბრუნებს მანძილს მილიმეტრებში.
Main_av.c ფაილში ნახავთ შემდეგ ფუნქციებს LiDAR– თან დასაკავშირებლად
sendLIDARcmd (ბრძანება)
- ეს გაუგზავნის შეყვანის სტრიქონს LiDAR– ს UART0– ის საშუალებით
recvLIDAR მონაცემები ()
- ეს მიიღებს მონაცემებს მას შემდეგ, რაც ბრძანება გაიგზავნება LiDAR– ში და შეინახავს მონაცემებს RECBuffer– ში
requestDistanceData ()
- ეს ფუნქცია გამოგიგზავნით ბრძანებების სერიას, რომ მიიღოთ 682 მონაცემთა წერტილი. მას შემდეგ რაც თითოეული მონაცემთა ნაკრები მიიღება 18 parseLIDARinput () იძახება მონაცემების გასაანალიზებლად და თანდათანობით ინახავს მონაცემთა წერტილებს SCANdata– ში.
ნაბიჯი 5: დაბრკოლებების ქსელის შევსება
GRID, რომელიც ინახება არის 2D მასივი, თითოეული ინდექსის მნიშვნელობით წარმოადგენს ადგილს. თითოეულ ინდექსში შენახული მონაცემები არის 0 ან 1, შესაბამისად არანაირი დაბრკოლება და დაბრკოლება. კვადრატული მანძილი მილიმეტრებში, რომელსაც თითოეული ინდექსი წარმოადგენს, შეიძლება შეიცვალოს GRID_SCALE განმარტებით, მანქანაში.ჰ ფაილში. 2D მასივის ზომა ასევე შეიძლება შეიცვალოს, რათა მანქანამ შეძლოს უფრო დიდი ფართობის სკანირება GRID_SIZE განსაზღვრების შეცვლით.
მას შემდეგ, რაც მონაცემების ახალი ნაკრები დასკანერდება LiDAR– დან updateGrid () იწოდება. ეს გაიმეორებს SCAN მონაცემთა მასივში შენახულ მონაცემთა თითოეულ წერტილს, რათა დადგინდეს, რომელი ქსელის ინდექსებს აქვთ დაბრკოლებები. ავტომობილის ამჟამინდელი ორიენტაციის გამოყენებით ჩვენ შეგვიძლია განვსაზღვროთ კუთხე, რომელიც შეესაბამება მონაცემთა თითოეულ წერტილს. იმის დასადგენად, თუ სად არის დაბრკოლება, თქვენ უბრალოდ გაამრავლეთ შესაბამისი მანძილი კუთხის cos/sin– ით. ამ ორი მნიშვნელობის დამატება ავტომობილის მიმდინარე x და y პოზიციაზე დააბრუნებს ინდექსს დაბრკოლების ქსელში. ამ ოპერაციით დაბრუნებული მანძილის გაყოფა GRID_SCALE საშუალებას მოგვცემს შევცვალოთ რამდენად დიდია თითოეული ინდექსის კვადრატული მანძილი.
ზემოთ მოყვანილი სურათები აჩვენებს მანქანების ამჟამინდელ გარემოს და წარმოქმნილ ბადეს.
ნაბიჯი 6: ურთიერთობა მოტორებთან
ძრავასთან კომუნიკაციისთვის ჩვენ ვიწყებთ GPIO– ების ინიციალიზაციას, რათა გავაკონტროლოთ, რა მიმართულებით მოძრაობს ძრავა. შემდეგ წერა პირდაპირ PWM– ების ძირითად მისამართზე AXI ტაიმერში საშუალებას გვაძლევს დავაყენოთ ისეთი რაღაცეები, როგორიცაა პერიოდი და სამუშაო ციკლი, რომელიც პირდაპირ აკონტროლებს ძრავის ბრუნვის სიჩქარე.
ნაბიჯი 7: გზის დაგეგმვა
განხორციელდება უახლოეს მომავალში.
ქსელის და საავტომობილო ფუნქციონირების გამოყენებით, რაც ადრე იყო აღწერილი, ძალიან ადვილია ისეთი ალგორითმების განხორციელება, როგორიცაა A*. ავტომობილის მოძრაობისას ის გააგრძელებს მიმდებარე ტერიტორიის სკანირებას და განსაზღვრავს თუ არა ბილიკი, რომელზეც ის კვლავ ძალაშია
გირჩევთ:
მინიატურული Arduino ავტონომიური რობოტი (ლენდ როვერი / მანქანა) ეტაპი 1 მოდელი 3: 6 ნაბიჯი
მინიატურული Arduino ავტონომიური რობოტი (ლენდ როვერი / მანქანა) ეტაპი 1 მოდელი 3: მე გადავწყვიტე მინიატურული ლენდ როვერის / მანქანის / ბოტის პროექტის ზომისა და ენერგიის მოხმარების შემცირება
GorillaBot 3D დაბეჭდილი Arduino ავტონომიური Sprint ოთხფეხა რობოტი: 9 ნაბიჯი (სურათებით)
GorillaBot 3D დაბეჭდილი Arduino ავტონომიური სპრინტი ოთხფეხა რობოტი: ყოველწლიურად ტულუზაში (საფრანგეთი) ტულუზაში ტარდება რობოტების რბოლა #TRR2021. რბოლა შედგება 10 მეტრიანი ავტონომიური სპრინტისგან ორფეხა და ოთხფეხა რობოტებისთვის. მიმდინარე რეკორდი, რომელსაც ოთხფეხა ფეხებზე ვიკრიბებ 42 წამია 10 მეტრიანი სპრინტი. ასე რომ, მ
ავტონომიური დისტანციური მართვის მანქანა: 6 ნაბიჯი
ავტონომიური დისტანციური მართვის მანქანა: ეს ინსტრუქცია შეიქმნა სამხრეთ ფლორიდის უნივერსიტეტის მაკიაჟის პროექტის მოთხოვნის შესასრულებლად (www.makecourse.com). ეს პროექტი აჩვენებს, თუ როგორ შეუძლია არდუინოს ორმაგი H- ხიდიანი საავტომობილო დისკი გააკონტროლო ოთხი
ავტონომიური RC მანქანა: 7 ნაბიჯი
ავტონომიური RC მანქანა: დღეს თვითმავალი, ავტონომიური მანქანების ზრდასთან ერთად, მე გადავწყვიტე, რომ გამეღო გამოწვევა, გამეკეთებინა საკუთარი. ეს პროექტი ასევე იყო ჩემი მთავარი პროექტი საინჟინრო დიზაინისა და განვითარების და რობოტიკის კლასებში და მიიღო ჯილდო
KEVIN სრული ავტონომიური მანქანა: 17 ნაბიჯი (სურათებით)
KEVIN სრული ავტონომიური მანქანა: ეს არის კევინი. ეს არის რადიო კონტროლირებადი მანქანა, რომელსაც აქვს სრული ავტონომიური მართვის უნარი. ჩემი პირველი მიზანი იყო ავტონომიური ავტომობილის შექმნა, რომელსაც აკონტროლებდა არდუინო. ამიტომ შევიძინე იაფი ჩინური შასი. მაგრამ ეს საშინელება იყო, რადგან მე არ შემეძლო რაიმე ჩამაგრება