major fixes in coordinate systems
This commit is contained in:
@@ -133,6 +133,11 @@ class AppCfg(QSettings):
|
|||||||
opt_ctr=np.array([603.28688025, 520.01112846])
|
opt_ctr=np.array([603.28688025, 520.01112846])
|
||||||
self.setValue(AppCfg.GEO_OPT_CTR, opt_ctr)
|
self.setValue(AppCfg.GEO_OPT_CTR, opt_ctr)
|
||||||
|
|
||||||
|
if AppCfg.DT_HOST not in keys:
|
||||||
|
_log.warning(f'{AppCfg.DT_HOST} not defined. use default')
|
||||||
|
self.setValue(AppCfg.DT_HOST,'SAR-CPPM-EXPMX1')
|
||||||
|
#self.setValue(AppCfg.DT_HOST,'localhost:10001:10002')
|
||||||
|
|
||||||
#if AppCfg.ACTIVATE_PULSE_PICKER not in keys:
|
#if AppCfg.ACTIVATE_PULSE_PICKER not in keys:
|
||||||
# self.setValue(AppCfg.ACTIVATE_PULSE_PICKER, False)
|
# self.setValue(AppCfg.ACTIVATE_PULSE_PICKER, False)
|
||||||
|
|
||||||
@@ -352,7 +357,7 @@ class AppCfg(QSettings):
|
|||||||
app=QApplication.instance()
|
app=QApplication.instance()
|
||||||
cfg=app._cfg
|
cfg=app._cfg
|
||||||
#dt1 = cfg.value(AppCfg.DT_HOST,'SAR-CPPM-EXPMX1')
|
#dt1 = cfg.value(AppCfg.DT_HOST,'SAR-CPPM-EXPMX1')
|
||||||
dt1 = cfg.value(AppCfg.DT_HOST,'localhost:10001:10002')
|
dt1 = cfg.value(AppCfg.DT_HOST)
|
||||||
dt2 = cfg.value(AppCfg.DT_VEL_SCL, 1, type=float)
|
dt2 = cfg.value(AppCfg.DT_VEL_SCL, 1, type=float)
|
||||||
dt3 = cfg.option(AppCfg.DT_SHOW_PLOTS)
|
dt3 = cfg.option(AppCfg.DT_SHOW_PLOTS)
|
||||||
|
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ class Fiducial(pg.ROI):
|
|||||||
#p.drawText(24, 20, 'beam marker')
|
#p.drawText(24, 20, 'beam marker')
|
||||||
ctr=tuple(self.pos()+self.size()/2)
|
ctr=tuple(self.pos()+self.size()/2)
|
||||||
sz=tuple(self.size())
|
sz=tuple(self.size())
|
||||||
print((*ctr,self._z))
|
#print((*ctr,self._z))
|
||||||
#p.drawText(5, 25, 'x{:.4g}\ny{:.4g}\nz{:.4g}'.format(*ctr,self._z))
|
#p.drawText(5, 25, 'x{:.4g}\ny{:.4g}\nz{:.4g}'.format(*ctr,self._z))
|
||||||
p.drawText(52, 10,40,40,Qt.TextWordWrap, 'x{:.5g}\ny{:.5g}\nz{:.5g}'.format(*ctr,self._z))
|
p.drawText(52, 10,40,40,Qt.TextWordWrap, 'x{:.5g}\ny{:.5g}\nz{:.5g}'.format(*ctr,self._z))
|
||||||
|
|
||||||
@@ -504,9 +504,11 @@ class FixTargetFrame(pg.ROI):
|
|||||||
t=self.transform()
|
t=self.transform()
|
||||||
p=np.array(self.pos())
|
p=np.array(self.pos())
|
||||||
s=self.size()/self._dscr['size']
|
s=self.size()/self._dscr['size']
|
||||||
trf=np.array(((t.m11(),t.m12(),0),(t.m21(),t.m22(),0)))
|
trf=np.array(((t.m11(),t.m12()),(t.m21(),t.m22()),(0,0)))
|
||||||
trf[:,2]=p
|
trf[2,:]=p # shift origin
|
||||||
trf[:,:2]*=s
|
#trf[:2, 0]*=s[0];trf[:2, 1]*=s[1] #scaling (before rotation shear)
|
||||||
|
trf[:2,:]=(trf[:2,:].T*s).T # same as np.asmatrix(np.diag(s))*trf[:2,:], trf[:2,:]*=s not working, scale before rot / shear
|
||||||
|
|
||||||
# trf*'gridpos in um' -> motor pos in mm
|
# trf*'gridpos in um' -> motor pos in mm
|
||||||
param['trf']=trf
|
param['trf']=trf
|
||||||
return param
|
return param
|
||||||
|
|||||||
28
swissmx.py
28
swissmx.py
@@ -1363,6 +1363,8 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
grp=self._goTracked
|
grp=self._goTracked
|
||||||
cldLst=grp.childItems()
|
cldLst=grp.childItems()
|
||||||
for go in cldLst:
|
for go in cldLst:
|
||||||
|
if type(go)==UsrGO.Fiducial:
|
||||||
|
continue
|
||||||
if type(go)!=UsrGO.FixTargetFrame:
|
if type(go)!=UsrGO.FixTargetFrame:
|
||||||
_log.warning(f'for now: ONLY FixTargetFrame are supported ->skipped:{go}')
|
_log.warning(f'for now: ONLY FixTargetFrame are supported ->skipped:{go}')
|
||||||
continue
|
continue
|
||||||
@@ -1383,24 +1385,36 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
# p[i,:]=(trf*t).A.ravel()
|
# p[i,:]=(trf*t).A.ravel()
|
||||||
# Same but much faster !
|
# Same but much faster !
|
||||||
m=np.hstack((p*pitch+pos,np.ones((p.shape[0],1))))
|
m=np.hstack((p*pitch+pos,np.ones((p.shape[0],1))))
|
||||||
p=(trf*np.asmatrix(m).T).T.A
|
#p=(trf*np.asmatrix(m).T).T.A
|
||||||
|
p=(np.asmatrix(m)*trf).A
|
||||||
|
|
||||||
# add up to 100 test fiducial
|
# add up to 100 test fiducial
|
||||||
|
vb=self.vb
|
||||||
grp=self._goTracked
|
grp=self._goTracked
|
||||||
mft=self._moduleFixTarget
|
mft=self._moduleFixTarget
|
||||||
|
try:
|
||||||
|
tmpGoLst=self._goTmp
|
||||||
|
except AttributeError:
|
||||||
|
tmpGoLst=self._goTmp=[]
|
||||||
|
else:
|
||||||
|
for go in tmpGoLst:
|
||||||
|
vb.removeItem(go)
|
||||||
|
tmpGoLst.clear()
|
||||||
|
|
||||||
n=int(p.shape[0]/100)+1
|
n=int(p.shape[0]/100)+1
|
||||||
for i in range(0,p.shape[0],n):
|
for i in range(0,p.shape[0],n):
|
||||||
fx,fy=p[i, :]/1000
|
fx,fy=p[i, :]/1000
|
||||||
l=.06
|
l=.06
|
||||||
go=UsrGO.Fiducial((fx-l/2, fy-l/2), (l, l), i)
|
go=UsrGO.Fiducial((fx-l/2, fy-l/2), (l, l), i)
|
||||||
grp.addItem(go)
|
grp.addItem(go)
|
||||||
|
tmpGoLst.append(go)
|
||||||
mft._tree.setData(grp.childItems())
|
mft._tree.setData(grp.childItems())
|
||||||
|
|
||||||
print('DEBUG: first point:')
|
#_log.debug(f'first point:{p[0,:]}')
|
||||||
print(p[0,:])
|
#_log.debug(f'step to 2nd point:{p[1,:]-p[0,:]}')
|
||||||
print('DEBUG: difference from point to point:')
|
#print('DEBUG: difference from point to point:')
|
||||||
print(np.diff(p, axis=0))
|
#print(np.diff(p, axis=0))
|
||||||
#self.daq_collect(**param)
|
self.daq_collect(**param)
|
||||||
|
|
||||||
elif task == TASK_GRID:
|
elif task == TASK_GRID:
|
||||||
self.re_connect_collect_button(
|
self.re_connect_collect_button(
|
||||||
@@ -1874,7 +1888,7 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
go.setSize(sz)
|
go.setSize(sz)
|
||||||
|
|
||||||
j=0
|
j=0
|
||||||
elif type(go)==UsrGO.Fiducial:
|
elif type(go)==UsrGO.Fiducial and go.size()[0]==0.12:
|
||||||
ptFitTrf[j]=go.pos()+go.size()/2
|
ptFitTrf[j]=go.pos()+go.size()/2
|
||||||
ptFitPlane[i]=go.ctr()
|
ptFitPlane[i]=go.ctr()
|
||||||
i+=1;j+=1
|
i+=1;j+=1
|
||||||
|
|||||||
Reference in New Issue
Block a user