class RealTimePlotModule(): """ This module plots a bar chart with the probability distribution on the states. Usage python plot_probabilities.py Input port: /processing/NamePort:o """ def __init__(self, list_port): self.input_port = [] self.port = [] plt.ion() self.fig = plt.figure() self.ax = self.fig.add_subplot(111, projection='3d') data = np.zeros((2, 66)) color = ['b', 'r'] self.lines = [] self.skeleton = [] self.skeleton = Skeleton('dhm66_ISB_Xsens.urdf') for i, name_port in enumerate(list_port): self.input_port.append(name_port) self.port.append(yarp.BufferedPortBottle()) self.port[i].open('/plot_skeleton' + name_port) yarp.Network.connect(name_port, self.port[i].getName()) self.lines = self.skeleton.visualise_from_joints(data, color_list=color, lines=[]) # self.skeleton[i].visualise_from_joints(data, color=color[i]) def update_plot(self): color = ['b', 'r'] data_joint = [] for i, port in enumerate(self.port): b_in = self.port[i].read() data = b_in.toString().split(' ') if len(data) == 67: del data[0] data = list(map(float, data)) data = np.asarray(data) self.ax.cla() plt.sca(self.ax) data_joint.append(np.deg2rad(data)) # self.lines[i] = self.skeleton[i].visualise_from_joints(data, color=color[i], lines=self.lines[i]) self.skeleton.visualise_from_joints(data_joint, color_list=color, lines=self.lines) self.fig.canvas.draw() return def close(self): for i_port, port in zip(self.input_port, self.port): yarp.Network.disconnect(i_port, port.getName()) port.close()
class SkeletonWidget(QtWidgets.QWidget): def __init__(self, parent=None): list_port = ['/processing/xsens/JointAngles:o', '/AE/reconstruct:o'] self.input_port = [] self.port = [] self.fig = plt.figure() self.ax = self.fig.add_subplot(111, projection='3d') data = np.zeros((1, 66)) color = ['b', 'r'] self.lines = [] self.skeleton = [] self.skeleton = Skeleton('dhm66_ISB_Xsens.urdf') for i, name_port in enumerate(list_port): self.input_port.append(name_port) self.port.append(yarp.BufferedPortBottle()) self.port[i].open('/plot_skeleton' + name_port) yarp.Network.connect(name_port, self.port[i].getName()) QtWidgets.QWidget.__init__(self, parent) # Inherit from QWidget self.fig = Figure() self.pltCanv = Canvas(self.fig) self.pltCanv.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.pltCanv.setFocusPolicy(QtCore.Qt.ClickFocus) self.pltCanv.setFocus() self.pltCanv.updateGeometry() self.ax = self.fig.add_subplot(111, projection='3d') self.ax.mouse_init() #============================================= # Main plot widget layout #============================================= self.layVMainMpl = QVBoxLayout() self.layVMainMpl.addWidget(self.pltCanv) self.setLayout(self.layVMainMpl) self.lines = [] self.skeleton = [] self.skeleton = Skeleton('dhm66_ISB_Xsens.urdf') self.timer = self.pltCanv.new_timer(100, [(self.update_canvas, (), {})]) self.timer.start() def update_canvas(self): color = ['b', 'r'] data_joint = [] for i, port in enumerate(self.port): b_in = self.port[i].read() data = b_in.toString().split(' ') if len(data) == 67: del data[0] data = list(map(float, data)) data = np.asarray(data) data_joint.append(np.deg2rad(data)) self.ax.clear() self.lines = self.skeleton.visualise_from_joints(self.ax, data_joint, color_list=color, lines=[]) self.pltCanv.figure.canvas.draw()
if x[0, i] < 0: x[0, i] = 0.0 elif x[0, i] > 1.0: x[0, i] = 1.0 # x[0, 0] = 0.5 decoded_data = autoencoder.decode_data(x) if metric == 'posture': whole_body = reduce_posture.reduce2complete(decoded_data[0]) posture.update_posture(whole_body) # elseax1: posture.update_posture(decoded_data[0]) ergo_score = tools.compute_sequence_ergo(ergo_assessment, decoded_data[0], 0, ergo_name, '') posture.visualise_from_joints(ax1, [decoded_data[0]]) plt.sca(ax0) ax0.scatter(x[0, 0] * len(X), x[0, 1] * len(X)) plt.show() cid = fig.canvas.mpl_connect('button_press_event', onclick) plt.sca(ax1) posture.visualise_from_joints(ax1, [np.zeros((66))]) # pd.DataFrame(ergo_grid).to_csv(config_ergo + "_grid.csv", header=False, index=False) plt.show()