Skip to content

Commit f9e7997

Browse files
author
earlaud
committed
Use kinoID class is go2_kino example
1 parent 4489a10 commit f9e7997

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

examples/go2_kinodynamics.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import numpy as np
22
from bullet_robot import BulletRobot
3-
from simple_mpc import RobotModelHandler, RobotDataHandler, KinodynamicsOCP, MPC, Interpolator
3+
from simple_mpc import RobotModelHandler, RobotDataHandler, KinodynamicsOCP, MPC, Interpolator, KinodynamicsID, KinodynamicsIDSettings
44
import example_robot_data as erd
55
import pinocchio as pin
66
import time
77
import copy
8-
from utils import save_trajectory
98

109
# ####### CONFIGURATION ############
1110
# Load robot
@@ -137,6 +136,19 @@
137136
""" Interpolation """
138137
interpolator = Interpolator(model_handler.getModel())
139138

139+
""" Inverse Dynamics """
140+
kino_ID_settings = KinodynamicsIDSettings()
141+
kino_ID_settings.kp_base = 7.
142+
kino_ID_settings.kp_posture = 10.
143+
kino_ID_settings.kp_contact = 10.
144+
kino_ID_settings.w_base = 100.
145+
kino_ID_settings.w_posture = 1.
146+
kino_ID_settings.w_contact_force = 1.
147+
kino_ID_settings.w_contact_motion = 1.
148+
149+
kino_ID = KinodynamicsID(model_handler, dt, kino_ID_settings)
150+
151+
140152
""" Initialize simulation"""
141153
device = BulletRobot(
142154
model_handler.getModel().names,
@@ -183,8 +195,8 @@
183195
v = np.zeros(6)
184196
v[0] = 0.2
185197
mpc.velocity_base = v
186-
for t in range(300):
187-
# print("Time " + str(t))
198+
for step in range(300):
199+
# print("Time " + str(step))
188200
land_LF = mpc.getFootLandCycle("FL_foot")
189201
land_RF = mpc.getFootLandCycle("RL_foot")
190202
takeoff_LF = mpc.getFootTakeoffCycle("FL_foot")
@@ -236,23 +248,28 @@
236248
mpc.getReferencePose(0, "RR_foot").translation,
237249
)
238250

239-
for j in range(N_simu):
240-
# time.sleep(0.01)
241-
delay = j / float(N_simu) * dt
251+
for sub_step in range(N_simu):
252+
t = (step * N_simu + sub_step) * dt
242253

254+
delay = sub_step / float(N_simu) * dt
255+
xs_interp = interpolator.interpolateLinear(delay, dt, xss)
243256
acc_interp = interpolator.interpolateLinear(delay, dt, ddqs)
244-
force_interp = interpolator.interpolateLinear(delay, dt, forces)
257+
force_interp = interpolator.interpolateLinear(delay, dt, forces).reshape((4,3))
258+
259+
q_interp = xs_interp[:mpc.getModelHandler().getModel().nq]
260+
v_interp = xs_interp[mpc.getModelHandler().getModel().nq:]
245261

246262
q_meas, v_meas = device.measureState()
247263
x_measured = np.concatenate([q_meas, v_meas])
248264

249265
mpc.getDataHandler().updateInternalData(x_measured, True)
250266

251-
# TODO: use TSID to compute inverse dynamics and get tau_cmd
267+
kino_ID.setTarget(q_interp, v_interp, acc_interp, contact_states, force_interp)
268+
tau_cmd = kino_ID.solve(t, q_meas, v_meas)
252269

253-
#device.execute(tau_cmd)
254-
#u_multibody.append(copy.deepcopy(tau_cmd))
255-
#x_multibody.append(x_measured)
270+
device.execute(tau_cmd)
271+
u_multibody.append(copy.deepcopy(tau_cmd))
272+
x_multibody.append(x_measured)
256273

257274

258275
force_FL = np.array(force_FL)

0 commit comments

Comments
 (0)