プロジェクトタイトル:
サーボモーターを使用した表現力豊かなロボットの顔
プロジェクトの説明:
このプロジェクトでは、サーボモーターで駆動される表現力豊かなロボットの顔の設計と開発に取り組んでおり、中立、悲しい、怒っているなどの基本的な人間の感情を表示できます。目的は、機械的な動きを利用して顔の特徴を通じて感情をシミュレートし、よりインタラクティブで身近なロボットインターフェイスを作り出すことです。
ロボットの顔は以下のように構成されています。
動かせる口(上下の動き)。
眉毛が2つあり、それぞれ独立して制御され、角度の傾き(中立から±30度)によって感情を表現します。
合計3つのサーボモーターが使用されており、1つは口元に、2つは眉毛にそれぞれ接続されています。サーボモーターは、シリアルモニターを通じて受け取ったコマンドを解釈して、顔の表情を変更するArduinoマイクロコントローラーに接続されています。
各表情は関数として定義され、表情を選択すると(番号入力で)、ロボットはニュートラルな状態から新しい感情にスムーズに移行します。これにより、より自然でわかりやすい遷移が生まれます。
特徴:
シリアル入力を介した感情の切り替え(例:1=悲しい、2=怒っているなど)
ニュートラルなポーズを通じたスムーズな移行
簡単なデバッグや感情の追加に適したモジュール式の機能ベースの構造
将来のセンサー(マイク、カメラ)との容易な統合による反応的な動作
それを実行するためのArduinoコード:
#include <Servo.h>
サーボの口。サーボ;
サーボの右眉毛サーボ;
サーボの左眉毛サーボ;
整数現在の顔 =0;・中立から始める
無効 セットアップ(){
シリアル。始める(9600);
マウスサーボ。添付してください。(9);
右の眉毛サーボ。添付してください。(11);
左眉毛サーボ。添付してください。(10);
マウスサーボ。書く(90);
右の眉毛サーボ。書く(90);
左眉毛サーボ。書く(90);
setFace(0);・中立から始める
シリアル。println(顔を設定するための番号を入力してください:);
シリアル。println(「0 = ニュートラル」);
シリアル。println(「1 = 悲しい」);
シリアル。println(「2 = 怒っている」);
』
無効 ループ(){
もし(シリアル。利用可能(){
整数フェイスID =シリアル。parseInt;)
もし(faceID >= )0そしてfaceID ≤2そして、faceIDが現在のFaceと異なる場合には:
シリアル。印刷(顔に移行する:「);
シリアル。println(faceID);
ステップ 1: 中立に移動する。
setFace(0);
遅延(500);・ 短時間中立を保つ
// ステップ 2: ターゲットの式に移動する
setFace(faceID);
現在の顔 = 顔ID;
}それ以外の場合{
シリアル。println(「無効または同じ顔が選択されました。」);
}
}
』
無効 setFace(整数表現) {
スイッチ(表現) {
ケース 0:・中立
マウスサーボ。書く(120);
右の眉毛サーボ。書く(90);
左眉毛サーボ。書く(90);
休憩;
ケース 1:・悲しい
マウスサーボ。書く(90);
右の眉毛サーボ。書く(125);
左眉毛サーボ。書く(55);
休憩;
ケース 2::// 怒っている
マウスサーボ。書く(90);
右の眉毛サーボ。書く(60);
左眉毛サーボ。書く(120);
休憩;
}
』
Теги
Источник модели
