--- /dev/null +++ a/proto/sandbox/rst/animation/HeadAnimation.proto @@ -0,0 +1,57 @@ +package rst.animation; + +option java_outer_classname = "HeadAnimationType"; + +/** + * This type describes a set of simple Headanimations to be executed + * on a humanoid robotic head. + * + * @author Simon Schulz + */ +message HeadAnimation { + + /** + * some predefined animations (stupid: we have to use AnimationType_t because of java outer classname conflict) + */ + enum HeadAnimationID { + IDLE = 0; //no animation, idle + HEAD_NOD = 1; //nod + HEAD_SHAKE = 2; //shake + EYEBLINK_L = 3; //blink with the left eye + EYEBLINK_R = 4; //blink with the right eye + EYEBLINK_BOTH = 5; //blink with both eyes + EYEBROWS_RAISE = 6; //raise both eyebrows + EYEBROWS_LOWER = 7; //lower the eyebrows + ENGAGEMENT_LEFT = 8; //shift the head orientation to the left + ENGAGEMENT_RIGHT = 9; //shift the head orientation to the right + } + + /** + * Requested Headanimation + */ + required HeadAnimationID target = 1; + + /** + * Number of repetitions, defaults to one repetition + */ + required uint32 repetitions = 2 [default = 1]; + + /** + * The duration of each animation. This scales how long one animation takes + * + * The duration is given in milliseconds. + */ + // @unit(millisecond) + required uint32 duration_each = 3; + + /** + * How to scale the animation. The default of 1.0 executes the animation 1:1 + * + * given as a float value: + * ]0, 1[ => less pronounced + * [1, 1] => normal version + * ]1, n] => over pronounced + * [-n, 0] => undefined / ignored + */ + required float scale = 4 [default = 1.0]; +} reverted: --- /dev/null +++ a/proto/sandbox/rst/robot/EmotionExpression.proto @@ -0,0 +1,37 @@ +package rst.robot; + +option java_outer_classname = "EmotionExpressionType"; + +/** + * Emotional expressions for humanoid robotic heads + * + * @author Simon Schulz + */ +message EmotionExpression { + + /** + * for now we just use fixed, simple basic emotion states + */ + enum EmotionID { + NEUTRAL = 0; + HAPPY = 1; + SAD = 2; + ANGRY = 3; + SURPRISED = 4; + FEAR = 5; + } + + /** + * which expression to show + */ + required EmotionID value = 1; + + /** + * The duration how long this emotion should be displayed. + * + * The duration is given in milliseconds. + */ + // @unit(millisecond) + required uint32 duration = 2; + +} reverted: --- /dev/null +++ a/proto/sandbox/rst/robot/GazeDirection.proto @@ -0,0 +1,41 @@ +package rst.robot; + +option java_outer_classname = "GazeDirectionType"; + +import "rst/math/Vec3DFloat.proto"; + +/** + * Gaze direction target for robotic head + * + * @author Simon Schulz + */ +message GazeDirection { + /** + * Gaze target direction: + * @ref .x -> pan : head pan rotation angle. positive = person looks to his right side + * @ref .y -> tilt: head tilt rotation angle. positive = person looks up + * @ref .z -> roll: head roll rotation angle. positive = person's head rolled to his right shoulder + * Angles are given in degrees + */ + required math.Vec3DFloat direction = 1; + + /** + * Vergence angle. This describes how both eyes deviate from a straight view. + * The default of 0.0 describes a straight, parallel gaze. + * Angle is given in degrees + */ + required float eye_vergence = 2 [default = 0.0]; + + + /** + * Offset angles describing how much the angular Head deflection is offset + * from the gaze target while the overall gaze (Head + Eyes) will still point to the requested + * target + * @ref .x -> pan offset : head pan rotation angle offset. positive = person looks to his right side + * @ref .y -> tilt offset: head tilt rotation angle offset. positive = person looks up + * @ref .z -> roll offset: head roll rotation angle offset. positive = person's head rolled to his right shoulder + * Default of Vec3DFloat is [0,0,0], this corresponds to no offset. + * Angles are given in degrees + */ + required float math.Vec3DFloat offset = 3; +}