Exemplo n.º 1
0
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QGridLayout(self)
        
        # init tabs
        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tabs.resize(300,200)
        
        # add tabs
        self.tabs.addTab(self.tab1, "Feedbacks")
        self.tabs.addTab(self.tab2, "Network Status")
        
        # init buttons
        self.pushButton = []
        tform.set_zeros(self.pushButton, 10) # max 10 buttons now
        
        # Create Motion tab
        self.tab1.layout = QVBoxLayout(self)
 
        self.tab1.setLayout(self.tab1.layout)
        
        # Add tabs to widget
        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)    
Exemplo n.º 2
0
 def __init__(self, parent):
     super(QWidget, self).__init__(parent)
     self.layout = QGridLayout(self)
     
     # init tabs
     self.tabs = QTabWidget()
     self.tab1 = QWidget()
     self.tab2 = QWidget()
     self.tabs.resize(300,200)
     
     # add tabs
     self.tabs.addTab(self.tab1, "Motion")
     self.tabs.addTab(self.tab2, "State")
     
     # init buttons
     self.pushButton = []
     tform.set_zeros(self.pushButton, 10) # max 10 buttons now
     
     # Create Motion tab
     self.tab1.layout = QVBoxLayout(self)
     # Buttons
     self.pushButton[0] = QPushButton("Reset")
     self.pushButton[1] = QPushButton("Look around")
     self.pushButton[2] = QPushButton("Wave Hand")  
     
     for index in range(3,10):
         self.pushButton[index] = QPushButton("Motion"+str(index))
     
     for index in range(0,10):
         self.tab1.layout.addWidget(self.pushButton[index])
     self.tab1.setLayout(self.tab1.layout)
     
     # Add tabs to widget
     self.layout.addWidget(self.tabs)
     self.setLayout(self.layout)
Exemplo n.º 3
0
    def joint_to_where(self):
        tform.set_zeros(self._margin_to_target)

        self._lastmotion = self._payload  # current motion
        for i in range(len(self._motionlist)):
            if (i == 0):
                pass
            else:
                # save lastmotion

                self._margin_to_target = self._lastmotion  # image the motion
                self._margin_to_target = np.array(
                    self._motionlist[i]) - np.array(
                        self._lastmotion)  # compare margin

                lines_nb = int(self._timelist[i] /
                               _RES)  #times of given res frequency

                step_to_target = _KDC * self._margin_to_target / lines_nb  # for each frequency, linear subposition

                # add process
                for lines in range(0, lines_nb):
                    self._payload_float = self._payload_float + step_to_target
                    self._payload = list(
                        np.array(self._payload_float, dtype='int32'))

                    self.make_msg_and_pub(3, 2, self._payload, self.pub)

                    #print(self._payload)
                    time.sleep(_RES)
                #print(self._payload_float)
                self._lastmotion = self._motionlist[i]
        return None
Exemplo n.º 4
0
    def __init__(self):

        # number of driveunits

        # global variables
        self._rel = []
        self._bias = []
        self._payload = []
        self._default = []

        # messages
        self._default_rec = Evans()
        self._pub_msg = Evans()
        self._intention = Evans()

        # publishers
        self.pub = rospy.Publisher('/silva/joint_local/idle',
                                   Evans,
                                   queue_size=10)

        # subscribers
        self.sub_int = rospy.Subscriber('/silva/idle_local/intention', Evans,
                                        self.intention_cb)
        self.sub_default = rospy.Subscriber('/silva/joint_local/default',
                                            Evans, self.default_cb)

        tform.set_zeros(self._default)
        tform.set_zeros(self._rel)
Exemplo n.º 5
0
    def load_default(self, _which = 'ibuki'):
        
        # open the .map
        rospack = rospkg.RosPack()
        mappath = rospack.get_path('silva_beta')+'/src/defaults/'+_which+'.map'

        f = open(mappath)
        lines = f.readlines()
        f.close()
        
        # get serial, name and value
        for index in range(4, len(lines)):
            
            # delete \n 
            string_lines = lines[index][0:-1]
            
            # delete tabs
            params_list = string_lines.split('\t')
            # print params_list
            
            # get lists
            self._params_serial.append(int(params_list[0]))
            self._params_name.append(params_list[1])
            self._params_value.append(int(params_list[2]))
            
            # get param length
            self._params_length = len(self._params_value)
            
#            # get dicts
#            self._dict_name_value[params_list[1]] = params_list[2]
#            self._dict_serial_name[params_list[0]] = params_list[1]
#            self._dict_serial_value[params_list[0]] = params_list[2] 
            
            
        # zip the lists
        self._dict_name_value = dict(zip(self._params_name, self._params_value))
        self._dict_serial_name = dict(zip(self._params_serial, self._params_name))
        self._dict_serial_value = dict(zip(self._params_serial, self._params_value))
        
        
        # initialize attributes
        self._default = self._params_value 
        
        # set to zeros
        tform.set_zeros(self._initlist, self._params_length)
        self._initlist = np.array(self._initlist)
        
        # set init values all to zeros
        self.joint_idle = self._initlist
        self.joint_reflex = self._initlist
        self.joint_slave = self._initlist
        self.joint_auto = self._initlist
        self.joint_balance = self._initlist
        
        # make default message
        self._default_msg.name = 'default'
        self._default_msg.seq = 0
        self._default_msg.msgid = 0
        self._default_msg.payload = self._params_value
Exemplo n.º 6
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        # decoration
        rospack = rospkg.RosPack()
        self.picpath = rospack.get_path('silva_beta')+'/src/assets/logo.png'
        
        # object init
        self.sld = []        
        self.sldh = [] #high: highest limit
        self.sldl = [] #low: lowest limit
        self.sldn = [] #now: current value
        self.labels = []

        tform.set_zeros(self.sld)
        tform.set_zeros(self.sldh)
        tform.set_zeros(self.sldl)
        tform.set_zeros(self.sldn)
        tform.set_zeros(self.labels)

        self.progress = [0,0,0,0,0] 
        
        self.index =0
        
        # speech
        self._contents = ''
        
        # inner publishers
        self.pub_s = rospy.Publisher('/silva/speech_global/jp', String, queue_size=10)
        
        
        # GUI
        self.title = 'silva'
        self.left = 300
        self.top = 50
        self.width = 1366
        self.height = 768
        
        # param        
        self.state = [0.0, 0.0, 0.5, 0.0]
        
        # yaml params
        self.param_config = tform.read_param('gui_config')
        
        self.table_widget = MyTableWidget(self)
        
        self.table_widget.setGeometry(10,295,300,450)
        #self.setCentralWidget(self.table_widget)        
        
        
        self.table_widget_b = ButtomWidget(self)
        
        self.table_widget_b.setGeometry(300,460,850,265)
        
        self.initUI()
Exemplo n.º 7
0
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QGridLayout(self)

        # init tabs
        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tabs.resize(300, 200)

        # add tabs
        self.tabs.addTab(self.tab1, "Motion")
        self.tabs.addTab(self.tab2, "State")

        # init buttons
        self.pushButton = []
        tform.set_zeros(self.pushButton, 10)  # max 10 buttons now

        # Create Motion tab
        self.tab1.layout = QVBoxLayout(self)
        # Buttons
        self.pushButton[0] = QPushButton("Reset")
        self.pushButton[1] = QPushButton("Look around")
        self.pushButton[2] = QPushButton("Wave Hand")
        self.pushButton[3] = QPushButton("Hapiness")
        self.pushButton[4] = QPushButton("Sadness")
        self.pushButton[5] = QPushButton("Surprise")
        self.pushButton[6] = QPushButton("Fear")
        self.pushButton[7] = QPushButton("Anger")
        self.pushButton[8] = QPushButton("Disgust")
        self.pushButton[9] = QPushButton("Contempt")

        # StatusTip
        self.pushButton[0].setStatusTip(
            'Reset Operation Inputs of the User to 0.')
        self.pushButton[1].setStatusTip('Ibuki looks around motion preset.')
        self.pushButton[2].setStatusTip('Ibuki waves his left hand preset.')
        self.pushButton[3].setStatusTip('Ibuki show hapiness.')
        self.pushButton[4].setStatusTip('Ibuki show sadness.')
        self.pushButton[5].setStatusTip('Ibuki show surprise.')
        self.pushButton[6].setStatusTip('Ibuki show fear.')
        self.pushButton[7].setStatusTip('Ibuki show anger.')
        self.pushButton[8].setStatusTip('Ibuki show disgust.')
        self.pushButton[9].setStatusTip('Ibuki show contempt.')

        for index in range(0, 10):
            self.tab1.layout.addWidget(self.pushButton[index])
        self.tab1.setLayout(self.tab1.layout)

        # Add tabs to widget
        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)
Exemplo n.º 8
0
    def __init__(self):
        self._payload = []
        # zero
        tform.set_zeros(self._payload)

        # message
        self.msg = Evans()

        # publisher
        self.pub = rospy.Publisher('/silva/reflex_local/ch2',
                                   Evans,
                                   queue_size=10)

        # subs
        self.sub = rospy.Subscriber('/silva/reflex_local/feedback', Evans,
                                    self.callback)
Exemplo n.º 9
0
    def __init__(self):
        self._forward = 0.0
        self._steering = 0.0
        self._speed_right = 0.0
        self._speed_left = 0.0
        self._break = 1
        self._payload = []
        tform.set_zeros(self._payload, 5)

        # message
        self._pub_msg = Evans()
        # publishers
        self.pub = rospy.Publisher('/silva/slave_local/walking',
                                   Evans,
                                   queue_size=10)

        self.sub = rospy.Subscriber('/joy', Joy, self.joy_cb)
Exemplo n.º 10
0
    def load_default(self, _which = 'ibuki'):
        
        # open the .map
        rospack = rospkg.RosPack()
        
        mappath = rospack.get_path('silva_beta')+'/src/defaults/'+_which+'.map'
        f = open(mappath)
        lines = f.readlines()
        f.close()
        
        # get serial, name and value
        for index in range(4, len(lines)):
            
            # delete \n 
            string_lines = lines[index][0:-1]
            
            # delete tabs
            params_list = string_lines.split('\t')
            # print params_list
            
            # get lists
            self._params_serial.append(int(params_list[0]))
            self._params_name.append(params_list[1])
            self._params_value.append(int(params_list[2]))
            
            # get param length
            self._params_length = len(self._params_value)
            
#            # get dicts
#            self._dict_name_value[params_list[1]] = params_list[2]
#            self._dict_serial_name[params_list[0]] = params_list[1]
#            self._dict_serial_value[params_list[0]] = params_list[2] 
            
            
        # zip the lists
        self._dict_name_value = dict(zip(self._params_name, self._params_value))
        self._dict_serial_name = dict(zip(self._params_serial, self._params_name))
        self._dict_serial_value = dict(zip(self._params_serial, self._params_value))
        
        
        # initialize attributes
        tform.set_zeros(self._default)
        tform.set_zeros(self._payload)
        self._pub_msg.payload = self._default
Exemplo n.º 11
0
    def __init__(self):
        _filename = sys.argv[1]
        #_filename = 'lookaround'
        # open the .csv
        rospack = rospkg.RosPack()
        csvpath = rospack.get_path(
            'silva_beta') + '/src/csv/' + _filename + '.csv'

        df = pd.read_csv(csvpath, delimiter=',')
        # csv
        self._df = df
        self._timelist = []
        self._motionlist = []
        self._lastmotion = []
        self._payload = []
        self._payload_float = []

        self._margin_to_target = []
        self._time_interval = 0.0

        #initilization
        tform.set_zeros(self._payload)
        tform.set_zeros(self._payload_float)
        tform.set_zeros(self._lastmotion)

        # messages
        self._pub_msg = Evans()

        # publishers
        self.pub = rospy.Publisher('/silva/slave_local/hsm',
                                   Evans,
                                   queue_size=10)
Exemplo n.º 12
0
    def __init__(self, parent):
        super(QWidget, self).__init__(parent)
        self.layout = QGridLayout(self)

        # init tabs
        self.tabs = QTabWidget()
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tabs.resize(300, 200)

        # add tabs
        self.tabs.addTab(self.tab1, "Feedbacks")
        self.tabs.addTab(self.tab2, "Network Status")

        # init buttons
        self.pushButton = []
        tform.set_zeros(self.pushButton, 10)  # max 10 buttons now

        # init labels
        self.current_labels = []
        self.current_values = []
        self.cur_value = []  # current value feedback

        tform.set_zeros(self.cur_value)

        tform.set_zeros(self.current_labels)
        tform.set_zeros(self.current_values)

        # Create Motion tab
        self.tab1.layout = QGridLayout(self)

        self.initUI()

        self.tab1.setLayout(self.tab1.layout)

        # Add tabs to widget
        self.layout.addWidget(self.tabs)
        self.setLayout(self.layout)

        # rospy subscriber
        sub_cur = rospy.Subscriber('/silva/reflex_local/ch1', Evans,
                                   self.cur_cb)
