Სარჩევი:

SnappyXO ზუსტი მოძრავი რობოტი: 6 ნაბიჯი
SnappyXO ზუსტი მოძრავი რობოტი: 6 ნაბიჯი

ვიდეო: SnappyXO ზუსტი მოძრავი რობოტი: 6 ნაბიჯი

ვიდეო: SnappyXO ზუსტი მოძრავი რობოტი: 6 ნაბიჯი
ვიდეო: Introducing SnappyXO: Crowdfunding Campaign 2024, ნოემბერი
Anonim
SnappyXO ზუსტი მოძრავი რობოტი
SnappyXO ზუსტი მოძრავი რობოტი

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

რობოტს სჭირდება მოძრავი ბურთი ან ეკვივალენტი, რომ მინიმუმამდე დაიყვანოს ხახუნის გადახვევისას.

www.pololu.com/product/954

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

ეს დადასტურებულია SnappyXO რობოტთან მუშაობისთვის.

ნაბიჯი 1: სამეურვეო ადგილმდებარეობა შეიცვალა

გაკვეთილი გადატანილია ქვემოთ მოცემულ გვერდზე. ეს გაკვეთილი აღარ არის დაცული.

sites.google.com/stonybrook.edu/premo

ნაბიჯი 2: შექმენით SnappyXO დიფერენციალური წამყვანი რობოტი

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

ნაბიჯი 3: შეაერთეთ ელექტრონიკა

შეაერთეთ ელექტრონიკა
შეაერთეთ ელექტრონიკა

სტანდარტული SnappyXO ოპტიკური კოდირებისთვის:

D0 (კოდირების გამომავალი) -> Arduino ციფრული პინი

VCC -> Arduino 5V

GND -> GND

ძრავა და არდუინოს სიმძლავრე:

ძრავის ენერგიის წყარო უნდა იყოს ადექვატური თქვენს მიერ გამოყენებული ძრავებისთვის. SnappyXO ნაკრებისთვის 4AA ბატარეები გამოიყენება ძრავის სიმძლავრისთვის და 9V ბატარეა Arduino სიმძლავრისთვის. დარწმუნდით, რომ მათ აქვთ საერთო GND.

ნაბიჯი 4: დააინსტალირეთ PreduiseMovement Arduino ბიბლიოთეკა

ჩამოტვირთვა:

github.com/jaean123/PreciseMovement-library/releases

როგორ დააინსტალიროთ Arduino ბიბლიოთეკა:

wiki.seeedstudio.com/How_to_install_Arduino_Library/

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

არდუინოს კოდი:

create.arduino.cc/editor/hileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview

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

  • შეამოწმეთ და დააყენეთ ძრავის ქინძისთავები ARDUINO PINS- ის ქვეშ.
  • დააყენეთ LENGTH და RADIUS.

    • LENGTH არის მანძილი მარცხენა ბორბალიდან მარჯვენა ბორბალამდე.
    • RADIUS არის ბორბლის რადიუსი.
  • დააყენეთ PULSES_PER_REV, რაც არის ერთი ბორბლის რევოლუციისათვის კოდის გამომცემელთა იმპულსების რაოდენობა.

    • გაითვალისწინეთ, რომ ეს განსხვავდება იმ საიმპერატორო ღერძის რევოლუციისათვის, რომელიც აწარმოებს შიფრატორს იმ რაოდენობის იმპულსებისაგან, თუ დამშიფრებლები არ არიან დაკავშირებული საჭის ლილვიდან პირდაპირ წასაკითხად.
    • PULSES_PER_REV = (იმპულსები ძრავის ლილვის ერთ ბრუნზე) x (გადაცემათა კოეფიციენტი)
  • დააყენეთ STOP_LENGTH, თუ დაინახავთ, რომ რობოტი გადალახავს წინსვლას.

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

  • PID პარამეტრები

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

    KP_TW: ეს არის გადახვევის მოძრაობის PID- ის პროპორციული კომპონენტი. უბრალოდ დაიწყეთ დაბალი მნიშვნელობიდან და გაზარდეთ ეს მანამ, სანამ ბრუნვის სიჩქარე, ან რობოტის კუთხოვანი სიჩქარე გადაბრუნებისას, საკმარისად სწრაფია, მაგრამ არ იწვევს გადაჭარბებას. დაკვირვების გასაკეთებლად, თქვენ შეგიძლიათ გქონდეთ რობოტი ალტერნატიული 0 -დან 90 -მდე და უკან, შემდეგში ჩასვით მარყუჟის ფუნქცია

განათავსეთ ეს მარყუჟში KP_FW- ის დასარეგულირებლად:

mover.forward (99999);

მოათავსეთ ეს მარყუჟში 0 -დან 90 -მდე ალტერნატივა KP_TW- ის შესასწორებლად:

mover.twist (90); // ირონია 90 CW

დაგვიანება (2000);

mover.twist (-90) // Twist 90 CCW

დაგვიანება (2000);

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

ნაბიჯი 6: როგორ მუშაობს

თუ გაინტერესებთ როგორ მუშაობს, წაიკითხეთ.

წინ მოძრაობა ინახება პირდაპირ სუფთა დევნის ალგორითმის გამოყენებით პირდაპირ ხაზზე. მეტი Pursuit:

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

გირჩევთ: