[CFC] Poppy FIRE

Here we go for the FIRE. I present here the structure of the software with some design solutions:

  1. The systems
    In a scene, there may me several character. In some charecter, there may be several systems. If we want to synchronise all these systems on one single timeline, we have to uniformise there language. The simplest language I found is the dataflow.
    At each sampling time, all the system give their informations (sensors) and recup their commands. Therefore, a system is an object that pull and push data on the data flow. For instance, the system we can observe are Poppy, Leap-Motion, Razor, Foot-contact, Nao, Camera, Music, Text to speech and Timeline. Each system can manage its internal task by the same computer or by other computer using REST API, or Qpid, Naoqi…
  2. The timeline system
    This system is particular since it connects the output from systems to inputs to ther systems by several ways : force to constant, force to the present value, apply a geometric or dynamic constraint. The timeline system is compose of several layouts. Each layout concerns a list of dataflow variables.
    Here is an example:
    purpose of the scene : the robot is sitting, sees a coffee, takes the coffee, drinks it, put the coffee.
    Here there are 4 layouts : the coffee (3D vector), the right arm (4 articulations), the head (2 articulations), the torso (5 articulation)
    You can apply trajectory design on the coffee and then constrain hand and head at different times to follow this coffee point.
  3. The timeline functionnalities - animation
    For a scene, you can capture several poses so that they follow to make a gesture (straight forward method), but you can build a gesture by pose to pose with key poses, extrem poses and breakdown poses.

When you work on stage, you can play the key poses to see if the meaning is there, and then you can affine the quality of the movement by overlap, delaying and cartoon exageration, manage the stagging of your scene.
I advise you to look these videos about the 12 principles of animation which make all clear. I want to do the 12 principles on Poppy.

A layout is then a list of poses which apply to some dataflow variables.

The purpose is that, when a robot, sensor, is encapsulated in a system (using Python code), There is no need of Python coding. All can be done by GUI. This GUI MUST NOT be complex with sexy graphical effects which can lead to a bunch of node impossible to debug. The simplest view is a timeline function of time. When you are on the stage to follow the orders of the theater manager, you don’t care about design, it must be as clear as possible.
The evolution between poses can be a timing but also a condition (based on a dataflow variable)

For the GUI, I think Qt is the best option to have somethink smooth and robust.

I know the amount of work is huge but I worked on this structure since january, I have to make it clean now…

My first task is to design the “system” to be plugged on the dataflow.

1 Like