윤우성(Woosung Yun ) , 최인규(Ingyu Choi), 이민혁(Minhyuk Lee), 김대완(Daewan Kim), 김민호(Minho Kim), 김경현(Kyunghyun Kim), 고건영(Geonyoeng Go), 김시온(Sion Kim), 이현승(Hyunseung Lee)
( 위 이미지를 클릭하시면 데모 링크를 보실 수 있습니다.)
EMOTIBOT은 다이나믹셀로 구성된 얼굴이 있는 로봇이다. 사용자의 얼굴 위치를 추정하여, 다이나믹셀을 이용해 눈 마주침을 가능하게 한다. 또한, 사용자가 "하이 이모티"라고 말하면, 감정적인 질문을 할 수 있는 기능이 생기며, 이 질문은 GPT API에 입력되어 상담사가 직접 답변하는 것과 같이 사용자의 감정 상태에 따라 답변을 해준다.
EMOTIBOT은 다음과 같은 기술 스택을 사용한다.
- STT (Speech-to-Text) : 사용자의 음성 입력을 인식하기 위해 사용된다.
- TTS (Text-to-Speech) : 로봇의 음성 출력을 위해 사용된다.
- GPT-3.5 Turbo : 사용자의 감정 상태를 파악하여 대화하기 위해 사용된다.
- OpenCV : 얼굴 인식을 위해 OpenCV의 Cascade Classifier를 사용한다.
- ROS(Noetic) : 로봇의 다양한 노드 간 통신을 위해 사용된다.
- Dynamixel : 로봇의 눈 움직임을 구현하기 위해 사용된다.
- Arduino : 로봇이의 상태를 neo led를 통해 알아보기 위해 사용된다.
EMOTIBOT의 기능은 다음과 같다.
- 얼굴 위치 추정 기능 : OpenCV Cascade Classifier를 사용하여 사용자의 얼굴 위치를 추정하고, 추정된 위치를 이용해 다이나믹셀을 이용해 로봇의 눈을 움직인다.
- 감정 상태 인식 기능 : 사용자의 음성 입력을 통해 감정 상태를 인식하고, GPT-3.5 Turbo를 이용해 상담사와 대화하듯이 사용자와 대화한다.
- 음성 출력 기능 : TTS API를 이용해 사용자와 대화하거나, 다양한 알림을 제공한다.
cd ~/catkin_ws/src
git clone https://github.com/ggh-png/EMOTIROBOT.git
git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git
cd ~/catkin_ws && catkin_makepip install pyaudio
pip install google-cloud-speech
pip install google-cloud-texttospeech
pip install playsound
pip install six
pip install openairoslaunch EMOTI_core EMOTI_core.launch GNU nano 6.2 cyclonedds.xml
<?xml version="1.0" encoding="UTF-8" ?>
<CycloneDDS xmlns="https://cdds.io/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://cdds.io/config https://raw.githubusercontent.com/eclipse-cyclonedds/cyclonedds/master/etc/cyclonedds.xsd">
<Domain Id="any">
<General>
<Interfaces>
<NetworkInterface autodetermine="true" priority="default" multicast="default" />
</Interfaces>
<AllowMulticast>default</AllowMulticast>
<MaxMessageSize>65500B</MaxMessageSize>
</General>
<Internal>
<SocketReceiveBufferSize min="10MB"/>
<Watermarks>
<WhcHigh>500kB</WhcHigh>
</Watermarks>
</Internal>
</Domain>
</CycloneDDS>


