فهرست مطالب:

NAIN 1.0 - ربات انسان نما اولیه با استفاده از آردوینو: 6 مرحله
NAIN 1.0 - ربات انسان نما اولیه با استفاده از آردوینو: 6 مرحله

تصویری: NAIN 1.0 - ربات انسان نما اولیه با استفاده از آردوینو: 6 مرحله

تصویری: NAIN 1.0 - ربات انسان نما اولیه با استفاده از آردوینو: 6 مرحله
تصویری: NAIN 1.0 - The Basic Humanoid Robot using Arduino 2024, نوامبر
Anonim
NAIN 1.0 - ربات انسان نما اولیه با استفاده از آردوینو
NAIN 1.0 - ربات انسان نما اولیه با استفاده از آردوینو

Nain 1.0 اساساً 5 ماژول قابل جدا شدن خواهد داشت-

1) بازو - که می تواند از طریق سرویس ها کنترل شود.

2) چرخ - که با موتورهای DC قابل کنترل است.

3) پا - ناین قادر به تغییر بین چرخ ها یا پاها برای حرکت است.

4) سر - سر آن را می توان برای تکان های مختلف کنترل کرد.

5) ماژول دوربین- که می تواند برای دسترسی به تشخیص چهره به هم متصل شود.

همراه با این NAIN قادر به صحبت و تعامل با کاربران خواهد بود و می تواند زمان را با ساعت داخلی خود به شما نشان دهد. دارای کنترل بی سیم با استفاده از Wi-Fi /بلوتوث است.

مرحله 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: سیم کشی و کدگذاری

سیم کشی و کد نویسی
سیم کشی و کد نویسی
سیم کشی و کد نویسی
سیم کشی و کد نویسی

برای سیم کشی ماژول های مختلف به کدهای پیوست شده در این قسمت مراجعه کنید.

ابتدا ماژول ها را با استفاده از کدهای مستقل آزمایش کردیم و سپس همه آنها را در یک جا ترکیب کردیم و حرکت چرخ ها و بازوها را با استفاده از ماژول بلوتوث کنترل کردیم.

مرحله 4: Raspberry Pi و تشخیص تصویر

رزبری پای و تشخیص تصویر
رزبری پای و تشخیص تصویر
تمشک پای و تشخیص تصویر
تمشک پای و تشخیص تصویر

تشخیص تصویر با استفاده از دوربین USB و رزبری پای انجام می شود.

برای این کار ، باید کتابخانه OPEN CV را روی Pi خود نصب کنید.

می توانید این کار را از اینجا انجام دهید-https://github.com/jabelone/OpenCV-for-Pi

سپس باید تشخیص تصویر را با استفاده از آبشار هار انجام دهید.

می توانید این کار را از اینجا انجام دهید -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

پس از مطالعه پیوند بالا و به دنبال آن ، من تغییراتی را در کد نهایی که از آن استفاده می کنم ایجاد کرده ام -

ژنراتور داده ها:

importcv2

cam = cv2. VideoCapture (0)

detector = cv2. CascadeClassifier ('Classifiers/face.xml')

من = 0

افست = 50

نام = raw_input ('شناسه خود را وارد کنید')

در حالی که True:

ret، im = cam.read ()

خاکستری = cv2.cvtColor (im، cv2. COLOR_BGR2GRAY)

چهره ها = detector.detectMultiScale (خاکستری ، scaleFactor = 1.2 ، دقیقه همسایگان = 5 ، minSize = (100 ، 100) ، پرچم ها = cv2. CASCADE_SCALE_IMAGE)

برای (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. rectangle (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 باشد ، # استراحت کنید

elif (i> 20):

زنگ تفريح

cam.release ()

cv2.destroyAllWindows ()

این مجموعه ای از عکس های شما ایجاد می کند که برای احراز هویت استفاده می شود.

مربی:

importcv2 ، سیستم عامل

وارد کردن numpy به عنوان np

از تصویر واردات PIL

تشخیص = cv2.face.createLBPHFaceRecognizer ()

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath)؛

path = 'dataSet'

def get_images_and_labels (path):

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

# تصویر شامل تصاویر چهره خواهد بود

تصاویر =

# labels will حاوی برچسبی است که به تصویر اختصاص داده شده است

برچسب ها =

برای image_path در 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].split (".") [1]. جايگزين ("face-"، ""))

#nbr = int (''. پیوستن به (str (ord (c)) برای c در nbr))

چاپ nbr

# تشخیص چهره در تصویر

چهره ها = faceCascade.detectMultiScale (تصویر)

# در صورت تشخیص چهره ، صورت را به تصاویر و برچسب را به برچسب ها اضافه کنید

برای (x ، y ، w ، h) در صورت:

images.append (تصویر [y: y + h ، x: x + w])

labels.append (nbr)

cv2.imshow ("افزودن چهره به مجموعه انتقال …" ، تصویر [y: y + h ، x: x + w])

cv2.waitKey (10)

# لیست تصاویر و لیست برچسب ها را برگردانید

برگرداندن تصاویر ، برچسب ها

تصاویر ، برچسب ها = get_images_and_labels (path)

cv2.imshow ('تست' ، تصاویر [0])

cv2.wait کلید (1)

تشخیص دهنده (آموزش ، تصاویر ، np.array (برچسب ها))

شناسه ذخیره ('trainer/trainer.yml')

cv2.destroyAllWindows ()

آشکارساز

importcv2

وارد کردن numpy به عنوان np

وارد کردن سیستم عامل

c = 0

تشخیص = cv2.face.createLBPHFaceRecognizer ()

تشخیص کننده (بارگیری ('trainer/trainer.yml'))

cascadePath = "Classifiers/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath)؛

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

fontcolor = (255 ، 255 ، 255)

در حالی که True:

ret، im = cam.read ()

خاکستری = cv2.cvtColor (im، cv2. COLOR_BGR2GRAY)

چهره = faceCascade.detectMultiScale (خاکستری ، 1.2 ، 5)

برای (x ، y ، w ، h) در صورت:

cv2. rectangle (im، (x-50، y-50)، (x+w+50، y+h+50)، (225، 0، 0)، 2)

Id = nas.predict (خاکستری [y: y+h، x: x+w])

if (Id <70):

if (Id == 1):

Id = "Shashank"

elif (Id == 2):

اگر (c == 0):

Id = "Shivam"

c = c+1

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

دیگری:

Id = "Shivam"

دیگری:

Id = "ناشناس"

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

cv2.imshow ('im'، im)

اگر cv2.waitKey (10) & 0xFF == ord ('q'):

زنگ تفريح

cam.release ()

cv2.destroyAllWindows ()

مرحله 5: LCD و بلندگو

من همچنین از صفحه نمایش LED I2C و بلندگو استفاده کرده ام.

LED از طریق Arduino Mega کنترل می شود و کد آن در کد نهایی آمده است.

برای بلندگو ، با Raspberry Pi متصل است و از eSpeak Utility استفاده می کند.

می توانید مرجع آن را در اینجا پیدا کنید-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

مرحله 6: مراحل نهایی

همه چیز را جمع کنید و برای انفجار آماده شوید.

توصیه شده: