forked from stack-of-tasks/pinocchio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinverse-dynamics-derivatives.py
33 lines (23 loc) · 1.08 KB
/
inverse-dynamics-derivatives.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import pinocchio as pin
import numpy as np
##
## In this short script, we show how to compute the derivatives of the
## inverse dynamics (RNEA), using the algorithms proposed in:
##
## Analytical Derivatives of Rigid Body Dynamics Algorithms, Justin Carpentier and Nicolas Mansard, Robotics: Science and Systems, 2018
##
# Create model and data
model = pin.buildSampleModelHumanoidRandom()
data = model.createData()
# Set bounds (by default they are undefinded for a the Simple Humanoid model)
model.lowerPositionLimit = -np.ones((model.nq,1))
model.upperPositionLimit = np.ones((model.nq,1))
q = pin.randomConfiguration(model) # joint configuration
v = np.random.rand(model.nv,1) # joint velocity
a = np.random.rand(model.nv,1) # joint acceleration
# Evaluate the derivatives
pin.computeRNEADerivatives(model,data,q,v,a)
# Retrieve the derivatives in data
dtau_dq = data.dtau_dq # Derivatives of the ID w.r.t. the joint config vector
dtau_dv = data.dtau_dv # Derivatives of the ID w.r.t. the joint velocity vector
dtau_da = data.M # Derivatives of the ID w.r.t. the joint acceleration vector