ami-iit / matlab-whole-body-simulator

A robot simulator running on simulink
BSD 3-Clause "New" or "Revised" License
31 stars 9 forks source link

Provide the simulation of the motion on inclined surface #72

Closed VenusPasandi closed 2 years ago

VenusPasandi commented 2 years ago

Currently, in the simulator, we assume that the surface is flat. But, it will be useful to extend the simulator for the inclined surfaces.

VenusPasandi commented 2 years ago

The first and simple solution to extend the current simulator structure for the motion on the inclined surface is to assume that the world frame is aligned with the surface (so the normal axis of the surface is aligned with the z axis of the world frame) and define the gravity vector in this world frame. This is a simple, fast and lovely trick :heart_decoration: for the cases that the normal axis of the surface is constant. The extension of this method for the cases that the normal axis of the surface is not constant (for example a curved surface or V-shaped surface) is not straightforward. :disappointed:

So, I decided to define two frames, the World frame which is constant and the Contact frame. The Contact frame has the same origin as the World frame and its z axis is aligned with the normal axis of the surface.

image

Now I assume that:

  1. The surface passes through the origin of the Contact (and so World) frame.
  2. For now I assume that the Contact frame is constant with respect to the World frame. But, in the future, we can extend it for the case that the Contact frame has linear/angular velocity w.r.t the World frame.
  3. The reaction forces are defined in the Contact frame instead of the World frame.

We need to modify the contact model, impact model and contact status model considering the above assumptions.

Continuous Contact mode:

image

Discretized Contact model:

image

Frictionless Impact model:

image

Frictional Impact model:

image

contact status model

image