82
MEMMO: Memory of Motion www.memmo-project.eu MEMMO: Memory of Motion www.memmo-project.eu Pinocchio Fast forward & inverse dynamics Nicolas Mansard (CNRS)

Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.euMEMMO: Memory of Motion – www.memmo-project.eu

PinocchioFast forward & inverse dynamics

Nicolas Mansard(CNRS)

Page 2: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Gurus

2

Justin Carpentier (INRIA) Roy Featherstone (IIT)

Page 3: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

WWW Material

� Web site� https://stack-of-tasks.github.io/pinocchio

� Doxygen� Documentation tab on github.io

� Tutorials: � Practical exercices in the documentation

� Also use the ? In Python3

Page 4: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Contributing to Pinocchio

� GitHub project� https://github.com/stack-of-tasks/pinocchio

� Post issues for contributing

� We are looking for doc-devs!� Feedback some material as a thank-you note� In the doc: “examples” is waiting for you

4

Page 5: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

C++ / Python

� C++ Library� Fast, careful implementation� Using curiously recursive template pattern (CRTP)� You likely don’t want to develop code there� Using it is not so complex (think Eigen)

� Python bindings� A 1-to-0.99 map from C++ API to Python API� Start by developing in Python� Beware of the lack of accuracy … speed is ok

5

Page 6: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Modeling and optimizing

� Pinocchio is a modeling library� Not an application� Not a solver� Some key features directly available

� You don’t want the solver inside Pinocchio� Inverse dynamics: TSID� Planning and contact planning: HPP� Optimal control: Crocodyl� Optimal estimation, reinforcement learning, inverse

kinematics, contact simulation …

6

Page 7: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

List of features

� URDF parser� Forward kinematics and Jacobians� Mass, center of mass and gen.inertia matrix� Forward and inverse dynamics� Model display (with Gepetto-viewer)� Collision detection and distances (with HPP-FCL)� Derivatives of kinematics and dynamics� Type templatization and code generation

7

Page 8: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

TSID

� Pinocchio for� Computing the inertia matrix, jacobians, kinematics

� Formulation of tasks� Contact models� QP resolution

8

Page 9: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

HPP planner

� Pinocchio for� Geometry, collision (hpp-fcl)� Projectors with inverse kinematics� Balance constraint with dynamics

� Pinocchio encapsulated in hpp-Pinocchio� Stochastic exploration algorithm (RRT)� Contact checking� Re-arrangement algorithms

9

Page 10: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Crocoddyl

� Pinocchio for� Kinematics and dynamics� And their derivatives� Display with Gepetto-viewer

� DDP optimizer� Task/cost formulation

10

Page 11: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Representing the physical world

p Ap

A

This is a point This is not a pointThis is the representation of a point

Page 12: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Representing the physical world

� Pinocchio is a model� Of course, models are wrong

� The way you represent geometry matters� Example of SO(3)

� r is a map from E(3) to E(3)� R is a othonormal positive matrix� w is a 3D vector� q is a quaternion represented as a 4D vector� Roll-Pitch-Yaw & other Euler angles should not be used

12

Page 13: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu13

Page 14: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu14

Pinocchio bases

Page 15: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Basics

� Urdf model� Kinematic tree� Forward kinematics� Display� Spatial algebra

15

Page 16: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Kinematic tree

� Inside robot model:� joints: joint types and indices� names: joint names� jointPlacements: constant placement wrt parent� parents: hierarchy of joints representing the tree

� No bodies� masses and geoms are attached as tree decorations

� First joint represent the universe� If nq==7 then len(rmodel.joints)==8

16

Page 17: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Kinematic tree

17

jhpyter notebook

↳ goin WS memory

- pinocchioOpen A

. .

..

geppetto - gui

Page 18: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Direct geometry

l2

l1

M(q) = l1 cos(q1) + l2 cos(q1+q2)l1 sin(q1) + l2 sin(q1+q2)

q1

q2

Page 19: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Direct geometry

� The geometric model is a tree of joints and bodies

M1

M2

M1(q1)

M3

M2(q2)

M4

M3(q3)

M4(q4)

M(q) = M1 � M1(q1) � M2 � … � M4 � M4(q4)

Me

� Me

Page 20: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Direct and inverse functions

� Direct geometryh: q o h(q), C1 continuous function

� Direct kinematicsv: q, ሶqo v (q, ሶq) = J(q) ሶq

� Inverse geometry� Ill defined, singular points� Numerical inversion by Newton descent

� Integration of the descent� Robot trajectory� Quadratic problem at each step

v1

v2

Page 21: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Display

� Gepetto-viewer is a display server� Python can create a client to this server

� Gepetto-viewer does not know the kinematic tree� Pinocchio must place the bodies� RobotWrapper is doing that for you (not in C++)

21

Page 22: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Spatial algebra� M: placement in SE3� Q: “spatial” velocity of SE3

� ሶ𝑀=Q ×𝑀� D: “spatial” acceleration in SE3