Exemplo n.º 13
0
    def __init__(self):

        # global variables
        self._rel = []
        self._payload = []
        self._default = []

        self._content = 'ss'
        self._data = {}
        tform.set_zeros(self._default)
        tform.set_zeros(self._rel, 5)
        tform.set_zeros(self._rel)
        tform.set_zeros(self._payload)

        self.sock = ''
        self.addr = ''
        self.sockmot = ''
        self.addrmot = ''
        self.moveaxis = ''

        self._data = [[] for row in range(_driveunits)]
        # set zeros

        print self._payload
        self._tmp = np.array(self._payload)

        # messages
        self._default_rec = Evans()
        self._pub_msg = Evans()

        # publishers
        self.pub = rospy.Publisher('/silva/slave_local/decision',
                                   Evans,
                                   queue_size=10)

        # subscribers
        self.sub_default = rospy.Subscriber('/silva/joint_local/default',
                                            Evans, self.default_cb)
        self.sub_speech = rospy.Subscriber('/silva/speech_global/jp', String,
                                           self.speech_cb)
Exemplo n.º 14
0
    def __init__(self):

        # global variables
        self._rel = []
        self._bias = [[], [], [], [], [], []]
        self._payload = []
        self._default = []
        self._gain = 1.0

        # messages
        self._default_rec = Evans()
        self._pub_msg = Evans()
        self._intention = Evans()

        # publishers
        self.pub = rospy.Publisher('/silva/joint_local/slave',
                                   Evans,
                                   queue_size=10)

        # subscribers
        self.sub_int = rospy.Subscriber('/silva/slave_local/intention', Evans,
                                        self.intention_cb)
        self.sub_opt = rospy.Subscriber('/silva/slave_local/operation', Evans,
                                        self.operation_cb)
        self.sub_dec = rospy.Subscriber('/silva/slave_local/decision', Evans,
                                        self.decision_cb)
        self.sub_wlk = rospy.Subscriber('/silva/slave_local/walking', Evans,
                                        self.walking_cb)
        self.sub_hsm = rospy.Subscriber('/silva/slave_local/hsm', Evans,
                                        self.hsm_cb)
        self.sub_dem = rospy.Subscriber('/silva/slave_local/demo', Evans,
                                        self.demo_cb)

        self.sub_default = rospy.Subscriber('/silva/joint_local/default',
                                            Evans, self.default_cb)
        self.sub_gain = rospy.Subscriber('/joy', Joy, self.joy_cb)

        tform.set_zeros(self._default)
        tform.set_zeros(self._rel)
        for i in range(len(self._bias)):
            tform.set_zeros(self._bias[i])
Exemplo n.º 15
0
    def __init__(self):

        # global variables
        self._rel = []
        self._bias = [[], [], []]
        self._payload = []
        self._default = []

        self._neck = [0.0, 0.0, 0.0, 0.0, 0.0]
        self._armr = [0.0, 0.0, 0.0, 0.0, 0.0]
        self._arml = [0.0, 0.0, 0.0, 0.0, 0.0]
        self._hip = [0.0, 0.0, 0.0, 0.0, 0.0]

        # messages
        self._default_rec = Evans()
        self._pub_msg = Evans()
        self._intention = Evans()

        # publishers
        self.pub = rospy.Publisher('/silva/joint_local/reflex',
                                   Evans,
                                   queue_size=10)

        # subscribers
        self.sub_int = rospy.Subscriber('/silva/reflex_local/feedback', Evans,
                                        self.intention_cb)
        self.sub_default = rospy.Subscriber('/silva/joint_local/default',
                                            Evans, self.default_cb)
        # 2 channels
        self.sub_ch0 = rospy.Subscriber('/silva/reflex_local/ch0', Evans,
                                        self.ch0_cb)
        self.sub_ch1 = rospy.Subscriber('/silva/reflex_local/ch1', Evans,
                                        self.ch1_cb)
        self.sub_ch2 = rospy.Subscriber('/silva/reflex_local/ch2', Evans,
                                        self.ch2_cb)

        tform.set_zeros(self._default)
        tform.set_zeros(self._rel)
        for i in range(len(self._bias)):
            tform.set_zeros(self._bias[i])  # set zeros of bias
