Мазмұны:

NAIN 1.0 - Arduino қолданатын негізгі гуманоидты робот: 6 қадам
NAIN 1.0 - Arduino қолданатын негізгі гуманоидты робот: 6 қадам
Anonim
NAIN 1.0 - Arduino қолданатын негізгі гуманоидты робот
NAIN 1.0 - Arduino қолданатын негізгі гуманоидты робот

Nain 1.0 негізінен 5 ажыратылатын модульге ие болады.

1) Қол - оны серво арқылы басқаруға болады.

2) Дөңгелектер - оларды тұрақты ток қозғалтқыштарымен басқаруға болады.

3) Аяқ - Наин қозғалыс үшін дөңгелектер мен аяқтар арасында ауыса алады.

4) Бас - Оның басын әр түрлі түйіндер үшін басқаруға болады.

5) Камера модулі- ол бетті тануға қол жеткізуге арналған.

Сонымен қатар, NAIN қолданушылармен сөйлесе алады және олармен қарым -қатынас жасай алады және сізге кіріктірілген сағат арқылы уақытты көрсете алады. Ол Wi-Fi /Bluetooth арқылы сымсыз басқаруға ие болады.

1 -қадам: Қажетті компоненттер

Қажетті компоненттер
Қажетті компоненттер
Қажетті компоненттер
Қажетті компоненттер
Қажетті компоненттер
Қажетті компоненттер
  1. Серво қозғалтқыштары -4
  2. Ардуино Мега - 1
  3. Raspberry Pi - 1
  4. USB камерасы -1
  5. Динамик -1
  6. Тұрақты ток қозғалтқыштары -2
  7. L293D -1
  8. Батарея жиынтығы - 1
  9. Дөңгелектер -2
  10. Касторлық дөңгелектер - 2

Сонымен қатар, сізге корпусты дайындау үшін алюминийден жасалған төртбұрыш жолақтары мен бұрандалар мен жаңғақтар қажет.

2 -қадам: дене құрылысы

Дене құрылысы
Дене құрылысы

Дене құрылымы жеңіл алюминийден жасалған төртбұрыштан жасалған болады, бұл оны оңай жинауға көмектеседі.

Қазіргі уақытта оларды суретте көрсетілгендей жинаңыз, сонымен қатар серво қозғалтқыштарының білікке бекітілуі үшін тиісті бос орындарды кесіңіз.

Төменгі жағына алтыбұрышты ағаш негізді бекітіңіз.

Ағаш негіздің астына кез -келген роботтағы тұрақты ток қозғалтқыштары мен дөңгелектерді бекітіңіз.

Бір қызығы, екі дөңгелекті қосыңыз- біреуі роботтың алдыңғы жағында, екіншісі.

3 -қадам: сымдар мен кодтау

Сымдар мен кодтау
Сымдар мен кодтау
Сымдар мен кодтау
Сымдар мен кодтау

Әр түрлі модульдерді қосу үшін осы бөлімде берілген кодтарды қараңыз.

Алдымен біз әр модульді дербес кодтар арқылы тексердік, содан кейін олардың барлығын біріктіріп, bluetooth модулінің көмегімен доңғалақтар мен қару -жарақтың қозғалысын басқардық.

4 -қадам: Raspberry Pi және кескінді тану

Raspberry Pi және кескінді тану
Raspberry Pi және кескінді тану
Raspberry Pi және кескінді тану
Raspberry Pi және кескінді тану

Кескінді тану USB камерасы мен Raspberry Pi көмегімен орындалады.

Ол үшін сізге Pi -ге OPEN түйіндеме кітапханасын орнату қажет болады.

Сіз мұны осы жерден жасай аласыз-https://github.com/jabelone/OpenCV-for-Pi

Содан кейін сізге haar каскадының көмегімен кескінді тануды орындау қажет болады.

Сіз мұны осы жерден жасай аласыз -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

Жоғарыдағы сілтемені зерттеп, оны орындағаннан кейін мен соңғы кодқа кейбір өзгертулер енгіздім, мен төменге қоямын -

ДЕРЕКТЕР ГЕНЕРАТОРЫ:

импорт cv2

cam = cv2. VideoCapture (0)

детектор = cv2. CascadeClassifier ('Classifiers/face.xml')

мен = 0

ығысу = 50

name = raw_input ('идентификаторыңызды енгізіңіз')

шындық кезінде:

ret, im = cam.read ()

сұр = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

тұлғалар = detector.detectMultiScale (сұр, масштабты фактор = 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.тіктөртбұрыш (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 -дан көп болса, # үзіліс

элиф (мен> 20):

үзіліс

cam.release ()

cv2.destroyAllWindows ()

Бұл сіздің фотосуреттеріңіздің аутентификациясы үшін қолданылатын деректер жинағын жасайды.

ЖАТТЫҒУШЫ:

importcv2, os

numpy санын np ретінде импорттаңыз

PIL импорттау кескінінен

танушы = cv2.face.createLBPHFaceRecognizer ()

cascadePath = «Классификаторлар/face.xml»

faceCascade = cv2. CascadeClassifier (cascadePath);

path = 'dataSet'

def get_images_and_labels (жол):

image_paths = [os.path.join (жол, f) f үшін os.listdir (жол)]

# суретте бет бейнелері болады

суреттер =

# жапсырмада кескінге тағайындалған белгі болады

белгілер =

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].relace («face-», «»))

#nbr = int (''. join (str (ord (c)) for c in 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 (жол)

cv2.imshow ('тест', суреттер [0])

cv2.waitKey (1)

тану құралы (суреттер, np.array (белгілер))

tanınуші.save ('жаттықтырушы/жаттықтырушы.yml')

cv2.destroyAllWindows ()

ДЕТЕКТОР

импорт cv2

numpy санын np ретінде импорттаңыз

импорттау os

c = 0

танушы = cv2.face.createLBPHFaceRecognizer ()

tanınуші.жүктеме ('trainer/trainer.yml')

cascadePath = «Классификаторлар/face.xml»

faceCascade = cv2. CascadeClassifier (cascadePath);

cam = cv2. VideoCapture (0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

фонт шкаласы = 1

fontcolor = (255, 255, 255)

шындық кезінде:

ret, im = cam.read ()

сұр = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)

жүздер = faceCascade.detectMultiScale (сұр, 1,2, 5)

(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 = «Shashank»

элиф (Id == 2):

егер (с == 0):

Id = «Шивам»

c = c+1

os.system («испан» Шивамға рұқсат беріледі «»)

басқа:

Id = «Шивам»

басқа:

Id = «Белгісіз»

cv2.putText (im, str (Id), (x, y+h), қаріп беті, қаріп шкаласы, қаріп түсі)

cv2.imshow ('im', im)

егер cv2.waitKey (10) & 0xFF == ord ('q'):

үзіліс

cam.release ()

cv2.destroyAllWindows ()

5 -қадам: СКД және динамик

Мен сондай -ақ I2C жарықдиодты дисплейі мен динамикті қолдандым.

Жарық диоды Arduino Mega арқылы басқарылады және оның коды соңғы кодта беріледі.

Динамик үшін ол Raspberry Pi -мен байланысты және eSpeak Utility пайдаланады.

Сіз оның сілтемесін мына жерден таба аласыз-https://www.dexterindustries.com/howto/make-your-raspberry-pi-speak/

6 -қадам: Қорытынды қадамдар

Барлығын жинап, жарылысқа дайын болыңыз.

Ұсынылған: