Სარჩევი:

NAIN 1.0 - ძირითადი ჰუმანოიდი რობოტი Arduino– ს გამოყენებით: 6 ნაბიჯი
NAIN 1.0 - ძირითადი ჰუმანოიდი რობოტი Arduino– ს გამოყენებით: 6 ნაბიჯი

ვიდეო: NAIN 1.0 - ძირითადი ჰუმანოიდი რობოტი Arduino– ს გამოყენებით: 6 ნაბიჯი

ვიდეო: NAIN 1.0 - ძირითადი ჰუმანოიდი რობოტი Arduino– ს გამოყენებით: 6 ნაბიჯი
ვიდეო: Motion tracking в Blender 3.2 #1 / #VFX 2024, ნოემბერი
Anonim
NAIN 1.0 - ძირითადი ჰუმანოიდი რობოტი არდუინოს გამოყენებით
NAIN 1.0 - ძირითადი ჰუმანოიდი რობოტი არდუინოს გამოყენებით

ნაინ 1.0-ს ექნება ძირითადად 5 მოსახსნელი მოდული-

1) მკლავი - რომლის კონტროლიც შესაძლებელია სერვისების საშუალებით.

2) ბორბლები - რომელთა კონტროლი შესაძლებელია DC ძრავებით.

3) ფეხი - ნაინს შეეძლება გადაადგილება ბორბლებს ან ფეხებს შორის მოძრაობისთვის.

4) თავი - მისი თავის კონტროლი შესაძლებელია სხვადასხვა კვნესისთვის.

5) კამერის მოდული- რომლის ინტერფეისიც შესაძლებელია სახის ამოცნობის წვდომისათვის.

ამასთან ერთად NAIN შეძლებს მომხმარებლებთან საუბარს და ურთიერთობას და გაჩვენებთ დროს ჩამონტაჟებული საათის მიხედვით. მას ექნება უკაბელო კონტროლი Wi-fi /Bluetooth– ის გამოყენებით.

ნაბიჯი 1: საჭირო კომპონენტები

კომპონენტები საჭირო
კომპონენტები საჭირო
კომპონენტები საჭირო
კომპონენტები საჭირო
კომპონენტები საჭირო
კომპონენტები საჭირო
  1. სერვო მოტორსი -4
  2. არდუინო მეგა - 1
  3. ჟოლო პი - 1
  4. USB კამერა -1
  5. სპიკერი -1
  6. DC მოტორსი -2
  7. L293D -1
  8. ბატარეის პაკეტი - 1
  9. ბორბლები -2
  10. აბუსალათინის ბორბლები - 2

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

ნაბიჯი 2: სხეულის სტრუქტურა

სხეულის სტრუქტურა
სხეულის სტრუქტურა

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

ჯერჯერობით შეაგროვეთ ისინი, როგორც ნაჩვენებია ფიგურაში და ასევე ამოჭერით შესაბამისი ადგილები სერვო ძრავებისთვის მკლავებში ჩასამაგრებლად.

მიამაგრეთ ექვსკუთხა ხის ბაზა ბოლოში.

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

საინტერესოა, რომ დაამატეთ ორი აბუსალათიანი ბორბალი- ერთი წინა და მეორე რობოტის უკანა მხარეს.

ნაბიჯი 3: გაყვანილობა და კოდირება

გაყვანილობა და კოდირება
გაყვანილობა და კოდირება
გაყვანილობა და კოდირება
გაყვანილობა და კოდირება

სხვადასხვა მოდულის დასაკავშირებლად მიმართეთ ამ ნაწილში თანდართულ კოდებს.

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

ნაბიჯი 4: ჟოლო პი და გამოსახულების ამოცნობა

ჟოლო პი და გამოსახულების ამოცნობა
ჟოლო პი და გამოსახულების ამოცნობა
ჟოლო პი და გამოსახულების ამოცნობა
ჟოლო პი და გამოსახულების ამოცნობა

სურათის ამოცნობა ხორციელდება USB კამერისა და ჟოლოს პიის გამოყენებით.

ამისათვის თქვენ უნდა დააინსტალიროთ OPEN CV ბიბლიოთეკა თქვენს Pi- ზე.

ამის გაკეთება შეგიძლიათ აქედან-https://github.com/jabelone/OpenCV-for-Pi

შემდეგ თქვენ უნდა შეასრულოთ გამოსახულების ამოცნობა ჰარის კასკადის გამოყენებით.

ამის გაკეთება შეგიძლიათ აქედან -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

ზემოაღნიშნული ბმულის შესწავლისა და ამის შემდეგ, მე შევიტანე ცვლილებები საბოლოო კოდში, რომელიც მე გამოვიყენე და რომელსაც ქვემოთ ვდებ -

მონაცემთა გენერატორი:

importcv2

კამერა = cv2. ვიდეო გადაღება (0)

დეტექტორი = cv2. CascadeClassifier ('Classifiers/face.xml')

i = 0

ოფსეტური = 50

სახელი = raw_input ('შეიყვანეთ თქვენი პირადობის მოწმობა')

მართალია:

ret, im = cam.read ()

ნაცრისფერი = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

