From 648d8e78f1ab29c6dd89832d5094150ee115bcd2 Mon Sep 17 00:00:00 2001 From: mtringi Date: Fri, 20 Jun 2025 16:51:33 -0700 Subject: [PATCH 1/3] Peripheral_cursor_leniency Add a leniency value for how close the cursor needs to be within peripheral targets. Currently, cursor must be fully within all targets. This value adds some acceptable radius of success, as defined by the leniency feature value. --- built_in_tasks/target_capture_task.py | 6 +++++- db/db_test_aopy.sql | Bin 278528 -> 278528 bytes 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/built_in_tasks/target_capture_task.py b/built_in_tasks/target_capture_task.py index 6491a486..3c62d85a 100644 --- a/built_in_tasks/target_capture_task.py +++ b/built_in_tasks/target_capture_task.py @@ -284,6 +284,7 @@ class ScreenTargetCapture(TargetCapture, Window): cursor_color = traits.OptionsList("dark_purple", *target_colors, desc='Color of cursor endpoint', bmi3d_input_options=list(target_colors.keys())) cursor_bounds = traits.Tuple((-10., 10., -10., 10., -10., 10.), desc='(x min, x max, y min, y max, z min, z max)') starting_pos = traits.Tuple((5., 0., 5.), desc='Where to initialize the cursor') + leniency = traits.Float(0, desc = 'How many cursor radii that the cursor can be outside the non-center target') #increments of cursor radius, set to 0 means cursor must be fully within target def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -383,7 +384,10 @@ def _test_leave_target(self, ts): ''' cursor_pos = self.plant.get_endpoint_pos() d = np.linalg.norm(cursor_pos - self.targs[self.target_index]) - rad = self.target_radius - self.cursor_radius + if self.target_index == 0: #If first target, cursor should be immersed + rad = self.target_radius - self.cursor_radius + if self.target_index > 0: + rad = self.target_radius - self.cursor_radius + leniency*self.cursor_radius return d > rad or super()._test_leave_target(ts) #### STATE FUNCTIONS #### diff --git a/db/db_test_aopy.sql b/db/db_test_aopy.sql index 7b27b5e87512cc6784444f4ffc0b0f8a05566c99..1ddc96b4273ea58855ddf999539f90fde7162fe7 100644 GIT binary patch delta 583 zcmZo@5Nv1=oFL73Yod%Z>n#SovhIy3r*wr?1Vout8B2;1le1Hc;!6^Xvr8sB>TMBI z5$0pohKr}ACYF>IrK(Kk)~{z&ncS`K!l=@GLBIWiKI8NY`b>(-Dr^k0yd0b*sl_Gn z>8W{K3_u{jz`%bS3P1CI-Yl5#hJTs@6Wew+2c}Q_LMqG*q9FCWFtu-hD&F%?3}ByB zz`?_R4FSPAu?se^EN5w85?}*c_8n%xv2%=-yb z4(9!W@j#llvN8YQXDU(ICcylTpHXG{dwFJ2h#ePT$`%zUpqjF&fJK0rng85&_5$Xu z{F4&|gp7GhSQ%s)IKiQtnU^kH%*vq2z?qwvSDKikker`aQk0*=Q^d+3&A^$LUy=b- z!nK((fmvZY%L3*P@;oZ643eA-ps~%lrC$^gN&M z^GojaCVRcfPfw8D&t85jvJ2U>b6?cIpH0!^l$asDYt$~9Zq+xui|w_g?6ntZYC?Q% z-+taS{ElnVwHI<-Lf1aYy-nyxquj@%9Jw;e2`4Fy!n7Pu_@?JqS4`^&07UUN;8T2n zzv9n$8y{^=E`NuahzJ4<`FWL}1AcBsMIunx;E(m4H-$g(7!_eE0LlzT@IK&uhPZ>L zjwvyqGP80u?~>=6tx)hL;1m1<@8Mni5pOc@8~8>D9){P|@EU~Io@n@5-)G!ojJu4q z$9OexXai@ofirC23=25JhK<0*f%To9ASI&&9|JyS`VTM>QzQ@wY|x#7@C-#txx#x`H*0p?bYXMo zs64TK{TSEZocYp`lA?rPU5`29HolW=M}R`&T&tnhY|D4;rtCyu8WMbw8rDk6j=*V1 zv<$0bH1~XtS`jz_3Cs2`Fqb1+WLZ?NO9SzDnLfCRVrhPUHSL-0s$;lDtE#6LRQ)n_!tF5I;aG2lyZ8uy!JqIJ>&`cLDxCX& zR^y;`R3#~yjLN%!H}Lqx4-;o5V)E{mu5QcS#eO;kOR_8{;=m>dahb?6Jup*UFO@5_ zO})lB)9v`Ptb6bFPqJvX%;V9SL!vdUu$pE;tiFPFnSmT*rE4@AUemDZ`49VQkjSMF zbv#VuV3amroXfAK-HzoqT4sRDYOkwltLnQAqvdatPs>e2vLGMGMPhQrDC_t zdJ_D#{x$snQyW_uYI9QE^lCKN9@TN}56qg+zdhE8hHZ`Ky4asy94kB+{^5nsm2{0d H Date: Fri, 20 Jun 2025 16:59:21 -0700 Subject: [PATCH 2/3] Peripheral_cursor_leniency Add a leniency value for how close the cursor needs to be within peripheral targets. Currently, cursor must be fully within all targets. This value adds some acceptable radius of success, as defined by the leniency feature value. --- built_in_tasks/target_capture_task.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/built_in_tasks/target_capture_task.py b/built_in_tasks/target_capture_task.py index 6491a486..3c62d85a 100644 --- a/built_in_tasks/target_capture_task.py +++ b/built_in_tasks/target_capture_task.py @@ -284,6 +284,7 @@ class ScreenTargetCapture(TargetCapture, Window): cursor_color = traits.OptionsList("dark_purple", *target_colors, desc='Color of cursor endpoint', bmi3d_input_options=list(target_colors.keys())) cursor_bounds = traits.Tuple((-10., 10., -10., 10., -10., 10.), desc='(x min, x max, y min, y max, z min, z max)') starting_pos = traits.Tuple((5., 0., 5.), desc='Where to initialize the cursor') + leniency = traits.Float(0, desc = 'How many cursor radii that the cursor can be outside the non-center target') #increments of cursor radius, set to 0 means cursor must be fully within target def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @@ -383,7 +384,10 @@ def _test_leave_target(self, ts): ''' cursor_pos = self.plant.get_endpoint_pos() d = np.linalg.norm(cursor_pos - self.targs[self.target_index]) - rad = self.target_radius - self.cursor_radius + if self.target_index == 0: #If first target, cursor should be immersed + rad = self.target_radius - self.cursor_radius + if self.target_index > 0: + rad = self.target_radius - self.cursor_radius + leniency*self.cursor_radius return d > rad or super()._test_leave_target(ts) #### STATE FUNCTIONS #### From fe2a16c81c79cdcf0b716f16fcae32bb741e7bc1 Mon Sep 17 00:00:00 2001 From: mtringi Date: Fri, 20 Jun 2025 17:02:57 -0700 Subject: [PATCH 3/3] fix leniency variable --- built_in_tasks/target_capture_task.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/built_in_tasks/target_capture_task.py b/built_in_tasks/target_capture_task.py index 3c62d85a..8bf5bd91 100644 --- a/built_in_tasks/target_capture_task.py +++ b/built_in_tasks/target_capture_task.py @@ -387,7 +387,7 @@ def _test_leave_target(self, ts): if self.target_index == 0: #If first target, cursor should be immersed rad = self.target_radius - self.cursor_radius if self.target_index > 0: - rad = self.target_radius - self.cursor_radius + leniency*self.cursor_radius + rad = self.target_radius - self.cursor_radius + self.leniency*self.cursor_radius return d > rad or super()._test_leave_target(ts) #### STATE FUNCTIONS ####