Სარჩევი:
- მარაგები
- ნაბიჯი 1: შესავალი
- ნაბიჯი 2: მასალები და რბილი ნაწარმი, რომლებიც გამოიყენება ამ პროექტში
- ნაბიჯი 3: რა უნდა გავაკეთოთ?
- ნაბიჯი 4: სქემა
- ნაბიჯი 5: როგორ გავაკეთოთ?
- ნაბიჯი 6: ფსევდოკოდი
- ნაბიჯი 7: კოდი
- ნაბიჯი 8: გარე ბმულები
ვიდეო: ბურთის მიმდევარი რობოტი: 8 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
ამრიგად, მე გეტყვით, თუ როგორ უნდა გააკეთოთ ბურთის თვალთვალის რობოტი, რომელიც არის რობოტი, რომელიც ამოიცნობს ბურთს და მიჰყვება მას. ეს არის ძირითადად ავტომატური მეთვალყურეობის ტექნიკა, რომელიც შეიძლება გამოყენებულ იქნას თანამედროვე მსოფლიოში. მოდით, უბრალოდ შევეშვათ და დავიწყოთ მშენებლობა …
შენიშვნა: ეს არის ნაწილობრივი დავალება, რომელიც გადაეცა დიაკინის უნივერსიტეტს, IT სკოლას, SIT-210 Embedded Systems Development
მარაგები
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
ნაბიჯი 1: შესავალი
დღევანდელი მეთვალყურეობა არის მთავარი მინუსი, რომელიც მდგომარეობს იმაში, რომ ის ემყარება ადამიანების ჩართულობას, რომელიც, როგორც ყველამ ვიცით, შეიძლება ადვილად გადაიტანოს ყურადღების გადატანა, ამიტომ ჩვენთვის უაღრესად მნიშვნელოვანი იყო სისტემის აღმოჩენა, რომელსაც შეუძლია რეგიონების მონიტორინგი ავტონომიურად და განუწყვეტლივ. ჩვენ ასევე გვინდა გამოვავლინოთ საზიზღარი ან არასასურველი საგნები და საფრთხეები გადაწყვეტილებების მიღებისას და შესაბამისად ვუპასუხოთ. ასე რომ, ობიექტის თვალყურის დევნება ინტელექტუალური სისტემებისა და კომპიუტერების გამოყენებით არის აუცილებელი და გადამწყვეტი ავტომატური მეთვალყურეობის მისაღწევად.
ნებისმიერ გარე სათვალთვალო სისტემას უნდა შეეძლოს თვალყური ადევნოს მის ხედვის არეზე მოძრავ ობიექტებს, დაალაგოს ეს ობიექტები და აღმოაჩინოს მათი ზოგიერთი აქტივობა. მე შევიმუშავე მეთოდი ამ ობიექტების თვალყურის დევნისა და კლასიფიკაციისთვის რეალისტურ სცენარებში. ობიექტების თვალყურის დევნება ერთ კამერაში ხორციელდება ფონის გამოკლების გამოყენებით, რასაც მოჰყვება რეგიონის კორესპონდენცია. ეს ითვალისწინებს მრავალრიცხოვან მინიშნებებს, მათ შორის ჩამკეტის ყუთების სიჩქარეს, ზომასა და მანძილს.
ნაბიჯი 2: მასალები და რბილი ნაწარმი, რომლებიც გამოიყენება ამ პროექტში
გამოყენებული აპარატურის კომპონენტები:
- ჟოლო Pi (x1)
- Raspberry Pi კამერის მოდული (x1)
- ულტრაბგერითი სენსორი (x3)
- SparkFun Dual H-Bridge ძრავის მძღოლები L298 (x1)
- DC ძრავა (x1)
- პურის დაფა (x1)
- დამაკავშირებელი მავთულები
გამოყენებული პროგრამული უზრუნველყოფა:
OpenCV
Ხელსაწყოები:
პითონი
ნაბიჯი 3: რა უნდა გავაკეთოთ?
ნებისმიერ გარე სათვალთვალო სისტემას უნდა შეეძლოს თვალყური ადევნოს მის ხედვის არეზე მოძრავ ობიექტებს, დაალაგოს ეს ობიექტები და აღმოაჩინოს მათი ზოგიერთი აქტივობა. მე შევიმუშავე მეთოდი ამ ობიექტების თვალთვალის და კლასიფიკაციისთვის რეალისტურ სცენარებში. ობიექტების თვალყურის დევნება ერთ კამერაში ხორციელდება ფონის გამოკლების გამოყენებით, რასაც მოჰყვება რეგიონის კორესპონდენცია. ეს ითვალისწინებს მრავალრიცხოვან მინიშნებებს, მათ შორის სიჩქარის, ზომის და დაშორების შემაკავშირებელ ყუთებს.
ჩარჩო -ჩარჩოზე სურათების გამოვლენისას გადამწყვეტი მნიშვნელობა ჰქონდა ჩარჩოს წვეთების თავიდან აცილებას, რადგან მაშინ ბოტი შეიძლება გადავიდეს limbo მდგომარეობაში, თუ ბოტი ჩარჩოს ვარდნის გამო ვერ შეამჩნევს ბურთის მოძრაობის მიმართულებას. თუ ბურთი გამოდის კამერის დიაპაზონიდან, ის გადადის ის რასაც ჩვენ ვუწოდებთ limbo მდგომარეობას, ამ შემთხვევაში ბოტი 360 გრადუსით ბრუნავს მის გარშემო არსებული სივრცის სანახავად სანამ ბურთი არ დაბრუნდება ჩარჩოში კამერა და შემდეგ დაიწყეთ მოძრაობა მისი მიმართულებით.
სურათის ანალიზისთვის ვიღებ თითოეულ ჩარჩოს და შემდეგ ვფარავ მას საჭირო ფერით. შემდეგ ვპოულობ ყველა კონტურს და ვპოულობ მათ შორის ყველაზე დიდს და ვკრავ მას ოთხკუთხედში. და აჩვენე ოთხკუთხედი მთავარ სურათზე და იპოვე ოთხკუთხედის ცენტრის კოორდინატები.
დაბოლოს, ბოტი ცდილობს ბურთის კოორდინატები მიიტანოს მისი საკოორდინატო ღერძის ცენტრში. ასე მუშაობს რობოტი. ეს შეიძლება კიდევ უფრო გაძლიერდეს IoT მოწყობილობის გამოყენებით, როგორიცაა ფოტონის ნაწილაკი, რომელიც საშუალებას მოგცემთ იყოთ ინფორმირებული, როდესაც რამე აღმოჩენილია და რობოტი მისდევს მას ან რობოტმა დაკარგა კვალი და ახლა ბრუნდება ბაზაზე რა
სურათის დამუშავების მიზნით, თქვენ უნდა დააინსტალიროთ OpenCV პროგრამა თქვენს ჟოლოს პიზე, რაც ჩემთვის საკმაოდ სახიფათო იყო.
თქვენ შეგიძლიათ მიიღოთ ნებისმიერი საჭირო ინფორმაცია OpenCV– ს ინსტალაციისათვის ამ ბმულის საშუალებით: დააწკაპუნეთ აქ
ნაბიჯი 4: სქემა
ზემოთ მე მოვიყვანე ჩემი პროექტის სქემა და მასთან ერთად არის დაბეჭდილი მიკროსქემის დაფა (PCB).
და აქ არის რამოდენიმე ძირითადი კავშირი, რომელიც თქვენ უნდა გააკეთოთ:
• პირველ რიგში Raspberry Pi კამერის მოდული პირდაპირ კავშირშია Raspberry Pi– სთან.
• ულტრაბგერითი სენსორები VCC დაკავშირებულია საერთო ტერმინალთან იგივე GND (ადგილზე) და ულტრაბგერითი სენსორის დანარჩენი ორი პორტი უკავშირდება GPIO ქინძისთავებს Raspberry Pi– ზე.
• ძრავები დაკავშირებულია H- ხიდის გამოყენებით.
• ელექტროენერგია მიეწოდება ბატარეის გამოყენებით.
მე ასევე დავამატე ვიდეო, რომელიც შეიძლება დაგეხმაროთ იმის გაგებაში, თუ როგორ მუშაობს ულტრაბგერითი სენსორი და როგორ მუშაობს იგი.
და ასევე შეგიძლიათ მიყევით ამ ბმულს, თუ ვერ იპოვით ზემოთ მოცემულ ვიდეოს.
ნაბიჯი 5: როგორ გავაკეთოთ?
მე გავაკეთე ეს პროექტი, სადაც გამოსახულია ძირითადი რობოტი, რომელსაც შეუძლია ბურთის თვალყურის დევნება. რობოტი იყენებს კამერას სურათის დამუშავებისათვის ჩარჩოების გადაღებით და ბურთის თვალყურის დევნებით. ბურთის თვალყურის დევნისთვის გამოიყენება სხვადასხვა მახასიათებლები, როგორიცაა მისი ფერი, ზომა, ფორმა.
რობოტი პოულობს მყარ კოდირებულ ფერს, შემდეგ ეძებს ამ ფერის ბურთს და მიჰყვება მას. მე ამ პროექტში ავირჩიე Raspberry Pi, როგორც მიკრო კონტროლერი, რადგან ის გვაძლევს საშუალებას გამოვიყენოთ მისი კამერის მოდული და იძლევა დიდ მოქნილობას კოდში, რადგან ის იყენებს პითონის ენას, რომელიც არის ძალიან მოსახერხებელი და ასევე საშუალებას გვაძლევს გამოვიყენოთ OpenCV ბიბლიოთეკა სურათების გასაანალიზებლად.
H- ხიდი გამოიყენება ძრავების ბრუნვის მიმართულების შესაცვლელად ან მათი შესაჩერებლად.
სურათის ანალიზისთვის ვიღებ თითოეულ ჩარჩოს და შემდეგ ვფარავ მას საჭირო ფერით. შემდეგ ვპოულობ ყველა კონტურს და ვპოულობ მათ შორის ყველაზე დიდს და ვკრავ მას ოთხკუთხედში. და აჩვენე ოთხკუთხედი მთავარ სურათზე და იპოვე ოთხკუთხედის ცენტრის კოორდინატები.
დაბოლოს, ბოტი ცდილობს ბურთის კოორდინატები მიიტანოს მისი საკოორდინატო ღერძის ცენტრში. ასე მუშაობს რობოტი. ეს შეიძლება კიდევ უფრო გაძლიერდეს IoT მოწყობილობის გამოყენებით, როგორიცაა ფოტონის ნაწილაკი, რომელიც საშუალებას მოგცემთ იყოთ ინფორმირებული, როდესაც რამე აღმოჩენილია და რობოტი მისდევს მას ან რობოტმა დაკარგა კვალი და ახლა ბრუნდება ბაზაზე რა და ამისათვის ჩვენ ვიყენებთ ონლაინ პროგრამულ პლატფორმას, რომელიც აკავშირებს მოწყობილობებს და საშუალებას აძლევს მათ შეასრულონ გარკვეული მოქმედებები კონკრეტულ გამომწვევებზე, რაც არის IFTTT გამომწვევები.
ნაბიჯი 6: ფსევდოკოდი
აქ არის ფსევდო კოდი გამოვლენის ნაწილისთვის OpenCV გამოყენებით, სადაც ჩვენ ვხვდებით ბურთს.
ნაბიჯი 7: კოდი
ზემოთ არის კოდის ფრაგმენტები და ქვემოთ არის კოდის დეტალური აღწერა.
# შემოიტანეთ საჭირო პაკეტები
ჩვენ შევიტანთ ყველა საჭირო პაკეტს
picamera.array იმპორტი PiRGBArray #როგორც არის ჟოლოს პიში რეზოლუციის პრობლემა, ვერ შეძლებს ვიდეოების გადაღების ჩარჩოების გადაღებას
picamera იმპორტიდან PiCamera იმპორტი RPi. GPIO როგორც GPIO იმპორტი დრო იმპორტი numpy როგორც np
ახლა ჩვენ ვამუშავებთ HARDWARE- ს და ვსვამთ ჟოლოს PI- სთან დაკავშირებულ ქინძისთავებს
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #მარცხენა ულტრაბგერითი სენსორი
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #წინა ულტრაბგერითი სენსორი
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #ულტრაბგერითი სენსორი
GPIO_ECHO3 = 35
MOTOR1B = 18 #მარცხენა ძრავა
MOTOR1E = 22
MOTOR2B = 21 #მარჯვენა ძრავა
MOTOR2E = 19
LED_PIN = 13 #თუ ის იპოვის ბურთს, მაშინ ის ანათებს led- ს
# დააყენეთ ქინძისთავები, როგორც გამომავალი და შემავალი
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # გამომწვევი GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO2) GPIO_TRIGGER3, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# დააყენეთ გამომწვევი მცდარი (დაბალი)
GPIO.output (GPIO_TRIGGER1, ყალბი) GPIO.output (GPIO_TRIGGER2, ყალბი) GPIO.output (GPIO_TRIGGER3, ყალბი)
ეს ფუნქცია იყენებს ყველა ულტრაბგერითი სენსორს, რომელიც აგროვებს დისტანციას ჩვენი ბოტის გარშემო
# მიეცი მოდულის მოგვარების საშუალება
def sonar (GPIO_TRIGGER, GPIO_ECHO): დაწყება = 0 გაჩერება = 0 # ქინძისთავების დაყენება, როგორც გამომავალი და შეყვანის GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Set trigger to False (დაბალი) GPIO.output (GPIO_TRIGGER, False) #მიეცით მოდულს საშუალება მოაგვაროს დრო. ძილი (0.01) #ხოლო მანძილი> 5: #გაგზავნეთ პულსი 10us GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. გამომავალი (GPIO_TRIGGER, ყალბი) დაწყება = დრო. დრო (), ხოლო GPIO. შეყვანა (GPIO_ECHO) == 0 და დრო. დრო ()
DC MOTORS– ის მიღება ჟოლოს PI– ით მუშაობისთვის
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
რობოტის ფუნქციონირების და მისი გადაადგილების განსხვავებული მიმართულებების განსაზღვრის ფუნქციები
def წინ ():
GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def reverse (): GPIO.output (MOTOR1, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGHT)
def stop ():
GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)
კამერის მოდულის მუშაობა და პარამეტრების მორგება
#კამერის გადაღება
# კამერის ინიციალიზაცია და მიანიჭეთ მითითება ნედლი კამერის გადაღების კამერაზე = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (კამერა, ზომა = (160, 120)) # ნება დართეთ კამერას გასათბობად. ძილი (0.001)
ახლავე ვახორციელებ მთავარ საქმეს, სადაც ბოტი მიჰყვება ბურთს და თავს არიდებს ყოველგვარ დაბრკოლებას
ხოლო (1 <10): { #მანძილი მოდის წინა ულტრაბგერითი სენსორის მანძილიდან C = სონარი (GPIO_TRIGGER2, GPIO_ECHO2) #მანძილი მარჯვენა ულტრაბგერითი სენსორის მანძილიდან R = სონარი (GPIO_TRIGGER3, GPIO_ECHO3) #მანძილი ულტრაბგერითი სენსორის დისტანციიდან L = სონარი (GPIO_, GPIO_ECHO1) თუ (მანძილი C = 8: მარჯვნივ მობრუნება () დრო. ძილი (0.00625) გაჩერება () დრო. ძილი (0.0125) წინ () დრო. ძილი (0.00625) გაჩერება () დრო. ძილი (0.0125) #ხოლო ნაპოვნია == 0: leftturn () time.sleep (0.00625) elif distanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: #წინააღმდეგ შემთხვევაში ის წინ მიიწევს წინ () დრო. ძილი (0.00625) თუ (მანძილი C> 10): #მას მოაქვს ბურთის კოორდინატები კამერის წარმოსახვითი ღერძის ცენტრში.) გაჩერება () დრო. ძილი (0.00625) სხვა: გაჩერება () დრო. ძილი (0.01)
სხვა:
#თუ ის აღმოაჩენს ბურთს და ის ძალიან ახლოს არის ის ანათებს led- ს. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # გაასუფთავეთ ნაკადი მომზადებისთვის შემდეგი ჩარჩო}
გააკეთეთ აუცილებელი დასუფთავება
GPIO.cleanup () #უფასოდ GPIO ყველა ქინძისთავები
ნაბიჯი 8: გარე ბმულები
სადემონსტრაციო ვიდეოს ბმული: დააწკაპუნეთ აქ (Youtube)
კოდის ბმული Git-hub: დააწკაპუნეთ აქ (Git-Hub)
გირჩევთ:
ადამიანის მიმდევარი რობოტი Arduino Uno– ს გამოყენებით 20 $ ქვემოთ: 9 ნაბიჯი
ადამიანის მიმდევარი რობოტი Arduino Uno– ს გამოყენებით 20 $ ქვემოთ: ასე რომ, მე გავაკეთე ეს რობოტი დაახლოებით ერთი წლის წინ და მომეწონა, მას შეუძლია მოგყვეს ყველგან და ყველგან. ეს არის საუკეთესო ალტერნატივა ძაღლისთვის. ის ჯერ კიდევ ჩემთანაა მე ასევე მაქვს youtube არხი, სადაც შეგიძლიათ ნახოთ მისი დამზადების პროცესი ვიდეოში
როგორ გავაკეთოთ ხაზის მიმდევარი რობოტი არდუინოს (მიკროკონტროლერი) გამოყენების გარეშე: 5 ნაბიჯი
როგორ გავაკეთოთ ხაზის მიმდევარი რობოტი Arduino- ს (მიკროკონტროლერის) გამოყენების გარეშე: ამ სასწავლო ინსტრუქციაში მე გასწავლით თუ როგორ უნდა გააკეთოთ რობოტი Arduino– ს გამოყენების გარეშე. მე გამოვიყენებ ძალიან მარტივ ნაბიჯებს. ეს რობოტი გამოიყენებს IR სიახლოვის სენსორს მიჰყევით ხაზს. თქვენ არ დაგჭირდებათ რაიმე სახის პროგრამირების გამოცდილება
მობილური კონტროლირებადი ხაზის მიმდევარი რობოტი დაბრკოლების თავიდან აცილებით: 6 ნაბიჯი
მობილური კონტროლირებადი ხაზის მიმდევარი რობოტი დაბრკოლების თავიდან აცილებით: ეს იყო მხოლოდ იდეა, რომელშიც რამდენიმე თვისება, როგორიცაა დაბრკოლების თავიდან აცილება, ხაზის მიმდევარი, მობილური კონტროლირებადი და ა. შ. ეკიპირება ამ კონფიგურაციისთვის. ამაში მე მაქვს
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: 8 ნაბიჯი
დაბალანსებული რობოტი / 3 ბორბლიანი რობოტი / STEM რობოტი: ჩვენ შევქმენით კომბინირებული ბალანსირების და 3 ბორბლიანი რობოტი სკოლებში საგანმანათლებლო გამოყენებისთვის და სკოლის შემდგომ საგანმანათლებლო პროგრამებისთვის. რობოტი დაფუძნებულია Arduino Uno– ზე, საბაჟო ფარზე (კონსტრუქციის ყველა დეტალი მოცემულია), Li Ion ბატარეის პაკეტზე (ყველა კონსტრუქცია
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი - ცერა თითის რობოტი - სერვო ძრავა - წყაროს კოდი: 26 ნაბიჯი (სურათებით)
[არდუინოს რობოტი] როგორ გავაკეთოთ მოძრავი გადაღების რობოტი | ცერა თითის რობოტი | სერვო მოტორი | წყაროს კოდი: Thumbs Robot. გამოყენებული იქნა MG90S სერვო ძრავის პოტენომეტრი. ეს არის ძალიან სახალისო და მარტივი! კოდი ძალიან მარტივია. ეს მხოლოდ 30 სტრიქონია. როგორც ჩანს მოძრაობის გადაღება. გთხოვთ დატოვოთ ნებისმიერი შეკითხვა ან გამოხმაურება! [ინსტრუქცია] წყაროს კოდი https: //github.c