სახეები = detector.detectMultiScale (ნაცრისფერი, scaleFactor = 1.2, წთ მეზობლები = 5, წთ ზომა = (100, 100), დროშები = cv2. CASCADE_SCALE_IMAGE)

for (x, y, w, h) სახეებში:

i = i+1

cv2.imwrite ("dataSet/face."+name+'.'+str (i)+".jpg", ნაცრისფერი [y-offset: y+h+offset, x-offset: x+w+offset])

cv2. მართკუთხედი (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

cv2.imshow ('im', im [y-offset: y+h+offset, x-offset: x+w+offset])

თუ cv2.waitKey (100) & 0xFF == ord ('q'):

შესვენება

# შესვენება, თუ ნიმუშის რიცხვი 20 -ზე მეტია

ელიფი (i> 20):

შესვენება

კამერა გამოშვება ()

cv2.destroyAllWindows ()

ის შექმნის თქვენს ფოტოებს, რომლებიც გამოყენებული იქნება ავტორიზაციისთვის.

ᲛᲬᲕᲠᲗᲜᲔᲚᲘ:

importcv2, os

იმპორტირებული numpy როგორც np

PIL იმპორტის სურათიდან

აღიარებელი = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "კლასიფიკატორები/სახე. xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

გზა = 'dataSet'

def get_images_and_labels (გზა):

image_paths = [os.path.join (path, f) for f in os.listdir (path)]

# სურათი შეიცავს სახის სურათებს

სურათები =

# ეტიკეტი შეიცავს ლეიბლს, რომელიც ენიჭება სურათს

ეტიკეტები =

image_path for image_paths:

# წაიკითხეთ სურათი და გადააკეთეთ ნაცრისფერზე

image_pil = Image.open (image_path). Convert ('L')

# გადააკეთეთ სურათის ფორმატი numpy მასივში

image = np.array (image_pil, 'uint8')

# მიიღეთ სურათის ეტიკეტი

nbr = int (os.path.split (image_path) [-1]. გაყოფა (".") [1]. შეცვლა ("სახე-", ""))

#nbr = int (''. შეერთება (str (ord (c)) for c in nbr))

ბეჭდვა nbr

# აღმოაჩინეთ სახე სურათზე

სახეები = faceCascade.detectMultiScale (სურათი)

# თუ სახე გამოვლინდა, მიამაგრეთ სახე სურათებზე და ეტიკეტი ეტიკეტებზე

for (x, y, w, h) სახეებში:

images.append (სურათი [y: y + h, x: x + w])

ეტიკეტები. დანართი (nbr)

cv2.imshow ("სახეების დამატება გადასასვლელ ნაკრებში …", სურათი [y: y + h, x: x + w])

cv2.wait გასაღები (10)

# დააბრუნეთ სურათების სია და ეტიკეტების სია

სურათების, ეტიკეტების დაბრუნება

სურათები, ეტიკეტები = მიიღეთ_ სურათები_და_დანიშნვები (გზა)

cv2.imshow ('ტესტი', სურათები [0])

cv2.wait გასაღები (1)

ამოცნობა

ამოცნობა (შენახვა)

cv2.destroyAllWindows ()

დეტექტორი

importcv2

იმპორტირებული numpy როგორც np

იმპორტი os

c = 0

ცნობა = cv2.face.createLBPHFaceRecognizer ()

ამოცნობა (დატვირთვა)

cascadePath = "კლასიფიკატორები/სახე. xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

კამერა = cv2. ვიდეო გადაღება (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

fontcolor = (255, 255, 255)

მართალია:

ret, im = cam.read ()

ნაცრისფერი = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

სახეები = faceCascade.detectMultiScale (ნაცრისფერი, 1.2, 5)

for (x, y, w, h) სახეებში:

cv2. მართკუთხედი (im, (x-50, y-50), (x+w+50, y+h+50), (225, 0, 0), 2)

Id = ამოცნობა.წინასწარმეტყველება (ნაცრისფერი [y: y+h, x: x+w])

თუ (Id <70):

თუ (Id == 1):

Id = "შაშანკი"

elif (Id == 2):

თუ (c == 0):

Id = "შივამი"

c = c+1

os.system ("espeak 'Welcome Shivam Access Granted'")

სხვა:

Id = "შივამი"

სხვა:

Id = "უცნობი"

cv2.putText (im, str (Id), (x, y+h), fontface, fontscale, fontcolor)

cv2.imshow ('im', im)

თუ cv2.waitKey (10) & 0xFF == ord ('q'):

შესვენება

კამერა გამოშვება ()

cv2.destroyAllWindows ()

ნაბიჯი 5: LCD და სპიკერი

მე ასევე გამოვიყენე I2C LED დისპლეი და სპიკერი.

LED კონტროლდება Arduino Mega– ს საშუალებით და მისი კოდი მოცემულია საბოლოო კოდში.

სპიკერისთვის ის დაკავშირებულია Raspberry Pi– სთან და იყენებს eSpeak Utility– ს.

თქვენ შეგიძლიათ იპოვოთ მისი მითითება აქ-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

ნაბიჯი 6: საბოლოო ნაბიჯები

შეიკრიბეთ ყველაფერი და მოემზადეთ დარტყმისთვის.

გირჩევთ: