major fixes in coordinate systems

This commit is contained in:
2022-09-02 15:30:14 +02:00
parent 45e8ab680f
commit 6e3e1cd8ab
3 changed files with 34 additions and 13 deletions

View File

@@ -133,6 +133,11 @@ class AppCfg(QSettings):
opt_ctr=np.array([603.28688025, 520.01112846])
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:
# self.setValue(AppCfg.ACTIVATE_PULSE_PICKER, False)
@@ -352,7 +357,7 @@ class AppCfg(QSettings):
app=QApplication.instance()
cfg=app._cfg
#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)
dt3 = cfg.option(AppCfg.DT_SHOW_PLOTS)

View File

@@ -170,7 +170,7 @@ class Fiducial(pg.ROI):
#p.drawText(24, 20, 'beam marker')
ctr=tuple(self.pos()+self.size()/2)
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(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()
p=np.array(self.pos())
s=self.size()/self._dscr['size']
trf=np.array(((t.m11(),t.m12(),0),(t.m21(),t.m22(),0)))
trf[:,2]=p
trf[:,:2]*=s
trf=np.array(((t.m11(),t.m12()),(t.m21(),t.m22()),(0,0)))
trf[2,:]=p # shift origin
#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
param['trf']=trf
return param

View File

@@ -1363,6 +1363,8 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
grp=self._goTracked
cldLst=grp.childItems()
for go in cldLst:
if type(go)==UsrGO.Fiducial:
continue
if type(go)!=UsrGO.FixTargetFrame:
_log.warning(f'for now: ONLY FixTargetFrame are supported ->skipped:{go}')
continue
@@ -1383,24 +1385,36 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
# p[i,:]=(trf*t).A.ravel()
# Same but much faster !
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
vb=self.vb
grp=self._goTracked
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
for i in range(0,p.shape[0],n):
fx,fy=p[i, :]/1000
l=.06
go=UsrGO.Fiducial((fx-l/2, fy-l/2), (l, l), i)
grp.addItem(go)
mft._tree.setData(grp.childItems())
tmpGoLst.append(go)
mft._tree.setData(grp.childItems())
print('DEBUG: first point:')
print(p[0,:])
print('DEBUG: difference from point to point:')
print(np.diff(p, axis=0))
#self.daq_collect(**param)
#_log.debug(f'first point:{p[0,:]}')
#_log.debug(f'step to 2nd point:{p[1,:]-p[0,:]}')
#print('DEBUG: difference from point to point:')
#print(np.diff(p, axis=0))
self.daq_collect(**param)
elif task == TASK_GRID:
self.re_connect_collect_button(
@@ -1874,7 +1888,7 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
go.setSize(sz)
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
ptFitPlane[i]=go.ctr()
i+=1;j+=1