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)
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)
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
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)
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
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()
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)
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)
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)
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
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)
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)
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)
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])
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
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)
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
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)
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)