I was recently introduced to Gaussian Process Regression (GPR). I read multiple papers regarding use cases of GPR in robotics, however, they were more or less very limited.

Use case from the literature:

  • There is a robot arm with 5 joints.
  • The authors demonstrate an action such as avoiding an object. After several demonstrations, they build a GPR model.
  • Using this trained GPR model, they demonstrate that the robot arm can avoid an object in a similar situation.

Use case that I am wondering:

  • I would like to model the basic movements such as move your arm forward but in a certain manner. For example, I would like to train my GPR model so that it can learn the timing when and how long each joint has to move so that this arm can be moved forward in a certain manner that I demonstrated.

  • Challenges, in this case, would be that, for instance, the initial joint configuration changes, my trained GPR model will be useless since it is trained for the one specific set of initial joint configuration to move forward.

What could be the solution for this use case? If GPR is not the right choice, what would be the better method?

In the below case, 2 demonstrations are used to represent the behavior/skill. However, in our case, "moving straight forward" action can start from different start posture whereas in the figure below it is always q=0. Now, if we imagine that we are really trying to model this "moving straight forward" more generally (which means for different start postures) the trajectory distribution will be very giant (will probably cover the whole plot).

My question is whether GPR or any regression approach can be used for modeling this kind of general behavior.

enter image description here


1 Answer 1


Gaussian process regression is utilized in the domain of Learning from demonstration to generate the trajectories from multiple demonstrations. The idea is, that a human operator creates a database of trajectories. The points are converted into a mathematical model and a solver is generating trajectories for new situations. The first step is to build a database as a Python dictionary:

skill_avoiding = {
    0: [(250,150),(170,160),(180,270)],    
    1: [(100,160),(180,180),(180,270)],        
    2: [(140,140),(170,180),(180,250)],  

The skill avoiding is demonstrated three times with different trajectories. They are forming a space of possible actions. For generating a new trajectory an interpolation method is needed. Regression means, that the solver takes the three demonstration as input and generates a new trajectory which has a similar pattern. Gaussian process interpolation works with a RBF kernel. A kernel is an advanced sort of function approximation. In contrast to linear interpolation the resulting trajectory looks smooth.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.