สารบัญ:

NAIN 1.0 - หุ่นยนต์ฮิวแมนนอยด์พื้นฐานที่ใช้ Arduino: 6 ขั้นตอน
NAIN 1.0 - หุ่นยนต์ฮิวแมนนอยด์พื้นฐานที่ใช้ Arduino: 6 ขั้นตอน

วีดีโอ: NAIN 1.0 - หุ่นยนต์ฮิวแมนนอยด์พื้นฐานที่ใช้ Arduino: 6 ขั้นตอน

วีดีโอ: NAIN 1.0 - หุ่นยนต์ฮิวแมนนอยด์พื้นฐานที่ใช้ Arduino: 6 ขั้นตอน
วีดีโอ: Humanoid Robot : Part 1 - Requirements 2024, พฤศจิกายน
Anonim
NAIN 1.0 - หุ่นยนต์ฮิวแมนนอยด์พื้นฐานที่ใช้ Arduino
NAIN 1.0 - หุ่นยนต์ฮิวแมนนอยด์พื้นฐานที่ใช้ Arduino

Nain 1.0 จะมีโมดูลที่ถอดออกได้ 5 โมดูลโดยทั่วไป -

1) แขน – ซึ่งสามารถควบคุมผ่านเซอร์โว

2) ล้อ – ซึ่งสามารถควบคุมได้ด้วยมอเตอร์กระแสตรง

3) Leg – Nain จะสามารถสลับไปมาระหว่างล้อหรือขาเพื่อการเคลื่อนไหวได้

4) หัว – สามารถควบคุมศีรษะได้ด้วยการพยักหน้าต่างๆ

5) โมดูลกล้อง - ซึ่งสามารถเชื่อมต่อสำหรับการเข้าถึงการจดจำใบหน้า

พร้อมกับ NAIN นี้ จะสามารถพูดและโต้ตอบกับผู้ใช้ และสามารถแสดงเวลาด้วยนาฬิกาในตัว จะมีการควบคุมแบบไร้สายโดยใช้ Wi-Fi / Bluetooth

ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น

ส่วนประกอบที่จำเป็น
ส่วนประกอบที่จำเป็น
ส่วนประกอบที่จำเป็น
ส่วนประกอบที่จำเป็น
ส่วนประกอบที่จำเป็น
ส่วนประกอบที่จำเป็น
  1. เซอร์โวมอเตอร์ -4
  2. Arduino Mega - 1
  3. Raspberry Pi - 1
  4. กล้อง USB -1
  5. วิทยากร -1
  6. มอเตอร์กระแสตรง -2
  7. L293D -1
  8. ชุดแบตเตอรี่ - 1
  9. ล้อ -2
  10. ล้อเลื่อน - 2

นอกจากนี้ คุณจะต้องใช้แถบสี่เหลี่ยมอะลูมิเนียมเพื่อทำให้ร่างกาย เกลียว และน็อตเพื่อให้เข้าที่พอดี

ขั้นตอนที่ 2: โครงสร้างร่างกาย

โครงสร้างร่างกาย
โครงสร้างร่างกาย

โครงสร้างตัวถังจะเป็นอลูมิเนียมน้ำหนักเบา แท่งสี่เหลี่ยม ช่วยในการประกอบง่าย

ตอนนี้ประกอบเข้าด้วยกันดังแสดงในรูปภาพและตัดช่องว่างที่เหมาะสมสำหรับเซอร์โวมอเตอร์ที่จะติดอยู่ในแขน

ติดฐานไม้หกเหลี่ยมที่ด้านล่าง

ใต้ฐานไม้ ติดมอเตอร์กระแสตรงและล้อเหมือนที่เราทำกับหุ่นยนต์ติดตามสาย

ที่น่าสนใจคือ เพิ่มล้อเลื่อนสองล้อ - อันหนึ่งที่ด้านหน้าและอีกอันที่ด้านหลังของหุ่นยนต์

ขั้นตอนที่ 3: การเดินสายไฟและการเข้ารหัส

การเดินสายไฟและการเข้ารหัส
การเดินสายไฟและการเข้ารหัส
การเดินสายไฟและการเข้ารหัส
การเดินสายไฟและการเข้ารหัส

ในการต่อโมดูลต่างๆ โปรดดูรหัสที่แนบมาในส่วนนี้

ขั้นแรก เราทดสอบแต่ละโมดูลโดยใช้รหัสแบบสแตนด์อโลน จากนั้นเรารวมโมดูลทั้งหมดเข้าด้วยกัน และควบคุมการเคลื่อนที่ของล้อและแขนโดยใช้โมดูลบลูทูธ

ขั้นตอนที่ 4: Raspberry Pi และการจดจำภาพ

Raspberry Pi และการจดจำภาพ
Raspberry Pi และการจดจำภาพ
Raspberry Pi และการจดจำภาพ
Raspberry Pi และการจดจำภาพ

การจดจำภาพทำได้โดยใช้กล้อง USB และ Raspberry Pi

เพื่อที่คุณจะต้องติดตั้งไลบรารี OPEN CV บน Pi ของคุณ

คุณสามารถทำได้จากที่นี่ -

จากนั้นคุณจะต้องทำการจดจำภาพโดยใช้ haar cascade

คุณสามารถทำได้จากที่นี่ -https://thecodacus.com/category/opencv/#. WvsNC4iFPDc

