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()
Exemple #3
0
            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()