Exemplo n.º 16
0
 def __init__(self, _df):
     # csv
     self._df =df
     self._timelist = []
     self._motionlist = []
     self._lastmotion = []
     self._payload = []
     self._payload_float = []
     
     self._margin_to_target = []
     self._time_interval = 0.0
     
     #initilization
     tform.set_zeros(self._payload)
     tform.set_zeros(self._payload_float)
     tform.set_zeros(self._lastmotion)
     
     # messages
     self._pub_msg = Evans()
     
     # publishers
     self.pub = rospy.Publisher('/silva/slave_local/hsm', Evans, queue_size = 10)
Exemplo n.º 17
0
    def __init__(self):

        # global variables
        self._rel = []  # relative value
        self._bias = [[], [], [], []]  # bias value for subposition
        self._payload = []  # final payload
        self._default = []  # origin default

        # messages
        self._default_rec = Evans()
        self._pub_msg = Evans()
        self._intention = Evans()

        # publishers
        self.pub = rospy.Publisher('/silva/joint_local/auto',
                                   Evans,
                                   queue_size=10)

        # subscribers
        self.sub_ch0 = rospy.Subscriber(
            '/silva/auto_local/ch0', Evans,
            self.ch0_cb)  # ch0 for blink message (headl)
        self.sub_ch1 = rospy.Subscriber(
            '/silva/auto_local/ch1', Evans,
            self.ch1_cb)  # ch1 for realsense (neck)
        self.sub_ch2 = rospy.Subscriber(
            '/silva/auto_local/ch2', Evans,
            self.ch2_cb)  # ch2 for respeaker (neck)
        self.sub_ch3 = rospy.Subscriber('/silva/auto_local/ch3', Evans,
                                        self.ch3_cb)  # ch3 for rplidar (hip?)

        self.sub_default = rospy.Subscriber('/silva/joint_local/default',
                                            Evans, self.default_cb)

        #init the default message
        tform.set_zeros(self._default)
        tform.set_zeros(self._rel)  # set zeros of rel
        for i in range(len(self._bias)):
            tform.set_zeros(self._bias[i])  # set zeros of bias
Exemplo n.º 18
0
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        # decoration
        rospack = rospkg.RosPack()
        self.picpath = rospack.get_path('silva_beta') + '/src/assets/logo.png'

        # object init
        self.sld = []
        self.sldh = []  #high: highest limit
        self.sldl = []  #low: lowest limit
        self.sldn = []  #now: current operation value
        self.sldr = []  #real: feedback value label from ibuki
        self.labels = []
        # init labels
        self.fb_value = []  # feedback value buffer

        tform.set_zeros(self.sld)
        tform.set_zeros(self.sldh)
        tform.set_zeros(self.sldl)
        tform.set_zeros(self.sldn)
        tform.set_zeros(self.sldr)
        tform.set_zeros(self.labels)
        tform.set_zeros(self.fb_value)

        self.progress = [0, 0, 0, 0]

        # expressions
        self.expression = []
        # obtain expressions
        param_config = tform.read_param('momentary_motion', 'ibuki_extra')
        self.expression = param_config['Expression']

        self.index = 0

        # speech
        self._contents = ''

        # inner publishers
        self.pub_s = rospy.Publisher('/silva/speech_global/jp',
                                     String,
                                     queue_size=10)

        # get minimum, maximum, and default
        self.default, blank = tform.load_map('ibuki')
        min_v, max_v = tform.load_map('limit')
        self.min_rel = []
        self.max_rel = []

        # get rel minimum and maximum
        for i in range(len(min_v)):
            if (min_v[i] != -1 or max_v[i] != -1):
                self.min_rel.append(self.default[i] - min_v[i])
                self.max_rel.append(max_v[i] - self.default[i])
            else:
                self.min_rel.append(100)
                self.max_rel.append(100)

        # GUI
        self.title = 'silva'
        self.left = 300
        self.top = 50
        self.width = 1366
        self.height = 768

        # param
        self.state = [0.0, 0.0, 1.0, 0.0]

        # yaml params
        self.param_config = tform.read_param('gui_config')

        self.table_widget = MyTableWidget(self)

        self.table_widget.setGeometry(10, 295, 300, 450)
        #self.setCentralWidget(self.table_widget)

        self.table_widget_b = ButtomWidget(self)

        self.table_widget_b.setGeometry(300, 460, 850, 265)

        self.initUI()

        time.sleep(2)  # load delay for stable
        # subscribers
        sub_states = rospy.Subscriber('/silva/states', Float32MultiArray,
                                      self.states_cb)
        sub_fbs = rospy.Subscriber('/silva/reflex_local/ch0', Evans,
                                   self.fb_cb)
