1 |
|
|
#include "ddp-actuator-solver/linear/costLinear.hh" |
2 |
|
|
|
3 |
|
|
CostLinear::CostLinear() { |
4 |
|
|
Q << 1.0, 0.0, 0.0, 0.0; |
5 |
|
|
R << 0.1 * 0.01; |
6 |
|
|
|
7 |
|
|
lxx = Q; |
8 |
|
|
luu = R; |
9 |
|
|
lux << 0.0, 0.0; |
10 |
|
|
lxu << 0.0, 0.0; |
11 |
|
|
lx.setZero(); |
12 |
|
|
final_cost = 0; |
13 |
|
|
running_cost = 0; |
14 |
|
|
} |
15 |
|
|
|
16 |
|
|
void CostLinear::computeCostAndDeriv(const stateVec_t& X, |
17 |
|
|
const stateVec_t& Xdes, |
18 |
|
|
const commandVec_t& U) { |
19 |
|
|
running_cost = |
20 |
|
|
((X - Xdes).transpose() * Q * (X - Xdes) + U.transpose() * R * U)(0, 0); |
21 |
|
|
lx = Q * (X - Xdes); |
22 |
|
|
lu = R * U; |
23 |
|
|
} |
24 |
|
|
|
25 |
|
|
void CostLinear::computeFinalCostAndDeriv(const stateVec_t& X, |
26 |
|
|
const stateVec_t& Xdes) { |
27 |
|
|
final_cost = ((X - Xdes).transpose() * 1.0 * Q * (X - Xdes))(0, 0); |
28 |
|
|
lx = 1.0 * Q * (X - Xdes); |
29 |
|
|
lxx = 1.0 * Q; |
30 |
|
|
} |