GubiLabsAcademy

MODULE 37 / CHARACTER & EXPRESSION

Keyframes, curves, and timing

Use the browser studio to see the effect of timing and easing. Export a real CSV, inspect it with Python, and optionally recreate the idea in Blender’s animation tools.

3–5 hours, at your own pace7 lab steps2 knowledge checks In progress

By the end, you can…

  • Read a keyframe and an angle-versus-time curve.
  • Export and inspect a four-channel motion clip.
  • Understand why slowing a gesture changes speed and acceleration.
BRING WITH YOU

Module 36 and the Python environment from the digital workshop.

No robot, GPU, camera or Blender installation is required for the core lab.

ANIMATION STUDIO / NO ROBOT REQUIREDA small gesture. A clear intention.
Rest2D CHARACTER STUDYHead, timing & intention
0.00 / 6.0 s

DIRECT THE PERFORMANCE

Exports four semantic channels at 60 samples/sec in degrees. Desktop files need your calibrated joint map before simulation. Hold and linear modes demonstrate discontinuities.
head yaw deg 0.0°head pitch deg 0.0°head roll deg 0.0°neck pitch deg 0.0°
Original Gubi Labs teaching animation, inspired by animation principles. This schematic exaggerates the visual effect; it is not BDX-R geometry, a balance simulation, or a motor controller. The eyes move together to illustrate head yaw; the physical BDX-R has no independent eye joint. Export before leaving; studio edits are not saved automatically. Follow the timing lab
01

Keyframes describe destinations

A keyframe stores a value at a time. Two keys might say “head yaw is zero at 0 seconds” and “head yaw is 8 degrees at 1 second.” Interpolation fills the values between them. A graph editor plots time horizontally and value vertically; steep slopes mean fast changes.

In our studio, each preset contains intentional poses and holds. Duration stretches the whole clip; gesture size scales its angle offsets. Export writes a sample every 1/60 second. These samples describe semantic head channels, not calibrated encoder readings.

02

Hold, linear, and eased motion

Hold mode stays at a pose until the next key and then jumps. It helps block a performance before refining it. Linear mode moves with a constant slope inside each segment, but changes velocity abruptly at many keys. The eased mode uses a quintic curve with zero endpoint velocity and acceleration for each segment.

Smooth-looking curves still require checks. This particular easing makes the robot pause at each key; it is useful for a first gesture, not a universal animation recipe. A later spline may flow through keys, but overshoot and derivative limits must then be checked.

s(u) = 6u⁵ − 15u⁴ + 10u³; q(u) = q₀ + (q₁ − q₀)s(u)
03

Timing is also an engineering decision

If you double the duration of the same path, its speed halves and its acceleration becomes one quarter. Halving the angular amplitude halves both as well. The supplied analyzer estimates derivatives from neighboring samples. It does not check torque, jerk, unmodeled peaks between samples or physical clearances.

This is why a tiny motion can be demanding when performed abruptly. Never interpret a successful CSV parse or a finite derivative as approval for a motor command. The mapping and physical tests come later.

new speed = old speed × amplitude_scale / time_stretch; new acceleration = old acceleration × amplitude_scale / time_stretch²
04

Optional: learn the same idea in Blender

Blender is an animation and modeling application; CAD remains useful for dimensioned mechanical design. Download Blender from blender.org/download and open a new General file. For this exercise, use the default cube as a motion stand-in so you can learn the interface before importing robot geometry.

Select the cube. In its Transform panel choose XYZ Euler rotation. Set the frame rate to 24 fps, the timeline to frames 1–145, and place keys on Rotation using the field context menu. Use frame 1 = 0°, frame 49 = 10° on Z, frame 97 = 10°, and frame 145 = 0°. Open the Graph Editor, select the Z rotation curve, and compare Linear with Bezier and Auto Clamped handles. Blender shortcuts vary by version; the property context menu is a reliable starting point.

A Blender file is not a motor script. Preserve the authoring file, record axes and units, and bake/sample the intended channels before using a robot adapter. This optional cube study does not export automatically into our kit.

WORDS YOU NOW KNOW

Keyframe
A specified value at a chosen point in time.
Interpolation
A rule for filling values between specified samples or keys.
Easing
Changing movement speed near the beginning or end of a segment.
Jerk
The rate at which acceleration changes.

YOUR CALL

Finished with this module?

0 of 7 lab steps checked. 0 of 2 questions answered. You decide when the module is complete. Revisiting or editing it will not change your decision.

You can reopen it later. Checking every box will not automatically complete it.

Go to the source

Primary references for this module. Use the version and hardware revision named in the lesson.

Blender · Keyframes and interpolationOptional animation editor. The browser studio is enough to complete the core lab.MuJoCo · Python bindings and passive viewermacOS passive viewers use mjpython. Forward kinematics and dynamics are different operations.