� Q � M6 = se(3)� D � M6 = se(3)� 𝛼 = ሶQ

� I: “spatial” force in SE3� Power P = < I | Q> = AIT AQ � R� K � F6 : momentum

� Y: “spatial” inertia in SE3� K = Y Q� I = Y D

iamarolot

Page 23: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Placement

23

an

:¥:"

I¥:÷÷÷.

.

Page 24: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Displacements

24

Apb It

Apfel = And p

this

Page 25: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Velocities

25

& gin -

.

ox n d NbaFeat -

- ① It*Ari, =AuxAns U

At inD= AND MX N W P

" ::*:* it :'¥7

-

Page 26: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Acceleration

26

A = I

e- ¥1 :. . .

.

.

: ta

.

Page 27: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Derivatives

𝐴 𝑑𝑑𝑡Q = 𝑑

𝑑𝑡𝐴Q+ 𝐴Q𝐴 × 𝐴Q

𝐴 𝑑𝑑𝑡

φ = 𝑑𝑑𝑡

𝐴φ + 𝐴Q𝐴 × 𝐴φ

27

Page 28: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Inertias

28

ay-

- Imo" :?Y .

.

L - y-

- Ya

Page 29: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu29

Bp→Ap = And Bp

Av ←Bv pity

if = ( ArgAmmann's )

BV

Byvtaxoc-finy.si/vwA4TAV--HtJVAy=A4pg.,nn,

am)¥7" "

ay,# =

ME

Page 30: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Model and data

� Pinocchio.Model should be constant� Kinematic tree, joint model, masses, placements …� Plain names used here

� Pinocchio.Data is modified by the algorithms� oMi, v, a� J, Jcom� M� tau, nle

� 1 Model, several Data

30

Page 31: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu31

min𝑋,𝑈

𝑙𝑇 𝑥𝑇 +𝑡=0

𝑇−1

𝑙 𝑥𝑡, 𝑢𝑡

s.t. 𝑥t+1 = f(xt,ut )1 model

Page 32: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu32

Page 33: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu33

Forward kinematics

Page 34: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Forward kinematics

� pinocchio.forwardKinematics(rmodel,rdata,q,vq,aq)

� Compute all the joint placements in data.oMi

� M = data.oMi[-1] : last placement� R = M.rotation� p = M.translation

34

Page 35: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

NumPy Array vs Matrix

� Pinocchio works with NumPY.Matrix� R is a matrix� p is a 1d matrix: p.shape == (3,1)� You can multiply R*p

� NumPy works better with Array� np.zeros([3,3]) is an array� You cannot multiply array

� Use np.dot or obtain a coefficient-wise multiplication

� SciPy works with array too35

Page 36: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

SciPy optimizer

from scipy.optimize import fmin_slsqpfmin_slsqp?

fmin_slsqp(x0 = np.zeros(7),func= costFunction,f_eqcons = constraintFunction,callback = callbackFunction)

36

Page 37: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

SciPy optimizer

� Make the optimization problem a class:� Problem parameters in the __init__� Cost method taking x as input� Constraint and callback method if need be

37

Page 38: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

SciPy optimizer

class OptimProblem:def __init__(self,rmodel):

# Put your parameters hereself.rmodel = rmodelself.rdata = self.rmodel.createData()

def cost(self,x): return sum( x**2 )def callback(self,x): print(self.cost(x))

pbm = OptimProblem(robot.model)fmin_slsqp(x0=x0,func=pbm.cost,callback=pbm.callback)

38

Page 39: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu39

Page 40: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu40

Frames &+

Page 41: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Joint and frames

� Joint frames � Skeleton of the kinematic chain� Computed by forward kinematics in rdata.oMi

� “Operational” frames� Added as decoration to the tree� Placed with respect to a joint parent� Stored in rmodel.frames� Computed by updateFramePlacements in rdata.oMf

41

on flat -

-Oni lat int¥ Toutant

Page 42: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Joint limits

� Parsed from urdf� In rmodel.lowerPositionLimits and

rmodel.upperPositionLimits

� Beware, infinity by default

42

Page 43: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu43

Page 44: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu44

Log and difference

Page 45: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Position versus placement

� Difference of positions� residuals = p-p*

� Diffence of rotations� residuals = log3( RT R*)

� Diffence of placements� residuals = log6( M-1 M*)

45

play : 059 - sad

= RE R

R =

°

Ri pit ! A

RT Rt = irony =i R 't

Page 46: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Free flyer joint

� Revolute joint� q of dimension one, 𝑣𝑞 = ሶ𝑞

� Free flyer

46

x, y ,

Z, of

1191¥

Page 47: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Integrate and differenciate

qnext = pinocchio.integrate(q,vq) �� Q

qnext = q�vq

Δq = vq = pinocchio.difference(q1,q2) �� Tq1Q

Δq = q2 (-) q1

47

Page 48: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Integrate and differenciate

� On a Matrix Lie Group