Exemplo n.º 19
0
 def __init__(self):
     ### Initialization Varialbes ###
     
     self.window = []
     self.canvas = [[],[],[],[]]
     self.msg = []
     self.state = [0.0, 0.0, 0.0, 0.0]
     self.statetag = ['I', 'R', 'S', 'A']
     
     # speech
     self._contents = ''
     
     tform.set_zeros(self.window)
     tform.set_zeros(self.msg)
     
     #inner publishers
     pub_s = rospy.Publisher('/silva/speech_global/jp', String, queue_size=10)
     
     # inner subscribers
     sub_cov = rospy.Subscriber('/silva/states', Float32MultiArray, self.state_cb)
     
     # get minimum, maximum, and default
     default, blank = tform.load_map('ibuki')
     min_v, max_v = tform.load_map('limit')
     min_rel = []
     max_rel = []
     # get rel minimum and maximum
     for i in range (len(min_v)):
         if (min_v[i]!=-1 or max_v[i]!=-1):
             min_rel.append(default[i] - min_v[i])
             max_rel.append(max_v[i]- default[i])
         else:
             min_rel.append(100)
             max_rel.append(100)
     
     ### function definition ###
     
     def show_entry_fields():
         self._contents = self.textbox.get()
         print(self._contents)
         self.textbox.delete(0,END)
         pub_s.publish(self._contents)        
 
     ### GUI initialization ###
     self.master = Tk()
     self.master.title("Ibuki System Configuration ver 2.0")
     ## First frame ##
     # 50 slider bars
     for idx in range(0, 5):
         # label in row 0,3,6,9,12
         self.label = Label(self.master, text = \
         list(seq_of_jointname.keys())[list(seq_of_jointname.values()).index(idx)])
         self.label.grid(row=idx*3, column = 0, columnspan = 5)            
         
         # slier in row 4,7,10,13,16, column in 0,1,2,3,4
         for i in range(idx*5, idx*5+5):
             self.window[i] = Scale(self.master, from_=-min_rel[i], to=max_rel[i], length = 100)
             self.window[i].set(0)
             self.window[i].grid(row=idx*3+1,column = i-5*idx, rowspan =2)
             
     ## Middle line##
     
     ## Second Frame ##
     for idx in range(0, 5):
         # label in row 0,3,6,9,12, column in 6
         self.label = Label(self.master, text = \
         list(seq_of_jointname.keys())[list(seq_of_jointname.values()).index(idx+5)])
         self.label.grid(row=idx*3, column = 6, columnspan = 4)
         
         # slier in row 4,7,10,13,16, column in 6,7,8,9,10
         for i in range((idx+5)*5, (idx+5)*5+5):
             self.window[i] = Scale(self.master, from_=-min_rel[i], to=max_rel[i], length = 100)
             self.window[i].set(0)
             self.window[i].grid(row=idx*3+1,column = i-5*idx-19, rowspan=2)
             
     ## Third frame ##
     self.line = Canvas(self.master, width = 5, height = 100, bg = "pink")
     self.line.grid(row = 5 ,column = 5, rowspan = 11)
     # dialogue texboxes
     # label in row0, column 11
     self.label = Label(self.master, text = 'speech interface')
     self.label.grid(row = 0, column = 11, columnspan = 4)
     
     self.textbox = Entry(self.master)
     self.textbox.insert(10,"対話内容")
     self.textbox.grid(row = 1, column = 11, columnspan = 4)
     
     self.button = Button(self.master, text = "send speech", command = show_entry_fields)
     self.button.grid(row = 2, column = 11, rowspan = 2, columnspan =4)
     
     # state canvas
     # label in row3, column 11
     self.label = Label(self.master, text = 'state')
     self.label.grid(row = 3, column =11, columnspan = 4)
     for idx in range(0, len(self.canvas)):
         self.canvas[idx] = Canvas(self.master, width = 20, height = 60, bg = "white")
         self.canvas[idx].grid(row = 4 ,column = idx+11)
     for idx in range(0, len(self.statetag)):
         self.label = Label(self.master, text = self.statetag[idx])
         self.label.grid(row = 5, column = idx+11)
     # update canvas
     for idx in range(0, len(self.canvas)):
         self.canvas[idx].create_rectangle(0,58,20,60, fill = 'red', tag= 'bar')
     
     # label in row16, column 11
     self.label = Label(self.master, text = 'state')
     self.label.grid(row = 15, column =11, columnspan = 4)