MODULE 41 / CHARACTER & EXPRESSION
Build a small performance system
Connect your clips and behavior rules through one explicit command owner. Learn how to blend, synchronize cues, recover from stale input and preserve control authority.
By the end, you can…
- Design channel ownership and priority rules.
- Specify continuous entry/exit and interruption behavior.
- Plan synchronized sound/LED cues without corrupting the motion loop.
Modules 38–40; a documented controller interface.
For physical tests, all electrical, actuator and first-stand commissioning modules are complete.
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.One channel needs one final decision
A performance may request background motion, a triggered nod and an operator look direction simultaneously. If each writes directly to the same joint, the last writer wins unpredictably. Put them through one director with documented priority and channel ownership.
A useful design is: stop/fault handler first; commissioned robot controller next; then allowed operator and show references. The exact ordering within the allowed reference layer is a product choice. Do not let a low-priority idle animation overwrite balance or a fault response.
Transitions are motion too
A clip authored from zero cannot simply begin when the joint is elsewhere. Blend from the current reference to the new entry pose over a planned interval. At interruption, start from the current evaluated pose, not the original clip’s first key. Check derivatives of the combined result; smooth individual clips do not guarantee a smooth blend.
For a basic crossfade, q = (1−w)qA + wqB. Its speed also contains a term from changing w, so a fast crossfade between distant poses can still demand a large velocity. Apply this only in a verified compatible reference space, not blindly to two policies’ raw leg actions.
dq/dt = (1−w)dqA/dt + w·dqB/dt + (dw/dt)(qB−qA)Use time, not the speed of the program
A timeline should advance from a monotonic clock. Keep show cues timestamped and avoid blocking the control loop while loading audio or writing files. Log requested versus applied reference, actual state and missed deadlines with timestamps.
Freshness matters. Define what happens when the operator input, perception result or clip player stops updating. A watchdog must lead to the already commissioned fallback; “freeze all joints” is not a universally safe answer for a balancing robot.
After a stop is explicitly reset, enter the commissioned recovery or idle path and wait for a fresh request. Clear the interrupted show request instead of automatically resuming it. This keeps an old gesture from restarting merely because the stop condition ended.
Sound and LEDs should support the action
After a gesture is readable without effects, add a brief original sound or a subtle light cue at the main beat. Sound, light and motion need a shared timeline, but their power and data interfaces remain separate. Follow the LED power-budget module before wiring anything.
A speaker in the parts list is not proof that the runtime has an audio scheduler. Likewise the optional ears have no independent commands in the audited 14-actuator runtime. Treat absent channels as planned extensions, not hidden features.
From a desktop director to a hardware adapter
The expression kit intentionally has no hardware transport. Its CSV channels are not accepted deployment commands. Before physical playback, create a revision-specific adapter that translates only supported references, enforces the verified envelope and respects feedback freshness and the existing stop system.
If you cannot identify a supported reference path, return to the simulator and implement/test one there. Running a random upstream deploy script is not a substitute. This is a real integration milestone, and it is reasonable to work through it with help using your exact source revision and controller configuration.
WORDS YOU NOW KNOW
- Crossfade
- A time-varying mixture of compatible reference motions.
- Monotonic clock
- A clock used to measure elapsed time without wall-clock jumps.
- Watchdog
- A mechanism that detects missing or stale updates and initiates a defined fallback.
YOUR CALL
Finished with this module?
0 of 8 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.
Disney · Design and Control of a Bipedal Robotic Character · RSS 2024Read sections V–VI for policy commands and the animation engine. This is Disney BD-X, not the independent BDX-R hardware.MuJoCo · Python bindings and passive viewermacOS passive viewers use mjpython. Forward kinematics and dynamics are different operations.BDX-R · Pinned deployment sourceInspect this exact revision and the policy metadata used in your earlier labs before designing an adapter.