q�vq = Matrix(q) exp(skew(vq)) = Q Exp(vq)

q2 (-) q1 = log( Q2-1 Q1)

48

Page 49: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Optimization with Q / TQ

� q = (x,y,z, q, …) with q unitary

� What is the result with a solver ?

49

Page 50: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Solution 1: normalized

def constraint_q(self, x):return norm(x[3:7])-1)

50

Page 51: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Solution 2: reparametrize

� We represent q � as the displacement vq

� from a reference configuration q0

q = q0 � vq

51

Page 52: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Random configuration

pinocchio.randomConfiguration(rmodel)

52

Page 53: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu53

Page 54: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.euMEMMO: Memory of Motion – www.memmo-project.eu 54

Part IIDifferencial kinematics

Page 55: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu55

Page 56: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu56

Working in manifolds

Page 57: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Manifold-to-manifold maps

� Function f:� From manifold to manifold� M: q � Q o M(q) � SE3

� Derivative Fx� From tangent to tangent� Mq : vq � TQ o Q � M6

� Q(q,vq) = J(q) vq� J: from vector to vector

57

Tangent

Manifold

Page 58: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Consequence

� You should know in which tangent space you work� Typically at the local point, or at the origin

Q(q,vq) = J(q) vq

� In Pinocchio, the velocity are often represented locally

� Velocity of the free flyer in the frame of the hip

58

in.

A A

Page 59: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu59

Page 60: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu60

Finite differences

Page 61: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu61

Page 62: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu62

Robot jacobian

Page 63: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Joint jacobian

� Computed by two steps:� computeJointJacobians(rmodel,rdata,q)

� getJointJacobian(rmodel,rdata,IDX,LOCAL/GLOBAL)

� From local to global

63

°Jvg = OU OX ;iv =

ou

izrg = ivoxiiy -

- of

Page 64: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Frame jacobian

� Just add the additional displacement

� 4 stepsComputeJointJacobianupdateFramePlacementsgetFrameJacobian

64

i

xf izfy=ixf

' i

2

Page 65: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu65

Page 66: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu66

Cost jacobian

Page 67: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Chain rule

Cost(q) = log(M(q)) Cost = log o M

Cost_q = log_M M_q

M_q ?log_M

67

Page 68: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Log jacobian

� Computed in pinocchio

� Pinocchio.Jlog

68

Page 69: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu69

Free-flyer reparam

Page 70: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

� Recall q = q0 � vq = r(vq)� c(vq) = log(M(r(vq)))

� Chain rule …� r(v) = integrate(q0,v)� R_v = dIntegrate_dv (q0,v)� Not implemented yet in Pinocchio� But it is the inverse of dDiffence which is implemented

70

Page 71: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu71

Page 72: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.euMEMMO: Memory of Motion – www.memmo-project.eu 72

Part IIIDynamics

Page 73: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Dynamics of articulated bodies

� Dynamic equation of the robot𝑀 𝑞 ሶ𝑣𝑞 + 𝑐 𝑞, 𝑣𝑞 + 𝑔 𝑞 = 𝜏𝑞

Page 74: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Dynamics of articulated bodies

� Dynamic equation of the robot𝑀 𝑞 ሶ𝑣𝑞 + 𝑐 𝑞, 𝑣𝑞 + 𝑔 𝑞 = 𝜏𝑞

� Actuation of the robot� Fixed manipulator: 𝜏𝑞 = 𝜏𝑚

� Floating robot: 𝜏𝑞 =0𝜏𝑚

= 𝑆𝑇𝜏𝑚

� Robot in contact: : 𝜏𝑞 = 𝑆𝑇𝜏𝑚 + 𝐽𝑇 I

Page 75: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

An intuition of M?

75

Page 76: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

RNEA algorithm

76

nigra→

RNE 't!IIIa spa

A-'

f 2g - Hgira ) ) = Tl→ ABAL gig ,

2g )40ps

N : CRBA2µs

be -

- meal g. ra,

o ) → compute Athens 1) II3µs

Page 77: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Other algorithms

� CRBA

� ABA

� ComputeAllTerms

77

Page 78: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

RNEA with forces

78

N rig tbh.

Nal t sty → week, Miri ,

→[ Yo .

.

. Yn ) )i

y ← only for jab

Page 79: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu79

Page 80: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu80

Contact inverse dynamics

Page 81: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Optimization problem

min𝜏,𝜑

𝑀 ሶ𝑣𝑞 + 𝑏 𝑞, 𝑣𝑞 − 𝜏 − 𝐽𝑇𝜑

81

2

Page 82: Pinocchio · Pinocchio is a modeling library Not an application Not a solver Some key features directly available You don’t want the solver inside Pinocchio Inverse dynamics: TSID

MEMMO: Memory of Motion – www.memmo-project.eu

Optimization problem

� OptimProblem class� With a x2var function that makes the dispatch

� It is a linear problem: we should not use NLP

� See TSID tomorrow

82