wip
This commit is contained in:
@@ -36,6 +36,7 @@ class MPLCanvasImg(FigureCanvas):
|
|||||||
self.SetStatusCB=SetStatusCB
|
self.SetStatusCB=SetStatusCB
|
||||||
fig = mpl.figure.Figure()
|
fig = mpl.figure.Figure()
|
||||||
ax = fig.add_axes([0.075,0.075,0.85,0.85])
|
ax = fig.add_axes([0.075,0.075,0.85,0.85])
|
||||||
|
ax.invert_xaxis();ax.invert_yaxis()
|
||||||
FigureCanvas.__init__(self,parent, -1, fig)
|
FigureCanvas.__init__(self,parent, -1, fig)
|
||||||
self.mpl_connect('motion_notify_event', self.OnMotion)
|
self.mpl_connect('motion_notify_event', self.OnMotion)
|
||||||
self.mpl_connect('button_press_event', self.OnBtnPress)
|
self.mpl_connect('button_press_event', self.OnBtnPress)
|
||||||
|
|||||||
@@ -106,11 +106,12 @@ class ShapePath(MotionBase):
|
|||||||
self.plot_points(pts)
|
self.plot_points(pts)
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
def gen_rand_points(self,n=107,scale=1000):
|
def gen_rand_points(self,n=107,scale=1000,ofs=(0,0)):
|
||||||
'generate random distributed points'
|
'generate random distributed points'
|
||||||
np.random.seed(0)
|
np.random.seed(0)
|
||||||
#data=np.random.randint(0,1000,(30,2))
|
#data=np.random.randint(0,1000,(30,2))
|
||||||
pts=np.random.rand(n,2)*scale
|
pts=np.random.rand(n,2)*scale
|
||||||
|
pts+=ofs
|
||||||
self.points=pts
|
self.points=pts
|
||||||
|
|
||||||
def gen_grid_points(self,w=10,h=10,pitch=100,rnd=.2,ofs=(0,0)):
|
def gen_grid_points(self,w=10,h=10,pitch=100,rnd=.2,ofs=(0,0)):
|
||||||
@@ -123,6 +124,50 @@ class ShapePath(MotionBase):
|
|||||||
pts+=ofs
|
pts+=ofs
|
||||||
self.points=pts
|
self.points=pts
|
||||||
|
|
||||||
|
def gen_closed_shifted(self,pitch=100,shift=5,mult=3):
|
||||||
|
'from the given points, close the path, and runs 9 times with small pitch'
|
||||||
|
|
||||||
|
pts=self.points
|
||||||
|
pts = np.vstack((pts, pts[-1]+(0,-50)))#add a new point outside of the grid
|
||||||
|
mn=pts.min(0)
|
||||||
|
mx=pts.max(0)
|
||||||
|
d=pts[0,:]-pts[-1,:]
|
||||||
|
l=np.sum(d)
|
||||||
|
bk=[]
|
||||||
|
if abs(d[1])>pitch: #make a vertical back move
|
||||||
|
s=np.sign(d[1])
|
||||||
|
n=np.ceil(np.abs(d[1])/pitch)
|
||||||
|
p=np.ndarray((n,2))
|
||||||
|
p[:,0]=pts[-1, 0]
|
||||||
|
p[:,1]=pts[-1, 1]+np.arange(1,n+1)*s*pitch
|
||||||
|
pts=np.vstack((pts,p))
|
||||||
|
|
||||||
|
if abs(d[0])>pitch: #make a horizonlat back move
|
||||||
|
s=np.sign(d[0])
|
||||||
|
n=np.ceil(np.abs(d[0])/pitch)
|
||||||
|
p=np.ndarray((n,2))
|
||||||
|
p[:,0]=pts[-1, 0]+np.arange(1,n+1)*s*pitch
|
||||||
|
p[:,1]=pts[-1, 1]
|
||||||
|
pts[-1, :]
|
||||||
|
pts=np.vstack((pts,p))
|
||||||
|
|
||||||
|
stack=[]
|
||||||
|
for y in np.arange(mult)*shift:
|
||||||
|
for x in np.arange(mult)*shift:
|
||||||
|
stack.append(pts+(x,y))
|
||||||
|
pts=np.vstack(stack)
|
||||||
|
|
||||||
|
|
||||||
|
#xx,yy=np.meshgrid(range(w), range(h))
|
||||||
|
#pts=np.array([xx.reshape(-1),yy.reshape(-1)],dtype=np.float).transpose()*pitch
|
||||||
|
#if xy:
|
||||||
|
#else:
|
||||||
|
|
||||||
|
# smlpitch
|
||||||
|
#pts+=ofs
|
||||||
|
self.points=pts
|
||||||
|
|
||||||
|
|
||||||
def opt_pts(self,fn):
|
def opt_pts(self,fn):
|
||||||
'''
|
'''
|
||||||
trial to optimize path by mofing trajectory, uload real path and move the points
|
trial to optimize path by mofing trajectory, uload real path and move the points
|
||||||
@@ -378,6 +423,7 @@ class ShapePath(MotionBase):
|
|||||||
def plot_points(self,pts):
|
def plot_points(self,pts):
|
||||||
fig=plt.figure()
|
fig=plt.figure()
|
||||||
ax = fig.add_subplot(1,1,1)
|
ax = fig.add_subplot(1,1,1)
|
||||||
|
ax.invert_xaxis();ax.invert_yaxis()
|
||||||
#hl=ax[0].plot(x, y, color=col)
|
#hl=ax[0].plot(x, y, color=col)
|
||||||
hl=ax.plot(pts[:,0],pts[:,1],'r.')
|
hl=ax.plot(pts[:,0],pts[:,1],'r.')
|
||||||
hl=ax.plot(pts[:,0],pts[:,1],'y--')
|
hl=ax.plot(pts[:,0],pts[:,1],'y--')
|
||||||
@@ -400,6 +446,7 @@ class ShapePath(MotionBase):
|
|||||||
if mode&1:
|
if mode&1:
|
||||||
fig=plt.figure('trajectory')
|
fig=plt.figure('trajectory')
|
||||||
ax = fig.add_subplot(1,1,1)
|
ax = fig.add_subplot(1,1,1)
|
||||||
|
ax.invert_xaxis();ax.invert_yaxis()
|
||||||
#hl=ax[0].plot(x, y, color=col)
|
#hl=ax[0].plot(x, y, color=col)
|
||||||
hl=ax.plot(pts[:,0],pts[:,1],'r.')
|
hl=ax.plot(pts[:,0],pts[:,1],'r.')
|
||||||
hl=ax.plot(pts[:,0],pts[:,1],'y--')
|
hl=ax.plot(pts[:,0],pts[:,1],'y--')
|
||||||
@@ -606,6 +653,9 @@ if __name__=='__main__':
|
|||||||
#sp.plot_gather()
|
#sp.plot_gather()
|
||||||
#return
|
#return
|
||||||
fn='/tmp/shapepath'
|
fn='/tmp/shapepath'
|
||||||
|
fn='/home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/python/record/grid_delay_0002'
|
||||||
|
# /home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/python/record/chip000_sortedXXXX_9x9'
|
||||||
|
#fn='/sf/bernina/data/p17592/res/20181203/imprints/chip000_preloc_min10um_sortedX_refs_goaround/chip000_sortedY_9x9.npz'
|
||||||
#fn='PBMotionAnalyzer/records/rand50um_25Hz'
|
#fn='PBMotionAnalyzer/records/rand50um_25Hz'
|
||||||
#sp.setup_coord_trf()
|
#sp.setup_coord_trf()
|
||||||
|
|
||||||
@@ -621,6 +671,17 @@ if __name__=='__main__':
|
|||||||
#sp.points = np.array([[100,523],[635,632],[756,213]])
|
#sp.points = np.array([[100,523],[635,632],[756,213]])
|
||||||
#sp.points = np.array([[0, 0],[100, 0],[200, 0],[300, 0],[400, 0],[400, 100],[300, 100],[200, 100],[100, 100],[0, 100],[10, 200],[100, 200],[200, 200],[300, 200],[400, 200],[410, 300],[300, 300],[200, 300],[100, 300],[0, 300],[0, 400],[100, 400],[200, 400],[300, 400],[400, 400]])
|
#sp.points = np.array([[0, 0],[100, 0],[200, 0],[300, 0],[400, 0],[400, 100],[300, 100],[200, 100],[100, 100],[0, 100],[10, 200],[100, 200],[200, 200],[300, 200],[400, 200],[410, 300],[300, 300],[200, 300],[100, 300],[0, 300],[0, 400],[100, 400],[200, 400],[300, 400],[400, 400]])
|
||||||
#sp.gen_rand_points(n=107, scale=1000);sp.sort_points(xy=xy)
|
#sp.gen_rand_points(n=107, scale=1000);sp.sort_points(xy=xy)
|
||||||
|
#sp.gen_rand_points(n=107, scale=1000);sp.sort_points(xy=xy)
|
||||||
|
#fh=np.load('/sf/bernina/data/p17592/res/20181203/imprints/chip000_preloc_min10um_sortedX_refs_goaround/chip000_preloc_min10um_sortedX_refs_goaround_0529.npz')
|
||||||
|
#sp.points=fh['pts']
|
||||||
|
sp.gen_grid_points(w=6,h=6,pitch=100,rnd=0,ofs=(0,0));sp.sort_points(False);
|
||||||
|
sp.gen_closed_shifted()
|
||||||
|
sp.points=sp.points-+sp.points[0,:]+(-967,1446)
|
||||||
|
#1412.33 -2862.37
|
||||||
|
#1446.62 -967.7128125
|
||||||
|
|
||||||
|
#sp.plot_points(sp.points);plt.show()
|
||||||
|
|
||||||
#sp.gen_grid_points(w=100,h=100,pitch=10,rnd=.2)
|
#sp.gen_grid_points(w=100,h=100,pitch=10,rnd=.2)
|
||||||
#sp.gen_swissfel_points(width=1000,ofs=(-500,0));sp.sort_points(xy=xy)
|
#sp.gen_swissfel_points(width=1000,ofs=(-500,0));sp.sort_points(xy=xy)
|
||||||
#sp.gen_grid_points(w=10,h=10,pitch=50,rnd=.2)
|
#sp.gen_grid_points(w=10,h=10,pitch=50,rnd=.2)
|
||||||
@@ -634,7 +695,7 @@ if __name__=='__main__':
|
|||||||
#sp.setup_sync(mode=1) #sync with timing system (PROG)
|
#sp.setup_sync(mode=1) #sync with timing system (PROG)
|
||||||
sp.setup_sync(mode=2) #sync with timing system and PLC to sync speed (PROG)
|
sp.setup_sync(mode=2) #sync with timing system and PLC to sync speed (PROG)
|
||||||
sp.setup_coord_trf() # reset to shape path system
|
sp.setup_coord_trf() # reset to shape path system
|
||||||
|
sp.setup_motion(fnPrg=fn + '.prg', mode=1, pt2pt_time=40)
|
||||||
#sp.gen_grid_points(w=2,h=2,pitch=50,rnd=.2);sp.sort_points(xy);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=10,acq_per=1)
|
#sp.gen_grid_points(w=2,h=2,pitch=50,rnd=.2);sp.sort_points(xy);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=10,acq_per=1)
|
||||||
#sp.gen_swissmx_points(width=1000,ofs=(-500,0));sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40,acq_per=1)
|
#sp.gen_swissmx_points(width=1000,ofs=(-500,0));sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40,acq_per=1)
|
||||||
|
|
||||||
@@ -648,9 +709,13 @@ if __name__=='__main__':
|
|||||||
#sp.gen_rand_points(n=400, scale=1000);sp.sort_points(xy);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=10)
|
#sp.gen_rand_points(n=400, scale=1000);sp.sort_points(xy);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=10)
|
||||||
|
|
||||||
|
|
||||||
#sp.gen_swissmx_points(width=500,flipx=True,flipy=True,ofs=(-380,3980));sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40,acq_per=1)
|
#sp.gen_swissmx_points(width=2000,flipx=True,flipy=True,ofs=(1014,-281));sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40,acq_per=1)
|
||||||
#sp.gen_grid_points(w=20,h=20,pitch=20,rnd=0,ofs=(-464,1754));sp.sort_points(True);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40)
|
#sp.gen_grid_points(w=20,h=20,pitch=20,rnd=0,ofs=(-464,1754));sp.sort_points(True);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40)
|
||||||
sp.gen_grid_points(w=20,h=20,pitch=20,rnd=0,ofs=(-160,3700));sp.sort_points(False);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40)
|
#sp.gen_grid_points(w=20,h=20,pitch=20,rnd=0,ofs=(-160,3700));sp.sort_points(False);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40)
|
||||||
|
#sp.gen_grid_points(w=5,h=5,pitch=100,rnd=0,ofs=(-1590,-1070));sp.sort_points(False);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40)
|
||||||
|
#sp.gen_grid_points(w=5,h=5,pitch=100,rnd=0,ofs=(-1580,-1070));sp.sort_points(False);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40)
|
||||||
|
#sp.gen_grid_points(w=5,h=5,pitch=100,rnd=0,ofs=(-1580,-1060));sp.sort_points(False);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40)
|
||||||
|
#sp.gen_grid_points(w=5,h=5,pitch=100,rnd=0,ofs=(-1590,-1060));sp.sort_points(False);sp.setup_motion(fnPrg=fn+'.prg',mode=1,pt2pt_time=40)
|
||||||
|
|
||||||
#>>>setup gather and sync<<<
|
#>>>setup gather and sync<<<
|
||||||
#sp.setup_gather()
|
#sp.setup_gather()
|
||||||
@@ -662,7 +727,7 @@ if __name__=='__main__':
|
|||||||
#>>>run gather and plot trajectory<<<
|
#>>>run gather and plot trajectory<<<
|
||||||
#return
|
#return
|
||||||
sp.run()
|
sp.run()
|
||||||
trigger(0.5)
|
#trigger(0.5)
|
||||||
sp.gather_upload(fnRec=fn+'.npz')
|
sp.gather_upload(fnRec=fn+'.npz')
|
||||||
sp.plot_gather(mode=11)
|
sp.plot_gather(mode=11)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user