หลังจากศึกษาลิงก์ด้านบนและทำตามนั้นแล้ว ฉันได้แก้ไขโค้ดสุดท้ายที่ฉันใช้และกำลังวางด้านล่าง -

ตัวสร้างชุดข้อมูล:

importcv2

กล้อง = cv2. VideoCapture(0)

เครื่องตรวจจับ=cv2. CascadeClassifier('ตัวแยกประเภท/face.xml')

ผม=0

ออฟเซ็ต=50

name=raw_input('ป้อนรหัสของคุณ')

ในขณะที่จริง:

กลับมาแล้ว im =cam.read()

สีเทา=cv2.cvtColor(im, cv2. COLOR_BGR2GRAY)

faces=detector.detectMultiScale(สีเทา, scaleFactor=1.2, minNeighbors=5, minSize=(100, 100), flags=cv2. CASCADE_SCALE_IMAGE)

for(x, y, w, h) ในใบหน้า:

ผม=ผม+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):

หยุดพัก

cam.release()

cv2.destroyAllWindows()

มันจะสร้างชุดข้อมูลรูปภาพของคุณที่จะใช้สำหรับการตรวจสอบสิทธิ์

เทรนเนอร์:

importcv2, os

นำเข้า numpy เป็น np

จาก PIL นำเข้า Image

ตัวจำแนกลายมือ = cv2.face.createLBPHFaceRecognizer()

cascadePath = "ตัวแยกประเภท/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

เส้นทาง = 'ชุดข้อมูล'

def get_images_and_labels (เส้นทาง):

image_paths = [os.path.join(path, f) สำหรับ f ใน os.listdir(path)]

# ภาพจะมีภาพใบหน้า

ภาพ =

# labels จะมีป้ายกำกับที่กำหนดให้กับรูปภาพ

ป้ายกำกับ =

สำหรับ image_path ใน image_paths:

# อ่านภาพและแปลงเป็นระดับสีเทา

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

# แปลงรูปแบบภาพเป็นอาร์เรย์จำนวนมาก

รูปภาพ = np.array (image_pil, 'uint8')

#รับฉลากของภาพ

nbr = int(os.path.split(image_path)[-1].split(".")[1].replace("face-", ""))

#nbr=int(''.join(str(ord(c)) สำหรับ c ใน nbr))

พิมพ์ nbr

#ตรวจจับใบหน้าในรูป

ใบหน้า = faceCascade.detectMultiScale (ภาพ)

# หากตรวจพบใบหน้า ให้แนบใบหน้ากับรูปภาพและติดป้ายกำกับเข้ากับป้ายกำกับ

สำหรับ (x, y, w, h) ในหน้า:

images.append(image[y: y + h, x: x + w])

labels.append(nbr)

cv2.imshow("การเพิ่มใบหน้าให้กับชุดการฝึก…", image[y: y + h, x: x + w])

cv2.waitKey(10)

# ส่งคืนรายการรูปภาพและรายการป้ายกำกับ

ส่งคืนรูปภาพ ป้ายกำกับ

รูปภาพ, ป้ายกำกับ = get_images_and_labels(เส้นทาง)

cv2.imshow('ทดสอบ', รูปภาพ[0])

cv2.waitKey(1)

Recognizer.train (ภาพ np.array (ป้ายกำกับ))

จดจำ.save('ผู้ฝึกสอน/ผู้ฝึกสอน.yml')

cv2.destroyAllWindows()

เครื่องตรวจจับ

importcv2

นำเข้า numpy เป็น np

นำเข้าระบบปฏิบัติการ

c=0

ตัวจำแนกลายมือ = cv2.face.createLBPHFaceRecognizer()

ตัวจดจำ.load('ผู้ฝึกสอน/ผู้ฝึกสอน.yml')

cascadePath = "ตัวแยกประเภท/face.xml"

faceCascade = cv2. CascadeClassifier (cascadePath);

กล้อง = cv2. VideoCapture(0)

fontface = cv2. FONT_HERSHEY_SIMPLEX

fontscale = 1

สีฟอนต์ = (255, 255, 255)

ในขณะที่จริง:

เกษียณแล้ว im =cam.read()

สีเทา=cv2.cvtColor(im, cv2. COLOR_BGR2GRAY)

faces=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])

ถ้า(รหัส<70):

ถ้า(Id==1):

Id="ชาแชงค์"

เอลฟ์(Id==2):

ถ้า(c==0):

Id="ชีวาม"

c=c+1

os.system("พูด 'ยินดีต้อนรับการเข้าถึง Shivam'")

อื่น:

Id="ศิวาม"

อื่น:

Id="ไม่ทราบ"

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

cv2.imshow('ฉัน', อิม)

ถ้า cv2.waitKey(10) & 0xFF==ord('q'):

หยุดพัก

cam.release()

cv2.destroyAllWindows()

ขั้นตอนที่ 5: LCD และลำโพง

ฉันยังใช้จอแสดงผล LED I2C และลำโพง

LED ถูกควบคุมผ่าน Arduino Mega และรหัสของมันจะได้รับในรหัสสุดท้าย

สำหรับ Speaker จะเชื่อมต่อกับ Raspberry Pi และใช้ eSpeak Utility

คุณสามารถค้นหาข้อมูลอ้างอิงได้ที่นี่ -

ขั้นตอนที่ 6: ขั้นตอนสุดท้าย

รวบรวมทุกอย่างและเตรียมพร้อมสำหรับการปัง

แนะนำ: