From b38ef7a40e25aaa45a5cea48fa1a8de65d64e49b Mon Sep 17 00:00:00 2001 From: odri <odri@furano.laas.fr> Date: Wed, 25 Aug 2021 16:29:02 +0200 Subject: [PATCH] Tweak graphs + Adapt loggers to support powerboard data --- scripts/LoggerControl.py | 38 ++++++++++++++++++++++++++++++++------ scripts/LoggerSensors.py | 3 +++ 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/scripts/LoggerControl.py b/scripts/LoggerControl.py index 21c45065..408c771c 100644 --- a/scripts/LoggerControl.py +++ b/scripts/LoggerControl.py @@ -394,8 +394,8 @@ class LoggerControl(): ax0 = plt.subplot(3, 4, index12[i]) else: plt.subplot(3, 4, index12[i], sharex=ax0) - tau_fb = self.wbc_P[:, i] * (self.wbc_q_des[:, i] - self.esti_q_filt[:, 7+i]) + \ - self.wbc_D[:, i] * (self.wbc_v_des[:, i] - self.esti_v_filt[:, 6+i]) + tau_fb = self.wbc_P[:, i] * (self.wbc_q_des[:, i] - self.loop_o_q[:, 6+i]) + \ + self.wbc_D[:, i] * (self.wbc_v_des[:, i] - self.loop_o_v[:, 6+i]) h1, = plt.plot(t_range, self.wbc_FF[:, i] * self.wbc_tau_ff[:, i], "r", linewidth=3) h2, = plt.plot(t_range, tau_fb, "b", linewidth=3) h3, = plt.plot(t_range, self.wbc_FF[:, i] * self.wbc_tau_ff[:, i] + tau_fb, "g", linewidth=3) @@ -450,6 +450,25 @@ class LoggerControl(): lgd1[i % 3]+" "+lgd2[int(i/3)]], prop={'size': 8}) self.custom_suptitle("Actuator positions") + #### + # Desired & Measured actuator velocity + #### + lgd1 = ["HAA", "HFE", "Knee"] + lgd2 = ["FL", "FR", "HL", "HR"] + plt.figure() + for i in range(12): + if i == 0: + ax0 = plt.subplot(3, 4, index12[i]) + else: + plt.subplot(3, 4, index12[i], sharex=ax0) + h1, = plt.plot(t_range, self.wbc_v_des[:, i], color='r', linewidth=3) + h2, = plt.plot(t_range, self.loop_o_v[:, 6+i], color='b', linewidth=3) + plt.xlabel("Time [s]") + plt.ylabel(lgd1[i % 3]+" "+lgd2[int(i/3)]+" [rad]") + plt.legend([h1, h2], ["Ref "+lgd1[i % 3]+" "+lgd2[int(i/3)], + lgd1[i % 3]+" "+lgd2[int(i/3)]], prop={'size': 8}) + self.custom_suptitle("Actuator velocities") + #### # Evolution of trajectories in position and orientation computed by the MPC #### @@ -577,7 +596,7 @@ class LoggerControl(): #### # Power supply profile #### - """ + plt.figure() for i in range(3): if i == 0: @@ -595,7 +614,7 @@ class LoggerControl(): plt.plot(t_range, loggerSensors.energy[:], linewidth=2) plt.ylabel("Bus energy [J]") plt.xlabel("Time [s]") - """ + #### # Estimated computation time for each step of the control architecture @@ -756,6 +775,9 @@ class LoggerControl(): mocapAngularVelocity=loggerSensors.mocapAngularVelocity, mocapOrientationMat9=loggerSensors.mocapOrientationMat9, mocapOrientationQuat=loggerSensors.mocapOrientationQuat, + current=loggerSensors.current, + voltage=loggerSensors.voltage, + energy=loggerSensors.energy, ) def loadAll(self, loggerSensors, fileName=None): @@ -850,6 +872,10 @@ class LoggerControl(): loggerSensors.mocapOrientationMat9 = data["mocapOrientationMat9"] loggerSensors.mocapOrientationQuat = data["mocapOrientationQuat"] loggerSensors.logSize = loggerSensors.q_mes.shape[0] + loggerSensors.current = data["current"] + loggerSensors.voltage = data["voltage"] + loggerSensors.energy = data["energy"] + def slider_predicted_trajectory(self): @@ -1042,8 +1068,8 @@ if __name__ == "__main__": import LoggerSensors # Create loggers - loggerSensors = LoggerSensors.LoggerSensors(logSize=15000-3) - logger = LoggerControl(0.001, 30, logSize=15000-3) + loggerSensors = LoggerSensors.LoggerSensors(logSize=20000-3) + logger = LoggerControl(0.001, 30, logSize=20000-3) # Load data from .npz file logger.loadAll(loggerSensors) diff --git a/scripts/LoggerSensors.py b/scripts/LoggerSensors.py index 2ecff6be..6bfcd4d2 100644 --- a/scripts/LoggerSensors.py +++ b/scripts/LoggerSensors.py @@ -50,6 +50,9 @@ class LoggerSensors(): self.baseLinearAcceleration[self.i] = device.imu.linear_acceleration self.baseAccelerometer[self.i] = device.imu.accelerometer self.torquesFromCurrentMeasurment[self.i] = device.joints.measured_torques + self.current[self.i] = device.powerboard.current + self.voltage[self.i] = device.powerboard.voltage + self.energy[self.i] = device.powerboard.energy # Logging from qualisys (motion capture) if qualisys is not None: -- GitLab