def load_robot(self): """ Load either the default robot or the last used robot at the start of the program. Returns: An instance of `Robot` class. """ par_file_path = configfile.get_last_robot() if par_file_path is None: # when last used robot was not saved return samplerobots.rx90() elif not os.path.exists(par_file_path): # when the PAR file does not exist self.message_error("The PAR file does not exist.") return samplerobots.rx90() else: robo_name = os.path.split(par_file_path)[1][:-4] robo, flag = parfile.readpar(robo_name, par_file_path) if robo is None: robo = samplerobots.rx90() self.message_error("File could not be read!") elif flag == tools.FAIL: robo = samplerobots.rx90() self.message_warning( "While reading file an error occured." ) return robo
def test_igm_rx90(self): print "######## test_igm ##########" robo = samplerobots.rx90() #robo.r[6] = var('R6') #robo.gamma[6] = var('G6') # invgeom.T_GENERAL nTm = invgeom.T_GENERAL invgeom._paul_solve(robo, self.symo, nTm, 0, robo.nf) self.symo.gen_func_string('IGM_gen', robo.q_vec, invgeom.T_GENERAL, syntax='matlab') igm_f = self.symo.gen_func('IGM_gen', robo.q_vec, invgeom.T_GENERAL) T = geometry.dgm(robo, self.symo, 0, robo.nf, fast_form=True, trig_subs=True) f06 = self.symo.gen_func('DGM_generated1', T, robo.q_vec) for x in xrange(100): arg = random.normal(size=robo.nj) Ttest = f06(arg) solution = igm_f(Ttest) for q in solution: self.assertLess(amax(matrix(f06(q)) - Ttest), 1e-12)
def test_igm_rx90(self): robo = samplerobots.rx90() nTm = invdata.T_GENERAL self.symo.write_line("\r\n*******************PIEPER METHOD STARTS********************** \r\n") pieper._pieper_solve(robo, self.symo, nTm, 0, robo.nf) ## self.symo.gen_func_string('IGM_gen', robo.q_vec, ## invgeom.T_GENERAL, syntax='matlab') igm_f = self.symo.gen_func('IGM_gen', robo.q_vec, invdata.T_GENERAL) self.symo.write_line("\r\n*******************PIEPER METHOD FINISHED********************")
def test_igm_rx90(self): robo = samplerobots.rx90() nTm = invdata.T_GENERAL self.symo.write_line( "\r\n*******************PIEPER METHOD STARTS********************** \r\n" ) pieper._pieper_solve(robo, self.symo, nTm, 0, robo.nf) ## self.symo.gen_func_string('IGM_gen', robo.q_vec, ## invgeom.T_GENERAL, syntax='matlab') igm_f = self.symo.gen_func('IGM_gen', robo.q_vec, invdata.T_GENERAL) self.symo.write_line( "\r\n*******************PIEPER METHOD FINISHED********************" )
def test_igm_rx90(self): robo = samplerobots.rx90() #robo.r[6] = var('R6') #robo.gamma[6] = var('G6') # invgeom.T_GENERAL nTm = invgeom.T_GENERAL invgeom._paul_solve(robo, self.symo, nTm, 0, robo.nf) self.symo.gen_func_string('IGM_gen', robo.q_vec, invgeom.T_GENERAL, syntax='matlab') igm_f = self.symo.gen_func('IGM_gen', robo.q_vec, invgeom.T_GENERAL) T = geometry.dgm(robo, self.symo, 0, robo.nf, fast_form=True, trig_subs=True) f06 = self.symo.gen_func('DGM_generated1', T, robo.q_vec) for x in xrange(100): arg = random.normal(size=robo.nj) Ttest = f06(arg) solution = igm_f(Ttest) for q in solution: self.assertLess(amax(matrix(f06(q))-Ttest), 1e-12)
def test_dynamics(self): robo = samplerobots.rx90() print 'Inverse dynamic model using Newton - Euler Algorith' dynamics.inverse_dynamic_NE(robo) print 'Direct dynamic model using Newton - Euler Algorith' dynamics.direct_dynamic_NE(robo) print 'Dynamic identification model using Newton - Euler Algorith' dynamics.dynamic_identification_NE(robo) print 'Inertia Matrix using composite links' dynamics.inertia_matrix(robo) print 'Coriolis torques using Newton - Euler Algorith' dynamics.pseudo_force_NE(robo) print 'Base parameters computation' dynamics.base_paremeters(robo)
def setUp(self): self.orig_robo = samplerobots.rx90()
def setUp(self): self.symo = symbolmgr.SymbolManager() self.robo = samplerobots.rx90()
if self.solve_loops: self.canvas.solve() self.update_spin_controls() self.canvas.OnDraw() def CheckFrames(self, evt): self.canvas.show_frames(evt.EventObject.GetChecked()) self.tButton.Value = False evt.EventObject.DeselectAll() def SelectFrames(self, evt): selections = evt.EventObject.GetSelections() if selections: self.canvas.centralize_to_frame(selections[0]) def OnSliderChanged(self, _): self.canvas.change_lengths(self.jnt_slider.Value / 100.) if __name__ == '__main__': app = wx.PySimpleApp() from pysymoro import robot robo = samplerobots.rx90() robo.d[3] = 1. robo.r[4] = 1. frame = MainWindow(prefix='', robo=robo) import profile profile.run('frame.canvas.OnPaintAll(wx.CommandEvent())', sort='cumtime') app.MainLoop() app.Destroy()
if self.solve_loops: self.canvas.solve() self.update_spin_controls() self.canvas.OnDraw() def CheckFrames(self, evt): self.canvas.show_frames(evt.EventObject.GetChecked()) self.tButton.Value = False evt.EventObject.DeselectAll() def SelectFrames(self, evt): selections = evt.EventObject.GetSelections() if selections: self.canvas.centralize_to_frame(selections[0]) def OnSliderChanged(self, _): self.canvas.change_lengths(self.jnt_slider.Value/100.) if __name__ == '__main__': app = wx.PySimpleApp() from pysymoro import robot robo = samplerobots.rx90() robo.d[3] = 1. robo.r[4] = 1. frame = MainWindow(prefix='', robo=robo) import profile profile.run('frame.canvas.OnPaintAll(wx.CommandEvent())', sort='cumtime') app.MainLoop() app.Destroy()