프로젝트 제목:
서보 모터를 사용한 표현력 있는 로보트 얼굴
프로젝트 설명:
이 프로젝트는 서보 모터로 구동되는 표현력 있는 로보틱 얼굴의 설계 및 개발을 포함하며, 중립적, 우울하고, 분노한 등 기본적인 인간의 감정을 표현할 수 있습니다. 목표는 기계적인 동작을 통해 얼굴의 특징을 통해 감정을 시각화하고 더 대화식이고 친근한 로보트 인터페이스를 만들는 것입니다.
로봇의 얼굴은 다음과 같이 구성되어 있습니다:
움직일 수 있는 입(위아래 운동),
두 개의 눈썹은 각각 독립적으로 제어되어, 각도를 기울여서(중립에서 30도 이내) 감정을 표현할 수 있습니다.
총 3개의 서보 모터가 사용됩니다. 하나는 입을 위한 것이고 두 개는 눈썹을 위한 것입니다. 서보들은 아두이노 마이크로컨트롤러에 연결되어 있고, 아두이노는 시리얼 모니터를 통해 받은 명령을 해석하여 얼굴의 표정을 바꾸게 합니다.
각 표현은 함수로 정의되며, 표현을 선택하면(숫자 입력을 통해) 로봇이 새로운 감정으로 전환되기 전에 부드럽게 중립 상태로 이동합니다. 이는 더 생생하고 읽기 쉽게 전환되도록 도움이 됩니다.
특징들:
직렬 입력을 통한 감정 전환(예: 1 = 슬프고, 2 = 화난 등)
중립 포즈를 통한 부드러운 전환
간단한 디버깅과 더 많은 감정을 추가하기 위한 모듈식 기능 기반 구조.
반응적인 행동을 위한 미래의 센서(마이크, 카메라)와의 간단한 통합.
그것을 실행하는 아두이노 코드:
#include <Servo.h>
서보 입, 서보;
서보 오른쪽 눈썹 서보;
서보 왼쪽 눈썹 서보;
정수현재 얼굴 =0;// 중립으로 시작하세요.
비어있다. 설정() {
시리즈.시작하세요.(<)9600);
입 서보.첨부하세요.(<)9);
오른쪽 눈썹 서보.첨부하세요.(<)11);
왼쪽 눈썹 서보.첨부하세요.(<)10);
입 서보.쓰기(<)90);
오른쪽 눈썹 서보.쓰기(<)90);
왼쪽 눈썹 서보.쓰기(<)90);
setFace(<)0);// 중립으로 시작하세요.
시리즈.프린트린(<)얼굴을 설정하려면 숫자를 입력하세요:);
시리즈.프린트린(<)"0 = 중립");
시리즈.프린트린(<)"1 = 슬프다");
시리즈.프린트린(<)"2 = 화난");
그것은...
비어있다. 루프() {
만약(<)시리즈.사용 가능한()) {
정수페이스 ID =시리즈.정수로 변환();
만약(faceID >= )0및 faceID <=2및 faceID가 currentFace와 다른 경우에는:
시리즈.인쇄하기(<)얼굴로 전환하기: ");
시리즈.프린트린(얼굴 인식);
// 단계 1: 중립으로 가기
setFace(<)0);
지연(<)500);// 잠시 중립을 유지하세요.
// 단계 2: 타깃 표현으로 이동하세요.
setFace(얼굴 인식);
currentFace = faceID;
}그렇지 않으면{
시리즈.프린트린(<)"잘못된 또는 같은 얼굴이 선택되었습니다.");
}
}
그것은...
비어있다. setFace(<)정수표현) {
스위치(표현) {
케이스 0:// 중립적인
입 서보.쓰기(<)120);
오른쪽 눈썹 서보.쓰기(<)90);
왼쪽 눈썹 서보.쓰기(<)90);
휴식;
케이스 1:
입 서보.쓰기(<)90);
오른쪽 눈썹 서보.쓰기(<)125);
왼쪽 눈썹 서보.쓰기(<)55);
휴식;
케이스 2:
입 서보.쓰기(<)90);
오른쪽 눈썹 서보.쓰기(<)60);
왼쪽 눈썹 서보.쓰기(<)120);
휴식;
}
그것은...
태그
모델 소스
