|
1 | 1 | import numpy as np |
2 | 2 | from bullet_robot import BulletRobot |
3 | | -from simple_mpc import RobotModelHandler, RobotDataHandler, FullDynamicsOCP, MPC, IDSolver |
| 3 | +from simple_mpc import RobotModelHandler, RobotDataHandler, FullDynamicsOCP, MPC, IDSolver, FrictionCompensation |
4 | 4 | import example_robot_data as erd |
5 | 5 | import pinocchio as pin |
6 | 6 | import time |
|
21 | 21 | model_handler.addFoot("RR_foot", base_joint_name, pin.XYZQUATToSE3(np.array([-0.24,-0.15, 0.0, 0,0,0,1]))) |
22 | 22 | data_handler = RobotDataHandler(model_handler) |
23 | 23 |
|
| 24 | +nq = model_handler.getModel().nq |
| 25 | +nv = model_handler.getModel().nv |
| 26 | +nu = nv - 6 |
24 | 27 | force_size = 3 |
25 | 28 | nk = len(model_handler.getFeetNames()) |
26 | 29 | gravity = np.array([0, 0, -9.81]) |
|
140 | 143 |
|
141 | 144 | qp = IDSolver(id_conf, model_handler.getModel()) |
142 | 145 |
|
| 146 | +""" Friction """ |
| 147 | +fcompensation = FrictionCompensation(model_handler.getModel(), nu) |
| 148 | + |
143 | 149 | """ Initialize simulation""" |
144 | 150 | device = BulletRobot( |
145 | 151 | model_handler.getModel().names, |
|
270 | 276 | mpc.getDataHandler().getData().M, |
271 | 277 | ) |
272 | 278 |
|
273 | | - device.execute(qp.solved_torque) |
| 279 | + fcompensation.computeFriction(x_interp[nq + 6:], qp.solved_torque) |
| 280 | + device.execute(fcompensation.corrected_torque) |
274 | 281 |
|
275 | | - u_multibody.append(copy.deepcopy(qp.solved_torque)) |
| 282 | + u_multibody.append(copy.deepcopy(fcompensation.corrected_torque)) |
276 | 283 | x_multibody.append(x_measured) |
277 | 284 |
|
278 | 285 | force_FL = np.array(force_FL) |
|
0 commit comments