From 82e37f436445b98f881a2ec2229a0d480dc07ad2 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Tue, 3 Apr 2012 13:13:43 -0400 Subject: [PATCH 01/26] Adding all files for Vicon and modifications to regionEditor --- .../NewRegionFileFormat.regions | 20 + .../NewRegionEditor/RegionEditorV3.wxg | 320 ++ .../NewRegionEditor/RegionEditorV3.wxg.bak | 320 ++ .../NewRegionEditor/Test.regions | 24 + .../ViconDataStreamSDK_CPP.dll | Bin 0 -> 397312 bytes .../ViconDataStreamSDK_DotNET.dll | Bin 0 -> 184320 bytes .../ViconMarkerBroadcaster.exe | Bin 0 -> 7680 bytes .../ViconMarkerBroadcaster.exe.config | 8 + .../NewRegionEditor/regionEditor.py | 1706 ++++++++ .../NewRegionEditor/regionEditor.py.bak | 1700 ++++++++ .../NewRegionEditor/regionEditorV2.py | 287 ++ .../ViconMarkerBroadcaster/MarkerStream.cs | 167 + .../Properties/AssemblyInfo.cs | 36 + .../ViconDataStreamSDK_CPP.dll | Bin 0 -> 397312 bytes .../ViconDataStreamSDK_DotNET.dll | Bin 0 -> 184320 bytes .../ViconMarkerBroadcaster.csproj | 70 + .../ViconMarkerBroadcaster.sln | 42 + .../ViconMarkerBroadcaster.suo | Bin 0 -> 35328 bytes .../ViconMarkerBroadcaster/app.config | 8 + .../ViconMarkerBroadcaster/bin/Debug/Core.dll | Bin 0 -> 273920 bytes .../ViconMarkerBroadcaster/bin/Debug/Core.pdb | Bin 0 -> 837120 bytes .../bin/Debug/ICSharpCode.SharpZipLib.dll | Bin 0 -> 192512 bytes .../bin/Debug/Tao.OpenGl.dll | Bin 0 -> 933888 bytes .../bin/Debug/Tao.Platform.Windows.dll | Bin 0 -> 86016 bytes .../bin/Debug/ViconDataStreamSDK_CPP.dll | Bin 0 -> 397312 bytes .../bin/Debug/ViconDataStreamSDK_DotNET.dll | Bin 0 -> 184320 bytes .../bin/Debug/ViconMarkerBroadcaster.exe | Bin 0 -> 7680 bytes .../Debug/ViconMarkerBroadcaster.exe.config | 8 + .../bin/Debug/ViconMarkerBroadcaster.pdb | Bin 0 -> 13824 bytes .../Debug/ViconMarkerBroadcaster.vshost.exe | Bin 0 -> 11600 bytes .../ViconMarkerBroadcaster.vshost.exe.config | 8 + ...ViconMarkerBroadcaster.vshost.exe.manifest | 11 + .../bin/Release/ViconDataStreamSDK_DotNET.dll | Bin 0 -> 184320 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6003 bytes .../x86/Debug/ResolveAssemblyReference.cache | Bin 0 -> 31482 bytes ...kerBroadcaster.csproj.FileListAbsolute.txt | 36 + .../obj/x86/Debug/ViconMarkerBroadcaster.exe | Bin 0 -> 7680 bytes .../obj/x86/Debug/ViconMarkerBroadcaster.pdb | Bin 0 -> 13824 bytes src/lib/regions.py | 61 +- src/regionEditor.py | 3712 ++++++++--------- 40 files changed, 6483 insertions(+), 2061 deletions(-) create mode 100644 src/RegionEditorFiles/NewRegionEditor/NewRegionFileFormat.regions create mode 100644 src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg create mode 100644 src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg.bak create mode 100644 src/RegionEditorFiles/NewRegionEditor/Test.regions create mode 100644 src/RegionEditorFiles/NewRegionEditor/ViconDataStreamSDK_CPP.dll create mode 100644 src/RegionEditorFiles/NewRegionEditor/ViconDataStreamSDK_DotNET.dll create mode 100644 src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe create mode 100644 src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe.config create mode 100644 src/RegionEditorFiles/NewRegionEditor/regionEditor.py create mode 100644 src/RegionEditorFiles/NewRegionEditor/regionEditor.py.bak create mode 100644 src/RegionEditorFiles/NewRegionEditor/regionEditorV2.py create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/MarkerStream.cs create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/Properties/AssemblyInfo.cs create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconDataStreamSDK_CPP.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconDataStreamSDK_DotNET.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.csproj create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.sln create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.suo create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/app.config create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.pdb create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ICSharpCode.SharpZipLib.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.OpenGl.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.Platform.Windows.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconDataStreamSDK_CPP.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconDataStreamSDK_DotNET.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe.config create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.pdb create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.config create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.manifest create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Release/ViconDataStreamSDK_DotNET.dll create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ResolveAssemblyReference.cache create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.csproj.FileListAbsolute.txt create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.exe create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.pdb diff --git a/src/RegionEditorFiles/NewRegionEditor/NewRegionFileFormat.regions b/src/RegionEditorFiles/NewRegionEditor/NewRegionFileFormat.regions new file mode 100644 index 00000000..a9d77490 --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/NewRegionFileFormat.regions @@ -0,0 +1,20 @@ +# This is a region definition file for the LTLMoP toolkit. +# Format details are described at the beginning of each section below. +# Note that all values are separated by *tabs*. + +Background: # Relative path of background image file +None + +Obstacles: # Indices of regions to treat as obstacles + +Regions: # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] +boundary {0 255 0} [(0.0 2.0) (4.0 2.0) (4.0 -2.0) (0.0 -2.0)] +rA {255 0 0} [(1.0 1.0) (2.0 0.0) (1.0 -1.0)] +rB {0 0 255} [(1.0 1.0) (1.0 -1.0) (0.2 0.0)] + +Thumbnail: # Relative path of image file that has region shapes overlayed on background image +NewRegionFileFormat.png + +Transitions: # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] +1 2 [(2 0)] +2 1 [(0 2)] \ No newline at end of file diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg new file mode 100644 index 00000000..c1bc2602 --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg @@ -0,0 +1,320 @@ + + + + + + + Region Editor + 1 + wx.Frame + + + + + + menuNew + OnMenuNew + + + + menuOpen + OnMenuOpen + + + + menuSave + OnMenuSave + + + + menuSaveAs + OnMenuSaveAs + + + + menuExit + OnMenuExit + + + + + + menuUndo + OnMenuUndo + + + + menuRedo + OnMenuRedo + + + + + + menuAutobound + OnMenuAutobound + + + + menuRect + OnMenuRect + + + + menuPoly + OnMenuPoly + + + + menuAddPoint + OnMenuAddPoint + + + + menuRemPoint + OnMenuRemPoint + + + + + + menuMarkers + 1 + OnMenuMarkers + + + + menuMarkersClear + OnMenuMarkersClear + + + + menuCamera + OnMenuCamera + + + + menuImageImport + OnMenuImageImport + + + + menuImageClear + OnMenuImageClear + + + + + + menuAbout + OnMenuAbout + + + + + + wxHORIZONTAL + + wxEXPAND + 0 + + + + 150, 400 + + 5 + 4 + 2 + 5 + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleVicon + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnButtonCamera + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleSquare + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnTogglePoly + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleDim + + 50, 50 + + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleFeedback + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnButtonCal + + 50, 50 + + + + + + + wxEXPAND + 0 + + + + #ffffff + 800, 400 + + + + + + + Marker Placement + + wxVERTICAL + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnButtonPrev + + 50, 50 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnButtonPick + + 50, 50 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnButtonNext + + 50, 50 + + + + + + wxEXPAND + 0 + + + wxVERTICAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + 1 + + + + + wxALL|wxEXPAND + 5 + + + + 0 + 1 + + + Speech + Beeping + + + + + wxALL + 5 + + + + + + + + + + diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg.bak b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg.bak new file mode 100644 index 00000000..f98dcde5 --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg.bak @@ -0,0 +1,320 @@ + + + + + + + Region Editor + 1 + wx.Frame + + + + + + menuNew + OnMenuNew + + + + menuOpen + OnMenuOpen + + + + menuSave + OnMenuSave + + + + menuSaveAs + OnMenuSaveAs + + + + menuExit + OnMenuExit + + + + + + menuUndo + OnMenuUndo + + + + menuRedo + OnMenuRedo + + + + + + menuAutobound + OnMenuAutobound + + + + menuRect + OnMenuRect + + + + menuPoly + OnMenuPoly + + + + menuAddPoint + OnMenuAddPoint + + + + menuRemPoint + OnMenuRemPoint + + + + + + menuMarkers + 1 + OnMenuMarkers + + + + menuMarkersClear + OnMenuMarkersClear + + + + menuCamera + OnMenuCamera + + + + menuImageImport + OnMenuImageImport + + + + menuImageClear + OnMenuImageClear + + + + + + menuAbout + OnMenuAbout + + + + + + wxHORIZONTAL + + wxEXPAND + 0 + + + + 150, 400 + + 5 + 4 + 2 + 5 + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleVicon + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnButtonCamera + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleSquare + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnTogglePoly + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleDim + + 50, 50 + + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleFeedback + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnButtonCal + + 50, 50 + + + + + + + wxEXPAND + 0 + + + + #ffffff + 800, 400 + + + + + + + Marker Placement + + wxVERTICAL + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnButtonPrev + + 50, 50 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnButtonPick + + 50, 50 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnButtonNext + + 50, 50 + + + + + + wxEXPAND + 0 + + + wxVERTICAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + 1 + + + + + wxALL|wxEXPAND + 5 + + + + 0 + 1 + + + Speech + Beeping + + + + + wxALL + 5 + + + + + + + + + + diff --git a/src/RegionEditorFiles/NewRegionEditor/Test.regions b/src/RegionEditorFiles/NewRegionEditor/Test.regions new file mode 100644 index 00000000..44917e82 --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/Test.regions @@ -0,0 +1,24 @@ +# This is a region definition file for the LTLMoP toolkit. +# Format details are described at the beginning of each section below. +# Note that all values are separated by *tabs*. + +Background: # Relative path of background image file +None + +Obstacles: # Indices of regions to treat as obstacles + + +Regions: # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] +R0 {000 000 000} [(-2.010 2.430) (-2.010 1.455) (-0.975 1.455) (-0.975 2.430)] +R0 {000 000 000} [(2.055 2.370) (0.930 1.140) (3.195 1.005)] +R0 {000 000 000} [(2.055 2.370) (3.195 1.005) (4.095 2.175)] +R0 {000 000 000} [(0.600 -0.390) (0.930 1.140) (3.195 1.005) (3.075 -0.345) (1.005 -1.260)] + +Thumbnail: # Relative path of image file that has region shapes overlayed on background image +None + +Transitions: # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] +1 2 [(2 0)] +1 3 [(1 1)] +2 1 [(0 2)] +3 1 [(1 1)] diff --git a/src/RegionEditorFiles/NewRegionEditor/ViconDataStreamSDK_CPP.dll b/src/RegionEditorFiles/NewRegionEditor/ViconDataStreamSDK_CPP.dll new file mode 100644 index 0000000000000000000000000000000000000000..c567dcc3db994932d175175b0a7b8e9c688cb9e9 GIT binary patch literal 397312 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�^RaGT5d@FRX@Dm)lkq8vQQrfB8nQ@xBs$0D+a3>}IrG*O~tyV>JrT8K-5)^TPend5LeR z*53r~FYS3T;C)KKYka;Dd~E{!A_tRkKoz8I_`jW}E{u@H8=dQg!9Y-gR7e#ibRk2P zHlj|R=Tv4TsM5BpZy`}_SiRrI*UEg{6X0O#a8sz;@Pk}E8KUMT>KXD0YeQz7-ipcG z+c}8827xE)A67%6vD{Wn4;1qQlqzKZc_l;Gsyjf~G@gw&YsY zbY0qf*4o_{R)6CROv&HN%K<0cRCZmyr8c16PbB*!sH<0kf-1-%thg(Sa3dDP=6dJJ zNAsVpaOOX|3pZbMlQnuOM}B!puhnWw{pQ)(ZDNnSC7KLO)K$*`V5Wr zW!Iz?qcFDk>c7SCn9u^X^U^yO8_} zdQRvJcM3fxr?1eHe{dH$^7}@njttL%HhAPu;q4wnV9dyONZvrE{DSC!wdDv|9pVI+ z^YJ6$ASMJ>>KFzf&&q`&&W=_Rj<7>nN8X_H8Da(nVg}_{ePn%wE9O~xKP`C_D?UJ> z_-=O5oFi1CxYv{dh3JrNZwA}RD(W9MBD8PVt~wBwHqa?+gKj^G&qVBye&1>Onz%l) zv8PE31GyA2tsy$o#r17<*!rt%_01Crm(-xlc%i~T#`6EDgHXu;5|R9zYdK^{yKYp zfVLU^brRtEH~Q=7=aopd#-E}-XFC4$&R+rEI#@cGT)G`7XV@ssb�hh;zI~eB|rhfK-dg3 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 z z$yoA0hZE(|@4S_gVtx?*i<@N|viuhfeyLz=?nu}g&TFBQBrNF#asiUn3e4)c_st6w}@%9_IRo646pgHgpd4I?z8H8Dj? zm{t6)$uz52?B~2e^|wxIFX=E0_gwl|X<@2L&C4>xNoXH)(S*+NQa$mH_zk*^aWXB? z^qcHb>b(S;uTnY~aWE46{d|^y#ox=EzsA|xV{QNDl&W)O!Jiz51Ui?TMlcdF6Fipg zWP7VllCKvvVT(6Ik1{X1$K#b#rV*EOSC-cU`VOXZW$Nk)9e-vtrow z`)u?|*zp840k<1&v0J1>eaA6g!&$wtDdbb}L*nPyIpX+0vRK}CI)CoUgSt zcg$I5x5A1g>LB8G?|itP6EZgwzwBe>c*|lBuFoR>Bz)niVv6F^udQYiMB!k!l^hR3 z75^SOSq_;dAjdArQv~}QCjfBePwcWHAR<4J{Y-YpvcHI3xSY@Mjzl_oEdRS=a}(&w zk4Vg5Y09hT(-g7LyzCzpc4RB+rwyO{v@Ll|1SlfFbU!REK!A(+o>m`>PYz<8=DhRiUbhdFQ75`S~r79N%!TmhrTRmK{iGjCt@R!8YMBVh~!CUG6~b@ zB&qOnzmbdBH>9k>s>ePhM-3rZ3}6;oA}f+-G8d_Ioc=ZrroZE>K5>6t|DW}DewO|k z^KJUX-t#Sw`F5`RGn{bnALKKN>?=1;;cvW|$%T_gQ~a+{t|X4iZ~@A4${Y7)?8>CC z$E~-?+vhstKf8qs3A6mdx!fQc9Y*eaUM{c7FPFCFPI4;!&tg7F8KtiNlOO&(<-Sysh~ADL+oBxsUdEuaG(dGen0LblF74-CW;YA zrAn$R)2nDk)r_A|F*Tw+D@}9sPT*vB=~qJruwsg~TdXjvF;>YSpl z6VN;Cf}M))yZQ3Tb>U3$PT4yVGBmDd+#ap^Vxt3dY0f&4ahRv5AgEMpyjZI`Ui6NB zF|sH}x)ynxR!c!pnZB9~ZXhVqQP%xOqr!y>{%MP-FnREufd3HiS1;72c%2Rs4v6}` z66hg&p;XW@~px5 zv?7)X%;k1t8M4f+Ww>(R9a8gCXz;0A2whjsdsAU&yK-DJaE{m{)mImvDsL&H`jiQv z%<-AQ!C4fjzR%W?6U0#FI@xx;$K%~k@4l1FXLz=vW2L6vK8QT!XZhazHPj4!jLQC z?0w;SC2R4V!?y2zNFgS)Vc6}3rV9Uy`W%;)&=<)Qu62n1AMbTCxJz31?VQAM=eY1u za>vN&ev?yVP1>77^kj{rxddD5O|C%}y|Y1^Ux;oA%8d}vTy645~i%1Pvq+j$1 zzh-F@%i@#A^LTu$rcD3mzK?pktK#+0*6HPVWguRCBR;W~#PPNIZ&8XoiZ8EMx2Z)hNN(UqE z;wbjt%+QPUy7gE#hdCEDi|&bcp6JT)jG%j8;_vJH?cw)c{w8vLkniL8p3a}mp5r*m z`sb93VY$Z7JeRe=pl=&9=o_9)tmAQQjIdMe)!7pY`4dY@IocJ6{fl{qW}Vr%`e{b7 z`cek6D5Cq4B+W30r2ZGP)K9=bvwkrqrQSpvX8p^l-|#7TTdCfgT8zUW# z*Qg_ZU!8V-q5l2@6qE|}EmsNs!e+8Kuq9NXPbr|a=3=d-G;kzFdi5cM;)^vGX)S&! z<`0#nMDX)V;yzB~dPqd>vhoPzli3qGvrX9yczRwozB{(=J%ZvXfej_EmG(QH&I_`Q z=d^{1!F>E#8I4fi^S?Sv{Y8oSFa7|aPpvJ!g`sABtr1?ICd$+j%OjkecH>54zW5`0 zQE~~CCP}3=Kj-$_-u~?EZOv?t=_Bi5!1k`~w>|M6$kM;(GuwN8knP>lZ+qeolBGSi z-`@CqZ!qnd{1`$7{8)J^Kb90OjOY@PeKTRkF7?mVy*DN}u`^{2POK!ptUgomVP<`> zYOK<~k*x7As>Vf9V>vZKj|z)=(<5o*ohG($alY~nr=Pl0 zbjQ`p$L%pfZ%)ovY(ae5+*tGS*w0q*O6+GsV>>C}(trIZy1{8d`H`pJ&JV3+O5lk6 z%w@&aIIUH7f~+!GdfOozk;moGzkn^C^~lmgP0>S=Of!lJl~0b7SyNU5Bmw63-Ij8gWYl!Cp9qA1kkpNIRK=A6?U*aGT3Y}-8-Wy|)r zlZE9>@H+|apZp9Mg2b1Wq4oUNbDX?GLZdZ{J8P~|Y0u9jrCFmSA)c0*g!uC+etOaM!$rYF>sGv*CmoH|_7YT~Np;==*T!xaKdE?PTv<~hH?eJQ~ z@#`-Q9HBo&Ob{E6m)Or6{CCppOf;rbJ8M#RNj@otE4%7L7Zt9k`Kfv zhy_^igZwf($rBbTc31ZMU>5i*5_nUL>jTd!=)HDrx}IWXi$g#g$e3bhy>9Ln(G6Vy-t^euh=)n3{`8+2 zcHZPkQJ2#ts%d@}A^TDX(YEBP2&A~)lgRUg@RDL;HxhK{KfcA-W7T7%EY*-+Xx#Pb z0rDO2vM8OW*z_}z9S!_q)u!;vVsYMN&o(16@%x8IQ}J7sqQtDVwvhxL^~D^$(+POz z5G{s>HuomcQpVhq4T|x*Hp}=GDT)Zuot9X{9CCX-Gqo@ulIfa@p10z8- zies~#dfg959?`srX3FiMGi5;ZW^8((dv)>Zx%?JGp^6;+%SL(&hRsYlu2WE6S0(jp zA7Y(WFD9k-MyL|2|t^eP~;ofF+<55UUb#p-S6BLltZ*xaR-;oqO->lf|XUXJ+nl z_VYWx^Eq2uW&8{En z&I)&qO}^;PO;rE5qQ8IP9xKkn4CCGqQ%`V*bu|**(ZlpfjMr#b6xFE)YM>WYe5Npw)zUyaV^PW4M@TIE zND&`dVd2y_g7mgM6neN!-u*hXM}DS;uKxRvA~Zw@BGrnxdUCM+7%B*=!&5k0{uVi_ z^k`u{Y4%B)3rT}UW8;tC>nDbMnbX#G4~;0J{8AK0&SaZN?vg2I@Z=s{EPM10Xy$dH zRTSHKukNzCW)nx>>!e^RHcrk{I_|x<$sX**ukc`{3ngn8Q*00Dy3mGXmDV#FJ}Lb7 z9&6wQINQ&p3P2&F7CKCV@OEvOeSjeUkzzj}%GkjRGNYgYZ98oM`R=5BxOmIIN$Ruae znD0((8nC33n?|+z&j9$xUODwOa(NpGh>YY@fAhz+(U%!$}00EG$yrgrZ~e z9H>O4dWTvmR36)m`Kj_tVF&d;L)pH1HlOnTXBL=u>0y^U3epoqB`LYAdw{} zl?iU5g86Rs4ft_9ov1d#^pXpCT&Nyln+J)=O~Ejc(>V_(kQ3!Clpm;MK%4nTpv{oCfQ;pU-qjiQw6PJ0_ryi7zV!o6z zQk8Q9{@zl%q@c6)I-|8cgQi}%5nv%{=os}UH#k6X9yYEC1;Txj-`9RDx|-sme&6rm z5f)bdt;yVJrEc2|T!CseF{ueEXvuo7v$C}?&5IWtp_R}mOQV+Tm~)In8vjgqDp~xq zw_``gmE6`%E8(9_eO~j=0{obb9s+3`xQ`d{OF7+N=~e4qe7FC=x8=bVh##&DsT=Qm zum1qY6IZ-(E=;hw>cW#@f~|;OT1EOQ<-=g0Z&Cb;86=*eR$>m(H#dH#VBLoJ*X2jO zbvo(m;+Nh;`kT}`jCT4ijGOoJ3O=L!sPZrH?6mlu|83=xA2s#kJR2L2y~9n!;zz3L zkoOv)DO%*V!gbXqrMi)Znhms4!Xf+ppE2zS!;P?-9LTj)>QQ-hangqN?O; z53>J;HP`(y8(C?$GIZu@t-Sn^Oj_=*NeA3rgwca^MN z&5MP*_)>Rb87}LI;nH||aS^h*t?Dt@PEv3gCAE9hsgJU>uB_}zc{ElYO+n43YN6=# ztIIPBDkf~`R(0Z1y(o1~(MzDPI&z|M5L*5A4^bjv=bBP-+h#W{U9*92T3>S8|8mhE z`hSyXu@?1|>L@H)E2L!Yw|Pm&>rexks#QP|W2nBeSfg5@7Z(?(wp+n67VW>-rRupO zTNT+RX*HJ#>_+Ex0RjsXWY9eHvag29<6)_)mT*C%O}x}>WeP+irDW}i`RhK+)KQyV z_bY2t>wcQMl)9NzG+zd)dum^H-QO$B+wYFFy1$rK_ng$aO?oE%?)#eV;_t;tP;>JH>KIA+D2jit#zh=mh~Bcnz@7DNfH(Mx~VTdnd)I;(#cl9p92N ze(I#C%u&W`lERP_#pVg3H6)xAS%#mH7ebSQa(Oq#(I_fe^J{q%)o;qu-<&3IrbuBs z)oCibIbW0aXidrc;_TU3^XGSYFX)u_KbFQS%5QS%X8qo3*2NUTfCOUKw-=PGmF3r@ ze#+<__#KzXP7W+$P!N(FsNwPekqTNA=qH?ic7D{z*j ztUq^2>>?Blp&kyL&o3d`j?-eU_Q_^#H3GHq8W**X6%f&fmDxgqT_HnPTgUscXylD< zjzDY8hGQp8 z`P|Rv*L-&J`N>O#{#Qu1na^VGV|=#rY&Q4(T)X*v-M*Il`?-FV_m}dqc2es*A^$w? zlvMfWY~d#$;ApKz(g70^3T`;;Jg7a*@r2|XPBx};GE^kz1ao`)MP_Z893Mgup*ctH1mC(9_2O<;$54I2jTg#)FJ3)kxRc#zzoCIM`c3>sr0tE*o<1wRqc zn4hW*I)Af$zE6z$wJD>%`rsj2!NB)czA<@eS#!zS-?G_g!cho{&rRV({;YK(zuNfU zkQe-GoyhTlZ5_&Igs!e{h_BNs2OJswq$p6Ic~u|E=kvhB1N%^}nUoig)S@e!&9YAG zLC6U`WS!6-2(x-cjg%dl1zjzhuK&oM6T9xOo?0kpbt$i?{cQBSJ_W;2#@&ACQTrRU z_p(x_R`nDQ4t$3UlR09SteMJ{`YoJ3X$T}hxzKFR$^H~~w3SA41?9nsES82nE zU9o-RVqJyQSB8!U{#!5OtO#)~Xht1-0kcMnh)F+-w>leBDrn!Olj<_;^jAmJZ;nr- zKgqnpN*`Ynk|qoLrKLe#b%~Y2+>#i%_8S%zEOIkXD=4;q+|(M)t__H4pC`KLLWa!8 z=oI(w628V7($uTpjRnzR9;*KPS>fh*&8_|8s>nwjH_40>Wu20$<;jfDO^Gw1Y=O=^ z!58K=aT6p-sd@^_)XFywd{r>|6RHTSqD4M+>l;#yLkwCIJfeN)Gl`B_+24U z0}^zlyA=F zigR>|a-s9*^JprcxjNNswR*P3w*loX(r6%D(mhx023Bx>11IfnU=;eXLiuuuIlm^NW#Nt-_S#V5!Ah~Fz?X&(s+mUbxogWZP8EBAl zXfNdmV|kCfN2-#wj@_HI&6Q0LJ) zHk&h;tAI?$6sd2LG`>#V%{#$ZRU$un^9-wuBQKozw6sVEcQ}#LyhHyRi zktl(01QdZ#{Y)0B=1rOFG^;j68nybdKafks%dsIiShzwyWE_YV|Uax-#dlV)t0GFDRQ#sD*!@{G<)+~QT&k8^d57JcY$`>y?;I+cF!ycT`qZd2d2zhM=U z$UikT1`V#Fpo{LhmP(K*s@KbhK58B@_#-OeXAB#j|%`xE! zA$uVhttaiT8U=QHD37|V^0?6D@taL_qLSx)=cPanb2D^vA1PnZ_T9MmPx%eRlO}$y){#MTc-5ZRQI-2_ts49ZJF9z zQ`g&4*IP5Aw`E3eO{BLa(pxjTw`F#3O-pY}OK;8G-j=z&HS>F0=J(cI-P>|?Z_UEq zmW91F*Yvhr(_6E+w`Fl}O?z)kdvDE(-j)@;H8=IP+?2V#dJ2Asm3I=ra@(IXIM|=_ zEw;XMke%kW@6DNigU&DClK=WghnjzqC{eNv{vr12#Mo;S4dnVbONQkT755nMWBo*` z=^u9wbQcYJHkUzs&i1U*?U8S34}L21_lNZma#Q&jF%H}c9jNpj(CVBS^9o>?u-s_zP`zMxf4AR@KALpP~qV*Xmj<*OyD z{Jysb>W|0j&lX9PyFWkW)d2mePgYpj&j_d+t@^}zqO7^u>eYk@LnxeOlnIgc67tfx z2&!m8|G1-8PiwR5Zy(9wCyi34(wfQwOy;7 zFn*<0S9KhoV0{B|D}W8D+}xuAlJuwzfqQBEN+7UNL-3nKLt%VtF+XfIH)lW~EDe@O z?4thmacUO{&C&FbXfo>aunRfJVF2e%g;|>6LGdzbPBgCbniE&8WP5Vs)6=}pgYh18 z577@=*{NzgkUy7rSd`}Fp75BCQ3e66tp`Sp*SWOfwVH)dbFtSrkFPxC`J}vvH(6l4 zw}WRynYW)&x^wBQeCs!>y=;FUYI}2*_W|0=o@x4HZ}mqzPI+{^fXRhNHJAi&^9p$h z?z1ksTQ~VN(YXK{$@WmdW+X&~e;{!J0dCa~TNBPJCjcGc&u=hbP^5lmGiHcvD~mN+ z&MZRng@V>unm&T27{z$saj8yR7R6T*(AW2HnY_dU#RA#e;au>8`XS$(6I`yp|ER5X z^<%5JN+4}2&*;yhBk#LEZ5Ahap#E6&MUP8NL@X*Jxzm{Sej_5Td1?Z(-vs2URIcRM zSrd}0kX%iWs|jZPBqK6O?yKa!O0KHqs#>n<sw;obB#y~k7R?Zo-6P4 z4tKR&=^gGGxeChLcJs0_qb`e@KtIs@xzGtPB`V+_IEVO?b7^6Wg3~QJ98vU# zA9^vRd=`LJJ{O7dNs=g^=jrA1QkTz*tn#({h|0Yd6t46(HuvBiM8xkNRRCjQfzeio zEPp}Ih(cHAcRLv=n&T)^~kwHe>NSHIc7w;V?_8Ur4Qt9jTI7sAG9 z*zO+HOOSisTOe!sw^;x2%p(eZ>m-VeC^s3z@|brp9w`w0pWDR`+L~=0NAN{ku?c5( z_~(K^I5&un8qqdadMbL%J<<5ged=X2Z&uyB-{pk+@byePh=kO2V3o8_YuQYl=s&fK zBWmnuwe}ryf!V)y@5&06aJ}dD8Rt!md(Jbf%R6T(vq?1wi){mx8+?nBwbIkr%!8iT z%?Di_pR^i5_>39nmN&zAoFoKZPsy5FNM+Ybl4_583&x_DvCVvkaHr<+tay;Mdq@Ac zIx^5s*t=|RGq{0oJ<^=HuYX*G8*|z|c#Sv;m|BSGr0q1JeI!B9`o|rT_t~)(VtoY% z&Sf6g)1NiEdAH9#m;Rh9{b^G8qTqa==ugK;>C1r@GLW(F3DFAk(=^zU9yiJC=FvLW z#%JC}$iUzqm`rNNU;Bov`9oz|BFdVF7x{aNC8IqJs`6!l8x%m>$7}r&&g@1V(UQD9 zu8H6fqs}KLessww799*nh$3t<_BNtBssmq?ozjXi()Y*2Nyl0-djHopX=(m`{)x+? z)mv844!j8Qo%cMT$i9~ z#Ck%eFJuO+2!29yY0q#3RfGTg4{3d=v&UQT|G?14@9+Eaj$g~r#_#?G$?^Lsr8%fZ z|H}T+Xa-|%vmt)c+7Qn;tT&LLvmyE{0?O>Zik&Tkf_nFmPFpGz{31{NA`ik3IG36n zvT3KI#A_o_2DN*v(5}Dbg-*)yoF!y`01`^Gb)>3%?K7-8ht$4#>Frxs=!fr^qlurA zbh(;X%8P-TDC5^;mdD;rj-N0H0fFrH&7)Ihr{GV#HmVbZwHVv?k62eA_T~xtB-!Cc z|B|6Bt=!F{l5cH_Mw%D-BoOh-XPA%IH>uI$|7tYE2Gy3w9z(-hlN?g8J*yg?Ctnlt zwtrbrJ7-7!ygxfsrQ`hdr3&a%(&FwMfa?kL%^lTAfxRxD1&_~*N zn`w?;qANT2p=$v64y5CU<6g`Q-}emy-(GlzxXyeQIiTHpr~X|-um4VR=fO|E9$Nj) zsr3`r(Sr@~;hy4sS9tv5=d#SIz}^9^^?x|4eLDD=V9-V79CgN(!u&*&Kd5=2*o6|P z`_x4R3*T8;YMM#p}^>s2NqYHykrK8-<>{IoslXMQky@4_lgUbbgoyu=G6TB|e-QYZjXDke8(T|n8 z*)4=vmQzK`YTB>Ri`OkBpB{RPbG1WfI*>7jJG$Mh{ zy5N@T@w$xE0j52Ndz}?p+#@sMf)FBpS#b}PoZNVmH(RO$1=12{w?$vDRQ-H7`Ge#i zpOW7a%*iPi&ieNQNgWBZ#v400HTozMbaKU^@awHhTNdtNL2svcq-iXNCB_P{u}Nsa%)-4b^oPvl-2Wcww(Av8-=y|)*fUqn>dOylv8cu zDE3$+G2cMGj>XqSeBBy96mmTg$FB2*54A2UI!}0e2s{{VkKesXI>FhfP>wE_cv()q zOyLFtFSPqC*wd^=DYDjI(aqKzuMdTHEi1Nw5|eRvH_h=b3c<%XN6=fXC&bwx6%L&_ z9F#r^zmY~C>GdG{R=WSiwfDa(J_Q-c_u+r>KuQhy%D+#_-|)W5zdyBnA^t>v-EY%{ z!ifu{Q-lwvrq9!!Pbr6f9e#h)+9ULUm%ZATLJzn;TuLDJJ1=Albp&(J12UD~@J-Zz zHLOF@M9pa*cKuWi8@}VmFa+C@E8l{^wDZB~n#w{a4F1|qbuQ|i8E1t3SuA>ce%{Qv zC_Ld^CAW$0HcP_v6&P1~SP33(h%^-SXuAa~>UI1QU$}dD8*l8j$T}pjbREJ1KUsY7 zW)2KH)Gesd!EV1GJ{`gC4psJ_+MjQE{K|-EAC0lzj*s=s6_w)#>vmMzM!|!!1GMGf z&jWs(#~1rhXz^6;W<^J2<6MkGrH-U%Cz^4&L$-%=6iXdXK z$e1mNIFyZuLxPA~1QC~OM7-oFrg?VgYK%86-S2BKUX0+_<8jo^(Dj_|`IXE=L7O*x zsKZYbD4rPQ&=1d1b_u%JcTdubQBqvd-_K6C|ua#F-G;djmu%0!2qC9tFEW7wVskSCkmlN zOepfs2+fujW75@Xl(Uvow!6gnX5jgs-PAPhqniIG^UVJ!lmb7j`NysLfb$>J^B?T| zOwgYHVD9-}!1kf%Kj_Rq2@~^w4{xpcr#$9AyS&u-UzDe;^!bO^IL!H{ues)5yhIK# z|JM1b>y&K%p|6qnM5}HbgUs|WeU-Bmham#bc1$mM2-h_dpu5qBEKE@AFIyR)rh}_) z7=u)&-A#0I)7{JqhimmMppsqk3U9Mu-rM93d_D6Y1g6bY<&vPdGgX87X0z=ob^6Yf zBU4UzrHg^s!8&0XV>aGCXJNoXSTLAu!Z8Hina!F`A}sA3L?REg2*N5)MOeL>ax52w zHCGVUgvW$(?AoD~N%x3u)HSGa`PIG`>9kw(uZzqZy?sIa`^d`WcyqMx7?$5P;U~=N zy&YfHr1n zy+ZophUoHSL+S*nTR3=ulo%GZ0hd}X77Y@P4%Yp3roZYlfezWM ztL6mS+pJ%be`z#JIfzH+dQUgjNfjXNveM?rYp!_i@<$qB!6zk%T zBe9f!k}1V^oFE0V6`1dZZ}6DQJSA&q0(*UDTW`mtRQl8_Qbw{)zg^`ql-=2;2Oy$; zxSeiJL$U<_m80jfVthRr+5~t$BQ#eZ%Vszs31W}U&Qd4ZJ}~@_{|MpNMcYw^PJ!RW z&s*?|d?N*Zxyy!MPPfB>UtNZV-+TAwgkKUQ;kU(3lN)}i`u)Oh@b;QuXML~}wPYK9 zgSp_BhZ*n-9tVD*t%2X5OMUTW8-Bsc8h(Q|{043K4GR1QHT;si(@K8(tRRQ*&eos< zzd>~pZv=iRANWm_-z*t`Uy8TjH)z3cP~exHCO7;BDI;0wW}+^W)04`LH_MUct}pF=7XgesGG})O#lv*?*>?O+ zbeEd0@UC{hroSd%=f!#a*zm57e^QjssDi1aquKk~40K{_D^cgPyPbHRREGjN^r+YY z`cb>{sS#|U;s?$Txp?9^^c$83v}DjIf%D4283rHWGl$_q7wNbT4NBg1|c9i{_16t=^=^M ztK+d#qSb<>g2oAnL6|OsFw5f@*`I_U3tp2L*(ZXrq&UE{1|eexhF1UGXMI%l*E7x9 zEwg4Gs$<3KYO73=;NWeB7wh-#B;$RK9l!mLIq4aRznLTcL37Ud2T%PUOj{lQfUQjj zg-DHm@G)~5|y z$d99OP%lgq2@&@us|2!Eh=!jRbi$48_ypF4>%*MC50!kgd(Ad^#!kqw5eAt3gypmC8OO)fX%dy8irTtfWa1<|_hI!cT!Kw7XtRv8fd1(1e z)SaNx>ipMTO8d{#-O;KLFD80XBj?KVI?j?Fu*{IQ?o?$?@+FE)$(9UmX5e;01J05zAQYj`xH zo)hVB9@F5()J!m+ctjp+86fv%ZTd>QEqN1MpMZ$V@t$V7@lApWSaebGBHSF`fc=oT z0P*7jWD;_B4!mW8F;UBLB;&2~@|Gvu`O5;)CJirYV zt8%H`2tLeXjIWD60D905!Zo1#I(idhc<<4yj*KdF(Mv&S;;%K;8O)t~}imM`Jcw86wW6j6nD> ze%z*uYaSMk0ITyAXow=Idvd3gsiXcu(6oUZDM9cP`62S~OB;@^AGRuph<@Jg*xK4= z>;G{US-X4LB>IBf0cz2rmqx>Cm?Z>oozP3&33_R=D7SQxW4TQ)>HSq_B)(v!Gz|NS z{jpceVy_X&HJ5#b8c#T7P}rU<*^Mj_%?!i?mC##v|4PF*DjME`p4w7bg*~-p)=x

}AaL#n*ay*Z9&V^bV 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�>yfq+ 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 + + + Debug + x86 + 8.0.30703 + 2.0 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84} + Exe + Properties + ViconMarkerBroadcaster + ViconMarkerBroadcaster + v4.0 + Client + 512 + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + False + .\ViconDataStreamSDK_DotNET.dll + + + + + + + + + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4} + Core + + + + + + + + \ No newline at end of file diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.sln b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.sln new file mode 100644 index 00000000..9d280113 --- /dev/null +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.sln @@ -0,0 +1,42 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ViconMarkerBroadcaster", "ViconMarkerBroadcaster.csproj", "{EB34323F-7ADB-45D9-97B5-BAFD12B78F84}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "..\..\..\..\..\DEASL\Core\Core.csproj", "{DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|Any CPU.ActiveCfg = Debug|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|Mixed Platforms.Build.0 = Debug|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|x86.ActiveCfg = Debug|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|x86.Build.0 = Debug|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|Any CPU.ActiveCfg = Release|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|Mixed Platforms.ActiveCfg = Release|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|Mixed Platforms.Build.0 = Release|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|x86.ActiveCfg = Release|x86 + {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|x86.Build.0 = Release|x86 + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|x86.ActiveCfg = Debug|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|Any CPU.Build.0 = Release|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|x86.ActiveCfg = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.suo b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.suo new file mode 100644 index 0000000000000000000000000000000000000000..78a9cf032aa56bf5019e8c00c35f23eb07f86cd5 GIT binary patch literal 35328 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 literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/app.config b/src/RegionEditorFiles/ViconMarkerBroadcaster/app.config new file mode 100644 index 00000000..108d3a0e --- /dev/null +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/app.config @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..da07d4ec0fb41b5b1f781f5111ec27234ac4d443 GIT binary patch literal 273920 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±9YP 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 literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.pdb b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.pdb new file mode 100644 index 0000000000000000000000000000000000000000..0aac7e19af101cd7dcafeeed905c98e0057f19b9 GIT binary patch literal 837120 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 z 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

^kHejm^Bv-j<6Q0KzD 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�|E}~iBJT{unWB(}k ziNLX>0z>wsalffJZ$?6AIe zbas4Yv=iuvJAYU$=R2kjB|4@AaUD~#GS;QFvCb(*z6+vcxxrC#D~3bMkbRJDkzL40 zd5tGepe1O+e@B}%sUL@XG~2gmQZ|+wxS|zu3>2gFNE2|q$0;5ZZsi?WvFa*TBbjL2 z=MGHI07T^Y?w}~sq~2f~p{{hw&Oug*126Pic=<5R%>@y^mStG-nHXzcn4iAP(<9C( zp5NF3=Op9Sknjr2&TNcT)vn6zUGBQeDK#J?jm8$S(T1!$N{fBWl`6ze*&Su~PS||| zt9}o~76bv^pDy zoeK5Z-X+d6)L`@seY?T#Qjl^MIH*c5l9YOA!60_6v8Ae~<&>*y2e8;tcv zi%Onct_RQ?xhb#}t%<-ckfjg;5loX;$_i(7Iz1z95n3>v1unGAAm~)bR6RvJp(|j@ zxE4N)rxRNz>K=aHK)a4>imU@3USz8d!SCfm#1B)R^Hi+mqz!69f@9)9mbFcZXBovv zm?3XqQ>=Pnv6madOM2aC&aFAEq6Krsg;#1&HI_EPY9cuU2_0=C^(+W|#HfiK1itqf z0*z;ycYzH%)>CMP>M;7N_-#ozK4J528S_XJ1~V+RFm7%VzgAf{+xY#ck=TgC|6N4J4`7%OnPa?Ud;T^7*FhK!&f)K1P|#=4E;&=P~}>%7znc$X{aKWpbG)};;7%$9sBBs89VU|ZWL z$$qjYoC63X#DGH$kx$i82Wujq!q3hPD9r94hk3fx29FAI-7`fzSwpvU))b`=#yAqb zh%=;elzp6Y!E|lgNiFl-WWZxNQwqf<%5ny_q@U>N)8u}*s}4_v^);k$h6zcGt)G}G zGHN6)d$dOKUYU)D-arVy0wQBtGUnWM`7TI3USeq}hg%-6%%>*1aCO&jjxEUhoU7Y$ zf1htt+9M`&Y~-oze;MUFd7kPFIEgKNmeGDJ#N#TUCbDIL<->g4>noTWfF%3mX5mmy z@a&QJ4-ABj{M{*S0UfZ zz>ES)1=4(_gq*739F*tND1$o?kc;$P5Srx(R}fx~^enbc%5C7+WL+-Y43E|l>ql#Y z{D8lc#*q>lw-Cn-@`4KQOL_{sL5$m1^fao4!0r2^J@lqa_R_rU zd*O63YSmk4r@d~@FeMunKxLK-<`c#|@d?B#4_2AZ`Ii*jcgK2Yf$ShgwE>3-%+p@K zgG;P`CmmNjNZ&HgSI~~)T-+WY?yJq9*lmX5bBEE7O-bJs7vrfM75TIFO8GHwJCr4I!M_Eqm>pp6A*cczH$h^6u_w7jB{Psty z?<4T@SC3vZDT*|3B>wvmAmHjf6rx*4@2BVJoi%eYocxpa9B!nMdF(QOmwX+eRETRK zUCIqm`=K5TEutKjbhx7ULweiAe=0?k2gQ4)dbri|9%qhDyf$O=m=CO-bxrlq3^br8 zr~!7P5pzZBI+%vyV-M>5n3kMCPssPI9q=;et5d&J$wVkARdXhYQ=}(q|7?Yv*{u9% z<;fu(FVvp9md=3xHDu-!kB1s@NiagBch5OvUUItkHu~c|I$8^3R7z7`GmaVnr4Pq} z-)K)iXV`$GSuQsraR% zA%|Q=Yt$LoD*Q_4*uOfUq!_CDii02_tNIFMKlV}>^999$&~`Wr8R__i_q&{tk$sfD zBwl(@--$5?j%2Z0&pc&@)`Ra`NF|3uDzW!FAFY9K;uNe-G;-2uB2pj|@ZR`&&ioXV zke>!(sS-(5j&8g-NvcB7-Oc5MK5H72ni5+dt=~EchXLlWX-Mq-mygyQ=hI==(ZE8E zN}z;(64Ig@a5vBq%rt(pIX;W_sn?HTWNc;3TrroZefQ6zE^;R4n-BSn84QWVJm>f}ITuMO z94#SZZSw&V-vsi2d*Qyv!{q3ZG_=Zt>-Y#-S?TcFJpb}izKb^UfIj(Jj-=5&Pp=|n zG<6vDVbQ9h{W^^|ZV9v$XrAanL>fHhv3#Qd_aaa>>RsgK z6nI07%4fqQo>j9ePS_o)$6TDLI>m}?&AFNxrisa3aCA;(>N=f!KgZ7C*YxmITJIEv z9J&XNt_~5Kh=HMx*ip2zS>pru+*-w6h?$9z1$6cxj5bd?%vQjL^_s_Dm4VWSLeI_` zMnVhKe5|WC=;cY|R=(-iuiC}8n_kt6=@n+*R^fxdwfLx;Xv3bU9l(iHRl!Z2PQW&D z(w|2Qgu19&t%R3br=o7hdN?r~=CpYpxoBTI3S}wU%jyvY#Xe0#_z=~D;gCtfI~ zhk4`P;r7<)m$CI;p`>D)ZmgbP9_+{aar84WK-l4KP=w8M#CJcsIG5urkf|Wwg=MtU zL{72@?UlnWVu{0~u)MiaM&1xh&cdg!nhzm!$k+ymjm&codPWg&@;E{qAU-M+ahOiJ zAZ75Md7e_taes385K5tB;kr-Au83K##se&_3vsrmUZe+HR zynCDhw&iS9(B_5CIO-j$ExOs^ECv>5&ljkGZ9O^`ggH^(~m* zFB;T#CfPdOFRqdF^f5xmUWlzBW&x}b8*_|_?-??Fc-}W`0oP# znJc#dAKGTb@;L5LdT|a^(@~BSKzfe6nH0jABBV60v!19p(qpJ2P`DLL1^LOPDbZP` zgwj^$z5S!q*Gca|&HWA!%q6#K+o_e2Ytfsx1z6C(6wbX_QVoP7WV*^lg-ED*a27-R z(4{#T5EDsxs@sQjWIjeb#fC=6d}Wr zsHVxXoB{SNg43C*#IdJ@MO>P3X1ULc=dB1OGsHeI({5xk9{gH92f0m2*vs8UpzT`IU~M<}vPNmh9wPsvSL;^O+Y(iKME~Wv+($0r|ILQM)Zj-aw6;n8FrGzpsb|^5f<;T77%J z%I>vKtqzVvM|UZQU$EPflua|P8!J4B5v$2_77f!}X-5?TeO&||!A`c$FI+^4FC}~L z;9yT2L#OE1MGp#fw@@1P)Lg2fZaQz2wRpzla}x=;p@q}IDPo?H-J^ z8)s6v2Z_D+3x64%=Bzu#P7QftH8HIrn63=ZsZzm^TFR20;n6+68yu;U;@hhw56a&u zBCw@l@rJM`HFYU+oPbfY)GI&)rsEX^dMEl2uT=>T#fl50I!Y;?3Y=J~YJa69RAl-T;w=CZwh$93HdC^kjhdQlx6Io2GTHRgxk^(PJHf%hqrD3?tsswavNzoVXKmjYQwkvrY3eUJkeSTGe6vjuzleD6_{7+B7=i^y=yQ!BAsf>Kl|}WZYx$6`zM?Y(^+!$s%|f0gY7aUm^|HskA> zYKp09r5*-llI9Xe6UTwL2ynd(JreM$zZ^o%&EGj0ryIF9-@1s#a<|d2B*#N&wsWKc z)B;rySg(gz;$=tKP6#=bB|fT<=5Ge=m=_P?2kio>ldcTb!rXrAg&3cuz~xN1zL4kY zs7U?MY7|!G4#b<6<9-j0+G7F%p!X_ury7S1ou;-q*$#Q0RSNrOUeY}%TqLKg zb9KdcS{}Fu^vWzC6P|4%1lrGObhCZU^Km?Kc;+C;xg};pep^anOz8X7zLKIT>nKm# zX&c%Geq55X;v}7FIl5jJ$9qRvAw?<2VOjKIB<^<7eGX?)GbO0GdKB5r5j;RHFREtQ zT{{ZZ)$Ve{=`!@R>i$hth^aG;o9iMqNH^+v?Q~Uj!)%Wefd}-VDbXr9YpYxiCaTrxQ85^geP+Kx56)z9TA)aE-F$j-P&aR<{l&C7v z6&pf~HrTqTlD-`#-Fb-PNbI}T#!)-nPGj8IyYQJexuYla-f{lDHhdJ9;aQC3!R{;V z$!YAkgCS<2*v`|4XVk7Sdo@ZzH;Q&hDE2rl!|!Wy+L=Ge=N-I+N;^L`6YX3!ToaF< zHq}0~Zvny&rGhiKldA>uDZqj`iPOpn<5p38jogjEoMAu0{RJWI){#c&5i4ZJ%+pnT zs{^{-UL{qUo)Z_MI#S2U%oU}( zIgH8e!6cO{k0l^+@_40J9Sy+M>~V+W+nAAU;nkk!d5Y|m zQMwMJd!XE|UNds=m_ZRpb#5ky=bSlfW1gClvAJ1OyO6LC@|fNazP!0~@!jdK{__u- z`}eP0GMV3b`-``p82{eiN}FUNKbRlPm>zv&Uu+`Tmr1?*Hxee5Oc;}T+~9$KCWSAP z>f_@)AB;@hoW|o(gnIf$GU)Lk2F+u`8Ov#|mM9!oWBN_RxCzHt}`;t9<`Df4< zyhnOdeIp|oL<}bT`jdUVJ*Q0)|FYBs0tdPeY_HN9++t@W9nUi_h@9{lS=)ySPd*Hi!NL)7>o{t(~aYm)u_z36`~ z*_T5mK&B^=%VrUCBH5Qk%n7!b129a!gzlD7rx9S>@W~Hb_A~wHzXXU{+3Y}}H(z1R09C3F>3HmY7X$sY zEwT4~TVn6~#H*7`|9+}(XzyQSS<~L{=J(#q%pKFY|GNj{+VElNe2mCC(=gW&l5fkv-y=M~!H0ytjWhx%EiXclS>Kb_K4Hu17ahVI_~SsUbe{e4sW|m*4v!19T!lh(BQMfCCU8gt+&o zfGVea1iVtm_yLDCl1UA)0+jtDKE8*?{s}%FMlN8>9}#Hs!O@~GGwh`>u%Xvk!_ey> z{nttQuj?=#C2#u@llVm8XEgp94s8F^{J<+iE|N>;0Qi&y`Vo;IWQ_349B3k(G>0zF$|5T5^D%0`RL&T z=TS^5$Hzl_Jj_RO9ghMZC;3QV&jUmT9;o1Q>J?VC#|Qqy|KMFIQ^4a4<37#@bOV!m zjE@`Fds29$GkA=S;*m(=(bvaE8js#yKKdZxIQt0*t|Tc0aKbBXdW3`+sbm6@#|JXx zdNL@1{=AYJWIH)Lh{id=pIjz`LCXY=>I9C0u_Ory6uFk{ODFpV1g4`2NcjZFIY9)% zOy7`FH<<5+1Ip!OyE`p~x|#Rz6(Rm-e0_p0PxrAXU<4OmP03=AQ2V?-9H zZ{t~rVN#v)z=xqb^yRk%XQ&$t?cd|$%bN2YY3s{)0%PP^)ONp2d?`x1U&fQEd=`Nb zXkaflK+(*A@cN9`_DnZF4 zBuNrLyqDkq*?#ClNF3V#WrR@lz5KpPl6}jI-cT5ZXNBdu66gr5q z5)^$aO&Is{F@O$b(12!sms0oyDQ;haSu!gmzpE7>?%`~9(4{9I&OXczXL8!NcO)Z( zAO^bs?!(k>()ibpe*+-rY$i*UD#7uf0GmQ6V=$~c2ms#zh-`1)2tF`N_X$Mu;{C7l z@tb|8QE^e26-a+qV9tPr`7d)KzekX3%Vw!yu=CKPkoD&|sThrv;|I|D=e41C5E51)n%x#T z%~sTf?~tQqSzC%P&>?0JJmwGB3ouwfzJkKws(bI6XFz;=#!%k&CGo)b&FaJ$Sp%f5 z`FH?{dd1|;feJp{-E+3zn48T{AVw}{qJ}G=D)r5_FU@L zZ?CO?Y-YXuZ_??W{Kqrk!*~zl&Dr>qeopD$w}$q9KM5r~oyerpP^7_+dhnM?gKzRL zInsksLJmEZ{`d&A>Jf(ZkJO#vKmI+M9+GeU;^@|WqufB1u5kFMg)io>qqD=j%PnMcwOF;V|U zh6)Tkk$#jfF-!b-7}c9*ed#oqFGiM253ozp2Hv(91htf8e)|XTiGUv3?*$ZLO{9DJ z`-L-qK$y=b^RMvz8s6Z#`D^)czHaENnE%XU>A{g4_)Wf)FF}3hBZL2iREG9HhU&=~ zdcaH}0|?0^QmG$iXl~?dJ^c?u^B8%`JOyP8`3xvwWN80n28ny$LKyi^U`j`N@(WbM zda|e@zdw|}l7E)-lFPt+NCTOnN`kF}vEw6OKb0^~EwpNd5`G00_rkC8236dnh>I-? zxH58=*GHSabPsZ7SsKC%wnWAxhhAqLQrGK4uMects56_*Uq%jCE5tF3g5ddz0a!-* zApkJM{uFFQ!Vj=VD8EDv8Mep%6?73^^*UT(7*hfu*)EmJ_lo2RNqI_gGdM5gj0!0 z17U7pdUED&(*hJB--BGa;q*hO4f-uopll(5xrS=n4-fS9v+6xAqKaJw@ zN9<)J2@EP5xe{u%>V>l|ecg7ygng0)t@aD-UPVy}}$bPo^IO!*hRRVE%6? zO?nKYY(*SUW@MP?JPZwe=qpgphraUhtm|5D=JE6+@w#lSpzCCQUf7=SJNX8~lQ%dX zC+zjXESTaKVFuv;!E_4TXdl8K`pG*4KU6pX< z13?9TsNxE=hnY}*Njij%*#o_jZXu2+UxPjN1Tn+@v`|IvPWC8yI$=%)$+&rzmqs_- zum1UrjvD07Wc?YYNn9Z;bQZBl$3}U}Y%%(ktazS?R`jyjgR1&e!hDh)6WX)C7O4c& z+3d-L8D?I+ZdYrJH|pp<=zZ1Q`s>H|2}?y){AyAIw_bP2;(G70@OIrU*&JBg0kMwX z-M}v^`6eTl5JIC%g`)}cDGpJ7=gfkG7yY`yc2s;OVNMH7!itOd6`o!EtQv&Cf+ z`LT9rN7wy!>5eet&w+!0*WUs6&+p%t=T8SBqY(@fq?;T7arHx4NcZ81w+r;s*j8eK zKn0r_di|kve|~>kmkocBeL|9kUeDUEUOlr^M8zK0U# zM2SD<=6;INNa0;e%Szer2#D^(-I$>m+`m5nMhjCQKZu72&*70Ybof1(Rv_2?`TVEp zfCQ`D|1MPUeCe;HA4$Rr#a};Ebm6f8O)ir~UqS7|&<6w@G!D=;aAlNC6%xZ#p`bO9 z+w2z^yA78DGE0!G+UgpaY#MGwG>O_FPqQw}I)=$|bL3rv`Muvnk8=RsAQYTISWn-D zT*hE%a%90p;V>6<5YJq?Pt##cARo9@BLBka^ds3Uj7l}j@OoDg@y=hN0rV_YH2xFd ze>eNd^wX$zU|=8%%_f;0$U+uCSO^p{{iqpc5ymAJ<6!>e(EcwF@OPjOStwj_+=xO^ zetx1uDjEY_kv-Ud7j;7{^+4H>7vA8XSOUNt!FWRoy+07l^aim_u;*VH+W%GH5+q74 z|0b~x;|7e9G6&oA^8qH*7qi(MOo2Y2JQQjuHBk2O&Vsv(_C`SpAp-G(yg6!)nI5f* z*)eg*n@0ALVg3gsLnDu;QMH>`&L-yr!0Uyehiinkm>EczzR|OnUpR}CbLSK0O!P}} zh4Z7M_}zrj(MyF&{f%1T`pzBvqSDT%3!iOnGzvFsb^P$1F^?w9L*=O|eo+8F-mzLc z+rTgGm=g(;#_z7xcze8g82714I=IqIeOV(;=?8yb(in2oi2{E03Nvu35Zv`%*sL#W z7IMI#lEPYZr*L+*G+&tBfg;13+6(8;;+B$3g03h0L82wheDbkZcb2win~mshbo?Me z^KL6)zWawXO!e>287{c5`1=PzKA(c0cHSv&ZdPzryxD54;HLcA+0{+lJ%GOtpEZS7 zBy{{ZhQKidjv;Uifnx|9L*N(!|9?Or!PQ`cCBMD+ctzX99?Z^o=DUV}uYE6R_ENso zUTPd4w{X^H5zi9t8K~l()j6E9!Ou?PIgK#?{zK}2{yA3`77%_f(JODRdcG{FSc|~h zYkL}5#4CYXxf635yP~+iS9iBHCBrjPY96WF6V^hyKLepP{Oi>B;G#^RPuyk3J!|V- zYWiKtGm3HRf8*H61{mPxi>FXFz8ebriE$eqcbjqNRt=#ka|+M){a|i~W&A|5F|Ppf zu1@{Uh~PvL>Mo37MU#oUxI!UF0d{J7go_p9?)U(TaNLco~IW*}%UzBiNUqsVy~H+r0vf8%&^BNy<* z45J)pD?F{__MII(PCxdr-)FH~ktZ97m}gNh_v7k)J)9k$QXvF*$e%FkjN^znw`17H zsG&<3Wd&t;D@XymqIa+-k#+Jk75D#r7WHnR_XW8*gSf}Nz{dP+Tl#)SAnIK3kHH36t`zb?;e=sAPK%AG|^4$oM}@!v57jv;Uifnx|9L*N(!#}GJ% zz%c}lAh literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.OpenGl.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.OpenGl.dll new file mode 100644 index 0000000000000000000000000000000000000000..62b79fc5c9a406d022e1307eba0cc300e8e1100a GIT binary patch literal 933888 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⪻5Av&s`^y?+cLW4Sjwr=<{a#oB5dO9ckyM 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

    }AaL#n*ay*Z9&V^bV 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�>yfq+ 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 literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe.config b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe.config new file mode 100644 index 00000000..108d3a0e --- /dev/null +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe.config @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.pdb b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.pdb new file mode 100644 index 0000000000000000000000000000000000000000..11767b6dc35881514e3dafc8a1908b2da74f33c7 GIT binary patch literal 13824 zcmeI2dvH`&9mh`|6hcUF!<*8~LZK~>ZW83xh`h21(rzHI;UT1kCAon$o87Rxyo$89 zR9lPF7PVSIJJN^Lj*fMdsgBAFj>uTY8OLJP=^vf3j@3FNp$=nl+5tb`d+#O}q*#;! z6ZVkbe(w35-+A2g_?>&tr7_-?PGwRZ*z=2R(4$-LId`hwHZoMi;C02z)9Ln@GgNIqPd9=KfN|H3Upeo%Y%i<8&Aa`uJNo}QsD&)1%i4_CJbZhXDEz@`a*ylG8Y<3E2@pz*tuP=GPh!iW-u21N5iW$!=s z#_}~>E3F<;nuX-Uwb27-dd~D{Z1$)*YinB~&5_1bQ%fe@){=;CXsKHrZS_>E;%%v9 zV=Ucir5B}BvG%rDCTpczTun5awqjkOwu~|N)V3tDiLO+4Zy{~lGOeC!s|x9I3fbT* z#MNYa3(@YQ*`lDy23AIQ;1;?}W#4tE zE|o}FZP|D#nF%enl2$t2#(Q3`Z732?ZYKLVx@K#8R=SZsyXH+enf7>cBl>cmeyNo` z$BuX?nriE`vYB)A;dpFgGL^~3aZ_WJKU}{s8libCL7tI&sFtY6AKRqyt~NG2!}#g)1Y?tqm*cmn%&+ z>a)Hw`fQq(t)LdS9&c@V^%#?lcUh?|*)AL{_Ye$d$oyq=r_xTpsf`*Vf7+Jr_E^?x zNL!oTyaUclZ?_V$9h9tcHR%4lnQgIb+a@=k-p~DMj#EcBl6-o8@TaA%jB~H@D}FuO zKsKF9)Ft9pQVmvnbxz>7X}2=jh3)NW)RbKmm;n!Q!@Dqg0^!fer*}$!zK(RP%UWS& zwj{Dny3QQ@>E14;E_Ciy=Mnz&E-RCXZM2*^zsUf6mpUK7W;@raQ}?O!3xA%tqb~}K z!}i-qg7_|R4fza9Jj$A7ov zCzDDFfBdaO>oGHpCTym|VhYe4P#u~_>R;vm2aIU&2?hMit>F~$1)hGqF*e!F%~1V& z3sjpXL!IkPgJap*&q!7=8}& zv|&F5soQ=U%Kll8-++tJAA}!+&%q_|MHqpH;WBs>Ho=$Sa`+llIj_SN#Qy}N@C0mz zr{GHXHe3bYg==9s9j|;9a2@eskiM`hA$?&_gr9(uVH>Q4vY!XriO+`?yc2f7m2e|m z2U)`QdPv{doe+O+ry+f4-v{YCdk@UQFF=*6wYHV`S0MA#J_wnQ_91u=JPu{|dq|(# ze}MG4eah3HhP#OW3o-_FaiKAcfjt!3{Edb8!yw!ZC&5p{Deys916BS^_z>|~@Uw6s zd>A&sN8k!5yH)T};;Z3fa0A>6KM6k%JK^I{>-kG?CsaPI*Dn*l7d` zzY1T0UxR;zPr^5$%IWd=HdJ}bUiwHghE+2HucI)66|L(r%)l{b zb+2A&Do=Hlu`0_riRRov~yc-oR7Qvc{>c^*ovHXl+Wx^tD~@^5Yi@ zxn~1)!XWIlS6^rQb-y2f-5~EW<|RZ=&Kh%IzJu7v8e{;%D~fXvSOS$tb7n(=LpD>z zw}PsUc*4q5U9O{lb|Pn@)j|dBK+@&@BZ+iszyxHVBKh#Y_P_`-jz)6hztdab{_($! z^a%az{|2o2pu8HE;fUsihDXDp`B94KnNeqJ<;YM(?-;|73dDJ+fcbEBdqC@bTS<-c z-G?#UGuWiIma_P|X;u)KhBP6$pwk2Qt@p%{oX+(aeZC_Xchd)%Q<^M0FZRNSUf6r|KEk-EZPMjFry&|EoA~m#J#`@VUsv{C_)> z!|(fZlli@<{UW!oXnz=mXny6k@Aujpv?pjU$?XyOt)0&JfP?GHKj2F8#b2{M@Nch3 BFKPe) literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe new file mode 100644 index 0000000000000000000000000000000000000000..bb84a51ac4f20534146c09f2fd9c928d15a903b2 GIT binary patch literal 11600 zcmeG?2~<)?tG75|5OPOMcC{DsnWb(K|p-9Gz zCYX{WA(Jm;dIfQqiJ};SrLL}G(n&hl8zFy;j>apOj_;bS1<^27Oc^0Hz(7W(Czb%1 z@VUW90w!d%4!)s8@lWO`4L-o%@Fz33`3PxI|9bMyD%lrO3DBh`b_0^65V}%-gn|b^ zWm*RtcF<41tL^XP%x>1H-pWw-?KO@iBWB8={z?S^v{7pXzI!Jo%+8WXB|Jbhzz%$;+6FHiiU_~N3I z3EN^9UtHuj{7z%|8vGH<%)(m1Ea7^jMXH#Y>ya2$DiaMPF|c+I&NvSYVbqF9*~#r#ILj8dWjm251tb7C6J%*T7omHQ z|3QZ`M<(G55b{zd>0OBcT-q z$5D_+!Bh&aq+kUFn<&Vjy~Gre83lc5nD5M>aGT=)?fZgOM>nV`Kqv zI0bDf=!~2J||60WgZ0+&DGHhBHk2136`;HfS!lVrq~L;Qp?LLw4#2#K5zlOj)1BCy1d77#r{JpDO<77O@Xp{xhn!4xZ$h!p@= zFfDSIN{Pg1K}r~3)_Zst+KZ6#Bz!U1wTDViV=OmGAajRFq+hp^({qI>UpIiLVv=~h zxay+kDH5kh_;K;yXzG;G*Tj7I0^&~_{e-b1Ng|izo-6pOSGO>vq9h3^M-Ep;2n2i? z;VA;Ob9u6_h6EBx&>#pUI*0gkg>gyTxL$JaT8kGU;HGf+ao-Tzcp`=5x@Rq2jC5KA zDL81CbnCa%R49SU_|be|v6omoM|<(PaYE7-c~ay>L?^|?aX&MN4jh;n*m;M|z$BDt zLV?wpRH>I1yLLe*EkY6~5>Aj35>FW2!};IZ6RZg`l4U+2WpPr3Jg{aVFJ1yBKdala z!{Q|bH-_8;-f}`H`;N<(`ErFZ0s_H?nELq^^AiFst^h{IAPxchk}HJW2r40D)L?1| zN5+-NKyKu|BH5O9=>_$oO%{WM1RNkt$|LX>+U#yGW4SL{W#Dq<^-?pWTs_=s z+sMi))7<${{lWc@(;pS&e4xt(nf|K_4fiC?yA3+_%vvY*l!4@4iv}=BM|c$3*(8Ejv=a+B_=Ss*JEQXuIqpixQ3a_4(W> zyEKm#xtQrM)b=Fwn2Ghv>;fV#EMt&fQn_Nx)Omd`sf+@qw7IY%8d=~wU}z94&^xT# z?O1hMy$gBFV<=2Rx4X%UFBOAX2ZDn_3e*V(5c0klQtL7p%59=S80yz;986D8eMaINL%0wc8G%|*e$MEHmK74Q% z!Aa2qJ`Z*(ODar2$dFuS7_I+z60R6Fg7-`wLHR_mTT!wUQ^u&61Y`_zfv7uESG-PI zL=b$z5K9F^02Rvd;_$Xby>8#V-GB3vXN;}hekVw2b}%EC!sUQGG$K1h+L_tfM2e!P zOCtHUjw8EKEOAUULMMT4SGq-(nO(Kd^R74+p{XEA@0kR39#JP2L9k*3WE=-K98<(} zqe}k)-;w}E#jg-2r+wZ^?F0lS_7$G&N8TMKx*>Foia|&WS+)ZhjyMosg(Ghi3MD_V zlt8Ha0ra7)2BA8})Ao*tk&JOg@{U+nBp*Xj>4k4odB9b z6pKVuFB2+W3WHWIV5QK`MKb6of?7waV3?3D4|tM6FFxSozD0@ZgTuNz{_IdRDFbAO z)M2bA&`X3r0!GVV7PvbAj0da~>bA%RB0vJogpW-A5a@S}5mS7nfE2jYc(OeJxZnXV z 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 + + + + + + + diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.manifest b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.manifest new file mode 100644 index 00000000..061c9ca9 --- /dev/null +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Release/ViconDataStreamSDK_DotNET.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Release/ViconDataStreamSDK_DotNET.dll new file mode 100644 index 0000000000000000000000000000000000000000..eb7947632c646675b80ec799105164e526018e8b GIT binary patch literal 184320 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 literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.pdb b/src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.pdb new file mode 100644 index 0000000000000000000000000000000000000000..11767b6dc35881514e3dafc8a1908b2da74f33c7 GIT binary patch literal 13824 zcmeI2dvH`&9mh`|6hcUF!<*8~LZK~>ZW83xh`h21(rzHI;UT1kCAon$o87Rxyo$89 zR9lPF7PVSIJJN^Lj*fMdsgBAFj>uTY8OLJP=^vf3j@3FNp$=nl+5tb`d+#O}q*#;! z6ZVkbe(w35-+A2g_?>&tr7_-?PGwRZ*z=2R(4$-LId`hwHZoMi;C02z)9Ln@GgNIqPd9=KfN|H3Upeo%Y%i<8&Aa`uJNo}QsD&)1%i4_CJbZhXDEz@`a*ylG8Y<3E2@pz*tuP=GPh!iW-u21N5iW$!=s z#_}~>E3F<;nuX-Uwb27-dd~D{Z1$)*YinB~&5_1bQ%fe@){=;CXsKHrZS_>E;%%v9 zV=Ucir5B}BvG%rDCTpczTun5awqjkOwu~|N)V3tDiLO+4Zy{~lGOeC!s|x9I3fbT* z#MNYa3(@YQ*`lDy23AIQ;1;?}W#4tE zE|o}FZP|D#nF%enl2$t2#(Q3`Z732?ZYKLVx@K#8R=SZsyXH+enf7>cBl>cmeyNo` z$BuX?nriE`vYB)A;dpFgGL^~3aZ_WJKU}{s8libCL7tI&sFtY6AKRqyt~NG2!}#g)1Y?tqm*cmn%&+ z>a)Hw`fQq(t)LdS9&c@V^%#?lcUh?|*)AL{_Ye$d$oyq=r_xTpsf`*Vf7+Jr_E^?x zNL!oTyaUclZ?_V$9h9tcHR%4lnQgIb+a@=k-p~DMj#EcBl6-o8@TaA%jB~H@D}FuO zKsKF9)Ft9pQVmvnbxz>7X}2=jh3)NW)RbKmm;n!Q!@Dqg0^!fer*}$!zK(RP%UWS& zwj{Dny3QQ@>E14;E_Ciy=Mnz&E-RCXZM2*^zsUf6mpUK7W;@raQ}?O!3xA%tqb~}K z!}i-qg7_|R4fza9Jj$A7ov zCzDDFfBdaO>oGHpCTym|VhYe4P#u~_>R;vm2aIU&2?hMit>F~$1)hGqF*e!F%~1V& z3sjpXL!IkPgJap*&q!7=8}& zv|&F5soQ=U%Kll8-++tJAA}!+&%q_|MHqpH;WBs>Ho=$Sa`+llIj_SN#Qy}N@C0mz zr{GHXHe3bYg==9s9j|;9a2@eskiM`hA$?&_gr9(uVH>Q4vY!XriO+`?yc2f7m2e|m z2U)`QdPv{doe+O+ry+f4-v{YCdk@UQFF=*6wYHV`S0MA#J_wnQ_91u=JPu{|dq|(# ze}MG4eah3HhP#OW3o-_FaiKAcfjt!3{Edb8!yw!ZC&5p{Deys916BS^_z>|~@Uw6s zd>A&sN8k!5yH)T};;Z3fa0A>6KM6k%JK^I{>-kG?CsaPI*Dn*l7d` zzY1T0UxR;zPr^5$%IWd=HdJ}bUiwHghE+2HucI)66|L(r%)l{b zb+2A&Do=Hlu`0_riRRov~yc-oR7Qvc{>c^*ovHXl+Wx^tD~@^5Yi@ zxn~1)!XWIlS6^rQb-y2f-5~EW<|RZ=&Kh%IzJu7v8e{;%D~fXvSOS$tb7n(=LpD>z zw}PsUc*4q5U9O{lb|Pn@)j|dBK+@&@BZ+iszyxHVBKh#Y_P_`-jz)6hztdab{_($! z^a%az{|2o2pu8HE;fUsihDXDp`B94KnNeqJ<;YM(?-;|73dDJ+fcbEBdqC@bTS<-c z-G?#UGuWiIma_P|X;u)KhBP6$pwk2Qt@p%{oX+(aeZC_Xchd)%Q<^M0FZRNSUf6r|KEk-EZPMjFry&|EoA~m#J#`@VUsv{C_)> z!|(fZlli@<{UW!oXnz=mXny6k@Aujpv?pjU$?XyOt)0&JfP?GHKj2F8#b2{M@Nch3 BFKPe) literal 0 HcmV?d00001 diff --git a/src/lib/regions.py b/src/lib/regions.py index 2802fc73..0a59421e 100755 --- a/src/lib/regions.py +++ b/src/lib/regions.py @@ -386,7 +386,8 @@ def readFile(self, filename): self.regions = [] for region in data["Regions"]: - regionData = region.split("\t"); + region = re.sub('[\[\]\(\)\{\}]', '', region) # Remove brackets + regionData = region.split(); # Separates on any whitespace newRegion = Region() newRegion.setData(regionData, thorough=False) newRegion.alignmentPoints = [False] * len([x for x in newRegion.getPoints()]) @@ -626,7 +627,65 @@ def setData(self, data, thorough=True): if thorough: self.isObstacle = data[9] + + def setDataFromFile(self, data): + """ Set the object's internal data. + + 'data' is a copy of the object's saved data, different from the + return from getData above. This is only used for reading from the + new region file format. + """ + self.name = data[0] + + # All regions are polygons + self.type = reg_POLY + + # Assign color + self.color = Color(red=int(data[1]), + green=int(data[2]), + blue=int(data[3])) + + # Extract all region points and find bounding box corners + pts = list() + minx = float(data[4]) + maxx = minx + miny = float(data[5]) + maxy = miny + for i in range(4, len(data), 2): + x = float(data[i]) + y = float(data[i+1]) + minx = min(minx, x) + maxx = max(maxx, x) + miny = min(miny, y) + maxy = max(maxy, y) + pts.append((x, y)) + + + + self.position = Point(int(data[2]), int(data[3])) + self.size = Size(int(data[4]), int(data[5])) + self.color = Color(red=int(data[6]), + green=int(data[7]), + blue=int(data[8])) + if self.type == reg_POLY: + self.pointArray = [] + if thorough: + self.alignmentPoints = [] + for i in range(10, len(data), 3): + self.pointArray.append(Point(int(data[i]), int(data[i+1]))) + self.alignmentPoints.append(data[i+2]) + else: + for i in range(9, len(data), 2): + self.pointArray.append(Point(int(data[i]), int(data[i+1]))) + elif self.type == reg_RECT: + if thorough: + self.alignmentPoints = [] + for i in range(10, len(data), 1): + self.alignmentPoints.append(data[i]) + if thorough: + self.isObstacle = data[9] + def getFaces(self): """ Wrapper function to allow for iteration over faces of regions. diff --git a/src/regionEditor.py b/src/regionEditor.py index 1fcf5240..3134af6c 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -1,2114 +1,1706 @@ #!/usr/bin/env python - -""" =============================== - regionEditor.py - Region Editor - =============================== - - A simple polygonal region editor. The code is kind of a mess, but it does what it needs to do. - - Based on pySketch by Erik Westra (ewestra@wave.co.nz) and Bill Baxter (wbaxter@gmail.com) -""" - -import sys, copy, re, shutil -import traceback, types -import cPickle, os.path, os -import wxversion -#wxversion.select('2.8') +# -*- coding: iso-8859-15 -*- +# generated by wxGlade 0.6.5 (standalone edition) on Mon Feb 13 13:09:57 2012 + +import os +import sys +import collections +import time +import math import wx -from wx.lib.buttons import GenBitmapButton - -from lib.regions import * -from lib.mapRenderer import DrawableRegion - -#################################################################### -# TODO: -# - backport new pysketch bugfixes so it will work well on OS X -# - bring in scaling factors from spec file for display -# - -# - profile and optimize, so we run smoothly with large numbers of regions -# - allow for snaps to faces -# - be more graceful when load fails -# - multi-level undo (also allow undo of non-drawing actions) -# - all the other todos sprinkled around -#################################################################### - -#---------------------------------------------------------------------------- -# System Constants -#---------------------------------------------------------------------------- - -# Preferences: - -SNAP_RADIUS = 10 - -# Menu item IDs: - -[menu_SETBG, menu_UNDO, - menu_SELECT_ALL, menu_DUPLICATE, menu_EDIT_REGION, - menu_DELETE, menu_SELECT, menu_RECT, - menu_POLY, menu_ADD_PT, menu_DEL_PT, - menu_CALIB_PT, menu_ABOUT] = [wx.NewId() for i in range(13)] - -# Timer IDs: - -id_SNAP_TIMER = wx.NewId() - -# Tool IDs: - -[id_SELECT, id_RECT, id_POLY, - id_ADD_PT, id_DEL_PT, id_CALIB_PT] = [wx.NewId() for i in range(6)] - -# Mousing operations: -# TODO: Actually implement the rotation operation (CTRL+handledrag?) -[mouse_NONE, mouse_RESIZE, mouse_MOVE, - mouse_DRAG, mouse_CREATE, mouse_ROTATE] = range(6) - -# Visual Feedback types: - -[feedback_RECT, feedback_LINE, feedback_POLY] = range(3) - -# Mouse-event action parameter types: - -[param_RECT, param_POLY] = range(2) - -# Size of the drawing page, in pixels. - -[PAGE_WIDTH, PAGE_HEIGHT] = [1000, 1000] - -#---------------------------------------------------------------------------- - -class DrawingFrame(wx.Frame): - """ A frame showing the contents of a single document. """ - - # ========================================== - # == Initialisation and Window Management == - # ========================================== - - def __init__(self, parent, id, title, fileName=None): - """ Standard constructor. - - 'parent', 'id' and 'title' are all passed to the standard wx.Frame - constructor. 'fileName' is the name and path of a saved file to - load into this frame, if any. - """ - wx.Frame.__init__(self, parent, id, "Region Editor - " + title, - style = wx.DEFAULT_FRAME_STYLE | wx.WANTS_CHARS | - wx.NO_FULL_REPAINT_ON_RESIZE) - - # Make status bar at bottom. - - self.sb = wx.StatusBar(self) - self.SetStatusBar(self.sb) - self.sb.SetFieldsCount(2) - - # Setup our snapping support. - - self.snapTimer = wx.Timer(self, id_SNAP_TIMER) - self.Bind(wx.EVT_TIMER, self.onTimerEvent) - self.lastCursor = None - self.snapCoords = None - - # Setup our menu bar. - - menuBar = wx.MenuBar() - - self.fileMenu = wx.Menu() - self.fileMenu.Append(wx.ID_NEW, "&New\tCTRL-N") - self.fileMenu.Append(wx.ID_OPEN, "&Open...\tCTRL-O") - self.fileMenu.Append(wx.ID_CLOSE, "&Close\tCTRL-W") - self.fileMenu.AppendSeparator() - self.fileMenu.Append(menu_SETBG, "&Import Background...\tCTRL-I") - self.fileMenu.AppendSeparator() - self.fileMenu.Append(wx.ID_SAVE, "&Save\tCTRL-S") - self.fileMenu.Append(wx.ID_SAVEAS, "Save &As...") - self.fileMenu.Append(wx.ID_REVERT, "&Revert...") - self.fileMenu.AppendSeparator() - self.fileMenu.Append(wx.ID_EXIT, "&Quit\tCTRL-Q") - - menuBar.Append(self.fileMenu, "&File") - - self.editMenu = wx.Menu() - self.editMenu.Append(menu_UNDO, "&Undo\tCTRL-Z") - self.editMenu.AppendSeparator() - self.editMenu.Append(menu_SELECT_ALL, "Select &All\tCTRL-A") - self.editMenu.AppendSeparator() - self.editMenu.Append(menu_EDIT_REGION, "&Edit Region...\tCTRL-E") - self.editMenu.Append(menu_DUPLICATE, "&Duplicate\tCTRL-D") - self.editMenu.Append(menu_DELETE, "D&elete\tDEL") - - menuBar.Append(self.editMenu, "&Edit") - - self.toolsMenu = wx.Menu() - self.toolsMenu.Append(menu_SELECT, "&Selection\tS", kind=wx.ITEM_CHECK) - self.toolsMenu.Append(menu_RECT, "&Rectangle\tR", kind=wx.ITEM_CHECK) - self.toolsMenu.Append(menu_POLY, "&Polygon\tP", kind=wx.ITEM_CHECK) - self.toolsMenu.Append(menu_ADD_PT, "&Create Point\tC", kind=wx.ITEM_CHECK) - self.toolsMenu.Append(menu_DEL_PT, "&Delete Point\tD", kind=wx.ITEM_CHECK) - self.toolsMenu.Append(menu_CALIB_PT, "&Toggle Calibration Points\tT", kind=wx.ITEM_CHECK) - - menuBar.Append(self.toolsMenu, "&Tools") - - self.helpMenu = wx.Menu() - self.helpMenu.Append(menu_ABOUT, "&About Region Editor...") - - menuBar.Append(self.helpMenu, "&Help") - - self.SetMenuBar(menuBar) - - # Create our toolbar. - - tsize = (16,16) - self.toolbar = self.CreateToolBar(wx.TB_HORIZONTAL | - wx.NO_BORDER | wx.TB_FLAT) - - self.toolbar.AddSimpleTool(wx.ID_NEW, - wx.ArtProvider.GetBitmap(wx.ART_NEW, wx.ART_TOOLBAR, tsize), - "New") - self.toolbar.AddSimpleTool(wx.ID_OPEN, - wx.ArtProvider.GetBitmap(wx.ART_FILE_OPEN, wx.ART_TOOLBAR, tsize), - "Open") - self.toolbar.AddSimpleTool(wx.ID_SAVE, - wx.ArtProvider.GetBitmap(wx.ART_FILE_SAVE, wx.ART_TOOLBAR, tsize), - "Save") - self.toolbar.AddSeparator() - self.toolbar.AddSimpleTool(menu_UNDO, - wx.ArtProvider.GetBitmap(wx.ART_UNDO, wx.ART_TOOLBAR, tsize), - "Undo") - self.toolbar.AddSeparator() - self.toolbar.AddSimpleTool(menu_DUPLICATE, - wx.Bitmap("images/duplicate.bmp", - wx.BITMAP_TYPE_BMP), - "Duplicate") - self.toolbar.Realize() - - # Associate each menu/toolbar item with the method that handles that - # item. - - menuHandlers = [ - (wx.ID_NEW, self.doNew), - (wx.ID_OPEN, self.doOpen), - (wx.ID_CLOSE, self.doClose), - (wx.ID_SAVE, self.doSave), - (wx.ID_SAVEAS, self.doSaveAs), - (wx.ID_REVERT, self.doRevert), - (wx.ID_EXIT, self.doExit), - - (menu_SETBG, self.doSetBackground), - - (menu_UNDO, self.doUndo), - (menu_SELECT_ALL, self.doSelectAll), - (menu_DUPLICATE, self.doDuplicate), - (menu_EDIT_REGION, self.doEditRegion), - (menu_DELETE, self.doDelete), - - (menu_SELECT, self.doChooseSelectTool), - (menu_RECT, self.doChooseRectTool), - (menu_POLY, self.doChoosePolyTool), - (menu_ADD_PT, self.doChooseAddPtTool), - (menu_DEL_PT, self.doChooseDelPtTool), - (menu_CALIB_PT, self.doChooseCalibPtTool), - - (menu_ABOUT, self.doShowAbout)] - - for combo in menuHandlers: - id, handler = combo - self.Bind(wx.EVT_MENU, handler, id = id) - +import threading +import socket +import struct +import copy +import winsound +import pyttsx +from regionEditor import Point + +# begin wxGlade: extracode +# end wxGlade + +class regionEditor(wx.Frame): + def __init__(self, *args, **kwds): + # begin wxGlade: regionEditor.__init__ + kwds["style"] = wx.DEFAULT_FRAME_STYLE + wx.Frame.__init__(self, *args, **kwds) - # Install our own method to handle closing the window. This allows us - # to ask the user if he/she wants to save before closing the window, as - # well as keep track of which windows are currently open. - - self.Bind(wx.EVT_CLOSE, self.doClose) - - # Install our own method for handling keystrokes. We use this to let - # the user move the selected object(s) around using the arrow keys. - - self.Bind(wx.EVT_CHAR_HOOK, self.onKeyEvent) - - # Setup our top-most panel. This holds the entire contents of the - # window, excluding the menu bar. - - self.topPanel = wx.Panel(self, -1, style=wx.SIMPLE_BORDER) - - # Setup our tool palette, with all our drawing tools and option icons. - - self.toolPalette = wx.BoxSizer(wx.VERTICAL) - - self.selectIcon = ToolPaletteIcon(self.topPanel, id_SELECT, - "select", "Selection Tool") - self.rectIcon = ToolPaletteIcon(self.topPanel, id_RECT, - "rect", "Rectangle Tool") - self.polyIcon = ToolPaletteIcon(self.topPanel, id_POLY, - "poly", "Polygon Tool") - self.addPtIcon = ToolPaletteIcon(self.topPanel, id_ADD_PT, - "addPoint", "Add Point Tool") - self.delPtIcon = ToolPaletteIcon(self.topPanel, id_DEL_PT, - "delPoint", "Delete Point Tool") - self.calibPtIcon = ToolPaletteIcon(self.topPanel, id_CALIB_PT, - "calibPoint", "Toggle Calibration Point Tool") - - toolSizer = wx.GridSizer(0, 2, 5, 5) - toolSizer.Add(self.selectIcon) - toolSizer.Add(self.polyIcon) - toolSizer.Add(self.rectIcon) - toolSizer.Add(self.addPtIcon) - toolSizer.Add(self.delPtIcon) - toolSizer.Add(self.calibPtIcon) - - margin = wx.TOP | wx.LEFT | wx.RIGHT | wx.ALIGN_CENTRE - self.toolPalette.Add(toolSizer, 0, margin, 5) - - # Make the tool palette icons respond when the user clicks on them. - - for tool in [self.selectIcon, self.rectIcon, self.polyIcon, - self.addPtIcon, self.delPtIcon, self.calibPtIcon]: - tool.Bind(wx.EVT_BUTTON, self.onToolIconClick) - - # Setup the main drawing area. - - self.drawPanel = wx.ScrolledWindow(self.topPanel, -1, - style=wx.SUNKEN_BORDER) - self.drawPanel.SetBackgroundColour(wx.WHITE) - - # TODO: I guess the virtual size should scale according to background image, - # but we don't want to shrink it too much when the image is small. - self.drawPanel.SetVirtualSize((PAGE_WIDTH, PAGE_HEIGHT)) - self.drawPanel.SetScrollRate(20, 20) - - self.drawPanel.Bind(wx.EVT_LEFT_DOWN, self.onMouseEvent) - self.drawPanel.Bind(wx.EVT_LEFT_DCLICK, self.onDoubleClickEvent) - self.drawPanel.Bind(wx.EVT_RIGHT_DOWN, self.onRightClick) - self.drawPanel.Bind(wx.EVT_MOTION, self.onMouseEvent) - self.drawPanel.Bind(wx.EVT_LEFT_UP, self.onMouseEvent) - self.drawPanel.Bind(wx.EVT_PAINT, self.onPaintEvent) - - # Position everything in the window. - - topSizer = wx.BoxSizer(wx.HORIZONTAL) - topSizer.Add(self.toolPalette, 0) - topSizer.Add(self.drawPanel, 1, wx.EXPAND) - - self.topPanel.SetAutoLayout(True) - self.topPanel.SetSizer(topSizer) - - self.SetSizeHints(250, 200) - self.SetSize(wx.Size(900, 700)) - - # Setup our frame to hold the contents of a sketch document. - - self.rfi = RegionFileInterface() - self.backgroundImage = None - self.fileName = fileName + # Menu Bar + self.RegionEditor_menubar = wx.MenuBar() + self.filemenu = wx.Menu() + self.menuNew = wx.MenuItem(self.filemenu, wx.NewId(), "New", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuNew) + self.menuOpen = wx.MenuItem(self.filemenu, wx.NewId(), "Open", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuOpen) + self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSave) + self.menuSaveAs = wx.MenuItem(self.filemenu, wx.NewId(), "Save As", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSaveAs) + self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuExit) + self.RegionEditor_menubar.Append(self.filemenu, "File") + self.menuEdit = wx.Menu() + self.menuUndo = wx.MenuItem(self.menuEdit, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuUndo) + self.menuRedo = wx.MenuItem(self.menuEdit, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuRedo) + self.RegionEditor_menubar.Append(self.menuEdit, "Edit") + self.menuDrawing = wx.Menu() + self.menuAutobound = wx.MenuItem(self.menuDrawing, wx.NewId(), "Autoboundary", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuAutobound) + self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "Rectangle", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuRect) + self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuPoly) + self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuAddPoint) + self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuRemPoint) + self.RegionEditor_menubar.Append(self.menuDrawing, "Drawing") + self.menuView = wx.Menu() + self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "Markers", "", wx.ITEM_CHECK) + self.menuView.AppendItem(self.menuMarkers) + self.menuMarkersClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuMarkersClear) + self.menuCamera = wx.MenuItem(self.menuView, wx.NewId(), "Camera Capture", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuCamera) + self.menuImageImport = wx.MenuItem(self.menuView, wx.NewId(), "Import Background Image", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuImageImport) + self.menuImageClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Background Image", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuImageClear) + self.RegionEditor_menubar.Append(self.menuView, "View") + self.helpmenu = wx.Menu() + self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuAbout) + self.RegionEditor_menubar.Append(self.helpmenu, "Help") + self.SetMenuBar(self.RegionEditor_menubar) + # Menu Bar end + self.sidebar = wx.Panel(self, -1) + self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Vicon") + self.buttonCamera = wx.Button(self.sidebar, -1, "Camera") + self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Rect.") + self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") + self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Length") + self.toggleFeedback = wx.ToggleButton(self.sidebar, -1, "Feedback") + self.buttonCal = wx.Button(self.sidebar, -1, "Calibrate") + self.canvas = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + + self.__set_properties() + self.__do_layout() + + self.Bind(wx.EVT_MENU, self.OnMenuNew, self.menuNew) + self.Bind(wx.EVT_MENU, self.OnMenuOpen, self.menuOpen) + self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) + self.Bind(wx.EVT_MENU, self.OnMenuSaveAs, self.menuSaveAs) + self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) + self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) + self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) + self.Bind(wx.EVT_MENU, self.OnMenuAutobound, self.menuAutobound) + self.Bind(wx.EVT_MENU, self.OnMenuRect, self.menuRect) + self.Bind(wx.EVT_MENU, self.OnMenuPoly, self.menuPoly) + self.Bind(wx.EVT_MENU, self.OnMenuAddPoint, self.menuAddPoint) + self.Bind(wx.EVT_MENU, self.OnMenuRemPoint, self.menuRemPoint) + self.Bind(wx.EVT_MENU, self.OnMenuMarkers, self.menuMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuMarkersClear, self.menuMarkersClear) + self.Bind(wx.EVT_MENU, self.OnMenuCamera, self.menuCamera) + self.Bind(wx.EVT_MENU, self.OnMenuImageImport, self.menuImageImport) + self.Bind(wx.EVT_MENU, self.OnMenuImageClear, self.menuImageClear) + self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnButtonCamera, self.buttonCamera) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFeedback, self.toggleFeedback) + self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) + # end wxGlade - self.transitionFaces = {} # The keys are faces that are shared by more than one region - - self.dirty = False - self.needsAdjacencyRecalc = True - self.selection = [] # List of selected Regions - self.undoInfo = None # Saved contents for undo - self.mouseMode = mouse_NONE # Current mousing mode - self.newPoints = [] # A temp buffer to store vertices when drawing out new regions - - # Select an initial tool. - - self.curTool = None - self._setCurrentTool(self.selectIcon) - - # Load our file if necessary - - if self.fileName != None: - if self.loadContents() is False: - raise IOError - - # ============================ - # == Event Handling Methods == - # ============================ - - # FIXME: These are really messy; refactor me - - def onToolIconClick(self, event): - """ Respond to the user clicking on one of our tool icons. - """ - iconID = event.GetEventObject().GetId() - if iconID == id_SELECT: self.doChooseSelectTool() - elif iconID == id_RECT: self.doChooseRectTool() - elif iconID == id_POLY: self.doChoosePolyTool() - elif iconID == id_ADD_PT: self.doChooseAddPtTool() - elif iconID == id_DEL_PT: self.doChooseDelPtTool() - elif iconID == id_CALIB_PT: self.doChooseCalibPtTool() - else: print "Tool not yet implemented" - - def onKeyEvent(self, event): - """ Respond to a keypress event. - - We make the arrow keys move the selected object(s) by one pixel in - the given direction. - """ - if event.GetKeyCode() == wx.WXK_UP: - self._moveObjects(0, -1) - elif event.GetKeyCode() == wx.WXK_DOWN: - self._moveObjects(0, 1) - elif event.GetKeyCode() == wx.WXK_LEFT: - self._moveObjects(-1, 0) - elif event.GetKeyCode() == wx.WXK_RIGHT: - self._moveObjects(1, 0) - elif event.GetKeyCode() == wx.WXK_BACK: - self.doDelete() - elif event.GetKeyCode() == wx.WXK_SPACE: - self.testNear() - #self.testBetween() - elif event.GetKeyCode() == wx.WXK_ESCAPE: - self.mouseMode = mouse_NONE - self.sb.SetStatusText("", 1) - self.doChooseSelectTool() - self.deselectAll() - self.drawPanel.Refresh() + # Handle input + if len(args) > 2 and isinstance(args[2], str): + self.fileName = os.path.join(os.getcwd(), args[2]) else: - event.Skip() - - def testNear(self): - newReg = self.selection[0].findRegionNear(20, mode='overEstimate') - obj = DrawableRegion(newReg.type) - obj.setData(newReg.getData()) - self.rfi.regions.append(obj) - self.drawPanel.Refresh() - - def testBetween(self): - newReg = findRegionBetween(self.selection[0], self.selection[1]) - obj = DrawableRegion(newReg.type) - obj.setData(newReg.getData()) - self.rfi.regions.append(obj) - self.drawPanel.Refresh() - - def onMouseEvent(self, event): - """ Respond to the user clicking on our main drawing panel. - - How we respond depends on the currently selected tool. - """ - if not (event.LeftDown() or event.Dragging() or event.Moving() or event.LeftUp()): - return - - if self.curTool == self.selectIcon: - feedbackType = feedback_RECT - action = self.selectByRectangle - actionParam = param_RECT - selecting = True - dashedLine = True - elif self.curTool == self.rectIcon: - feedbackType = feedback_RECT - action = self.createRect - actionParam = param_RECT - selecting = False - dashedLine = False - elif self.curTool == self.polyIcon: - feedbackType = feedback_LINE - action = self.createPoly - actionParam = param_POLY - selecting = False - dashedLine = False - elif self.curTool == self.delPtIcon: - selecting = False - elif self.curTool == self.addPtIcon: - selecting = False - elif self.curTool == self.calibPtIcon: - selecting = False - else: - print "Unknown tool" - return - - if event.LeftDown(): - mousePt = self._getEventCoordinates(event) - if selecting: - obj, handle = self._getObjectAndSelectionHandleAt(mousePt) - - if selecting and (obj != None) and (handle != handle_NONE): - # The user clicked on an object's selection handle. Let the - # user resize the clicked-on object. - - self.mouseMode = mouse_RESIZE - self.resizeObject = obj - - self.select(obj) - - if obj.type == reg_POLY: - self.resizeFeedback = feedback_POLY - self.resizeAnchor = (obj.position + obj.pointArray[(handle-1) % len(obj.pointArray)], - obj.position + obj.pointArray[(handle+1) % len(obj.pointArray)]) - self.resizeFloater = obj.position + obj.pointArray[handle] - else: - points = [x for x in obj.getPoints()] - self.resizeFeedback = feedback_RECT - self.resizeFloater = points[handle] - self.resizeAnchor = points[(handle+2) % 4] - - self.curPt = mousePt - self.resizeOffsetX = self.resizeFloater.x - mousePt.x - self.resizeOffsetY = self.resizeFloater.y - mousePt.y - endPt = wx.Point(self.curPt.x + self.resizeOffsetX, - self.curPt.y + self.resizeOffsetY) - self._drawVisualFeedback(self.resizeAnchor, endPt, - self.resizeFeedback, False) - - elif selecting and (self._getObjectAt(mousePt) != None): - - # The user clicked on an object to select it. If the user - # drags, he/she will move the object. - obj = self._getObjectAt(mousePt) - if event.ShiftDown(): - if obj in self.selection: - self.selection.remove(obj) - else: - self.selection.append(obj) - self.drawPanel.Refresh() - else: - if obj not in self.selection: - self.select(obj) - self.mouseMode = mouse_MOVE - self.moveOrigin = mousePt - self.curPt = mousePt - self._drawObjectOutline(0, 0) - self._adjustMenus() - - elif selecting: - # The user is dragging out a selection rect. - - self.dragOrigin = mousePt - self.curPt = mousePt - self.drawPanel.SetCursor(wx.CROSS_CURSOR) - self.drawPanel.CaptureMouse() - self._drawVisualFeedback(mousePt, mousePt, feedbackType, - dashedLine) - self.mouseMode = mouse_DRAG - - event.Skip() - return - - if event.Moving() or event.Dragging(): - mousePt = self._getEventCoordinates(event) - - # Reset timer and cursor - if self.lastCursor is not None: - self.drawPanel.SetCursor(self.lastCursor) - self.lastCursor = None - self.snapCoords = None - self.snapTimer.Start(250, wx.TIMER_ONE_SHOT) - - # Update mouse coord display on status bar - self.sb.SetStatusText("Mouse at (%dpx, %dpx)" % (mousePt.x, mousePt.y), 0) - - if event.Dragging(): - if self.mouseMode == mouse_RESIZE: - - # We're resizing an object. - - mousePt = self._getEventCoordinates(event) - if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): - # Erase previous visual feedback. - endPt = wx.Point(self.curPt.x + self.resizeOffsetX, - self.curPt.y + self.resizeOffsetY) - self._drawVisualFeedback(self.resizeAnchor, endPt, - self.resizeFeedback, False) - self.curPt = mousePt - # Draw new visual feedback. - endPt = wx.Point(self.curPt.x + self.resizeOffsetX, - self.curPt.y + self.resizeOffsetY) - self._drawVisualFeedback(self.resizeAnchor, endPt, - self.resizeFeedback, False) - - elif self.mouseMode == mouse_MOVE: - - # We're moving a selected object. - - mousePt = self._getEventCoordinates(event) - if event.ShiftDown(): - if abs(mousePt.x-self.moveOrigin.x) < abs(mousePt.y-self.moveOrigin.y): - mousePt.x = self.moveOrigin.x - else: - mousePt.y = self.moveOrigin.y - if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): - # Erase previous visual feedback. - self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, - self.curPt.y - self.moveOrigin.y) - self.curPt = mousePt - # Draw new visual feedback. - self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, - self.curPt.y - self.moveOrigin.y) - - elif self.mouseMode == mouse_DRAG: - - # We're dragging out a selection rect. - - mousePt = self._getEventCoordinates(event) - if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): - # Erase previous visual feedback. - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - self.curPt = mousePt - # Draw new visual feedback. - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - - event.Skip() - return - - if event.Moving(): - if self.mouseMode == mouse_CREATE: - - mousePt = self._getEventCoordinates(event) - if (self.curPt.x != mousePt.x) or (self.curPt.y != mousePt.y): - # Erase previous visual feedback. - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - self.curPt = mousePt - # Draw new visual feedback. - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - - # Update the status bar! - if self.curTool == self.rectIcon: - self.sb.SetStatusText("Width: %dpx, Height: %dpx" % (abs(mousePt.x - self.dragOrigin.x), abs(mousePt.y-self.dragOrigin.y)), 1) - elif self.curTool == self.polyIcon: - length = math.sqrt((mousePt.x - self.newPoints[-1].x)**2 + (mousePt.y-self.newPoints[-1].y)**2) - if len(self.newPoints) >= 2: - # We can show angle - v1_y = self.newPoints[-2].y-self.newPoints[-1].y - v1_x = self.newPoints[-2].x-self.newPoints[-1].x - v2_y = mousePt.y-self.newPoints[-1].y - v2_x = mousePt.x-self.newPoints[-1].x - angle_v1 = math.atan2(v1_y, v1_x) - angle_v2 = math.atan2(v2_y, v2_x) - angle = angle_v2 - angle_v1 - if(angle < 0): - angle += 2 * math.pi - # Only show the acute angle - if(angle > math.pi): - angle = 2*math.pi - angle - angle *= 180 / math.pi - self.sb.SetStatusText("Side Length: %dpx, Angle: %ddeg" % (length, angle), 1) - else: - self.sb.SetStatusText("Side Length: %dpx" % (length), 1) - - elif self.mouseMode == mouse_NONE and not selecting: - self.curPt = self._getEventCoordinates(event) - - event.Skip() - return - - if event.LeftUp(): - if self.mouseMode == mouse_RESIZE: - - # We're resizing an object. - mousePt = self._getEventCoordinates(event,snap=True) - # Erase last visual feedback. - endPt = wx.Point(self.curPt.x + self.resizeOffsetX, - self.curPt.y + self.resizeOffsetY) - self._drawVisualFeedback(self.resizeAnchor, endPt, - self.resizeFeedback, False) - - resizePt = wx.Point(mousePt.x + self.resizeOffsetX, - mousePt.y + self.resizeOffsetY) - - if (self.resizeFloater.x != resizePt.x) or \ - (self.resizeFloater.y != resizePt.y): - self._resizeObject(self.resizeObject, - self.resizeAnchor, - self.resizeFloater, - resizePt) - else: - self.drawPanel.Refresh() # Clean up after empty resize. - - elif self.mouseMode == mouse_MOVE: - mousePt = self.curPt - # Erase last visual feedback. - self._drawObjectOutline(self.curPt.x - self.moveOrigin.x, - self.curPt.y - self.moveOrigin.y) - if (self.moveOrigin.x != mousePt.x) or \ - (self.moveOrigin.y != mousePt.y): - self._moveObjects(mousePt.x - self.moveOrigin.x, - mousePt.y - self.moveOrigin.y) - else: - self.drawPanel.Refresh() # Clean up after empty drag. - - elif self.mouseMode == mouse_DRAG: - - # We're dragging out a selection rect. - mousePt = self._getEventCoordinates(event) - # Erase last visual feedback. - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - self.drawPanel.ReleaseMouse() - self.drawPanel.SetCursor(wx.STANDARD_CURSOR) - # Perform the appropriate action for the current tool. - if actionParam == param_RECT: - x1 = min(self.dragOrigin.x, self.curPt.x) - y1 = min(self.dragOrigin.y, self.curPt.y) - x2 = max(self.dragOrigin.x, self.curPt.x) - y2 = max(self.dragOrigin.y, self.curPt.y) - - startX = x1 - startY = y1 - width = x2 - x1 - height = y2 - y1 - - action(x1, y1, x2-x1, y2-y1) - - elif self.mouseMode == mouse_CREATE: - mousePt = self._getEventCoordinates(event, snap=True) - - if self.curTool == self.rectIcon: - self.curPt = mousePt - # Create rect - x1 = min(self.newPoints[0].x, self.curPt.x) - y1 = min(self.newPoints[0].y, self.curPt.y) - x2 = max(self.newPoints[0].x, self.curPt.x) - y2 = max(self.newPoints[0].y, self.curPt.y) - - #if ((x2-x1) < 8) or ((y2-y1) < 8): return # Too small. - - action(x1, y1, x2-x1, y2-y1) - - self.mouseMode = mouse_NONE - self.sb.SetStatusText("", 1) - elif self.curTool == self.polyIcon: - # Update to account for snap cases: - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - self.curPt = mousePt - self._drawVisualFeedback(self.dragOrigin, self.curPt, - feedbackType, dashedLine) - # Append point, end if equal to start point - if self.curPt != self.newPoints[0]: - self.newPoints.append(self.curPt) - self.dragOrigin = self.curPt - else: - action(self.newPoints) - self.mouseMode = mouse_NONE - self.sb.SetStatusText("", 1) - - elif self.mouseMode == mouse_NONE and not selecting: - if self.curTool == self.delPtIcon: - mousePt = self._getEventCoordinates(event) - obj = self._getObjectAt(mousePt) - if obj is not None: - if obj in self.selection: - obj, handle = self._getObjectAndSelectionHandleAt(mousePt) - if handle is not handle_NONE: - if not (obj.type == reg_POLY and len(obj.pointArray) <= 3): - self._saveUndoInfo() - obj.removePoint(handle) - self.dirty = True - self.needsAdjacencyRecalc = True - self.doChooseSelectTool() - else: - self.select(obj) - self.drawPanel.Refresh() - self._adjustMenus() - elif self.curTool == self.addPtIcon: - mousePt = self._getEventCoordinates(event) - obj = self._getObjectAt(mousePt) - if obj is not None: - if obj in self.selection: - # TODO: because of the getObjectAt call, - # clicks outside the object will not be recognized - for i, face in enumerate(obj.getFaces()): - [on_segment, d, pint] = pointLineIntersection(wx.Point(*face[0]), wx.Point(*face[1]), mousePt) - if on_segment and d <= 4: - self._saveUndoInfo() - obj.addPoint(pint-obj.position, i+1) - self.dirty = True - self.needsAdjacencyRecalc = True - self.doChooseSelectTool() - break - else: - self.select(obj) - self._adjustMenus() - self.drawPanel.Refresh() - elif self.curTool == self.calibPtIcon: - mousePt = self._getEventCoordinates(event) - - for obj in self.rfi.regions: - topLeft = obj.position - botRight = obj.position + wx.Point(obj.size.GetWidth(), obj.size.GetHeight()) - - # First do rough checking based on obj bound rects - if (topLeft.x > mousePt.x + SNAP_RADIUS or botRight.x < mousePt.x - SNAP_RADIUS or - topLeft.y > mousePt.y + SNAP_RADIUS or botRight.y < mousePt.y - SNAP_RADIUS): - continue - else: - handle = obj.getSelectionHandleContainingPoint(mousePt.x, mousePt.y, - boundFunc = self._pointInSnapRange) - if handle == handle_NONE: - continue - else: - self._saveUndoInfo() - obj.alignmentPoints[handle] = not obj.alignmentPoints[handle] - self.dirty = True - break - - self.drawPanel.Refresh() - self._adjustMenus() - else: - self.deselectAll() - mousePt = self._getEventCoordinates(event,snap=True) - self.curPt = mousePt - self.dragOrigin = mousePt - self.newPoints = [mousePt] - self.mouseMode = mouse_CREATE - - if self.mouseMode != mouse_CREATE: - self.mouseMode = mouse_NONE # We've finished with this mouse event. - - event.Skip() - - - def onDoubleClickEvent(self, event): - """ Respond to a double-click within our drawing panel. - """ - if self.mouseMode == mouse_CREATE: - # TODO: Get rid of action variable in above - self.createPoly(self.newPoints) - self.mouseMode = mouse_NONE - self.sb.SetStatusText("", 1) - return - - mousePt = self._getEventCoordinates(event) - obj = self._getObjectAt(mousePt) - - if obj == None: return - - self.select(obj) - self.drawPanel.Refresh() - - # Let the user edit the given object. - self.doEditRegion() - - def onTimerEvent(self, event): - timerID = event.GetEventObject().GetId() - - if timerID == id_SNAP_TIMER: - if self.curTool == self.selectIcon and self.mouseMode != mouse_RESIZE: return - - # Allow snapping to first point of polygon in creation - if len(self.newPoints) > 1 and self._pointInSnapRange(self.curPt.x, self.curPt.y, - self.newPoints[0].x, self.newPoints[0].y): - self.snapCoords = self.newPoints[0] - self.lastCursor = self.drawPanel.GetCursor() - self.drawPanel.SetCursor(wx.StockCursor(wx.CURSOR_BULLSEYE)) - return - - for obj in self.rfi.regions: - # Don't allow snapping to self when resizing: (you wouldn't ever want to do that, right?) - if self.mouseMode == mouse_RESIZE and len(self.selection) != 0 and self.selection[0] == obj: continue - - topLeft = obj.position - botRight = obj.position + wx.Point(obj.size.GetWidth(), obj.size.GetHeight()) - - # First do rough checking based on obj bound rects - if (topLeft.x > self.curPt.x + SNAP_RADIUS or botRight.x < self.curPt.x - SNAP_RADIUS or - topLeft.y > self.curPt.y + SNAP_RADIUS or botRight.y < self.curPt.y - SNAP_RADIUS): - continue - else: - handle = obj.getSelectionHandleContainingPoint(self.curPt.x, self.curPt.y, - boundFunc = self._pointInSnapRange) - if handle == handle_NONE: - continue - else: - self.snapCoords = [x for x in obj.getPoints()][handle] - self.lastCursor = self.drawPanel.GetCursor() - self.drawPanel.SetCursor(wx.StockCursor(wx.CURSOR_BULLSEYE)) - break + self.fileName = "" - - def _pointInSnapRange(self, x, y, rX, rY): - """ Return True iff (x, y) is within snapping range of the vertex at (rX, rY). - """ - return ((x - rX)**2 + (y - rY)**2 < SNAP_RADIUS**2) - - def onRightClick(self, event): - """ Respond to the user right-clicking within our drawing panel. - - We select the clicked-on item, if necessary, and display a pop-up - menu of available options which can be applied to the selected - item(s). - """ - mousePt = self._getEventCoordinates(event) - obj = self._getObjectAt(mousePt) - - if obj == None: return # Nothing selected. - - # Select the clicked-on object. - - if obj not in self.selection: - self.select(obj) - - # Build our pop-up menu. - - menu = wx.Menu() - menu.Append(menu_EDIT_REGION, "Edit Region...") - menu.Append(menu_DUPLICATE, "Duplicate") - menu.Append(menu_DELETE, "Delete") - - menu.Enable(menu_EDIT_REGION, len(self.selection) == 1) - - self.Bind(wx.EVT_MENU, self.doEditRegion, id=menu_EDIT_REGION) - self.Bind(wx.EVT_MENU, self.doDuplicate, id=menu_DUPLICATE) - self.Bind(wx.EVT_MENU, self.doDelete, id=menu_DELETE) - - # Show the pop-up menu. - - self.drawPanel.PopupMenu(menu, mousePt) - menu.Destroy() - - def onPaintEvent(self, event): - """ Respond to a request to redraw the contents of our drawing panel. - """ - - pdc = wx.PaintDC(self.drawPanel) - try: - dc = wx.GCDC(pdc) - except: - dc = pdc - else: - self.drawPanel.PrepareDC(pdc) - - if self.needsAdjacencyRecalc: - self.recalcAdjacency() - - self.drawPanel.PrepareDC(dc) - dc.BeginDrawing() - # TODO: Alpha BG so you can make it lighter - if self.backgroundImage != None: - dc.DrawBitmap(self.backgroundImage, 0, 0, False) + # Bind mouse events + self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown, self.canvas) + self.canvas.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp, self.canvas) + #self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) + self.canvas.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown, self.canvas) + self.canvas.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp, self.canvas) + self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel, self.canvas) + self.canvas.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow, self.canvas) + self.canvas.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow, self.canvas) - self.drawRegions(dc, pdc) - - dc.EndDrawing() + # Bind keyboard events + self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) + self.canvas.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.canvas) - def drawRegions(self, dc, pdc, drawLabels=True, drawAdjacencies=True): - for i in range(len(self.rfi.regions)-1, -1, -1): - obj = self.rfi.regions[i] - - # If this region is concave, indicate this with hatching - doHighlight = (obj.name.lower() != "boundary" and obj.getDirection() == dir_CONCAVE) - - isSelected = (obj in self.selection) - obj.draw(dc, pdc, isSelected, highlight=doHighlight, deemphasize=obj.isObstacle) + # Determine mapping of the canvas panel to the field + canvasLen = self.canvas.GetSize() # Initial size of canvas (pixels) + fieldRange = [(-3.0, 9.0), (-3.0, 3.0)] # Initial range of field (m) + # [(xmin, xmax), (ymin, ymax)] + # pose = pixPose * scale + offset + # Note: y-pixels and y-pose have opposite directions + xScale = (fieldRange[0][1] - fieldRange[0][0]) / float(canvasLen[0]) + xOffset = fieldRange[0][0] + yScale = -(fieldRange[1][1] - fieldRange[1][0]) / float(canvasLen[1]) + yOffset = -fieldRange[1][0] + self.canvasScale = Point(xScale, yScale) + self.canvasOffset = Point(xOffset, yOffset) + + # Set up for region creation + self.regions = [] # List of regions in the map + self.adjacent = [] # List of lists holding transition + # edges between regions. + # adjacent[i][j] contains a list of + # indices of edges in region i that + # connect to edges in region j. + # adjacent[j][i] should contain a + # list of the same length, but edge + # indices are for region j. + # adjacent[i][i] will be empty. + self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick + self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick + self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) + self.polyVerts = [] # Keeps points for region creation + # and dimensioning + # Region creation: [Point(x0,y0), ...] + # Dimensioning: (idxRegion, idxVert) + self.polySnaps = [] # Keeps snap information for each + # new region creation point + # [(idxReg, idxPt, idxEdge), ...] + + # Set up for undo/redo capabilities + # TODO: Disable self.menuUndo and self.menuRedo + self.unredoBufLen = 50 + self.undoActions = collections.deque() + self.redoActions = collections.deque() + + # Add paint event handler to draw on the canvas + self.Bind(wx.EVT_PAINT, self.OnCanvasPaint, self.canvas) + + # Create Vicon listener + self.markerPoses = [] # Marker positions to be drawn + self.viconListener = ViconMarkerListener(self) + self.dlgFeedback = None + + # Add close event handler to cleanup and possibly save before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Display the GUI window and set up the map canvas + self.Show() + self.DrawGrid() - if drawLabels: - # Draw region labels - dc.SetTextForeground(wx.BLACK) - dc.SetBackgroundMode(wx.TRANSPARENT) - font = wx.Font(12, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False) - dc.SetFont(font) - - if obj.isObstacle: - labelText = "(%s)" % obj.name - else: - labelText = obj.name - - textWidth, textHeight = dc.GetTextExtent(labelText) - - # TODO: Better text placement algorithm for concave polygons? - dc.SetBrush(wx.Brush(obj.color, wx.SOLID)) - dc.SetPen(wx.Pen(obj.color, 1, wx.SOLID)) - center = obj.getCenter() - if obj.name.lower() == "boundary": - textX = obj.position.x - textY = obj.position.y + obj.size.height + textHeight/2 - else: - textX = center.x - textWidth/2 - textY = center.y - textHeight/2 - dc.DrawRoundedRectangle(textX - 5, textY - 3, textWidth + 10, textHeight + 6, 3) - dc.DrawText(labelText, textX, textY) - - if drawAdjacencies: - # Highlight adjacent faces - dc.SetPen(wx.Pen(wx.Colour(255,0,0,100), 5, wx.DOT)) - for face in self.transitionFaces.keys(): - p1 = list(face)[0] - p2 = list(face)[1] - dc.DrawLine(p1[0], p1[1], p2[0], p2[1]) - - # ========================== - # == Menu Command Methods == - # ========================== - - def doNew(self, event): - """ Respond to the "New" menu command. - """ - global _docList - newFrame = DrawingFrame(None, -1, "Untitled") - newFrame.Show(True) - _docList.append(newFrame) - - - def doOpen(self, event): - """ Respond to the "Open" menu command. - """ - global _docList - - curDir = os.getcwd() - fileName = wx.FileSelector("Open File", default_extension="regions", - flags = wx.OPEN | wx.FILE_MUST_EXIST) - if fileName == "": return - fileName = os.path.join(os.getcwd(), fileName) - os.chdir(curDir) - self._doOpenHelper(fileName) - - - def _doOpenHelper(self, fileName, existing=True): - - title = os.path.basename(fileName) - - if (self.fileName == None) and (len(self.rfi.regions) == 0): - # If our current document is blank - if existing: - # Load contents into current (empty) document. - self.fileName = fileName - self.projectName = os.path.splitext(title)[0] - self.projectDir = os.path.dirname(os.path.abspath(self.fileName)) - if self.loadContents() == False: - self.fileName = None - self.projectName = None - self.projectDir = None - return - else: - # We're now editing the virgin file - self.fileName = fileName - - self.SetTitle("Region Editor - " + os.path.basename(fileName)) + def __set_properties(self): + # begin wxGlade: regionEditor.__set_properties + self.SetTitle("Region Editor") + self.toggleVicon.SetMinSize((50, 50)) + self.buttonCamera.SetMinSize((50, 50)) + self.toggleSquare.SetMinSize((50, 50)) + self.togglePoly.SetMinSize((50, 50)) + self.toggleDim.SetMinSize((50, 50)) + self.toggleFeedback.SetMinSize((50, 50)) + self.buttonCal.SetMinSize((50, 50)) + self.sidebar.SetMinSize((150, 400)) + self.canvas.SetMinSize((800, 400)) + self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255)) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: regionEditor.__do_layout + sizer_1 = wx.BoxSizer(wx.HORIZONTAL) + grid_sizer_1 = wx.GridSizer(4, 2, 5, 5) + grid_sizer_1.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonCamera, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleFeedback, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonCal, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + self.sidebar.SetSizer(grid_sizer_1) + sizer_1.Add(self.sidebar, 0, wx.EXPAND, 0) + sizer_1.Add(self.canvas, 1, wx.EXPAND, 0) + self.SetSizer(sizer_1) + sizer_1.Fit(self) + self.Layout() + # end wxGlade + + def OnClose(self, event): + """Perform cleanup tasks and close the application.""" + # Check if the closure can even be canceled + # TODO: Check if map is unsaved and ask if they want to save before closing + if not event or event.CanVeto(): + dlg = wx.MessageDialog(self, + "Do you really want to close this application?", + "Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION) + result = dlg.ShowModal() + dlg.Destroy() + if result == wx.ID_OK: + self.viconListener.stop() + # TODO: Check if vicon is indeed running, and put wait-notify + # in to close port before closing GUI + self.Destroy() else: - # Open a new frame for this document. - try: - newFrame = DrawingFrame(None, -1, os.path.basename(fileName), - fileName=fileName) - except IOError: - return - - newFrame.Show(True) - _docList.append(newFrame) - - self.projectName = os.path.splitext(title)[0] - self.projectDir = os.path.dirname(os.path.abspath(self.fileName)) - - def doClose(self, event): - """ Respond to the "Close" menu command. - """ - global _docList - - if self.dirty: - if not self.askIfUserWantsToSave("closing"): return - - _docList.remove(self) - self.Destroy() - - def checkSubfaces(self, obj): - for other_obj in self.rfi.regions: - if other_obj is obj: - continue - - self.rfi.splitSubfaces(obj, other_obj) - self.rfi.splitSubfaces(other_obj, obj) - - def recalcAdjacency(self): - """ - Call the RegionFileInterface's recalcAdjacency() method to figure out where to draw dotted transition lines - """ - - self.transitionFaces = self.rfi.recalcAdjacency() # This is just a list of faces to draw dotted lines on - - #self.drawPanel.Refresh() - - self.needsAdjacencyRecalc = False - - def getProjectDir(self): - """ - Make sure we've saved our region file somewhere so that our project directory - and project name are defined. - """ - - if self.fileName is None: - wx.MessageBox("Please save first to give the project a name.", "Error", - style = wx.OK | wx.ICON_ERROR) - self.doSave() - if self.fileName is None: - # If the save was cancelled, forget it - return None - - return self.projectDir - - def doSetBackground(self, event=None): - if self.getProjectDir() is None: - return - - if event == None: - fileName = os.path.join(self.projectDir, self.rfi.background) + self.viconListener.stop() + self.Destroy() + + def OnToggleVicon(self, event): # wxGlade: regionEditor. + # Switch Vicon streaming on or off based on state of toggle button + if self.toggleVicon.GetValue(): + self.viconListener.start() + + # TODO: Add while loop to wait for data to come in + # If it times out print message + # If data comes in, zoom out to ensure all markers seen else: - curDir = os.getcwd() - fileName = wx.FileSelector("Import Background", - flags = wx.OPEN | wx.FILE_MUST_EXIST) - if fileName == "": return - fileName = os.path.join(os.getcwd(), fileName) - - bitmap = wx.Bitmap(fileName) - if not bitmap.Ok(): - wx.MessageBox("Cannot import image from file %s" % (fileName), "Error", - style = wx.OK | wx.ICON_ERROR, parent=self) - return - - # If this is a new background and it loaded successfully, now copy file to project directory - if event != None and not os.path.exists(os.path.join(self.projectDir, os.path.basename(fileName))): - shutil.copy(fileName, self.projectDir) - - fileName = os.path.basename(fileName) + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + + def OnButtonCamera(self, event): # wxGlade: regionEditor. + print "Camera not yet implemented" + # TODO + event.Skip() + + def OnToggleSquare(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleSquare) + + def OnTogglePoly(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.togglePoly) + + def OnToggleDim(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleDim) + + def OnToggleFeedback(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleFeedback) + if self.toggleFeedback.GetValue(): + self.dlgFeedback = FeedbackDialog(self) + self.dlgFeedback.ShowModal() + elif self.dlgFeedback: + self.dlgFeedback.OnClose(None) + + def OnButtonCal(self, event): # wxGlade: regionEditor. + # TODO + print "Calibration not yet implemented" + self.ResetMapToggles() - self.backgroundImage = bitmap - self.rfi.background = fileName - if event != None: - self.dirty = True - self._adjustMenus() - - currentWidth = self.GetSize().GetWidth() - currentHeight = self.GetSize().GetHeight() - newWidth = bitmap.GetWidth() + 100 - newHeight = bitmap.GetHeight() + 100 - displayHeight = wx.GetDisplaySize().GetHeight() - 100 - displayWidth = wx.GetDisplaySize().GetWidth() - 100 - - if newWidth > currentWidth: - currentWidth = newWidth - if newHeight > currentHeight: - currentHeight = newHeight - if currentHeight > displayHeight: - currentHeight = displayHeight - if currentWidth > displayWidth: - currentWidth = displayWidth - self.SetSize(wx.Size(currentWidth, currentHeight)) - self.Centre() - - self.drawPanel.Refresh() + def OnMenuNew(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuNew' not implemented" + event.Skip() - - def doSave(self, event=None): - """ Respond to the "Save" menu command. - """ - if self.fileName != None: - self.saveContents() + def OnMenuOpen(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuOpen' not implemented" + event.Skip() + + def OnMenuSave(self, event): # wxGlade: regionEditor. + """Save to file that has already been used.""" + if self.fileName: + f = open(self.fileName, 'w') + f.write("# This is a region definition file for the LTLMoP " + \ + "toolkit.\n# Format details are described at the " + \ + "beginning of each section below.\n# Note that all values " + \ + "are separated by *tabs*.\n\nBackground: # Relative path " + \ + "of background image file\n") + f.write("None\n\n") # TODO: Support for background images + f.write("Obstacles: # Indices of regions to treat as obstacles\n") + f.write("\n\n") # TODO: Support for obstacles + f.write("Regions: # Name {ColorR ColorG ColorB} " + \ + "[(x1 y1) (x2 y2) ...]\n") + for reg in self.regions: + f.write(str(reg) + "\n") + f.write("\n") + f.write("Thumbnail: # Relative path of image file that has " + \ + "region shapes overlayed on background image\n") + f.write("None\n\n") # TODO: Save png thumbnail + f.write("Transitions: # Region1Idx Region2Idx " + \ + "[(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) " + \ + "...]\n") + for iAdj in range(len(self.adjacent)): + for jAdj, adjList in enumerate(self.adjacent[iAdj]): + if iAdj != jAdj and adjList: + line = "%d\t%d\t[" % (iAdj, jAdj) + for kAdj, adj in enumerate(adjList): + line += "(%d\t%d)" % adj + if kAdj < len(adjList) - 1: + line += "\t" + line += "]\n" + f.write(line) + f.close() else: - self.doSaveAs(event) - + self.OnMenuSaveAs(None) + + def OnMenuSaveAs(self, event): # wxGlade: regionEditor. + dialogSave = wx.FileDialog(self, message="Save File As", \ + defaultDir=sys.path[0], \ + defaultFile=self.fileName.split('\\').pop(), \ + wildcard="*.regions", style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT) + # Hit Save and confirmed overwrite if necessary + if dialogSave.ShowModal() == wx.ID_OK: + self.fileName = dialogSave.GetPath() + self.OnMenuSave(None) + dialogSave.Destroy() + + def OnMenuExit(self, event): # wxGlade: regionEditor. + self.OnClose(None) + + def OnMenuUndo(self, event): # wxGlade: regionEditor. + """Revert the most recent undoable change.""" + # Currently drawing polygon + # Note that this is not a redoable action by design + if self.polyVerts: + self.polyVerts = [] + self.polySnaps = [] + self.RedrawCanvas() + # Other undoable changes exist + elif self.undoActions: + action = self.undoActions.pop() + # Creation action + if not action.oldState: + # Single region creation + if isinstance(action.newState, Region): + self.regions.remove(action.newState) + # Map load from blank canvas + if isinstance(action.newState, list): + self.regions = [] + # TODO: Background image load from blank + # Deletion action + if not action.newState: + # Single region deletion + if isinstance(action.oldState, Region): + self.regions.append(action.oldState) + # Multiple region deletion or map clear + if isinstance(action.oldState, list): + self.regions.extend(action.oldState) + # TODO: Background image clear + # Modification action + else: + # Single region modification + if isinstance(action.oldState, Region): + idx = self.regions.index(action.newState) + self.regions[idx] = action.oldState + # Map load from non-blank canvas + if isinstance(action.oldState, list): + self.regions = action.oldState + # TODO: Background image load from other image + self.redoActions.append(action) + # TODO: if not self.undoActions: disable self.menuUndo + # TODO: enable self.menuRedo + self.RedrawCanvas() + + def OnMenuRedo(self, event): # wxGlade: regionEditor. + """Reapply most recently undone action.""" + # Redoable actions exist + if self.redoActions: + action = self.redoActions.pop() + # Creation action + if not action.oldState: + # Single region creation + if isinstance(action.newState, Region): + self.regions.append(action.newState) + # Map load from blank canvas + if isinstance(action.newState, list): + self.regions = action.newState + # TODO: Background image load from blank + # Deletion action + if not action.newState: + # Single region deletion + if isinstance(action.oldState, Region): + self.regions.remove(action.oldState) + # Multiple region deletion or map clear + if isinstance(action.oldState, list): + for reg in action.oldState: + self.regions.remove(reg) + # TODO: Background image clear + # Modification action + else: + # Single region modification + if isinstance(action.oldState, Region): + idx = self.regions.index(action.oldState) + self.regions[idx] = action.newState + # Map load from non-blank canvas + if isinstance(action.oldState, list): + self.regions = action.newState + # TODO: Background image load from other image + self.undoActions.append(action) + # TODO: if not self.redoActions: disable self.menuRedo + # TODO: enable self.menuUndo + self.RedrawCanvas() + + def OnMenuAutobound(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuAutobound' not implemented" + event.Skip() + + def OnMenuRect(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuRect' not implemented" + event.Skip() + + def OnMenuPoly(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuPoly' not implemented" + event.Skip() + + def OnMenuAddPoint(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuAddPoint' not implemented" + event.Skip() + + def OnMenuRemPoint(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuRemPoint' not implemented" + event.Skip() + + def OnMenuMarkers(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuMarkers' not implemented" + event.Skip() + + def OnMenuMarkersClear(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuMarkersClear' not implemented" + event.Skip() + + def OnMenuCamera(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuCamera' not implemented" + event.Skip() + + def OnMenuImageImport(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuImageImport' not implemented" + event.Skip() + + def OnMenuImageClear(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuImageClear' not implemented" + event.Skip() + + def OnMenuAbout(self, event): # wxGlade: regionEditor. + print "About not yet implemented" + event.Skip() + + def OnMouseLeftDown(self, event): + """Save the left click point so it can be used later.""" + self.leftClickPt, iReg, iPt, iEd = \ + self.SnapPoint(self.Pix2Map(event.GetPosition())) + + def OnMouseLeftUp(self, event): + """Perform appropriate action based on current mode of operation.""" + # Get click position + ptPix = event.GetPosition() + pt, iReg, iPt, iEd = self.SnapPoint(self.Pix2Map(ptPix)) + + # Creating a rectangular region + if self.toggleSquare.GetValue(): + # Making the second corner of rectangle + if self.polyVerts: + # Snap vertices to regions as necessary, not to Vicon + # This may result in a non-square region, but may be preferable + x0 = self.polyVerts[0].x + y0 = self.polyVerts[0].y + pt1, iReg1, iPt1, iEd1, snapped1 = \ + self.SnapRegions(Point(x0, pt.y), False) + pt3, iReg3, iPt3, iEd3, snapped3 = \ + self.SnapRegions(Point(pt.x, y0), False) + # Move clicked points if other vertices snap and they don't + if snapped1: + if iReg == -1: + pt = Point(pt.x, pt1.y) + if self.polySnaps[0][0] == -1: + self.polyVerts[0] = Point(pt1.x, self.polyVerts[0].y) + if snapped3: + if iReg == -1: + pt = Point(pt3.x, pt.y) + if self.polySnaps[0][0] == -1: + self.polyVerts[0] = Point(self.polyVerts[0].x, pt3.y) + self.polyVerts.append(pt1) + self.polyVerts.append(pt) + self.polyVerts.append(pt3) + self.polySnaps.append((iReg1, iPt1, iEd1)) + self.polySnaps.append((iReg, iPt, iEd)) + self.polySnaps.append((iReg3, iPt3, iEd3)) + # Create a square between previous click and new click + self.CreateRegion() + # Making the first corner of rectangle + else: + # Save point as first corner of square + self.polyVerts.append(pt) + self.polySnaps.append((iReg, iPt, iEd)) + + # Creating a polygonal region + elif self.togglePoly.GetValue(): + # Closing the polygon to create a region + if self.polyVerts and len(self.polyVerts) > 2 and \ + pt == self.polyVerts[0]: + self.CreateRegion() + # New point distinct from others + elif not pt in self.polyVerts: + self.polyVerts.append(pt) + self.polySnaps.append((iReg, iPt, iEd)) + # Plot line between last two points + if len(self.polyVerts) > 1: + x1pix, y1pix = self.Map2Pix(self.polyVerts[-2]) + x2pix, y2pix = self.Map2Pix(pt) + dc = wx.WindowDC(self.canvas) + dc.DrawLine(x1pix, y1pix, x2pix, y2pix) + + # Dimensioning region edge + elif self.toggleDim.GetValue(): + # First point on region to be clicked + if not self.polyVerts and iReg != -1 and iPt != -1: + # Store region and point indeces + self.polyVerts = (iReg, iPt) + # Second unique point to be clicked + elif iReg != -1 and iPt != -1 and (iReg, iPt) != self.polyVerts: + # Request dimension + currDist = self.regions[iReg].verts[iPt].Dist(self.regions[\ + self.polyVerts[0]].verts[self.polyVerts[1]]) + dimDlg = wx.TextEntryDialog(self, \ + "Current Length: %.3f" % currDist, caption='Dimension') + if dimDlg.ShowModal() == wx.ID_OK: + # Check for valid dimension (allow negative values) + try: + dim = float(dimDlg.GetValue()) + except ValueError: + dimDlg.Destroy() + return + dimDlg.Destroy() + + # Move second point along same line to specified distance + oldRegion = copy.deepcopy(self.regions[iReg]) + pt0 = self.regions[self.polyVerts[0]].verts[self.polyVerts[1]] + signx = 1.0 + signy = 1.0 + # Vertical line case + if pt0.x == pt.x: + if pt0.y > pt.y: + signy = -1.0 + dx = 0.0 + dy = signy * (dim - pt.Dist(pt0)) + # Horizontal and normal line cases + else: + if pt0.x > pt.x: + signx = -1.0 + if pt0.y > pt.y: + signy = -1.0 + slope = (pt.y - pt0.y) / (pt.x - pt0.x) + dx = signx * (dim - pt.Dist(pt0)) / \ + math.sqrt(1 + slope ** 2) + dy = slope * dx + self.regions[iReg].verts[iPt] = \ + self.regions[iReg].verts[iPt] + Point(dx, dy) + self.AddToUndo(Action(oldRegion, self.regions[iReg])) + self.polyVerts = [] + self.RedrawCanvas() + + # Panning the map view + elif pt.Dist(self.leftClickPt) > self.tolerance: + downClickPix = self.Map2Pix(self.leftClickPt) + self.canvasOffset = Point(self.canvasScale.x * \ + (downClickPix[0] - ptPix[0]) + self.canvasOffset.x, \ + self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ + self.canvasOffset.y) + self.RedrawCanvas() + + # TODO: May need to handle all mouse events in one huge window + # to avoid having the double click interfere with regular clicking + #def OnMouseLeftDClick(self, event): + # """Perform action based on current mode of operation.""" + # # Creating a polygonal region + # if self.togglePoly.GetValue() and self.polyVerts and \ + # len(self.polyVerts) > 2: + # self.CreateRegion() + + def OnMouseRightDown(self, event): + """Save the right click point so it can be used later.""" + self.rightClickPt, iReg, iPt, iEd = \ + self.SnapPoint(self.Pix2Map(event.GetPosition())) + + def OnMouseRightUp(self, event): + # Check if in region creation or dimensioning mode + if self.toggleSquare.GetValue() or self.togglePoly.GetValue() or \ + self.toggleDim.GetValue(): + self.ResetMapToggles() + # TODO: else: open some kind of right-click menu at right-click point + + def OnMouseWheel(self, event): + """Zoom on the map canvas.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.canvasOffset = Point(float(ptPix[0]) * self.canvasScale.x * \ + (1 - scaler) + self.canvasOffset.x, float(ptPix[1]) * \ + self.canvasScale.y * (1 - scaler) + self.canvasOffset.y) + self.canvasScale = self.canvasScale * scaler + self.RedrawCanvas() + + def OnKeyDown(self, event): + keycode = event.GetKeyCode() + + # Backspace/Delete - Removes last set point during region creation + if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ + self.polyVerts: + if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): + self.polyVerts.pop() + self.polySnaps.pop() + self.RedrawCanvas() + elif self.toggleDim.GetValue(): + self.polyVerts = [] + + # Escape - Stops region/dimension creation + elif keycode == wx.WXK_ESCAPE and (self.toggleSquare.GetValue() or \ + self.togglePoly.GetValue() or self.toggleDim.GetValue()): + self.ResetMapToggles() + + # Ctrl+n - New + if event.CmdDown() and keycode == 78: + self.OnMenuNew(None) + + # Ctrl+o - Open + if event.CmdDown() and keycode == 79: + self.OnMenuOpen(None) + + # Ctrl+s - Save + if event.CmdDown() and keycode == 83: + self.OnMenuSave(None) + + # Ctrl+q - Quit + if event.CmdDown() and keycode == 81: + self.OnMenuExit(None) + + # Ctrl+z - Undo + elif event.CmdDown() and keycode == 90: + self.OnMenuUndo(None) + + # Ctrl+y - Redo + elif event.CmdDown() and keycode == 89: + self.OnMenuRedo(None) - def doSaveAs(self, event): - """ Respond to the "Save As" menu command. - """ - if self.fileName == None: - default = "" + # Pass event on so other key combinations still work else: - default = self.fileName - - curDir = os.getcwd() - fileName = wx.FileSelector("Save File As", "Saving", - default_filename=default, - default_extension="regions", - wildcard="*.regions", - flags = wx.SAVE | wx.OVERWRITE_PROMPT) - if fileName == "": return # User cancelled. - fileName = os.path.join(os.getcwd(), fileName) - os.chdir(curDir) - - title = os.path.basename(fileName) - self.SetTitle("Region Editor - " + title) - - self.fileName = fileName - self.saveContents() - - self.projectName = os.path.splitext(title)[0] - self.projectDir = os.path.dirname(os.path.abspath(self.fileName)) - - - def doRevert(self, event): - """ Respond to the "Revert" menu command. - """ - if not self.dirty: return - - if wx.MessageBox("Discard changes made to this document?", "Confirm", - style = wx.OK | wx.CANCEL | wx.ICON_QUESTION, - parent=self) == wx.CANCEL: return - self.loadContents() - - - def doExit(self, event): - """ Respond to the "Quit" menu command. - """ - global _docList, _app - for doc in _docList: - if not doc.dirty: continue - doc.Raise() - if not doc.askIfUserWantsToSave("quitting"): return - _docList.remove(doc) - doc.Destroy() - - _app.ExitMainLoop() - - - def doUndo(self, event): - """ Respond to the "Undo" menu command. - """ - if self.undoInfo == None: return - - undoData = self.undoInfo - self._saveUndoInfo() # For undoing the undo... - - self.rfi.regions = [] - - for type, data in undoData["contents"]: - obj = DrawableRegion(type) - obj.setData(data) - self.rfi.regions.append(obj) - - self.selection = [] - for i in undoData["selection"]: - self.selection.append(self.rfi.regions[i]) + event.Skip() - self.dirty = True - self.needsAdjacencyRecalc = True - self.drawPanel.Refresh() - self._adjustMenus() + def OnEnterWindow(self, event): + """Set the focus to the canvas to enable zooming.""" + self.canvas.SetFocus() + def OnLeaveWindow(self, event): + """Unset the focus from the canvas to disable zooming.""" + self.SetFocus() - def doSelectAll(self, event): - """ Respond to the "Select All" menu command. - """ - self.selectAll() + def OnCanvasPaint(self, event): + """Redraw the contents of the canvas panel.""" + # Set up to draw + dc = wx.PaintDC(self.canvas) + self.RedrawCanvas(dc) + def RedrawCanvas(self, dc=None): + """Redraw the contents of the canvas panel. + Callable from outside or inside EVT_PAINT handler. - def doDuplicate(self, event): - """ Respond to the "Duplicate" menu command. - """ - self._saveUndoInfo() - - objs = [] - for obj in self.selection: - newObj = DrawableRegion(obj.type) - name = newObj.name - newObj.setData(obj.getData()) - newObj.position = copy.deepcopy(obj.position) - newObj.name = name - objs.append(newObj) - - self.rfi.regions = objs + self.rfi.regions - - self.selectMany(objs) - self.dirty = True - self.needsAdjacencyRecalc = True - self._adjustMenus() - - def doEditRegion(self, event=None): - """ Respond to the "Edit Region" menu command. + dc - Device context object for drawing to canvas. """ - if len(self.selection) != 1: return + # Clear canvas + self.canvas.ClearBackground() - obj = self.selection[0] + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) - if obj.type not in [reg_RECT, reg_POLY]: return + # Redraw all markers + self.DrawGrid(dc) + self.DrawMarkers(self.markerPoses, dc) - editor = EditRegionDialog(self, "Edit Region Name") - editor.objectToDialog(obj) - editor.Centre() - - while 1: - if editor.ShowModal() == wx.ID_CANCEL: - editor.Destroy() - return - - # Check to make sure we aren't trying to change to the name of another existing region - if editor.textCtrl.GetValue() == obj.name or editor.textCtrl.GetValue() not in [r.name for r in self.rfi.regions]: - break - - wx.MessageBox("Region with name \"%s\" already exists." % (editor.textCtrl.GetValue()), "Error", - style = wx.OK | wx.ICON_ERROR) - - self._saveUndoInfo() - editor.dialogToObject(obj) - editor.Destroy() - - self.dirty = True - self.drawPanel.Refresh() - self._adjustMenus() + # Redraw all regions + for region in self.regions: + self.DrawRegion(region, dc) - - def doDelete(self, event=None): - """ Respond to the "Delete" menu command. - """ - self._saveUndoInfo() - - for obj in self.selection: - self.rfi.regions.remove(obj) - del obj - self.deselectAll() - self.dirty = True - self.needsAdjacencyRecalc = True - self._adjustMenus() - - - - def doChooseSelectTool(self, event=None): - """ Respond to the "Select Tool" menu command. - """ - self.drawPanel.SetCursor(wx.STANDARD_CURSOR) - self._setCurrentTool(self.selectIcon) - - - def doChooseRectTool(self, event=None): - """ Respond to the "Rect Tool" menu command. - """ - self.drawPanel.SetCursor(wx.CROSS_CURSOR) - self._setCurrentTool(self.rectIcon) - - - def doChoosePolyTool(self, event=None): - """ Respond to the "Poly Tool" menu command. - """ - self.drawPanel.SetCursor(wx.CROSS_CURSOR) - self._setCurrentTool(self.polyIcon) - - - def doChooseAddPtTool(self, event=None): - """ Respond to the "Poly Tool" menu command. - """ - self.drawPanel.SetCursor(wx.CROSS_CURSOR) - self._setCurrentTool(self.addPtIcon) - - - def doChooseDelPtTool(self, event=None): - """ Respond to the "Poly Tool" menu command. - """ - self.drawPanel.SetCursor(wx.CROSS_CURSOR) - self._setCurrentTool(self.delPtIcon) - - - def doChooseCalibPtTool(self, event=None): - """ Respond to the "Toggle Calibration Point Tool" menu command. - """ - self.drawPanel.SetCursor(wx.CROSS_CURSOR) - self._setCurrentTool(self.calibPtIcon) - - def doShowAbout(self, event): - """ Respond to the "About Region Editor" menu command. - """ - dialog = wx.Dialog(self, -1, "About Region Editor") # , - #style=wx.DIALOG_MODAL | wx.STAY_ON_TOP) - - panel = wx.Panel(dialog, -1) - - panelSizer = wx.BoxSizer(wx.VERTICAL) - - boldFont = wx.Font(panel.GetFont().GetPointSize(), - panel.GetFont().GetFamily(), - wx.NORMAL, wx.BOLD) - - logo = wx.StaticBitmap(panel, -1, wx.Bitmap("images/logo.bmp", - wx.BITMAP_TYPE_BMP)) - - lab1 = wx.StaticText(panel, -1, "LTLMoP Region Editor") - lab1.SetFont(wx.Font(24, boldFont.GetFamily(), wx.ITALIC, wx.BOLD)) - lab1.SetSize(lab1.GetBestSize()) - - imageSizer = wx.BoxSizer(wx.HORIZONTAL) - imageSizer.Add(logo, 0, wx.ALL | wx.ALIGN_CENTRE_VERTICAL, 5) - imageSizer.Add(lab1, 0, wx.ALL | wx.ALIGN_CENTRE_VERTICAL, 5) - - lab2 = wx.StaticText(panel, -1, "A simple polygonal region editing " + \ - "tool.") - lab2.SetFont(boldFont) - lab2.SetSize(lab2.GetBestSize()) - - lab3 = wx.StaticText(panel, -1, "Region Editor is completely free " + \ - "software; please") - lab3.SetFont(boldFont) - lab3.SetSize(lab3.GetBestSize()) - - lab4 = wx.StaticText(panel, -1, "feel free to adapt or use this " + \ - "in any way you like.") - lab4.SetFont(boldFont) - lab4.SetSize(lab4.GetBestSize()) - - lab5 = wx.StaticText(panel, -1, "Based on pySketch by Erik Westra " + \ - "(ewestra@wave.co.nz)") - lab5.SetFont(boldFont) - lab5.SetSize(lab5.GetBestSize()) - - lab6 = wx.StaticText(panel, -1, "Adapted by Cameron Finucane " + \ - "(cameronp@seas.upenn.edu)") - lab6.SetFont(boldFont) - lab6.SetSize(lab6.GetBestSize()) - - btnOK = wx.Button(panel, wx.ID_OK, "OK") - - panelSizer.Add(imageSizer, 0, wx.ALIGN_CENTRE) - panelSizer.Add((10, 10)) # Spacer. - panelSizer.Add(lab2, 0, wx.ALIGN_CENTRE) - panelSizer.Add((10, 10)) # Spacer. - panelSizer.Add(lab3, 0, wx.ALIGN_CENTRE) - panelSizer.Add(lab4, 0, wx.ALIGN_CENTRE) - panelSizer.Add((10, 10)) # Spacer. - panelSizer.Add(lab5, 0, wx.ALIGN_CENTRE) - panelSizer.Add(lab6, 0, wx.ALIGN_CENTRE) - panelSizer.Add((10, 10)) # Spacer. - panelSizer.Add(btnOK, 0, wx.ALL | wx.ALIGN_CENTRE, 5) - - panel.SetAutoLayout(True) - panel.SetSizer(panelSizer) - panelSizer.Fit(panel) - - topSizer = wx.BoxSizer(wx.HORIZONTAL) - topSizer.Add(panel, 0, wx.ALL, 10) - - dialog.SetAutoLayout(True) - dialog.SetSizer(topSizer) - topSizer.Fit(dialog) - - dialog.Centre() - - btn = dialog.ShowModal() - dialog.Destroy() - - # ============================= - # == Object Creation Methods == - # ============================= - def createPoly(self, points): - """ Create poly object. - """ - self._saveUndoInfo() - - obj = DrawableRegion(reg_POLY, - points=points) - self.rfi.setToDefaultName(obj) - obj.recalcBoundingBox() - self.checkSubfaces(obj) - self.rfi.regions.insert(0, obj) - self.dirty = True - self.needsAdjacencyRecalc = True + # Redraw all transition face indicators + # Lower triangular matrix only + for iReg in range(1, len(self.adjacent)): + self.DrawAdjacencies(iReg, dc) + + # Redraw partial region + if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): + for iVert in range(len(self.polyVerts) - 1): + ptPix1 = self.Map2Pix(self.polyVerts[iVert]) + ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) + dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) + + def DrawGrid(self, dc=None): + """Draw the axes and grid on the map canvas. + + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw axes + xOff = self.canvasOffset.x + yOff = self.canvasOffset.y + xPixOff = int(-xOff / self.canvasScale.x) + yPixOff = int(-yOff / self.canvasScale.y) + colLim, rowLim = self.canvas.GetSize() + dc.DrawLine(0, yPixOff, colLim, yPixOff) + dc.DrawLine(xPixOff, 0, xPixOff, rowLim) + + # TODO: Draw grid/ticks + + def DrawMarkers(self, poses, dc=None): + """Draw markers at specified global positions. + + poses - List of tuples containing positions of markers in meters [(x, y), ...] + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw each marker + for pose in poses: + posePix = self.Map2Pix(pose) + dc.DrawCircle(posePix[0], posePix[1], 5) + + def DrawRegion(self, region, dc=None): + """Draw a single region. + + region - Instance of Region class, contains information about the region. + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw region + vertsPix = [] + for vert in region.verts: + vertsPix.append(self.Map2Pix(vert)) + dc.DrawPolygon(vertsPix) + + def DrawAdjacencies(self, iReg, dc=None): + """Draw lines to show adjacent region faces for one region. + Uses self.regions and self.adjacent. - if obj.getDirection() == dir_CCW: - obj.pointArray.reverse() - - self.doChooseSelectTool() - self.lastCursor = self.drawPanel.GetCursor() - self.select(obj) - - - def createRect(self, x, y, width, height): - """ Create a new rectangle object at the given position and size. - """ - self._saveUndoInfo() - - obj = DrawableRegion(reg_RECT, position=wx.Point(x, y), - size=wx.Size(width, height)) - self.rfi.setToDefaultName(obj) - self.checkSubfaces(obj) - self.rfi.regions.insert(0, obj) - self.dirty = True - self.needsAdjacencyRecalc = True - - self.doChooseSelectTool() - self.lastCursor = self.drawPanel.GetCursor() - self.select(obj) - - # ======================= - # == Selection Methods == - # ======================= - - def selectAll(self): - """ Select every Region in our document. - """ - self.selection = [] - for obj in self.rfi.regions: - self.selection.append(obj) - self.drawPanel.Refresh() - self._adjustMenus() - - - def deselectAll(self): - """ Deselect every Region in our document. - """ - self.selection = [] - self.drawPanel.Refresh() - self._adjustMenus() - - - def select(self, obj): - """ Select the given Region within our document. - """ - self.selection = [obj] - self.drawPanel.Refresh() - self._adjustMenus() - - - def selectMany(self, objs): - """ Select the given list of Regions. - """ - self.selection = objs - self.drawPanel.Refresh() - self._adjustMenus() - - - def selectByRectangle(self, x, y, width, height): - """ Select every Region in the given rectangular region. - """ - self.selection = [] - for obj in self.rfi.regions: - if obj.objectWithinRect(x, y, width, height): - self.selection.append(obj) - self.drawPanel.Refresh() - self._adjustMenus() - - # ====================== - # == File I/O Methods == - # ====================== - - def loadContents(self): - """ Load the contents of our document into memory. - Note that the drawing order of regions is last to first. - """ - if not self.rfi.readFile(self.fileName): - wx.MessageBox("Cannot open region file %s" % (self.fileName), "Error", - style = wx.OK | wx.ICON_ERROR) - return False - - self.selection = [] - - if self.rfi.background != "None": - self.doSetBackground() - - # Convert from Regions to DrawableRegions - for i, region in enumerate(self.rfi.regions): - obj = DrawableRegion(region.type) - obj.setData(region.getData()) - self.rfi.regions[i] = obj - del region - - self.dirty = False - self.undoInfo = None - self.needsAdjacencyRecalc = True - - self.doChooseSelectTool() - - # TODO: Assuming the regions don't change, we only really need to calculate this once - (leftMargin, topMargin, rightExtent, downExtent) = self.rfi.getBoundingBox() - - W = rightExtent + 2*leftMargin - H = downExtent + 2*topMargin - - self.drawPanel.SetVirtualSize((max(PAGE_WIDTH, W), max(PAGE_HEIGHT, H))) - - self.drawPanel.Refresh() - self._adjustMenus() - - return True - - def saveContents(self): - """ Save the contents of our document to disk. - """ - - self.rfi.writeFile(self.fileName) - - self.dirty = False - self._adjustMenus() - - - def askIfUserWantsToSave(self, action): - """ Give the user the opportunity to save the current document. - - 'action' is a string describing the action about to be taken. If - the user wants to save the document, it is saved immediately. If - the user cancels, we return False. - """ - if not self.dirty: return True # Nothing to do. - - response = wx.MessageBox("Save changes before " + action + "?", - "Confirm", wx.YES_NO | wx.CANCEL, self) - - if response == wx.YES: - if self.fileName == None: - fileName = wx.FileSelector("Save File As", "Saving", - default_extension="psk", - wildcard="*.psk", - flags = wx.SAVE | wx.OVERWRITE_PROMPT) - if fileName == "": return False # User cancelled. - self.fileName = fileName - - self.saveContents() - return True - elif response == wx.NO: - return True # User doesn't want changes saved. - elif response == wx.CANCEL: - return False # User cancelled. - - # ===================== - # == Private Methods == - # ===================== - - def _adjustMenus(self): - """ Adjust our menus and toolbar to reflect the current state of the - world. - """ - canSave = self.dirty - canRevert = (self.fileName != None) and self.dirty - canUndo = self.undoInfo != None - selection = len(self.selection) > 0 - onlyOne = len(self.selection) == 1 - front = onlyOne and (self.selection[0] == self.rfi.regions[0]) - back = onlyOne and (self.selection[0] == self.rfi.regions[-1]) - - # Enable/disable our menu items. - - self.fileMenu.Enable(wx.ID_SAVE, canSave) - self.fileMenu.Enable(wx.ID_REVERT, canRevert) - - self.editMenu.Enable(menu_UNDO, canUndo) - self.editMenu.Enable(menu_EDIT_REGION, onlyOne) - self.editMenu.Enable(menu_DUPLICATE, selection) - self.editMenu.Enable(menu_DELETE, selection) - - self.toolsMenu.Check(menu_SELECT, self.curTool == self.selectIcon) - self.toolsMenu.Check(menu_RECT, self.curTool == self.rectIcon) - self.toolsMenu.Check(menu_POLY, self.curTool == self.polyIcon) - self.toolsMenu.Check(menu_ADD_PT, self.curTool == self.addPtIcon) - self.toolsMenu.Check(menu_DEL_PT, self.curTool == self.delPtIcon) - self.toolsMenu.Check(menu_CALIB_PT, self.curTool == self.calibPtIcon) - - # Enable/disable our toolbar icons. - - self.toolbar.EnableTool(wx.ID_NEW, True) - self.toolbar.EnableTool(wx.ID_OPEN, True) - self.toolbar.EnableTool(wx.ID_SAVE, canSave) - self.toolbar.EnableTool(menu_UNDO, canUndo) - self.toolbar.EnableTool(menu_DUPLICATE, selection) - - - def _setCurrentTool(self, newToolIcon): - """ Set the currently selected tool. - """ - if self.curTool != None: - self.curTool.deselect() - - self.newPoints = [] - newToolIcon.select() - self.curTool = newToolIcon - - self._adjustMenus() - self.mouseMode = mouse_NONE - self.sb.SetStatusText("", 1) - self.drawPanel.Refresh() - - - def _saveUndoInfo(self): - """ Remember the current state of the document, to allow for undo. - - We make a copy of the document's contents, so that we can return to - the previous contents if the user does something and then wants to - undo the operation. - """ - savedContents = [] - for obj in self.rfi.regions: - savedContents.append([obj.type, obj.getData()]) - - savedSelection = [] - for i in range(len(self.rfi.regions)): - if self.rfi.regions[i] in self.selection: - savedSelection.append(i) - - self.undoInfo = {"contents" : savedContents, - "selection" : savedSelection} - - - def _resizeObject(self, obj, anchorPt, oldPt, newPt): - """ Resize the given object. - - 'anchorPt' is the unchanging corner of the object, while the - opposite corner has been resized. 'oldPt' are the current - coordinates for this corner, while 'newPt' are the new coordinates. - The object should fit within the given dimensions, though if the - new point is less than the anchor point the object will need to be - moved as well as resized, to avoid giving it a negative size. - """ - self._saveUndoInfo() - - if obj.type == reg_POLY: - for index, pt in enumerate(obj.getPoints()): - if pt == oldPt: - obj.pointArray[index] = obj.pointArray[index] + (newPt - oldPt) - break - - obj.recalcBoundingBox() - else: - topLeft = wx.Point(min(anchorPt.x, newPt.x), - min(anchorPt.y, newPt.y)) - botRight = wx.Point(max(anchorPt.x, newPt.x), - max(anchorPt.y, newPt.y)) - - newWidth = botRight.x - topLeft.x - newHeight = botRight.y - topLeft.y - - # Finally, adjust the bounds of the object to match the new dimensions. + iReg - Int, index of region of interest in self.regions. + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside other drawing methods + if not dc: + dc = wx.WindowDC(self.canvas) + oldPen = dc.GetPen() + dc.SetPen(wx.Pen(wx.Colour(255, 0, 0, 100), 3, wx.SHORT_DASH)) + + # Iterate adjacency matrix looking for shared faces for one region + # Only need to iterate through lower triangle (not counting diagonal) + # since the matrix is "symmetric" and diagonal is just region to itself + for jReg in range(iReg): + for iREdge1, iREdge2 in self.adjacent[iReg][jReg]: + # Not last edge in region + pt1 = self.regions[iReg].verts[iREdge1] + if iREdge1 < len(self.regions[iReg].verts) - 1: + pt2 = self.regions[iReg].verts[iREdge1 + 1] + # Last edge in region + else: + pt2 = self.regions[iReg].verts[0] + pt1Pix = self.Map2Pix(pt1) + pt2Pix = self.Map2Pix(pt2) + dc.DrawLine(pt1Pix[0], pt1Pix[1], pt2Pix[0], pt2Pix[1]) + dc.SetPen(oldPen) # TODO: Maybe can remove if everything sets own pen - obj.position = topLeft - obj.size = wx.Size(botRight.x - topLeft.x, botRight.y - topLeft.y) - - self.checkSubfaces(obj) - - self.drawPanel.Refresh() - self.dirty = True - self.needsAdjacencyRecalc = True - self._adjustMenus() - - - def _moveObjects(self, offsetX, offsetY): - """ Move the currently selected object(s) by the given offset. - """ - self._saveUndoInfo() - - for obj in self.selection: - pos = obj.position - pos.x = pos.x + offsetX - pos.y = pos.y + offsetY - obj.position = pos - - self.drawPanel.Refresh() - self.dirty = True - self.needsAdjacencyRecalc = True - self._adjustMenus() - - def _getEventCoordinates(self, event, snap=False): - """ Return the coordinates associated with the given mouse event. - - The coordinates have to be adjusted to allow for the current scroll - position. - """ - if snap and self.snapCoords is not None: - # For resizing cases, because we don't care where you grabbed the handle - self.resizeOffsetX, self.resizeOffsetY = 0, 0 - return self.snapCoords - - originX, originY = self.drawPanel.GetViewStart() - unitX, unitY = self.drawPanel.GetScrollPixelsPerUnit() - return wx.Point(event.GetX() + (originX * unitX), - event.GetY() + (originY * unitY)) - - - - def _getObjectAndSelectionHandleAt(self, pt, boundFunc = None): - """ Return the object and selection handle at the given point. - - We draw selection handles (small rectangles) around the currently - selected object(s). If the given point is within one of the - selection handle rectangles, we return the associated object and a - code indicating which selection handle the point is in. If the - point isn't within any selection handle at all, we return the tuple - (None, handle_NONE). - """ - for obj in self.selection: - handle = obj.getSelectionHandleContainingPoint(pt.x, pt.y, boundFunc) - if handle != handle_NONE: - return obj, handle - - return None, handle_NONE - - - def _getObjectAt(self, pt): - """ Return the first object found which is at the given point. - """ - BOUNDARY_TOLERANCE = 2 - - for obj in self.rfi.regions: - # TODO: Do preliminary, less-expensive checking first - - if obj.name.lower() == "boundary": - # Special case for boundary: only react to clicks on perimeter - - # Check faces - for face in obj.getFaces(): - pta = wx.Point(*face[0]) - ptb = wx.Point(*face[1]) - [on_segment, d, pint] = pointLineIntersection(pta, ptb, pt) - if on_segment and d <= BOUNDARY_TOLERANCE: - return obj - else: - if obj.objectContainsPoint(pt.x, pt.y): - return obj - - return None - - - def _drawObjectOutline(self, offsetX, offsetY): - """ Draw an outline of the currently selected object. - - The selected object's outline is drawn at the object's position - plus the given offset. - - Note that the outline is drawn by *inverting* the window's - contents, so calling _drawObjectOutline twice in succession will - restore the window's contents back to what they were previously. - """ - if len(self.selection) == 0: return - - dc = wx.ClientDC(self.drawPanel) - self.drawPanel.PrepareDC(dc) - dc.BeginDrawing() - dc.SetPen(wx.BLACK_DASHED_PEN) - dc.SetBrush(wx.TRANSPARENT_BRUSH) - dc.SetLogicalFunction(wx.INVERT) - - for i in xrange(len(self.selection)): - position = self.selection[i].position - size = self.selection[i].size + def ResetMapToggles(self, toggleStay=None): + """Clear all the other map-feature toggle buttons. + Also resets region creation. + + toggleStay - Toggle button object to retain state. + """ + # Reset region creation and clear temporary lines + self.polyVerts = [] + self.polySnaps = [] + self.RedrawCanvas() + + # Turn off all toggles and revert specified one + if toggleStay: + state = toggleStay.GetValue() + self.toggleSquare.SetValue(False) + self.togglePoly.SetValue(False) + self.toggleDim.SetValue(False) + if toggleStay: + toggleStay.SetValue(state) + + def CreateRegion(self): + """Instantiate and create a region from, perform cleanup actions. + Use polyVerts and polyAdjEdges to make the region and find transitions. + """ + # Create region + region = Region(self.polyVerts) # TODO: Add name and color to regions + self.regions.append(region) + idxNewReg = len(self.regions) - 1 + # Add row and column to list of lists of lists representing adjacency + self.adjacent.append([[] for col in xrange(len(self.adjacent))]) + for row in self.adjacent: + row.append([]) + self.AddToUndo(Action(None, region)) + # TODO: Change Undo setup so that adjacency matrix can be added with + # regions in one undo step + + # Look for adjacent edges to other regions + # First add vertices in walls where another region vertex is + # Check new region against other regions + for iPt, (iReg, iRPoint, iREdge) in enumerate(self.polySnaps): + # Point snapped to the edge of another region + if iREdge != -1: + # Add point to other region and update old transitions + self.AddPointToRegion(self.polyVerts[iPt], iReg, iREdge) + # Track which point it is connected to + self.polySnaps[iPt] = (iReg, iREdge + 1, -1) + # Check other regions against new region + for iReg, otherReg in enumerate(self.regions): + for iPt, pt in enumerate(otherReg.verts): + pt, iRPoint, iREdge, snapped = \ + self.Snap1Region(region, pt, False) + # Other region vertex snapped to wall of new region + if iREdge != -1: + # Add point to new region and update old transitions + self.AddPointToRegion(pt, idxNewReg, iREdge) + # Track which point it is connected to + self.polySnaps.insert(iREdge + 1, (iReg, iPt, -1)) + + # Next look for adjacent edges and update transition matrix accordingly + for iSide in range(len(self.polySnaps)): + iReg1, iRPoint1, iREdge1 = self.polySnaps[iSide] + if iSide < len(self.polySnaps) - 1: + iReg2, iRPoint2, iREdge2 = self.polySnaps[iSide + 1] + else: + iReg2, iRPoint2, iREdge2 = self.polySnaps[0] + # Same region and adjacent points + if iReg1 != -1 and iReg1 == iReg2: + # TODO: Could be same point that is already shared by two or + # more regions. Need to check for this. + # Not last side in other region + if abs(iRPoint1 - iRPoint2) == 1: + iOtherRegSide = min(iRPoint1, iRPoint2) + self.adjacent[idxNewReg][iReg1].\ + append((iSide, iOtherRegSide)) + self.adjacent[iReg1][idxNewReg].\ + append((iOtherRegSide, iSide)) + # Last side in other region + elif (iRPoint1 == 0 and iRPoint2 == \ + len(self.regions[iReg2].verts) - 1) or \ + (iRPoint2 == 0 and iRPoint1 == \ + len(self.regions[iReg1].verts) - 1): + iOtherRegSide = len(self.regions[iReg1].verts) - 1 + self.adjacent[idxNewReg][iReg1].\ + append((iSide, iOtherRegSide)) + self.adjacent[iReg1][idxNewReg].\ + append((iOtherRegSide, iSide)) + + # Cleanup and draw + self.polyVerts = [] + self.polySnaps = [] + self.polyAdjEdges = [] + self.DrawRegion(region) + self.DrawAdjacencies(idxNewReg) + + def AddPointToRegion(self, pt, iReg, iEdge): + """Add a vertex to the region. + + pt - Point object, location of new vertex in map coordinates + iRegion - Int, index of region to modify + iEdge - Int, index of the edge to replace with edges to and from pt + """ + # Add point to other region + self.regions[iReg].verts.insert(iEdge + 1, pt) + # Update all transition edges + # Loop through all regions + for jReg in range(len(self.adjacent[iReg])): + # All transitioning faces from region to others + for kPair in range(len(self.adjacent[iReg][jReg])): + thisRegFace, otherRegFace = self.adjacent[iReg][jReg][kPair] + # Transition face has index greater than affected edge + if thisRegFace > iEdge: + self.adjacent[iReg][jReg][kPair] = \ + (thisRegFace + 1, otherRegFace) + # Transition face is the affected edge + elif thisRegFace == iEdge: + self.adjacent[iReg][jReg].\ + append((thisRegFace + 1, otherRegFace)) + # All transitioning faces from other regions to this one + for kPair in range(len(self.adjacent[jReg][iReg])): + otherRegFace, thisRegFace = self.adjacent[jReg][iReg][kPair] + # Transition face has index greater than affected edge + if thisRegFace > iEdge: + self.adjacent[jReg][iReg][kPair] = \ + (otherRegFace, thisRegFace + 1) + # Transition face is the affected edge + elif thisRegFace == iEdge: + self.adjacent[jReg][iReg].\ + append((otherRegFace, thisRegFace + 1)) + + def AddToUndo(self, action): + """Add specified action to the undo queue. + + action - Action object to be added + """ + # Note that this is only called when doing a new action, + # not when redoing since this clears the redo buffer + self.undoActions.append(action) + while len(self.undoActions) > self.unredoBufLen: + self.undoActions.popleft() + self.redoActions.clear() + # TODO: enable self.menuUndo + + def SnapPoint(self, pt): + """Snap the point to any nearby Vicon or region point. + + pt - Point object, map coordinates of point + returns - (snappedPt, idxRegion, idxRPoint, idxREdge) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + """ + # TODO: Make menubar checkbox to disable/enable snapto + # Check through all region points and edges first + # (since Vicon points may be moving around) + snapped = False + pt, idxRegion, idxRPoint, idxREdge, snapped = \ + self.SnapRegions(pt, snapped) + + # Check points in current region creation + # Only snap to vertices + # Don't count this for iRegion or iRPoint + pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped) + + # Check all Vicon points + pt, idxMarker, snapped = self.SnapVicon(pt, snapped) + + # Only return region indices, since they are usually all that matter + return pt, idxRegion, idxRPoint, idxREdge + + def SnapRegions(self, pt, snapped): + """Snap the point to any sufficiently "nearby" region vertex or wall. + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge + """ + idxRegion = -1 + idxRPoint = -1 + idxREdge = -1 + i = 0 # Region incrementer + while (not snapped) and i < len(self.regions): + pt, idxRPoint, idxREdge, snapped = \ + self.Snap1Region(self.regions[i], pt, snapped) + if snapped: + idxRegion = i + i += 1 + + return pt, idxRegion, idxRPoint, idxREdge, snapped - if self.selection[i].type == reg_POLY: - dc.DrawLines(self.selection[i].pointArray + [self.selection[i].pointArray[0]], - position.x + offsetX, position.y + offsetY) + def Snap1Region(self, region, pt, snapped): + """Snap the point to any sufficiently "nearby" region vertex or wall + in the specified region. + + region - Region object, region of interest + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge + """ + idxRPoint = -1 + idxREdge = -1 + # Check first point + chkPt = region.verts[0] + if (not snapped) and pt.Dist(chkPt) < self.tolerance: + pt = chkPt + snapped = True + idxRPoint = 0 + j = 1 # Region point incrementer + while (not snapped) and j < len(region.verts): + # Check next point + chkPt = region.verts[j] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + snapped = True + idxRPoint = j + # Check edge between previous and just-checked point else: - dc.DrawRectangle(position.x + offsetX, position.y + offsetY, - size.width, size.height) + p0 = region.verts[j - 1] + p1 = chkPt + chkPt = self.ProjPtOnLine(pt, p0, p1) + # Check that projected point is on finite line and close + if pt.Dist(chkPt) < self.tolerance and \ + chkPt.x <= max(p0.x, p1.x) and \ + chkPt.x >= min(p0.x, p1.x) and \ + chkPt.y <= max(p0.y, p1.y) and \ + chkPt.y >= min(p0.y, p1.y): + pt = chkPt + snapped = True + idxREdge = j - 1 + j += 1 + # Check last edge + if not snapped: + p0 = region.verts[j - 1] + p1 = region.verts[0] + chkPt = self.ProjPtOnLine(pt, p0, p1) + if pt.Dist(chkPt) < self.tolerance and \ + chkPt.x <= max(p0.x, p1.x) and \ + chkPt.x >= min(p0.x, p1.x) and \ + chkPt.y <= max(p0.y, p1.y) and \ + chkPt.y >= min(p0.y, p1.y): + pt = chkPt + snapped = True + idxREdge = j - 1 + + return pt, idxRPoint, idxREdge, snapped - dc.EndDrawing() - - - def _drawVisualFeedback(self, startPt, endPt, type, dashedLine): - """ Draw visual feedback for a drawing operation. - - The visual feedback consists of a line, ellipse, or rectangle based - around the two given points. 'type' should be one of the following - predefined feedback type constants: - - feedback_RECT -> draw rectangular feedback. - feedback_LINE -> draw line feedback. - feedback_POLY -> draw poly (two-line) feedback. - - if 'dashedLine' is True, the feedback is drawn as a dashed rather - than a solid line. - - Note that the feedback is drawn by *inverting* the window's - contents, so calling _drawVisualFeedback twice in succession will - restore the window's contents back to what they were previously. - """ - dc = wx.ClientDC(self.drawPanel) - self.drawPanel.PrepareDC(dc) - dc.BeginDrawing() - if dashedLine: - dc.SetPen(wx.BLACK_DASHED_PEN) + def SnapPoly(self, pt, snapped): + """Snap the point to any vertex in the currently being created region + if it is sufficiently "nearby". + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxPoint, snapped) + snappedPt - Point object, point after snapping + idxPoint - int, index of point in self.polyVerts if snapped to it + if not snapped to point it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a polygon point + """ + idxPoint = -1 + i = 0 # Misc point incrementer + while (not snapped) and i < len(self.polyVerts): + chkPt = self.polyVerts[i] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + idxPoint = i + snapped = True + i += 1 + + return pt, idxPoint, snapped + + def SnapVicon(self, pt, snapped): + """Snap the point to any saved Vicon marker position if it is + sufficiently "nearby". + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxMarker, snapped) + snappedPt - Point object, point after snapping + idxMarker - int, index of point in self.markerPoses if snapped + if not snapped to point it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a Vicon point + """ + idxMarker = -1 + i = 0 # Vicon point incrementer + while (not snapped) and i < len(self.markerPoses): + chkPt = self.markerPoses[i] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + idxMarker = i + snapped = True + i += 1 + + return pt, idxMarker, snapped + + def Map2Pix(self, pose): + """Convert from map coordinates to pixel coordinates. + + pose - Point, map coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.canvasOffset.x) / self.canvasScale.x) + row = int((pose.y - self.canvasOffset.y) / self.canvasScale.y) + return (col, row) + + def Pix2Map(self, pixPose): + """Convert from pixel coordinates to map coordinates. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, map coordinates of point + """ + x = float(pixPose[0]) * self.canvasScale.x + self.canvasOffset.x + y = float(pixPose[1]) * self.canvasScale.y + self.canvasOffset.y + return Point(x, y) + + def ProjPtOnLine(self, pt, p0, p1): + """Find the projection of a point on an infinite line. + + pt - Point object, point to be projected. + p1 - Point object, one endpoint of line. + p2 - Point object, other endpoint of line. + returns - Point object, projected point on line. + """ + s = p1 - p0 # Vector to project on (p0 is origin) + v = pt - p0 # Vector to point to project + u = (v.Dot(s) / s.Dot(s)) * s # Projected vector + return p0 + u # Map back to global coordinates +# end of class RegionEditor + + +class FeedbackDialog(wx.Dialog): + def __init__(self, *args, **kwds): + # begin wxGlade: FeedbackDialog.__init__ + kwds["style"] = wx.DEFAULT_DIALOG_STYLE + wx.Dialog.__init__(self, *args, **kwds) + self.buttonPrev = wx.Button(self, -1, "Previous") + self.buttonPick = wx.Button(self, -1, "Select") + self.buttonNext = wx.Button(self, -1, "Next") + self.chkbxIterate = wx.CheckBox(self, -1, "Automatically iterate points when marker is in position") + self.radioboxOption = wx.RadioBox(self, -1, "Feedback Method", choices=["Speech", "Beeping"], majorDimension=1, style=wx.RA_SPECIFY_ROWS) + self.chkbxMute = wx.CheckBox(self, -1, "Mute") + + self.__set_properties() + self.__do_layout() + + self.Bind(wx.EVT_BUTTON, self.OnButtonPrev, self.buttonPrev) + self.Bind(wx.EVT_BUTTON, self.OnButtonPick, self.buttonPick) + self.Bind(wx.EVT_BUTTON, self.OnButtonNext, self.buttonNext) + # end wxGlade + + # Add close event handler to cleanup before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Save reference to RegionEditor GUI + if len(args) > 0: + self.parent = args[0] else: - dc.SetPen(wx.BLACK_PEN) - dc.SetBrush(wx.TRANSPARENT_BRUSH) - dc.SetLogicalFunction(wx.INVERT) - - if type == feedback_RECT: - dc.DrawRectangle(startPt.x, startPt.y, - endPt.x - startPt.x, - endPt.y - startPt.y) - elif type == feedback_LINE: - dc.DrawLine(startPt.x, startPt.y, endPt.x, endPt.y) - elif type == feedback_POLY: - dc.DrawLine(startPt[0].x, startPt[0].y, endPt.x, endPt.y) - dc.DrawLine(startPt[1].x, startPt[1].y, endPt.x, endPt.y) - - dc.EndDrawing() - - -#---------------------------------------------------------------------------- - -class ToolPaletteIcon(GenBitmapButton): - """ An icon appearing in the tool palette area of our sketching window. - - Note that this is actually implemented as a wx.Bitmap rather - than as a wx.Icon. wx.Icon has a very specific meaning, and isn't - appropriate for this more general use. - """ - - def __init__(self, parent, iconID, iconName, toolTip): - """ Standard constructor. - - 'parent' is the parent window this icon will be part of. - 'iconID' is the internal ID used for this icon. - 'iconName' is the name used for this icon. - 'toolTip' is the tool tip text to show for this icon. - - The icon name is used to get the appropriate bitmap for this icon. - """ - bmp = wx.Bitmap("images/" + iconName + "Icon.bmp", wx.BITMAP_TYPE_BMP) - GenBitmapButton.__init__(self, parent, iconID, bmp, wx.DefaultPosition, - wx.Size(bmp.GetWidth(), bmp.GetHeight()), wx.NO_BORDER) - selBmp = wx.Bitmap("images/" + iconName + "IconSel.bmp", - wx.BITMAP_TYPE_BMP) - self.SetBitmapSelected(selBmp) - self.SetUseFocusIndicator(False) - - self.SetToolTip(wx.ToolTip(toolTip)) - - self.iconID = iconID - self.iconName = iconName - self.isSelected = False - - - def select(self): - """ Select the icon. - - The icon's visual representation is updated appropriately. - """ - if self.isSelected: return # Nothing to do! - - bmp = wx.Bitmap("images/" + self.iconName + "IconSel.bmp", - wx.BITMAP_TYPE_BMP) - self.SetBitmapLabel(bmp) - self.isSelected = True - - self.Refresh() - - - def deselect(self): - """ Deselect the icon. - - The icon's visual representation is updated appropriately. - """ - if not self.isSelected: return # Nothing to do! - - bmp = wx.Bitmap("images/" + self.iconName + "Icon.bmp", - wx.BITMAP_TYPE_BMP) - self.SetBitmapLabel(bmp) - self.isSelected = False - - self.Refresh() - + print "Warning: FeedbackDialog will not work without " + \ + "reference to RegionEditor GUI as first parameter." + self.parent = None + + # Track current point + self.chkbxIterate.SetValue(True) + self.currReg = 0 + self.currPt = 0 + + # Start audio feedback thread + self.feedbackThread = AudioFeedbackThread(self, self.parent) + self.feedbackThread.start() + + def __set_properties(self): + # begin wxGlade: FeedbackDialog.__set_properties + self.SetTitle("Marker Placement") + self.buttonPrev.SetMinSize((50, 50)) + self.buttonPick.SetMinSize((50, 50)) + self.buttonNext.SetMinSize((50, 50)) + self.chkbxIterate.SetValue(1) + self.radioboxOption.SetSelection(0) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: FeedbackDialog.__do_layout + sizerOuter = wx.BoxSizer(wx.VERTICAL) + sizerOptions = wx.BoxSizer(wx.VERTICAL) + sizerButtons = wx.BoxSizer(wx.HORIZONTAL) + sizerButtons.Add(self.buttonPrev, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerButtons.Add(self.buttonPick, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerButtons.Add(self.buttonNext, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerOuter.Add(sizerButtons, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizerOptions.Add(self.chkbxIterate, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerOptions.Add(self.radioboxOption, 0, wx.ALL | wx.EXPAND, 5) + sizerOptions.Add(self.chkbxMute, 0, wx.ALL, 5) + sizerOuter.Add(sizerOptions, 1, wx.EXPAND, 0) + self.SetSizer(sizerOuter) + sizerOuter.Fit(self) + self.Layout() + # end wxGlade + + def OnClose(self, event): + """Perform cleanup tasks and close the feedback dialog.""" + self.feedbackThread.stop() + self.parent.toggleFeedback.SetValue(False) + # TODO: Add wait/notify to make sure thread ended + self.Destroy() -#---------------------------------------------------------------------------- + def OnButtonPrev(self, event): # wxGlade: FeedbackDialog. + """Move back to previous point.""" + # Not first point in region + if self.currPt > 0: + self.currPt -= 1 + # First point in region + else: + # Not first region + if self.currReg > 0: + self.currReg -= 1 + # First region + else: + self.currReg = len(self.parent.regions) - 1 + self.currPt = len(self.parent.regions[self.currReg].verts) - 1 + + def OnButtonPick(self, event): # wxGlade: FeedbackDialog. + #self.parent.Raise() + print "Select not yet implemented." + + def OnButtonNext(self, event): # wxGlade: FeedbackDialog. + """Move on to next point.""" + # Not last point in region + if self.currPt < len(self.parent.regions[self.currReg].verts) - 1: + self.currPt += 1 + # Last point in region + else: + # Not last region + if self.currReg < len(self.parent.regions) - 1: + self.currReg += 1 + # Last region + else: + self.currReg = 0 + self.currPt = 0 +# end of class FeedbackDialog -class EditRegionDialog(wx.Dialog): - """ Dialog box used to edit the properties of a region. - The user can edit the region's name and color. - """ +class Region: + def __init__(self, points, name="R0", rgb=[0, 0, 0]): # TODO: random color/name + """Create an object to represent a region. - def __init__(self, parent, title): - """ Standard constructor. + points - List of tuples of floats containing vertex information + [(x1, y1), (x2, y2), ...] + name - String defining region name + rgb - List of integers defining color + [red, green, blue], each with value in range [0 255] """ - wx.Dialog.__init__(self, parent, -1, title) - - gap = wx.LEFT | wx.TOP | wx.RIGHT - - ##### line 1 - - self.label1 = wx.StaticText(self, -1, "Name:") - self.textCtrl = wx.TextCtrl(self, 1001, "", style=wx.TE_PROCESS_ENTER, - validator=TextObjectValidator()) - extent = self.textCtrl.GetFullTextExtent("Hy") - lineHeight = extent[1] + extent[3] - self.textCtrl.SetSize(wx.Size(-1, lineHeight * 1)) - - line1sizer = wx.BoxSizer(wx.HORIZONTAL) - line1sizer.Add(self.label1, 0, gap, 5) - line1sizer.Add(self.textCtrl, 0, gap, 5) - - #### line 2 - - self.label2 = wx.StaticText(self, -1, "Color:") - - self.colorPicker = wx.ColourPickerCtrl(self, 1003) - - line2sizer = wx.BoxSizer(wx.HORIZONTAL) - line2sizer.Add(self.label2, 0, gap, 5) - line2sizer.Add(self.colorPicker, 0, gap, 5) - - #### line 3 - - self.checkbox_obstacle = wx.CheckBox(self, 1002, "Treat as obstacle") - - line3sizer = wx.BoxSizer(wx.HORIZONTAL) - line3sizer.Add(self.checkbox_obstacle, 0, gap, 5) - - #### line 4 - - self.okButton = wx.Button(self, wx.ID_OK, "OK") - self.okButton.SetDefault() - self.cancelButton = wx.Button(self, wx.ID_CANCEL, "Cancel") - - btnSizer = wx.BoxSizer(wx.HORIZONTAL) - btnSizer.Add(self.okButton, 0, gap) - btnSizer.Add(self.cancelButton, 0, gap) - - #### assembly - - sizer = wx.BoxSizer(wx.VERTICAL) - sizer.Add(line1sizer, 1, gap | wx.EXPAND, 5) - #sizer.Add((10, 10)) # Spacer. - sizer.Add(line2sizer, 1, gap | wx.ALIGN_CENTRE, 5) - sizer.Add(line3sizer, 1, gap | wx.ALIGN_CENTRE, 5) - #sizer.Add((10, 10)) # Spacer. - sizer.Add(btnSizer, 0, gap | wx.ALIGN_CENTRE, 5) - sizer.Add((10, 10)) # Spacer. + # TODO: Add name, color, convex/concave, possibly adjoining edges + self.verts = points + self.name = name + self.color = rgb + + def __str__(self): + """Representation of object.""" + s = "%s\t{%03d\t%03d\t%03d}\t[" % \ + (self.name, self.color[0], self.color[1], self.color[2]) + for iPt, pt in enumerate(self.verts): + s += str(pt) + if iPt < len(self.verts) - 1: + s += "\t" + s += "]" + return s +# end of class Region - self.SetAutoLayout(True) - self.SetSizer(sizer) - sizer.Fit(self) - self.textCtrl.SetFocus() +class Action: + def __init__(self, oldState, newState): + """Create an object that represents an (un/re)doable action. + oldState - Previous state of the affected object(s) + newState - Changed state of the affected object(s) - def objectToDialog(self, obj): - """ Copy the properties of the given text object into the dialog box. + These arguments will usually be one or more regions that were changed. + An argument of "None" indicates either creation or deletion. """ - self.textCtrl.SetValue(obj.name) - self.textCtrl.SetSelection(0, len(obj.name)) - self.colorPicker.SetColour(obj.color) - self.checkbox_obstacle.SetValue(obj.isObstacle) + self.oldState = oldState + self.newState = newState +# end of class Action - def dialogToObject(self, obj): - """ Copy the properties from the dialog box into the given text object. - """ - obj.name = self.textCtrl.GetValue() - obj.color = self.colorPicker.GetColour() - obj.isObstacle = self.checkbox_obstacle.GetValue() - -#---------------------------------------------------------------------------- - -class TextObjectValidator(wx.PyValidator): - """ This validator is used to ensure that the user has entered something - into the text object editor dialog's text field. - """ - def __init__(self): - """ Standard constructor. - """ - wx.PyValidator.__init__(self) +class Point: + def __init__(self, x, y): + """Create an object that allows floating point vector operations. - def Clone(self): - """ Standard cloner. - - Note that every validator must implement the Clone() method. + x - Float, first coordinate of point + y - Float, second coordinate of point """ - return TextObjectValidator() - + if isinstance(x, float) and isinstance(y, float): + self.x = x + self.y = y + else: + raise TypeError('\'Point\' creation takes only \'float\' values') + + def __str__(self): + """Representation of object.""" + return '(%.3f\t%.3f)' % (self.x, self.y) + + def __hash__(self): + """Hashtable representation of object.""" + tup = (self.x, self.y) + return tup.__hash__() + + def __eq__(self, other): + """Checks equality (self == other).""" + return isinstance(other, Point) and self.x == other.x and self.y == other.y + + def __ne__(self, other): + """Checks non-equality (self != other).""" + return not self.__eq__(other) + + def __add__(self, other): + """Addition operator (self + other).""" + if isinstance(other, Point): + return Point(self.x + other.x, self.y + other.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(self.x + other[0], self.y + other[1]) + else: + raise TypeError('cannot add \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __radd__(self, other): + """Right addition operator (other + self).""" + return self.__add__(other) + + def __sub__(self, other): + """Subtraction operator (self - other).""" + if isinstance(other, Point): + return Point(self.x - other.x, self.y - other.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(self.x - other[0], self.y - other[1]) + else: + raise TypeError('cannot subtract \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __rsub__(self, other): + """Right subtraction operator (other - self).""" + if isinstance(other, Point): + return Point(other.x - self.x, other.y - self.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(other[0] - self.x, other[1] - self.y) + else: + raise TypeError('cannot subtract \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') - def Validate(self, win): - """ Validate the contents of the given text control. - """ - textCtrl = self.GetWindow() - text = textCtrl.GetValue() + def __mul__(self, other): + """Multiplication operator (self * other).""" + if isinstance(other, float): + return Point(self.x * other, self.y * other) + else: + raise TypeError('cannot multiply \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') - if len(text) == 0: - wx.MessageBox("You must give the region a name.", "Error") - return False + def __rmul__(self, other): + """Right multiplication operator (other * self).""" + return self.__mul__(other) - # TODO: Check to see if name already exists? + def __div__(self, other): + """Division operator (self / other).""" + if isinstance(other, float): + return Point(self.x / other, self.y / other) + else: + raise TypeError('cannot divide \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __truediv__(self, other): + """True division operator.""" + return self.__div__(other) + + def Dot(self, other): + """Dot product.""" + if isinstance(other, Point): + return self.x * other.x + self.y * other.y + elif isinstance(other, tuple) and len(other) == 2: + return self.x * other[0] + self.y * other[1] + else: + raise TypeError('cannot compute dot product of \'Point\' and \'' + \ + other.__class__.__name__ + '\' object') + + def Dist(self, other): + """Euclidean distance from this point to the other.""" + if isinstance(other, Point): + return math.sqrt((self.x - other.x) ** 2 + \ + (self.y - other.y) ** 2) + elif isinstance(other, tuple) and len(other) == 2: + return math.sqrt((self.x - other[0]) ** 2 + \ + (self.y - other[1]) ** 2) + else: + raise TypeError('cannot compute distance from \'Point\' to \'' + \ + other.__class__.__name__ + '\' object') + + def Norm(self): + """Length of the vector.""" + return math.sqrt(self.x ** 2 + self.y ** 2) +# end of class Point + + +class ViconMarkerListener(threading.Thread): + def __init__(self, parent): + """Create the a socket to receive Vicon data.""" + super(ViconMarkerListener, self).__init__() + + # Communication parameters + self.parent = parent # RegionEditor GUI + self.addr = ("0.0.0.0", 7500) + self.bufsize = 65536 + self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.lock = threading.Lock() + self.close = threading.Event() + self.updateFreq = 20 # Hz + + # Tracking parameters + # TODO: Set all paremeters in configuration of GUI + self.minDist = 0.01 # Distance to move to qualify as movement + self.maxDist = 0.1 # Qualified as new point + self.movMaxTime = 15 * self.updateFreq # (sec)*(Hz) + # Iterations during which marker is not moving + # before stopping tracking + self.invMaxTime = 1 * self.updateFreq # (sec)*(Hz) + # Iterations during which marker is not found + # before stopping tracking + + # Tracking containers + self.oldPoses = [] # Previous marker positions + self.movingPoses = [] # Markers that are moving + self.movingTimeout = [] # Iterations left before movement timeout + self.invisTimeout = [] # Iteractions left before not-found timeout + + def run(self): + """Open the socket to start communication. Process messages.""" + # Open socket for communication + self.udpSock.bind(self.addr) + + # Receive communication until stopped + self.close.clear() + delay = 1 / self.updateFreq + while not self.close.isSet(): + self.lock.acquire() + data = self.udpSock.recv(self.bufsize) + self.lock.release() + self.ProcessData(data) + time.sleep(delay) + + # Close socket + self.udpSock.close() + self.oldPoses = [] + self.movingPoses = [] + self.movingTimeout = [] + self.invisTimeout = [] + + def stop(self): + """Close the socket to end UDP communication.""" + self.close.set() + + # Deserialize and save data + def ProcessData(self, data): + """Extract marker positions and pass them on to be mapped. + + data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] + """ + # Check for valid data (not null or incomplete) + if data and len(data)%16 == 0: + poses = [] + for i in range(0, len(data), 16): + x, y = struct.unpack('dd', data[i:i+16]) + poses.append(Point(x, y)) + # Save and plot marker positions + self.parent.markerPoses = poses + self.UpdateMovingMarkers(poses) + self.parent.RedrawCanvas() # Force map redraw + + def UpdateMovingMarkers(self, poses): + """Note which markers are newly moving and update position of old + moving markers based on change in position from previous list. + + poses - List of Points, marker positions. + """ + # Not first time through + if self.oldPoses: + # Check all currently tracked markers first + for iMarker, markerPose in enumerate(self.movingPoses): + closestIdx = self.FindClosest(poses, markerPose) + closestDist = markerPose.Dist(poses[closestIdx]) + # Same marker + if closestDist < self.maxDist: + self.invisTimeout[iMarker] = self.invMaxTime + # Is moving + if closestDist > self.minDist: + self.movingTimeout[iMarker] = self.movMaxTime + 1 + self.movingPoses[iMarker] = poses[closestIdx] + # Marker not seen + else: + self.invisTimeout[iMarker] -= 1 + self.movingTimeout[iMarker] -= 1 + # Marker has stopped moving or not been seen for some time + if self.invisTimeout[iMarker] == 0 or \ + self.movingTimeout[iMarker] == 0: + self.invisTimeout.pop(iMarker) + self.movingTimeout.pop(iMarker) + self.movingPoses.pop(iMarker) + # Check through all new markers next + for markerPose in poses: + closestIdx = self.FindClosest(self.oldPoses, markerPose) + closestDist = markerPose.Dist(self.oldPoses[closestIdx]) + # Point is moving + if closestDist < self.maxDist and closestDist > self.minDist: + self.movingPoses.append(markerPose) + self.movingTimeout.append(self.movMaxTime) + self.invisTimeout.append(self.invMaxTime) + self.oldPoses = poses + + def FindClosest(self, points, target): + """Find the closest point to the target. + + points - List of Points, marker positions. + target - Point, point to find marker closest to. + returns - Integer, index of closest point in points. + """ + # Iterate through all points + minDist = float('inf') + minIdx = 0 + for i, pt in enumerate(points): + dist = target.Dist(pt) + if dist < minDist: + minIdx = i + minDist = dist + return minIdx +# end of class ViconMarkerListener + + +class AudioFeedbackThread(threading.Thread): + def __init__(self, feedbackDialog, regEditor): + """Create audio feedback for marker placement. + + fbDia - Dialog box that specifies the point of interest. + regEd - RegionEditor GUI that gets Vicon information. + """ + super(AudioFeedbackThread, self).__init__() + + # Save other objects + self.fbDia = feedbackDialog + self.regEd = regEditor - return True - - - def TransferToWindow(self): - """ Transfer data from validator to window. - - The default implementation returns False, indicating that an error - occurred. We simply return True, as we don't do any data transfer. - """ - return True # Prevent wx.Dialog from complaining. - - - def TransferFromWindow(self): - """ Transfer data from window to validator. - - The default implementation returns False, indicating that an error - occurred. We simply return True, as we don't do any data transfer. - """ - return True # Prevent wx.Dialog from complaining. - -#---------------------------------------------------------------------------- - -class ExceptionHandler: - """ A simple error-handling class to write exceptions to a text file. - - Under MS Windows, the standard DOS console window doesn't scroll and - closes as soon as the application exits, making it hard to find and - view Python exceptions. This utility class allows you to handle Python - exceptions in a more friendly manner. - """ - - def __init__(self): - """ Standard constructor. - """ - self._buff = "" - if os.path.exists("errors.txt"): - os.remove("errors.txt") # Delete previous error log, if any. - - - def write(self, s): - """ Write the given error message to a text file. - - Note that if the error message doesn't end in a carriage return, we - have to buffer up the inputs until a carriage return is received. - """ - if (s[-1] != "\n") and (s[-1] != "\r"): - self._buff = self._buff + s - return - - try: - s = self._buff + s - self._buff = "" - - if s[:9] == "Traceback": - # Tell the user than an exception occurred. - wx.MessageBox("An internal error has occurred.\nPlease " + \ - "refer to the 'errors.txt' file for details.", - "Error", wx.OK | wx.CENTRE | wx.ICON_EXCLAMATION) - - f = open("errors.txt", "a") - f.write(s) - f.close() - except: - pass # Don't recursively crash on errors. - -#---------------------------------------------------------------------------- - -class SketchApp(wx.App): - """ The main pySketch application object. - """ - def OnInit(self): - """ Initialise the application. - """ - global _docList - _docList = [] - - # No file name was specified on the command line -> start with a - # blank document. - frame = DrawingFrame(None, -1, "Untitled") - frame.Centre() - frame.Show(True) - _docList.append(frame) - - if len(sys.argv) > 1: - # Load the file(s) specified on the command line. - for arg in sys.argv[1:]: - fileName = os.path.join(os.getcwd(), arg) - frame._doOpenHelper(fileName, os.path.isfile(fileName)) - - return True - -#---------------------------------------------------------------------------- - -def main(): - """ Start up the pySketch application. - """ - global _app - - # Redirect python exceptions to a log file. - - #sys.stderr = ExceptionHandler() - - # Create and start the pySketch application. + # Non-audio parameters + self.close = threading.Event() + self.tolerance = 0.10 # Close-enough distance (m) + self.maxDist = 2.5 # Points must be within this to react (m) + + # Audio parameters for beeping + # Chosen for audibility at distance + # TODO: Make modifiable by configuration file + minFreq = 600 # Lowest frequency played (Hz) + maxFreq = 7000 # Highest frequency played (Hz) + updateFreq = 2.0 # Frequency of possible sound change (Hz) + self.duration = int(1000.0 / updateFreq) + + # Audio parameters for text-to-speech + self.engine = pyttsx.init() + self.engine.setProperty('rate', 120) + self.engine.setProperty('volume', 1.0) + self.speechFormat = "X %.1f, Y %.1f" + self.speechPause = 1.0 # Pause between voice commands + + # Calculate the line representing the distance-frequency mapping + self.freqSlope = (minFreq - maxFreq) / (self.maxDist - self.tolerance) + self.freqIntercept = maxFreq - self.tolerance * self.freqSlope + + def run(self): + """Play sound based on distance of moving marker to goal point.""" + self.close.clear() + while not self.close.isSet(): + soundOption = self.fbDia.radioboxOption.GetSelection() + if not self.fbDia.chkbxMute.GetValue(): + # Get distance from closest marker to point of interest + intPt = self.regEd.regions[self.fbDia.currReg].\ + verts[self.fbDia.currPt] + minStatDistToPt = 2.0 * self.maxDist + for statPt in self.regEd.markerPoses: + if not statPt in self.regEd.viconListener.movingPoses: + minStatDistToPt = min(minStatDistToPt, intPt.Dist(statPt)) + + # Get distance from closest moving point to point of interest + minDistToPt = 2.0 * self.maxDist + minPtIdx = -1 + for iPt, movPt in \ + enumerate(self.regEd.viconListener.movingPoses): + dist = intPt.Dist(movPt) + if dist < minDistToPt: + minDistToPt = dist + minPtIdx = iPt + + # Plot moving point and goal point + dc = wx.WindowDC(self.regEd.canvas) + dc.SetBrush(wx.Brush(wx.Colour(255, 0, 0, 100), wx.SOLID)) + posePix = self.regEd.Map2Pix(intPt) + dc.DrawCircle(posePix[0], posePix[1], 8) + if minPtIdx > -1 and minPtIdx < \ + len(self.regEd.viconListener.movingPoses): + posePix = self.regEd.Map2Pix(\ + self.regEd.viconListener.movingPoses[minPtIdx]) + dc.DrawCircle(posePix[0], posePix[1], 8) + + # Close-enough + if minDistToPt < self.tolerance or \ + minStatDistToPt < self.tolerance: + # Marker is settled + if minStatDistToPt < self.tolerance or self.regEd.\ + viconListener.movingTimeout[minPtIdx] < \ + self.regEd.viconListener.movMaxTime: + # Play "success" sound to indicate done with point + if soundOption: + time.sleep(0.2) + winsound.Beep(600, 200) + winsound.Beep(1200, 200) + winsound.Beep(1800, 200) + time.sleep(0.2) + else: + self.engine.say("Success, next") + self.engine.runAndWait() + time.sleep(self.speechPause) + # Switch to next point of interest if checked + if self.fbDia.chkbxIterate.GetValue(): + self.fbDia.OnButtonNext(None) + # TODO: Check if all points are in correct spots + # and stop if done + + # Marker not yet settled + else: + # Play "good" sound to signal "stop moving marker" + if soundOption: + time.sleep(0.2) + winsound.Beep(1200, 200) + winsound.Beep(1200, 200) + time.sleep(0.2) + else: + self.engine.say("Stop there") + self.engine.runAndWait() + time.sleep(self.speechPause) + + # Still within distance of effect + elif minDistToPt < self.maxDist: + if soundOption: + freq = int(self.freqIntercept + self.freqSlope * \ + minDistToPt) + winsound.Beep(freq, self.duration) + else: + diffPt = intPt - self.regEd.viconListener.\ + movingPoses[minPtIdx] + self.engine.say(self.speechFormat % \ + (diffPt.x, diffPt.y)) + self.engine.runAndWait() + time.sleep(self.speechPause) - _app = SketchApp(0) - _app.MainLoop() + def stop(self): + """Signal for the thread to end.""" + self.engine.stop() + self.close.set() if __name__ == "__main__": - main() - - + app = wx.PySimpleApp(0) + wx.InitAllImageHandlers() + if len(sys.argv) > 1: + regEd = regionEditor(None, -1, sys.argv[1]) + else: + regEd = regionEditor(None, -1) + app.SetTopWindow(regEd) + app.MainLoop() From a119daa9d6be55901bbdd0c2ee6eec0d730deb73 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 4 Apr 2012 14:35:00 -0400 Subject: [PATCH 02/26] regionEditor modified to integrate fully with specEditor. region.py modified in RegionFileInterface and Region, adding and adjusting methods for parsing data from the new file format. Distinct colors and names added to regions produced by regionEditor. --- .../NewRegionEditor/regionEditor.py | 12 +- src/lib/regions.py | 265 +++++++++++++----- src/regionEditor.py | 12 +- src/specEditor.py | 3 +- 4 files changed, 216 insertions(+), 76 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index 3134af6c..1ce53a8b 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -12,9 +12,9 @@ import socket import struct import copy +import random import winsound import pyttsx -from regionEditor import Point # begin wxGlade: extracode # end wxGlade @@ -823,11 +823,12 @@ def ResetMapToggles(self, toggleStay=None): toggleStay.SetValue(state) def CreateRegion(self): - """Instantiate and create a region from, perform cleanup actions. + """Instantiate and create a region, perform cleanup actions. Use polyVerts and polyAdjEdges to make the region and find transitions. """ # Create region - region = Region(self.polyVerts) # TODO: Add name and color to regions + rName = 'r' + str(len(self.regions)) + region = Region(self.polyVerts, rName) # TODO: Add color to regions self.regions.append(region) idxNewReg = len(self.regions) - 1 # Add row and column to list of lists of lists representing adjacency @@ -1275,7 +1276,7 @@ def OnButtonNext(self, event): # wxGlade: FeedbackDialog. class Region: - def __init__(self, points, name="R0", rgb=[0, 0, 0]): # TODO: random color/name + def __init__(self, points, name, rgb=None): # TODO: random color/name """Create an object to represent a region. points - List of tuples of floats containing vertex information @@ -1287,6 +1288,9 @@ def __init__(self, points, name="R0", rgb=[0, 0, 0]): # TODO: random color/nam # TODO: Add name, color, convex/concave, possibly adjoining edges self.verts = points self.name = name + if not rgb: + rgb = [random.randint(0, 255), random.randint(0, 255), \ + random.randint(0,255)] self.color = rgb def __str__(self): diff --git a/src/lib/regions.py b/src/lib/regions.py index 0a59421e..af93ae55 100755 --- a/src/lib/regions.py +++ b/src/lib/regions.py @@ -141,6 +141,8 @@ class RegionFileInterface: Overview of exposed data structures: + - parent (Object): Creator of this rfi + * if created by specEditor, this needs to be set so calibration can be done - background (string): relative path of background image file - regions (list): list of Region objects, with properties defined below - transitions (list of lists): @@ -149,7 +151,8 @@ class RegionFileInterface: * values = Lists of faces connecting the two regions """ - def __init__(self, background="None", regions=[], transitions=None): + def __init__(self, parent=None, background="None", regions=[], transitions=None): + self.parent = parent self.background = background self.regions = regions self.transitions = transitions @@ -384,43 +387,140 @@ def readFile(self, filename): except KeyError: self.background = "None" + # Set all region information from lines in file + # Each region line format is this: + # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] + regionDataList, boundingBoxList, scalex, scaley, offsetx, offsety = \ + self.calcMapCalibFromFile(data["Regions"]) self.regions = [] - for region in data["Regions"]: - region = re.sub('[\[\]\(\)\{\}]', '', region) # Remove brackets - regionData = region.split(); # Separates on any whitespace + for i, regionData in enumerate(regionDataList): newRegion = Region() - newRegion.setData(regionData, thorough=False) - newRegion.alignmentPoints = [False] * len([x for x in newRegion.getPoints()]) + newRegion.setDataFromFile(regionData, boundingBoxList[i], \ + scalex, scaley, offsetx, offsety) self.regions.append(newRegion) # Make an empty adjacency matrix of size (# of regions) x (# of regions) self.transitions = [[[] for j in range(len(self.regions))] for i in range(len(self.regions))] + + # Assign region transitions + # Each transition line format is this: + # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] for transition in data["Transitions"]: - transData = transition.split("\t"); - region1 = self.indexOfRegionWithName(transData[0]) - region2 = self.indexOfRegionWithName(transData[1]) + transData = re.sub('[\[\]\(\)]', '', transData) # Remove brackets + transData = transition.split(); # Separate on any whitespace + region1 = int(transData[0]) + region2 = int(transData[1]) faces = [] - for i in range(2, len(transData), 4): - p1 = Point(int(transData[i]), int(transData[i+1])) - p2 = Point(int(transData[i+2]), int(transData[i+3])) + # All transitions between regions + for i in range(2, len(transData), 2): + r1face = int(transData[i]) + # Points surrounding face i are point[i] and point[i+1] + # except for last face, which has point[i] and point[0] + # Must account for local region coordinates + p1 = self.regions[region1].pointArray[r1face] + \ + self.regions[region1].position + if r1face < len(self.regions[region1].pointArray) - 1: + p2 = self.regions[region1].pointArray[r1face+1] + \ + self.regions[region1].position + else: + p2 = self.regions[region1].pointArray[0]+ \ + self.regions[region1].position faces.append(tuple(sorted((p1, p2)))) - # During adjacency matrix reconstruction, we'll mirror over the diagonal + # Note that region file specifies transitions in both directions + # So mirroring here is unnecessary self.transitions[region1][region2] = faces - self.transitions[region2][region1] = faces - - if "CalibrationPoints" in data: - for point in data["CalibrationPoints"]: - [name, index] = point.split("\t") - self.regions[self.indexOfRegionWithName(name)].alignmentPoints[int(index)] = True - + + # Skip making calibration points since calibration is already done + #if "CalibrationPoints" in data: + # for point in data["CalibrationPoints"]: + # [name, index] = point.split("\t") + # self.regions[self.indexOfRegionWithName(name)].alignmentPoints[int(index)] = True + + # Set calibration of map + try: + for setupID in range(len(self.parent.simSetup)): + self.parent.simSetup[setupID]["XScale"] = scalex + self.parent.simSetup[setupID]["XOffset"] = offsetx + self.parent.simSetup[setupID]["YScale"] = scaley + self.parent.simSetup[setupID]["YOffset"] = offsety + except: + print "Warning: Calibration not set properly in specEditor" + + + # Set "obstacleness" of regions if "Obstacles" in data: - for rname in data["Obstacles"]: - self.regions[self.indexOfRegionWithName(rname)].isObstacle = True - + for ridx in data["Obstacles"]: + self.regions[ridx].isObstacle = True + self.filename = filename return True + + def calcMapCalibFromFile(self, dataFromAllRegions): + """ + Parse the region data, saving it to a more usable format. + Calculate the map scale and offset. + + returns regionDataList, boundingBoxList, scalex, scaley, offsetx, offsety + regionDataList - List of lists containing region data + Inner lists contain information for one region in the format: + [string name, int colorR, int colorG, int colorB, float x1, \ + float y1, float x2, float y2, ...] + boundingBoxList - List of tuples containing region bound info + Tuples define upper left corner and size of region in format: + (minx, maxy, width, height) + *Note that all information for regionDataList and boundingBoxList + is in absolute coordinates (e.g. meters) not pixels + scales and offsets are related by: + position = pointPixels * scale + offset + """ + regionDataList = [] + boundingBoxList = [] + minxAll = float(dataFromAllRegions[0][4]) + maxxAll = minxAll + minyAll = float(dataFromAllRegions[0][5]) + maxyAll = minyAll + for region in dataFromAllRegions: + region = re.sub('[\[\]\(\)\{\}]', '', region) # Remove brackets + regionData = region.split() # Separates on any whitespace + for i in range(1, 4): # Convert colors to integers + regionData[i] = int(regionData[i]) + # Extract all region points and calculate bounding box + minx = float(regionData[4]) + maxx = minx + miny = float(regionData[5]) + maxy = miny + for i in range(4, len(regionData), 2): + x = float(regionData[i]) + y = float(regionData[i+1]) + regionData[i] = x + regionData[i+1] = y + minx = min(minx, x) + maxx = max(maxx, x) + miny = min(miny, y) + maxy = max(maxy, y) + + # Save region information + regionDataList.append(regionData) + boundingBoxList.append((minx, maxy, maxx - minx, maxy - miny)) + + # Update map bounds + minxAll = min(minxAll, minx) + maxxAll = max(maxxAll, maxx) + minyAll = min(minyAll, miny) + maxyAll = max(maxyAll, maxy) + + # Define scale and offset + # position = pointPixels * scale + offset + sizex = 1000.0 # Map display size (pix) + sizey = 1000.0 # Based on previous region editor + scalex = (maxxAll - minxAll) / sizex + scaley = -(maxyAll - minyAll) / sizey + offsetx = minxAll + offsety = maxyAll + + return regionDataList, boundingBoxList, scalex, scaley, offsetx, offsety ############################################################ @@ -457,7 +557,49 @@ def __init__(self, type=reg_POLY, position=Point(0, 0), size=Size(0, 0), self.pointArray = points self.alignmentPoints = [False] * len([x for x in self.getPoints()]) self.isObstacle = False - + + def __str__(self): + """ + String representation of region object. + """ + + # Name + outstr = self.name + ":\n" + + # Type + if self.type == reg_POLY: + outstr += "Polygon\n" + else: + outstr += "Rectangle\n" + + # Color + outstr += "Color RGB = [%d, %d, %d]\n" % self.color.Get() + + # Position + outstr += "Bounding box corner at: (%d, %d)\n" % \ + (self.position.x, self.position.y) + + # Size + outstr += "Width = %d, Height = %d\n" % \ + (self.size.width, self.size.height) + + # Vertices + outstr += "Points:" + for pt in self.pointArray: + outstr += " (%d, %d)" % (pt.x, pt.y) + outstr += "\n" + + # Alignment Points + outstr += "Alignment Points: " + for isAlPt in self.alignmentPoints: + outstr += " %s" % isAlPt + outstr += "\n" + + # Obstacle + outstr += "Is an obstacle: %s" % self.isObstacle + + return outstr + # ================================= # == Region Manipulation Methods == # ================================= @@ -628,63 +770,52 @@ def setData(self, data, thorough=True): if thorough: self.isObstacle = data[9] - def setDataFromFile(self, data): + def setDataFromFile(self, data, boundBox, scalex, scaley, offsetx, offsety): """ Set the object's internal data. 'data' is a copy of the object's saved data, different from the return from getData above. This is only used for reading from the new region file format. + + data - List containing information in the format: + [string name, int colorR, int colorG, int colorB, float x1, \ + float y1, float x2, float y2, ...] + boundBox - Tuple defining upper left corner and size in format: + (minx, maxy, width, height) + *Note that all information for regionDataList and boundingBoxList + is in absolute coordinates (e.g. meters) not pixels + scales and offsets are related by: + position = pointPixels * scale + offset """ - self.name = data[0] + self.name = data[0] # All regions are polygons self.type = reg_POLY # Assign color - self.color = Color(red=int(data[1]), - green=int(data[2]), - blue=int(data[3])) - - # Extract all region points and find bounding box corners - pts = list() - minx = float(data[4]) - maxx = minx - miny = float(data[5]) - maxy = miny - for i in range(4, len(data), 2): - x = float(data[i]) - y = float(data[i+1]) - minx = min(minx, x) - maxx = max(maxx, x) - miny = min(miny, y) - maxy = max(maxy, y) - pts.append((x, y)) + self.color = Color(red=data[1], green=data[2], blue=data[3]) + # Translate bounding box information + positionxPix = int((boundBox[0] - offsetx) / scalex) + positionyPix = int((boundBox[1] - offsety) / scaley) + widthPix = int(boundBox[2] / scalex) + heightPix = int(boundBox[3] / -scaley) + self.position = Point(positionxPix, positionyPix) + self.size = Size(widthPix, heightPix) + # Define region vertices and alignment points + # They must be translated from real units (e.g. meters) + # and made relative to bounding box + self.pointArray = [] + self.alignmentPoints = [] + for i in range(4, len(data), 2): + xPix = int((data[i] - offsetx) / scalex) - positionxPix + yPix = int((data[i+1] - offsety) / scaley) - positionyPix + self.pointArray.append(Point(xPix, yPix)) + self.alignmentPoints.append(False) # No calibration points yet - self.position = Point(int(data[2]), int(data[3])) - self.size = Size(int(data[4]), int(data[5])) - self.color = Color(red=int(data[6]), - green=int(data[7]), - blue=int(data[8])) - if self.type == reg_POLY: - self.pointArray = [] - if thorough: - self.alignmentPoints = [] - for i in range(10, len(data), 3): - self.pointArray.append(Point(int(data[i]), int(data[i+1]))) - self.alignmentPoints.append(data[i+2]) - else: - for i in range(9, len(data), 2): - self.pointArray.append(Point(int(data[i]), int(data[i+1]))) - elif self.type == reg_RECT: - if thorough: - self.alignmentPoints = [] - for i in range(10, len(data), 1): - self.alignmentPoints.append(data[i]) - - if thorough: - self.isObstacle = data[9] + # Set "obstacleness" of region + self.isObstacle = False; # No obstacles yet def getFaces(self): """ diff --git a/src/regionEditor.py b/src/regionEditor.py index 3134af6c..1ce53a8b 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -12,9 +12,9 @@ import socket import struct import copy +import random import winsound import pyttsx -from regionEditor import Point # begin wxGlade: extracode # end wxGlade @@ -823,11 +823,12 @@ def ResetMapToggles(self, toggleStay=None): toggleStay.SetValue(state) def CreateRegion(self): - """Instantiate and create a region from, perform cleanup actions. + """Instantiate and create a region, perform cleanup actions. Use polyVerts and polyAdjEdges to make the region and find transitions. """ # Create region - region = Region(self.polyVerts) # TODO: Add name and color to regions + rName = 'r' + str(len(self.regions)) + region = Region(self.polyVerts, rName) # TODO: Add color to regions self.regions.append(region) idxNewReg = len(self.regions) - 1 # Add row and column to list of lists of lists representing adjacency @@ -1275,7 +1276,7 @@ def OnButtonNext(self, event): # wxGlade: FeedbackDialog. class Region: - def __init__(self, points, name="R0", rgb=[0, 0, 0]): # TODO: random color/name + def __init__(self, points, name, rgb=None): # TODO: random color/name """Create an object to represent a region. points - List of tuples of floats containing vertex information @@ -1287,6 +1288,9 @@ def __init__(self, points, name="R0", rgb=[0, 0, 0]): # TODO: random color/nam # TODO: Add name, color, convex/concave, possibly adjoining edges self.verts = points self.name = name + if not rgb: + rgb = [random.randint(0, 255), random.randint(0, 255), \ + random.randint(0,255)] self.color = rgb def __str__(self): diff --git a/src/specEditor.py b/src/specEditor.py index 4c642ef9..a43a9cfb 100755 --- a/src/specEditor.py +++ b/src/specEditor.py @@ -432,7 +432,8 @@ def onImportRegion(self, event): # wxGlade: SpecEditorFrame. flags = wx.OPEN | wx.FILE_MUST_EXIST) if filename == "": return - rfi = RegionFileInterface() + rfi = RegionFileInterface(parent=self) + # Try loading the file if not rfi.readFile(filename): From a70b8f6f381674c2742981d8ecc3a684a8370886 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Tue, 10 Apr 2012 14:33:11 -0400 Subject: [PATCH 03/26] added functionality for selecting regions. --- .../NewRegionEditor/regionEditor.py | 204 +++++++++++++++--- src/lib/regions.py | 20 +- src/regionEditor.py | 27 +++ 3 files changed, 211 insertions(+), 40 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index 1ce53a8b..4fc40462 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -124,7 +124,7 @@ def __init__(self, *args, **kwds): # Bind mouse events self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown, self.canvas) self.canvas.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp, self.canvas) - #self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) + self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) self.canvas.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown, self.canvas) self.canvas.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp, self.canvas) self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel, self.canvas) @@ -148,7 +148,7 @@ def __init__(self, *args, **kwds): self.canvasScale = Point(xScale, yScale) self.canvasOffset = Point(xOffset, yOffset) - # Set up for region creation + # Region-related parameters self.regions = [] # List of regions in the map self.adjacent = [] # List of lists holding transition # edges between regions. @@ -159,9 +159,6 @@ def __init__(self, *args, **kwds): # list of the same length, but edge # indices are for region j. # adjacent[i][i] will be empty. - self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick - self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick - self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) self.polyVerts = [] # Keeps points for region creation # and dimensioning # Region creation: [Point(x0,y0), ...] @@ -169,6 +166,15 @@ def __init__(self, *args, **kwds): self.polySnaps = [] # Keeps snap information for each # new region creation point # [(idxReg, idxPt, idxEdge), ...] + self.boundary = None # Region representing the map bound + # TODO: When changing the name of a region, check if it is called boundary + + # Mouse-related parameters + self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick + self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick + self.justDoubleClicked = False # Indicating double-click event + self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) + self.selectedRegions = [] # List of currently selected regions # Set up for undo/redo capabilities # TODO: Disable self.menuUndo and self.menuRedo @@ -306,6 +312,10 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. f.write("\n\n") # TODO: Support for obstacles f.write("Regions: # Name {ColorR ColorG ColorB} " + \ "[(x1 y1) (x2 y2) ...]\n") + if not self.boundary: + self.Autoboundary() + if self.boundary: # Check in case there were no regions + f.write(str(self.boundary) + "\n") for reg in self.regions: f.write(str(reg) + "\n") f.write("\n") @@ -480,9 +490,13 @@ def OnMouseLeftUp(self, event): # Get click position ptPix = event.GetPosition() pt, iReg, iPt, iEd = self.SnapPoint(self.Pix2Map(ptPix)) - + + # Has been handled by double-click event handler + if self.justDoubleClicked: + self.justDoubleClicked = False # Reset flag + # Creating a rectangular region - if self.toggleSquare.GetValue(): + elif self.toggleSquare.GetValue(): # Making the second corner of rectangle if self.polyVerts: # Snap vertices to regions as necessary, not to Vicon @@ -583,7 +597,24 @@ def OnMouseLeftUp(self, event): self.AddToUndo(Action(oldRegion, self.regions[iReg])) self.polyVerts = [] self.RedrawCanvas() - + + # Dragging region(s) or vertices + elif self.selectedRegions and \ + pt.Dist(self.leftClickPt) > self.tolerance: + self.leftClickPt, iReg, iPt, iEd, snapped = \ + self.SnapRegions(self.leftClickPt, False) + iRegInner = self.InsideRegions(self.leftClickPt) + + # Dragging point(s) + if iPt != -1: + # TODO: Change point(s) position and check adjacencies + pass + + # Dragging region(s) + elif iReg != -1 or iRegInner != -1: + # TODO: Change region(s) position and check adjacencies + pass + # Panning the map view elif pt.Dist(self.leftClickPt) > self.tolerance: downClickPix = self.Map2Pix(self.leftClickPt) @@ -592,15 +623,48 @@ def OnMouseLeftUp(self, event): self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ self.canvasOffset.y) self.RedrawCanvas() + + # Check if selecting or deselecting a region + else: + if iReg != -1: + iRegInner = iReg + else: + iRegInner = self.InsideRegions(pt) + + # Do something about that region selection + if iRegInner != -1: + print "Inside region ", iRegInner + # Selecting single region + if not event.CmdDown(): + self.selectedRegions = [] + self.selectedRegions.append(iRegInner) + + # Deselecting a region + elif iRegInner in self.selectedRegions: + self.selectedRegions.remove(iRegInner) + + # Adding a region to the selection + else: + self.selectedRegions.append(iRegInner) + + # Clear all region selections + else: + print "Outside regions" + self.selectedRegions = [] + self.RedrawCanvas() # TODO: May need to handle all mouse events in one huge window # to avoid having the double click interfere with regular clicking - #def OnMouseLeftDClick(self, event): - # """Perform action based on current mode of operation.""" - # # Creating a polygonal region - # if self.togglePoly.GetValue() and self.polyVerts and \ - # len(self.polyVerts) > 2: - # self.CreateRegion() + def OnMouseLeftDClick(self, event): + """Perform action based on current mode of operation.""" + + # Set double-click flag so that next mouse-up is ignored + self.justDoubleClicked = True + + # Creating a polygonal region + if self.togglePoly.GetValue() and self.polyVerts and \ + len(self.polyVerts) > 2: + self.CreateRegion() def OnMouseRightDown(self, event): """Save the right click point so it can be used later.""" @@ -687,24 +751,26 @@ def OnCanvasPaint(self, event): # Set up to draw dc = wx.PaintDC(self.canvas) self.RedrawCanvas(dc) - + def RedrawCanvas(self, dc=None): """Redraw the contents of the canvas panel. Callable from outside or inside EVT_PAINT handler. - + dc - Device context object for drawing to canvas. """ # Clear canvas self.canvas.ClearBackground() - - # Create device context if calling from outside EVT_PAINT handler + + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) - - # Redraw all markers + + # Draw grid background self.DrawGrid(dc) + + # Redraw all markers self.DrawMarkers(self.markerPoses, dc) - + # Redraw all regions for region in self.regions: self.DrawRegion(region, dc) @@ -713,20 +779,24 @@ def RedrawCanvas(self, dc=None): # Lower triangular matrix only for iReg in range(1, len(self.adjacent)): self.DrawAdjacencies(iReg, dc) - + + # Redraw selection handles + for iReg in self.selectedRegions: + self.DrawSelectionHandle(iReg, dc) + # Redraw partial region if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): for iVert in range(len(self.polyVerts) - 1): ptPix1 = self.Map2Pix(self.polyVerts[iVert]) ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) - + def DrawGrid(self, dc=None): """Draw the axes and grid on the map canvas. dc - Device context used for drawing on the canvas panel. """ - # Create device context if calling from outside EVT_PAINT handler + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) @@ -744,10 +814,11 @@ def DrawGrid(self, dc=None): def DrawMarkers(self, poses, dc=None): """Draw markers at specified global positions. - poses - List of tuples containing positions of markers in meters [(x, y), ...] + poses - List of tuples containing positions of markers in meters + [(x, y), ...] dc - Device context used for drawing on the canvas panel. """ - # Create device context if calling from outside EVT_PAINT handler + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) @@ -755,6 +826,20 @@ def DrawMarkers(self, poses, dc=None): for pose in poses: posePix = self.Map2Pix(pose) dc.DrawCircle(posePix[0], posePix[1], 5) + + def DrawSelectionHandle(self, iReg, dc=None): + """Draw markers indicating region(s) that have been selected by mouse. + + iReg - Index of region selected + dc - Device context used for drawing on the canvas panel + """ + # Create device context if not created + if not dc: + dc = wx.WindowDC(self.canvas) + + for pt in self.regions[iReg].verts: + ptPix = self.Map2Pix(pt) + dc.DrawCircle(ptPix[0], ptPix[1], 5) def DrawRegion(self, region, dc=None): """Draw a single region. @@ -762,7 +847,7 @@ def DrawRegion(self, region, dc=None): region - Instance of Region class, contains information about the region. dc - Device context used for drawing on the canvas panel. """ - # Create device context if calling from outside EVT_PAINT handler + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) @@ -779,7 +864,7 @@ def DrawAdjacencies(self, iReg, dc=None): iReg - Int, index of region of interest in self.regions. dc - Device context used for drawing on the canvas panel. """ - # Create device context if calling from outside other drawing methods + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) oldPen = dc.GetPen() @@ -931,6 +1016,27 @@ def AddPointToRegion(self, pt, iReg, iEdge): elif thisRegFace == iEdge: self.adjacent[jReg][iReg].\ append((otherRegFace, thisRegFace + 1)) + + def Autoboundary(self): + """Automatically create region representing the boundary of the map.""" + # Check that there are regions first + if self.regions: + # Find extrema of map + minx = float('inf') + maxx = float('-inf') + miny = float('inf') + maxy = float('-inf') + for reg in self.regions: + for pt in reg.verts: + minx = min(minx, pt.x) + maxx = max(maxx, pt.x) + miny = min(miny, pt.y) + maxy = max(maxy, pt.y) + + # Create region + points = [Point(minx, maxy), Point(maxx, maxy), \ + Point(maxx, miny), Point(minx, miny)] + self.boundary = Region(points, 'boundary') def AddToUndo(self, action): """Add specified action to the undo queue. @@ -1128,7 +1234,23 @@ def SnapVicon(self, pt, snapped): i += 1 return pt, idxMarker, snapped - + + def InsideRegions(self, pt): + """Find region containing point. Looks through regions on top first + (those that were created later). + + pt - Point, point of interest + returns - int, index of containing region, or -1 if none + """ + iReg = -1 + i = len(self.regions) - 1 + while iReg == -1 and i >= 0: + if self.regions[i].PtInRegion(pt): + iReg = i + i -= 1 + + return iReg + def Map2Pix(self, pose): """Convert from map coordinates to pixel coordinates. @@ -1279,8 +1401,8 @@ class Region: def __init__(self, points, name, rgb=None): # TODO: random color/name """Create an object to represent a region. - points - List of tuples of floats containing vertex information - [(x1, y1), (x2, y2), ...] + points - List of Points containing vertex information + [Point(x1, y1), Point(x2, y2), ...] name - String defining region name rgb - List of integers defining color [red, green, blue], each with value in range [0 255] @@ -1303,6 +1425,26 @@ def __str__(self): s += "\t" s += "]" return s + + def PtInRegion(self, pt): + """Check if a point is inside of the region. + Algorithm taken from C# version of Solution 1 from + http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ + + pt - Point to check + returns - Boolean, True if the point is inside of the region + """ + result = False + n = len(self.verts) + for i in range(n): + j = (i + 1) % n + if ((self.verts[j].y <= pt.y and pt.y < self.verts[i].y) or \ + (self.verts[i].y <= pt.y and pt.y < self.verts[j].y)) and \ + pt.x < (self.verts[i].x - self.verts[j].x) * \ + (pt.y - self.verts[j].y) / \ + (self.verts[i].y - self.verts[j].y) + self.verts[j].x: + result = not result + return result # end of class Region diff --git a/src/lib/regions.py b/src/lib/regions.py index af93ae55..ce778a1e 100755 --- a/src/lib/regions.py +++ b/src/lib/regions.py @@ -406,7 +406,7 @@ def readFile(self, filename): # Each transition line format is this: # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] for transition in data["Transitions"]: - transData = re.sub('[\[\]\(\)]', '', transData) # Remove brackets + transition = re.sub('[\[\]\(\)]', '', transition) # Remove brackets transData = transition.split(); # Separate on any whitespace region1 = int(transData[0]) region2 = int(transData[1]) @@ -477,20 +477,22 @@ def calcMapCalibFromFile(self, dataFromAllRegions): """ regionDataList = [] boundingBoxList = [] - minxAll = float(dataFromAllRegions[0][4]) - maxxAll = minxAll - minyAll = float(dataFromAllRegions[0][5]) - maxyAll = minyAll + print dataFromAllRegions + minxAll = float("inf") + maxxAll = float("-inf") + minyAll = float("inf") + maxyAll = float("-inf") for region in dataFromAllRegions: region = re.sub('[\[\]\(\)\{\}]', '', region) # Remove brackets regionData = region.split() # Separates on any whitespace for i in range(1, 4): # Convert colors to integers regionData[i] = int(regionData[i]) # Extract all region points and calculate bounding box - minx = float(regionData[4]) - maxx = minx - miny = float(regionData[5]) - maxy = miny + minx = float("inf") + maxx = float("-inf") + miny = float("inf") + maxy = float("-inf") + for i in range(4, len(regionData), 2): x = float(regionData[i]) y = float(regionData[i+1]) diff --git a/src/regionEditor.py b/src/regionEditor.py index 1ce53a8b..53740ca8 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -169,6 +169,8 @@ def __init__(self, *args, **kwds): self.polySnaps = [] # Keeps snap information for each # new region creation point # [(idxReg, idxPt, idxEdge), ...] + self.boundary = None # Region representing the map bound + # TODO: When changing the name of a region, check if it is called boundary # Set up for undo/redo capabilities # TODO: Disable self.menuUndo and self.menuRedo @@ -306,6 +308,10 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. f.write("\n\n") # TODO: Support for obstacles f.write("Regions: # Name {ColorR ColorG ColorB} " + \ "[(x1 y1) (x2 y2) ...]\n") + if not self.boundary: + self.Autoboundary() + if self.boundary: # Check in case there were no regions + f.write(str(self.boundary) + "\n") for reg in self.regions: f.write(str(reg) + "\n") f.write("\n") @@ -931,6 +937,27 @@ def AddPointToRegion(self, pt, iReg, iEdge): elif thisRegFace == iEdge: self.adjacent[jReg][iReg].\ append((otherRegFace, thisRegFace + 1)) + + def Autoboundary(self): + """Automatically create region representing the boundary of the map.""" + # Check that there are regions first + if self.regions: + # Find extrema of map + minx = float('inf') + maxx = float('-inf') + miny = float('inf') + maxy = float('-inf') + for reg in self.regions: + for pt in reg.verts: + minx = min(minx, pt.x) + maxx = max(maxx, pt.x) + miny = min(miny, pt.y) + maxy = max(maxy, pt.y) + + # Create region + points = [Point(minx, maxy), Point(maxx, maxy), \ + Point(maxx, miny), Point(minx, miny)] + self.boundary = Region(points, 'boundary') def AddToUndo(self, action): """Add specified action to the undo queue. From 703852b2ba2df82db82f932c3fa0fa8c1b67cdf4 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 11 Apr 2012 10:31:17 -0400 Subject: [PATCH 04/26] Added dialog box to edit region information. Made regions selectable. --- .../NewRegionEditor/RegionEditorV3.wxg | 98 +++++++++++++++- .../NewRegionEditor/regionEditor.py | 109 ++++++++++++++++-- 2 files changed, 198 insertions(+), 9 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg index c1bc2602..5c3bd670 100644 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg @@ -1,7 +1,7 @@ - + - + Region Editor @@ -317,4 +317,98 @@

    c}_9GXk>Xgfhvw2enol#k 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 literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.Platform.Windows.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.Platform.Windows.dll new file mode 100644 index 0000000000000000000000000000000000000000..53a83447b9383c94eb02ebf225f90078988ba65d GIT binary patch literal 86016 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�^RaGT5d@FRX@Dm)lkq8vQQrfB8nQ@xBs$0D+a3>}IrG*O~tyV>JrT8K-5)^TPend5LeR z*53r~FYS3T;C)KKYka;Dd~E{!A_tRkKoz8I_`jW}E{u@H8=dQg!9Y-gR7e#ibRk2P zHlj|R=Tv4TsM5BpZy`}_SiRrI*UEg{6X0O#a8sz;@Pk}E8KUMT>KXD0YeQz7-ipcG z+c}8827xE)A67%6vD{Wn4;1qQlqzKZc_l;Gsyjf~G@gw&YsY zbY0qf*4o_{R)6CROv&HN%K<0cRCZmyr8c16PbB*!sH<0kf-1-%thg(Sa3dDP=6dJJ zNAsVpaOOX|3pZbMlQnuOM}B!puhnWw{pQ)(ZDNnSC7KLO)K$*`V5Wr zW!Iz?qcFDk>c7SCn9u^X^U^yO8_} zdQRvJcM3fxr?1eHe{dH$^7}@njttL%HhAPu;q4wnV9dyONZvrE{DSC!wdDv|9pVI+ z^YJ6$ASMJ>>KFzf&&q`&&W=_Rj<7>nN8X_H8Da(nVg}_{ePn%wE9O~xKP`C_D?UJ> z_-=O5oFi1CxYv{dh3JrNZwA}RD(W9MBD8PVt~wBwHqa?+gKj^G&qVBye&1>Onz%l) zv8PE31GyA2tsy$o#r17<*!rt%_01Crm(-xlc%i~T#`6EDgHXu;5|R9zYdK^{yKYp zfVLU^brRtEH~Q=7=aopd#-E}-XFC4$&R+rEI#@cGT)G`7XV@ssb�hh;zI~eB|rhfK-dg3 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 z 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

}AaL#n*ay*Z9&V^bV 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�>yfq+ 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 literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe.config b/src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe.config new file mode 100644 index 00000000..108d3a0e --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe.config @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py new file mode 100644 index 00000000..3134af6c --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -0,0 +1,1706 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-15 -*- +# generated by wxGlade 0.6.5 (standalone edition) on Mon Feb 13 13:09:57 2012 + +import os +import sys +import collections +import time +import math +import wx +import threading +import socket +import struct +import copy +import winsound +import pyttsx +from regionEditor import Point + +# begin wxGlade: extracode +# end wxGlade + +class regionEditor(wx.Frame): + def __init__(self, *args, **kwds): + # begin wxGlade: regionEditor.__init__ + kwds["style"] = wx.DEFAULT_FRAME_STYLE + wx.Frame.__init__(self, *args, **kwds) + + # Menu Bar + self.RegionEditor_menubar = wx.MenuBar() + self.filemenu = wx.Menu() + self.menuNew = wx.MenuItem(self.filemenu, wx.NewId(), "New", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuNew) + self.menuOpen = wx.MenuItem(self.filemenu, wx.NewId(), "Open", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuOpen) + self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSave) + self.menuSaveAs = wx.MenuItem(self.filemenu, wx.NewId(), "Save As", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSaveAs) + self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuExit) + self.RegionEditor_menubar.Append(self.filemenu, "File") + self.menuEdit = wx.Menu() + self.menuUndo = wx.MenuItem(self.menuEdit, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuUndo) + self.menuRedo = wx.MenuItem(self.menuEdit, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuRedo) + self.RegionEditor_menubar.Append(self.menuEdit, "Edit") + self.menuDrawing = wx.Menu() + self.menuAutobound = wx.MenuItem(self.menuDrawing, wx.NewId(), "Autoboundary", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuAutobound) + self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "Rectangle", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuRect) + self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuPoly) + self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuAddPoint) + self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuRemPoint) + self.RegionEditor_menubar.Append(self.menuDrawing, "Drawing") + self.menuView = wx.Menu() + self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "Markers", "", wx.ITEM_CHECK) + self.menuView.AppendItem(self.menuMarkers) + self.menuMarkersClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuMarkersClear) + self.menuCamera = wx.MenuItem(self.menuView, wx.NewId(), "Camera Capture", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuCamera) + self.menuImageImport = wx.MenuItem(self.menuView, wx.NewId(), "Import Background Image", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuImageImport) + self.menuImageClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Background Image", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuImageClear) + self.RegionEditor_menubar.Append(self.menuView, "View") + self.helpmenu = wx.Menu() + self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuAbout) + self.RegionEditor_menubar.Append(self.helpmenu, "Help") + self.SetMenuBar(self.RegionEditor_menubar) + # Menu Bar end + self.sidebar = wx.Panel(self, -1) + self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Vicon") + self.buttonCamera = wx.Button(self.sidebar, -1, "Camera") + self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Rect.") + self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") + self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Length") + self.toggleFeedback = wx.ToggleButton(self.sidebar, -1, "Feedback") + self.buttonCal = wx.Button(self.sidebar, -1, "Calibrate") + self.canvas = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + + self.__set_properties() + self.__do_layout() + + self.Bind(wx.EVT_MENU, self.OnMenuNew, self.menuNew) + self.Bind(wx.EVT_MENU, self.OnMenuOpen, self.menuOpen) + self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) + self.Bind(wx.EVT_MENU, self.OnMenuSaveAs, self.menuSaveAs) + self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) + self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) + self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) + self.Bind(wx.EVT_MENU, self.OnMenuAutobound, self.menuAutobound) + self.Bind(wx.EVT_MENU, self.OnMenuRect, self.menuRect) + self.Bind(wx.EVT_MENU, self.OnMenuPoly, self.menuPoly) + self.Bind(wx.EVT_MENU, self.OnMenuAddPoint, self.menuAddPoint) + self.Bind(wx.EVT_MENU, self.OnMenuRemPoint, self.menuRemPoint) + self.Bind(wx.EVT_MENU, self.OnMenuMarkers, self.menuMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuMarkersClear, self.menuMarkersClear) + self.Bind(wx.EVT_MENU, self.OnMenuCamera, self.menuCamera) + self.Bind(wx.EVT_MENU, self.OnMenuImageImport, self.menuImageImport) + self.Bind(wx.EVT_MENU, self.OnMenuImageClear, self.menuImageClear) + self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnButtonCamera, self.buttonCamera) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFeedback, self.toggleFeedback) + self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) + # end wxGlade + + # Handle input + if len(args) > 2 and isinstance(args[2], str): + self.fileName = os.path.join(os.getcwd(), args[2]) + else: + self.fileName = "" + + # Bind mouse events + self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown, self.canvas) + self.canvas.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp, self.canvas) + #self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) + self.canvas.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown, self.canvas) + self.canvas.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp, self.canvas) + self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel, self.canvas) + self.canvas.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow, self.canvas) + self.canvas.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow, self.canvas) + + # Bind keyboard events + self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) + self.canvas.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.canvas) + + # Determine mapping of the canvas panel to the field + canvasLen = self.canvas.GetSize() # Initial size of canvas (pixels) + fieldRange = [(-3.0, 9.0), (-3.0, 3.0)] # Initial range of field (m) + # [(xmin, xmax), (ymin, ymax)] + # pose = pixPose * scale + offset + # Note: y-pixels and y-pose have opposite directions + xScale = (fieldRange[0][1] - fieldRange[0][0]) / float(canvasLen[0]) + xOffset = fieldRange[0][0] + yScale = -(fieldRange[1][1] - fieldRange[1][0]) / float(canvasLen[1]) + yOffset = -fieldRange[1][0] + self.canvasScale = Point(xScale, yScale) + self.canvasOffset = Point(xOffset, yOffset) + + # Set up for region creation + self.regions = [] # List of regions in the map + self.adjacent = [] # List of lists holding transition + # edges between regions. + # adjacent[i][j] contains a list of + # indices of edges in region i that + # connect to edges in region j. + # adjacent[j][i] should contain a + # list of the same length, but edge + # indices are for region j. + # adjacent[i][i] will be empty. + self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick + self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick + self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) + self.polyVerts = [] # Keeps points for region creation + # and dimensioning + # Region creation: [Point(x0,y0), ...] + # Dimensioning: (idxRegion, idxVert) + self.polySnaps = [] # Keeps snap information for each + # new region creation point + # [(idxReg, idxPt, idxEdge), ...] + + # Set up for undo/redo capabilities + # TODO: Disable self.menuUndo and self.menuRedo + self.unredoBufLen = 50 + self.undoActions = collections.deque() + self.redoActions = collections.deque() + + # Add paint event handler to draw on the canvas + self.Bind(wx.EVT_PAINT, self.OnCanvasPaint, self.canvas) + + # Create Vicon listener + self.markerPoses = [] # Marker positions to be drawn + self.viconListener = ViconMarkerListener(self) + self.dlgFeedback = None + + # Add close event handler to cleanup and possibly save before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Display the GUI window and set up the map canvas + self.Show() + self.DrawGrid() + + def __set_properties(self): + # begin wxGlade: regionEditor.__set_properties + self.SetTitle("Region Editor") + self.toggleVicon.SetMinSize((50, 50)) + self.buttonCamera.SetMinSize((50, 50)) + self.toggleSquare.SetMinSize((50, 50)) + self.togglePoly.SetMinSize((50, 50)) + self.toggleDim.SetMinSize((50, 50)) + self.toggleFeedback.SetMinSize((50, 50)) + self.buttonCal.SetMinSize((50, 50)) + self.sidebar.SetMinSize((150, 400)) + self.canvas.SetMinSize((800, 400)) + self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255)) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: regionEditor.__do_layout + sizer_1 = wx.BoxSizer(wx.HORIZONTAL) + grid_sizer_1 = wx.GridSizer(4, 2, 5, 5) + grid_sizer_1.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonCamera, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleFeedback, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonCal, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + self.sidebar.SetSizer(grid_sizer_1) + sizer_1.Add(self.sidebar, 0, wx.EXPAND, 0) + sizer_1.Add(self.canvas, 1, wx.EXPAND, 0) + self.SetSizer(sizer_1) + sizer_1.Fit(self) + self.Layout() + # end wxGlade + + def OnClose(self, event): + """Perform cleanup tasks and close the application.""" + # Check if the closure can even be canceled + # TODO: Check if map is unsaved and ask if they want to save before closing + if not event or event.CanVeto(): + dlg = wx.MessageDialog(self, + "Do you really want to close this application?", + "Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION) + result = dlg.ShowModal() + dlg.Destroy() + if result == wx.ID_OK: + self.viconListener.stop() + # TODO: Check if vicon is indeed running, and put wait-notify + # in to close port before closing GUI + self.Destroy() + else: + self.viconListener.stop() + self.Destroy() + + def OnToggleVicon(self, event): # wxGlade: regionEditor. + # Switch Vicon streaming on or off based on state of toggle button + if self.toggleVicon.GetValue(): + self.viconListener.start() + + # TODO: Add while loop to wait for data to come in + # If it times out print message + # If data comes in, zoom out to ensure all markers seen + else: + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + + def OnButtonCamera(self, event): # wxGlade: regionEditor. + print "Camera not yet implemented" + # TODO + event.Skip() + + def OnToggleSquare(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleSquare) + + def OnTogglePoly(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.togglePoly) + + def OnToggleDim(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleDim) + + def OnToggleFeedback(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleFeedback) + if self.toggleFeedback.GetValue(): + self.dlgFeedback = FeedbackDialog(self) + self.dlgFeedback.ShowModal() + elif self.dlgFeedback: + self.dlgFeedback.OnClose(None) + + def OnButtonCal(self, event): # wxGlade: regionEditor. + # TODO + print "Calibration not yet implemented" + self.ResetMapToggles() + + def OnMenuNew(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuNew' not implemented" + event.Skip() + + def OnMenuOpen(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuOpen' not implemented" + event.Skip() + + def OnMenuSave(self, event): # wxGlade: regionEditor. + """Save to file that has already been used.""" + if self.fileName: + f = open(self.fileName, 'w') + f.write("# This is a region definition file for the LTLMoP " + \ + "toolkit.\n# Format details are described at the " + \ + "beginning of each section below.\n# Note that all values " + \ + "are separated by *tabs*.\n\nBackground: # Relative path " + \ + "of background image file\n") + f.write("None\n\n") # TODO: Support for background images + f.write("Obstacles: # Indices of regions to treat as obstacles\n") + f.write("\n\n") # TODO: Support for obstacles + f.write("Regions: # Name {ColorR ColorG ColorB} " + \ + "[(x1 y1) (x2 y2) ...]\n") + for reg in self.regions: + f.write(str(reg) + "\n") + f.write("\n") + f.write("Thumbnail: # Relative path of image file that has " + \ + "region shapes overlayed on background image\n") + f.write("None\n\n") # TODO: Save png thumbnail + f.write("Transitions: # Region1Idx Region2Idx " + \ + "[(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) " + \ + "...]\n") + for iAdj in range(len(self.adjacent)): + for jAdj, adjList in enumerate(self.adjacent[iAdj]): + if iAdj != jAdj and adjList: + line = "%d\t%d\t[" % (iAdj, jAdj) + for kAdj, adj in enumerate(adjList): + line += "(%d\t%d)" % adj + if kAdj < len(adjList) - 1: + line += "\t" + line += "]\n" + f.write(line) + f.close() + else: + self.OnMenuSaveAs(None) + + def OnMenuSaveAs(self, event): # wxGlade: regionEditor. + dialogSave = wx.FileDialog(self, message="Save File As", \ + defaultDir=sys.path[0], \ + defaultFile=self.fileName.split('\\').pop(), \ + wildcard="*.regions", style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT) + # Hit Save and confirmed overwrite if necessary + if dialogSave.ShowModal() == wx.ID_OK: + self.fileName = dialogSave.GetPath() + self.OnMenuSave(None) + dialogSave.Destroy() + + def OnMenuExit(self, event): # wxGlade: regionEditor. + self.OnClose(None) + + def OnMenuUndo(self, event): # wxGlade: regionEditor. + """Revert the most recent undoable change.""" + # Currently drawing polygon + # Note that this is not a redoable action by design + if self.polyVerts: + self.polyVerts = [] + self.polySnaps = [] + self.RedrawCanvas() + # Other undoable changes exist + elif self.undoActions: + action = self.undoActions.pop() + # Creation action + if not action.oldState: + # Single region creation + if isinstance(action.newState, Region): + self.regions.remove(action.newState) + # Map load from blank canvas + if isinstance(action.newState, list): + self.regions = [] + # TODO: Background image load from blank + # Deletion action + if not action.newState: + # Single region deletion + if isinstance(action.oldState, Region): + self.regions.append(action.oldState) + # Multiple region deletion or map clear + if isinstance(action.oldState, list): + self.regions.extend(action.oldState) + # TODO: Background image clear + # Modification action + else: + # Single region modification + if isinstance(action.oldState, Region): + idx = self.regions.index(action.newState) + self.regions[idx] = action.oldState + # Map load from non-blank canvas + if isinstance(action.oldState, list): + self.regions = action.oldState + # TODO: Background image load from other image + self.redoActions.append(action) + # TODO: if not self.undoActions: disable self.menuUndo + # TODO: enable self.menuRedo + self.RedrawCanvas() + + def OnMenuRedo(self, event): # wxGlade: regionEditor. + """Reapply most recently undone action.""" + # Redoable actions exist + if self.redoActions: + action = self.redoActions.pop() + # Creation action + if not action.oldState: + # Single region creation + if isinstance(action.newState, Region): + self.regions.append(action.newState) + # Map load from blank canvas + if isinstance(action.newState, list): + self.regions = action.newState + # TODO: Background image load from blank + # Deletion action + if not action.newState: + # Single region deletion + if isinstance(action.oldState, Region): + self.regions.remove(action.oldState) + # Multiple region deletion or map clear + if isinstance(action.oldState, list): + for reg in action.oldState: + self.regions.remove(reg) + # TODO: Background image clear + # Modification action + else: + # Single region modification + if isinstance(action.oldState, Region): + idx = self.regions.index(action.oldState) + self.regions[idx] = action.newState + # Map load from non-blank canvas + if isinstance(action.oldState, list): + self.regions = action.newState + # TODO: Background image load from other image + self.undoActions.append(action) + # TODO: if not self.redoActions: disable self.menuRedo + # TODO: enable self.menuUndo + self.RedrawCanvas() + + def OnMenuAutobound(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuAutobound' not implemented" + event.Skip() + + def OnMenuRect(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuRect' not implemented" + event.Skip() + + def OnMenuPoly(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuPoly' not implemented" + event.Skip() + + def OnMenuAddPoint(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuAddPoint' not implemented" + event.Skip() + + def OnMenuRemPoint(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuRemPoint' not implemented" + event.Skip() + + def OnMenuMarkers(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuMarkers' not implemented" + event.Skip() + + def OnMenuMarkersClear(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuMarkersClear' not implemented" + event.Skip() + + def OnMenuCamera(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuCamera' not implemented" + event.Skip() + + def OnMenuImageImport(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuImageImport' not implemented" + event.Skip() + + def OnMenuImageClear(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuImageClear' not implemented" + event.Skip() + + def OnMenuAbout(self, event): # wxGlade: regionEditor. + print "About not yet implemented" + event.Skip() + + def OnMouseLeftDown(self, event): + """Save the left click point so it can be used later.""" + self.leftClickPt, iReg, iPt, iEd = \ + self.SnapPoint(self.Pix2Map(event.GetPosition())) + + def OnMouseLeftUp(self, event): + """Perform appropriate action based on current mode of operation.""" + # Get click position + ptPix = event.GetPosition() + pt, iReg, iPt, iEd = self.SnapPoint(self.Pix2Map(ptPix)) + + # Creating a rectangular region + if self.toggleSquare.GetValue(): + # Making the second corner of rectangle + if self.polyVerts: + # Snap vertices to regions as necessary, not to Vicon + # This may result in a non-square region, but may be preferable + x0 = self.polyVerts[0].x + y0 = self.polyVerts[0].y + pt1, iReg1, iPt1, iEd1, snapped1 = \ + self.SnapRegions(Point(x0, pt.y), False) + pt3, iReg3, iPt3, iEd3, snapped3 = \ + self.SnapRegions(Point(pt.x, y0), False) + # Move clicked points if other vertices snap and they don't + if snapped1: + if iReg == -1: + pt = Point(pt.x, pt1.y) + if self.polySnaps[0][0] == -1: + self.polyVerts[0] = Point(pt1.x, self.polyVerts[0].y) + if snapped3: + if iReg == -1: + pt = Point(pt3.x, pt.y) + if self.polySnaps[0][0] == -1: + self.polyVerts[0] = Point(self.polyVerts[0].x, pt3.y) + self.polyVerts.append(pt1) + self.polyVerts.append(pt) + self.polyVerts.append(pt3) + self.polySnaps.append((iReg1, iPt1, iEd1)) + self.polySnaps.append((iReg, iPt, iEd)) + self.polySnaps.append((iReg3, iPt3, iEd3)) + # Create a square between previous click and new click + self.CreateRegion() + # Making the first corner of rectangle + else: + # Save point as first corner of square + self.polyVerts.append(pt) + self.polySnaps.append((iReg, iPt, iEd)) + + # Creating a polygonal region + elif self.togglePoly.GetValue(): + # Closing the polygon to create a region + if self.polyVerts and len(self.polyVerts) > 2 and \ + pt == self.polyVerts[0]: + self.CreateRegion() + # New point distinct from others + elif not pt in self.polyVerts: + self.polyVerts.append(pt) + self.polySnaps.append((iReg, iPt, iEd)) + # Plot line between last two points + if len(self.polyVerts) > 1: + x1pix, y1pix = self.Map2Pix(self.polyVerts[-2]) + x2pix, y2pix = self.Map2Pix(pt) + dc = wx.WindowDC(self.canvas) + dc.DrawLine(x1pix, y1pix, x2pix, y2pix) + + # Dimensioning region edge + elif self.toggleDim.GetValue(): + # First point on region to be clicked + if not self.polyVerts and iReg != -1 and iPt != -1: + # Store region and point indeces + self.polyVerts = (iReg, iPt) + # Second unique point to be clicked + elif iReg != -1 and iPt != -1 and (iReg, iPt) != self.polyVerts: + # Request dimension + currDist = self.regions[iReg].verts[iPt].Dist(self.regions[\ + self.polyVerts[0]].verts[self.polyVerts[1]]) + dimDlg = wx.TextEntryDialog(self, \ + "Current Length: %.3f" % currDist, caption='Dimension') + if dimDlg.ShowModal() == wx.ID_OK: + # Check for valid dimension (allow negative values) + try: + dim = float(dimDlg.GetValue()) + except ValueError: + dimDlg.Destroy() + return + dimDlg.Destroy() + + # Move second point along same line to specified distance + oldRegion = copy.deepcopy(self.regions[iReg]) + pt0 = self.regions[self.polyVerts[0]].verts[self.polyVerts[1]] + signx = 1.0 + signy = 1.0 + # Vertical line case + if pt0.x == pt.x: + if pt0.y > pt.y: + signy = -1.0 + dx = 0.0 + dy = signy * (dim - pt.Dist(pt0)) + # Horizontal and normal line cases + else: + if pt0.x > pt.x: + signx = -1.0 + if pt0.y > pt.y: + signy = -1.0 + slope = (pt.y - pt0.y) / (pt.x - pt0.x) + dx = signx * (dim - pt.Dist(pt0)) / \ + math.sqrt(1 + slope ** 2) + dy = slope * dx + self.regions[iReg].verts[iPt] = \ + self.regions[iReg].verts[iPt] + Point(dx, dy) + self.AddToUndo(Action(oldRegion, self.regions[iReg])) + self.polyVerts = [] + self.RedrawCanvas() + + # Panning the map view + elif pt.Dist(self.leftClickPt) > self.tolerance: + downClickPix = self.Map2Pix(self.leftClickPt) + self.canvasOffset = Point(self.canvasScale.x * \ + (downClickPix[0] - ptPix[0]) + self.canvasOffset.x, \ + self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ + self.canvasOffset.y) + self.RedrawCanvas() + + # TODO: May need to handle all mouse events in one huge window + # to avoid having the double click interfere with regular clicking + #def OnMouseLeftDClick(self, event): + # """Perform action based on current mode of operation.""" + # # Creating a polygonal region + # if self.togglePoly.GetValue() and self.polyVerts and \ + # len(self.polyVerts) > 2: + # self.CreateRegion() + + def OnMouseRightDown(self, event): + """Save the right click point so it can be used later.""" + self.rightClickPt, iReg, iPt, iEd = \ + self.SnapPoint(self.Pix2Map(event.GetPosition())) + + def OnMouseRightUp(self, event): + # Check if in region creation or dimensioning mode + if self.toggleSquare.GetValue() or self.togglePoly.GetValue() or \ + self.toggleDim.GetValue(): + self.ResetMapToggles() + # TODO: else: open some kind of right-click menu at right-click point + + def OnMouseWheel(self, event): + """Zoom on the map canvas.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.canvasOffset = Point(float(ptPix[0]) * self.canvasScale.x * \ + (1 - scaler) + self.canvasOffset.x, float(ptPix[1]) * \ + self.canvasScale.y * (1 - scaler) + self.canvasOffset.y) + self.canvasScale = self.canvasScale * scaler + self.RedrawCanvas() + + def OnKeyDown(self, event): + keycode = event.GetKeyCode() + + # Backspace/Delete - Removes last set point during region creation + if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ + self.polyVerts: + if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): + self.polyVerts.pop() + self.polySnaps.pop() + self.RedrawCanvas() + elif self.toggleDim.GetValue(): + self.polyVerts = [] + + # Escape - Stops region/dimension creation + elif keycode == wx.WXK_ESCAPE and (self.toggleSquare.GetValue() or \ + self.togglePoly.GetValue() or self.toggleDim.GetValue()): + self.ResetMapToggles() + + # Ctrl+n - New + if event.CmdDown() and keycode == 78: + self.OnMenuNew(None) + + # Ctrl+o - Open + if event.CmdDown() and keycode == 79: + self.OnMenuOpen(None) + + # Ctrl+s - Save + if event.CmdDown() and keycode == 83: + self.OnMenuSave(None) + + # Ctrl+q - Quit + if event.CmdDown() and keycode == 81: + self.OnMenuExit(None) + + # Ctrl+z - Undo + elif event.CmdDown() and keycode == 90: + self.OnMenuUndo(None) + + # Ctrl+y - Redo + elif event.CmdDown() and keycode == 89: + self.OnMenuRedo(None) + + # Pass event on so other key combinations still work + else: + event.Skip() + + def OnEnterWindow(self, event): + """Set the focus to the canvas to enable zooming.""" + self.canvas.SetFocus() + + def OnLeaveWindow(self, event): + """Unset the focus from the canvas to disable zooming.""" + self.SetFocus() + + def OnCanvasPaint(self, event): + """Redraw the contents of the canvas panel.""" + # Set up to draw + dc = wx.PaintDC(self.canvas) + self.RedrawCanvas(dc) + + def RedrawCanvas(self, dc=None): + """Redraw the contents of the canvas panel. + Callable from outside or inside EVT_PAINT handler. + + dc - Device context object for drawing to canvas. + """ + # Clear canvas + self.canvas.ClearBackground() + + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Redraw all markers + self.DrawGrid(dc) + self.DrawMarkers(self.markerPoses, dc) + + # Redraw all regions + for region in self.regions: + self.DrawRegion(region, dc) + + # Redraw all transition face indicators + # Lower triangular matrix only + for iReg in range(1, len(self.adjacent)): + self.DrawAdjacencies(iReg, dc) + + # Redraw partial region + if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): + for iVert in range(len(self.polyVerts) - 1): + ptPix1 = self.Map2Pix(self.polyVerts[iVert]) + ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) + dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) + + def DrawGrid(self, dc=None): + """Draw the axes and grid on the map canvas. + + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw axes + xOff = self.canvasOffset.x + yOff = self.canvasOffset.y + xPixOff = int(-xOff / self.canvasScale.x) + yPixOff = int(-yOff / self.canvasScale.y) + colLim, rowLim = self.canvas.GetSize() + dc.DrawLine(0, yPixOff, colLim, yPixOff) + dc.DrawLine(xPixOff, 0, xPixOff, rowLim) + + # TODO: Draw grid/ticks + + def DrawMarkers(self, poses, dc=None): + """Draw markers at specified global positions. + + poses - List of tuples containing positions of markers in meters [(x, y), ...] + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw each marker + for pose in poses: + posePix = self.Map2Pix(pose) + dc.DrawCircle(posePix[0], posePix[1], 5) + + def DrawRegion(self, region, dc=None): + """Draw a single region. + + region - Instance of Region class, contains information about the region. + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw region + vertsPix = [] + for vert in region.verts: + vertsPix.append(self.Map2Pix(vert)) + dc.DrawPolygon(vertsPix) + + def DrawAdjacencies(self, iReg, dc=None): + """Draw lines to show adjacent region faces for one region. + Uses self.regions and self.adjacent. + + iReg - Int, index of region of interest in self.regions. + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside other drawing methods + if not dc: + dc = wx.WindowDC(self.canvas) + oldPen = dc.GetPen() + dc.SetPen(wx.Pen(wx.Colour(255, 0, 0, 100), 3, wx.SHORT_DASH)) + + # Iterate adjacency matrix looking for shared faces for one region + # Only need to iterate through lower triangle (not counting diagonal) + # since the matrix is "symmetric" and diagonal is just region to itself + for jReg in range(iReg): + for iREdge1, iREdge2 in self.adjacent[iReg][jReg]: + # Not last edge in region + pt1 = self.regions[iReg].verts[iREdge1] + if iREdge1 < len(self.regions[iReg].verts) - 1: + pt2 = self.regions[iReg].verts[iREdge1 + 1] + # Last edge in region + else: + pt2 = self.regions[iReg].verts[0] + pt1Pix = self.Map2Pix(pt1) + pt2Pix = self.Map2Pix(pt2) + dc.DrawLine(pt1Pix[0], pt1Pix[1], pt2Pix[0], pt2Pix[1]) + dc.SetPen(oldPen) # TODO: Maybe can remove if everything sets own pen + + def ResetMapToggles(self, toggleStay=None): + """Clear all the other map-feature toggle buttons. + Also resets region creation. + + toggleStay - Toggle button object to retain state. + """ + # Reset region creation and clear temporary lines + self.polyVerts = [] + self.polySnaps = [] + self.RedrawCanvas() + + # Turn off all toggles and revert specified one + if toggleStay: + state = toggleStay.GetValue() + self.toggleSquare.SetValue(False) + self.togglePoly.SetValue(False) + self.toggleDim.SetValue(False) + if toggleStay: + toggleStay.SetValue(state) + + def CreateRegion(self): + """Instantiate and create a region from, perform cleanup actions. + Use polyVerts and polyAdjEdges to make the region and find transitions. + """ + # Create region + region = Region(self.polyVerts) # TODO: Add name and color to regions + self.regions.append(region) + idxNewReg = len(self.regions) - 1 + # Add row and column to list of lists of lists representing adjacency + self.adjacent.append([[] for col in xrange(len(self.adjacent))]) + for row in self.adjacent: + row.append([]) + self.AddToUndo(Action(None, region)) + # TODO: Change Undo setup so that adjacency matrix can be added with + # regions in one undo step + + # Look for adjacent edges to other regions + # First add vertices in walls where another region vertex is + # Check new region against other regions + for iPt, (iReg, iRPoint, iREdge) in enumerate(self.polySnaps): + # Point snapped to the edge of another region + if iREdge != -1: + # Add point to other region and update old transitions + self.AddPointToRegion(self.polyVerts[iPt], iReg, iREdge) + # Track which point it is connected to + self.polySnaps[iPt] = (iReg, iREdge + 1, -1) + # Check other regions against new region + for iReg, otherReg in enumerate(self.regions): + for iPt, pt in enumerate(otherReg.verts): + pt, iRPoint, iREdge, snapped = \ + self.Snap1Region(region, pt, False) + # Other region vertex snapped to wall of new region + if iREdge != -1: + # Add point to new region and update old transitions + self.AddPointToRegion(pt, idxNewReg, iREdge) + # Track which point it is connected to + self.polySnaps.insert(iREdge + 1, (iReg, iPt, -1)) + + # Next look for adjacent edges and update transition matrix accordingly + for iSide in range(len(self.polySnaps)): + iReg1, iRPoint1, iREdge1 = self.polySnaps[iSide] + if iSide < len(self.polySnaps) - 1: + iReg2, iRPoint2, iREdge2 = self.polySnaps[iSide + 1] + else: + iReg2, iRPoint2, iREdge2 = self.polySnaps[0] + # Same region and adjacent points + if iReg1 != -1 and iReg1 == iReg2: + # TODO: Could be same point that is already shared by two or + # more regions. Need to check for this. + # Not last side in other region + if abs(iRPoint1 - iRPoint2) == 1: + iOtherRegSide = min(iRPoint1, iRPoint2) + self.adjacent[idxNewReg][iReg1].\ + append((iSide, iOtherRegSide)) + self.adjacent[iReg1][idxNewReg].\ + append((iOtherRegSide, iSide)) + # Last side in other region + elif (iRPoint1 == 0 and iRPoint2 == \ + len(self.regions[iReg2].verts) - 1) or \ + (iRPoint2 == 0 and iRPoint1 == \ + len(self.regions[iReg1].verts) - 1): + iOtherRegSide = len(self.regions[iReg1].verts) - 1 + self.adjacent[idxNewReg][iReg1].\ + append((iSide, iOtherRegSide)) + self.adjacent[iReg1][idxNewReg].\ + append((iOtherRegSide, iSide)) + + # Cleanup and draw + self.polyVerts = [] + self.polySnaps = [] + self.polyAdjEdges = [] + self.DrawRegion(region) + self.DrawAdjacencies(idxNewReg) + + def AddPointToRegion(self, pt, iReg, iEdge): + """Add a vertex to the region. + + pt - Point object, location of new vertex in map coordinates + iRegion - Int, index of region to modify + iEdge - Int, index of the edge to replace with edges to and from pt + """ + # Add point to other region + self.regions[iReg].verts.insert(iEdge + 1, pt) + # Update all transition edges + # Loop through all regions + for jReg in range(len(self.adjacent[iReg])): + # All transitioning faces from region to others + for kPair in range(len(self.adjacent[iReg][jReg])): + thisRegFace, otherRegFace = self.adjacent[iReg][jReg][kPair] + # Transition face has index greater than affected edge + if thisRegFace > iEdge: + self.adjacent[iReg][jReg][kPair] = \ + (thisRegFace + 1, otherRegFace) + # Transition face is the affected edge + elif thisRegFace == iEdge: + self.adjacent[iReg][jReg].\ + append((thisRegFace + 1, otherRegFace)) + # All transitioning faces from other regions to this one + for kPair in range(len(self.adjacent[jReg][iReg])): + otherRegFace, thisRegFace = self.adjacent[jReg][iReg][kPair] + # Transition face has index greater than affected edge + if thisRegFace > iEdge: + self.adjacent[jReg][iReg][kPair] = \ + (otherRegFace, thisRegFace + 1) + # Transition face is the affected edge + elif thisRegFace == iEdge: + self.adjacent[jReg][iReg].\ + append((otherRegFace, thisRegFace + 1)) + + def AddToUndo(self, action): + """Add specified action to the undo queue. + + action - Action object to be added + """ + # Note that this is only called when doing a new action, + # not when redoing since this clears the redo buffer + self.undoActions.append(action) + while len(self.undoActions) > self.unredoBufLen: + self.undoActions.popleft() + self.redoActions.clear() + # TODO: enable self.menuUndo + + def SnapPoint(self, pt): + """Snap the point to any nearby Vicon or region point. + + pt - Point object, map coordinates of point + returns - (snappedPt, idxRegion, idxRPoint, idxREdge) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + """ + # TODO: Make menubar checkbox to disable/enable snapto + # Check through all region points and edges first + # (since Vicon points may be moving around) + snapped = False + pt, idxRegion, idxRPoint, idxREdge, snapped = \ + self.SnapRegions(pt, snapped) + + # Check points in current region creation + # Only snap to vertices + # Don't count this for iRegion or iRPoint + pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped) + + # Check all Vicon points + pt, idxMarker, snapped = self.SnapVicon(pt, snapped) + + # Only return region indices, since they are usually all that matter + return pt, idxRegion, idxRPoint, idxREdge + + def SnapRegions(self, pt, snapped): + """Snap the point to any sufficiently "nearby" region vertex or wall. + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge + """ + idxRegion = -1 + idxRPoint = -1 + idxREdge = -1 + i = 0 # Region incrementer + while (not snapped) and i < len(self.regions): + pt, idxRPoint, idxREdge, snapped = \ + self.Snap1Region(self.regions[i], pt, snapped) + if snapped: + idxRegion = i + i += 1 + + return pt, idxRegion, idxRPoint, idxREdge, snapped + + def Snap1Region(self, region, pt, snapped): + """Snap the point to any sufficiently "nearby" region vertex or wall + in the specified region. + + region - Region object, region of interest + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge + """ + idxRPoint = -1 + idxREdge = -1 + # Check first point + chkPt = region.verts[0] + if (not snapped) and pt.Dist(chkPt) < self.tolerance: + pt = chkPt + snapped = True + idxRPoint = 0 + j = 1 # Region point incrementer + while (not snapped) and j < len(region.verts): + # Check next point + chkPt = region.verts[j] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + snapped = True + idxRPoint = j + # Check edge between previous and just-checked point + else: + p0 = region.verts[j - 1] + p1 = chkPt + chkPt = self.ProjPtOnLine(pt, p0, p1) + # Check that projected point is on finite line and close + if pt.Dist(chkPt) < self.tolerance and \ + chkPt.x <= max(p0.x, p1.x) and \ + chkPt.x >= min(p0.x, p1.x) and \ + chkPt.y <= max(p0.y, p1.y) and \ + chkPt.y >= min(p0.y, p1.y): + pt = chkPt + snapped = True + idxREdge = j - 1 + j += 1 + # Check last edge + if not snapped: + p0 = region.verts[j - 1] + p1 = region.verts[0] + chkPt = self.ProjPtOnLine(pt, p0, p1) + if pt.Dist(chkPt) < self.tolerance and \ + chkPt.x <= max(p0.x, p1.x) and \ + chkPt.x >= min(p0.x, p1.x) and \ + chkPt.y <= max(p0.y, p1.y) and \ + chkPt.y >= min(p0.y, p1.y): + pt = chkPt + snapped = True + idxREdge = j - 1 + + return pt, idxRPoint, idxREdge, snapped + + def SnapPoly(self, pt, snapped): + """Snap the point to any vertex in the currently being created region + if it is sufficiently "nearby". + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxPoint, snapped) + snappedPt - Point object, point after snapping + idxPoint - int, index of point in self.polyVerts if snapped to it + if not snapped to point it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a polygon point + """ + idxPoint = -1 + i = 0 # Misc point incrementer + while (not snapped) and i < len(self.polyVerts): + chkPt = self.polyVerts[i] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + idxPoint = i + snapped = True + i += 1 + + return pt, idxPoint, snapped + + def SnapVicon(self, pt, snapped): + """Snap the point to any saved Vicon marker position if it is + sufficiently "nearby". + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxMarker, snapped) + snappedPt - Point object, point after snapping + idxMarker - int, index of point in self.markerPoses if snapped + if not snapped to point it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a Vicon point + """ + idxMarker = -1 + i = 0 # Vicon point incrementer + while (not snapped) and i < len(self.markerPoses): + chkPt = self.markerPoses[i] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + idxMarker = i + snapped = True + i += 1 + + return pt, idxMarker, snapped + + def Map2Pix(self, pose): + """Convert from map coordinates to pixel coordinates. + + pose - Point, map coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.canvasOffset.x) / self.canvasScale.x) + row = int((pose.y - self.canvasOffset.y) / self.canvasScale.y) + return (col, row) + + def Pix2Map(self, pixPose): + """Convert from pixel coordinates to map coordinates. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, map coordinates of point + """ + x = float(pixPose[0]) * self.canvasScale.x + self.canvasOffset.x + y = float(pixPose[1]) * self.canvasScale.y + self.canvasOffset.y + return Point(x, y) + + def ProjPtOnLine(self, pt, p0, p1): + """Find the projection of a point on an infinite line. + + pt - Point object, point to be projected. + p1 - Point object, one endpoint of line. + p2 - Point object, other endpoint of line. + returns - Point object, projected point on line. + """ + s = p1 - p0 # Vector to project on (p0 is origin) + v = pt - p0 # Vector to point to project + u = (v.Dot(s) / s.Dot(s)) * s # Projected vector + return p0 + u # Map back to global coordinates +# end of class RegionEditor + + +class FeedbackDialog(wx.Dialog): + def __init__(self, *args, **kwds): + # begin wxGlade: FeedbackDialog.__init__ + kwds["style"] = wx.DEFAULT_DIALOG_STYLE + wx.Dialog.__init__(self, *args, **kwds) + self.buttonPrev = wx.Button(self, -1, "Previous") + self.buttonPick = wx.Button(self, -1, "Select") + self.buttonNext = wx.Button(self, -1, "Next") + self.chkbxIterate = wx.CheckBox(self, -1, "Automatically iterate points when marker is in position") + self.radioboxOption = wx.RadioBox(self, -1, "Feedback Method", choices=["Speech", "Beeping"], majorDimension=1, style=wx.RA_SPECIFY_ROWS) + self.chkbxMute = wx.CheckBox(self, -1, "Mute") + + self.__set_properties() + self.__do_layout() + + self.Bind(wx.EVT_BUTTON, self.OnButtonPrev, self.buttonPrev) + self.Bind(wx.EVT_BUTTON, self.OnButtonPick, self.buttonPick) + self.Bind(wx.EVT_BUTTON, self.OnButtonNext, self.buttonNext) + # end wxGlade + + # Add close event handler to cleanup before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Save reference to RegionEditor GUI + if len(args) > 0: + self.parent = args[0] + else: + print "Warning: FeedbackDialog will not work without " + \ + "reference to RegionEditor GUI as first parameter." + self.parent = None + + # Track current point + self.chkbxIterate.SetValue(True) + self.currReg = 0 + self.currPt = 0 + + # Start audio feedback thread + self.feedbackThread = AudioFeedbackThread(self, self.parent) + self.feedbackThread.start() + + def __set_properties(self): + # begin wxGlade: FeedbackDialog.__set_properties + self.SetTitle("Marker Placement") + self.buttonPrev.SetMinSize((50, 50)) + self.buttonPick.SetMinSize((50, 50)) + self.buttonNext.SetMinSize((50, 50)) + self.chkbxIterate.SetValue(1) + self.radioboxOption.SetSelection(0) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: FeedbackDialog.__do_layout + sizerOuter = wx.BoxSizer(wx.VERTICAL) + sizerOptions = wx.BoxSizer(wx.VERTICAL) + sizerButtons = wx.BoxSizer(wx.HORIZONTAL) + sizerButtons.Add(self.buttonPrev, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerButtons.Add(self.buttonPick, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerButtons.Add(self.buttonNext, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerOuter.Add(sizerButtons, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizerOptions.Add(self.chkbxIterate, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerOptions.Add(self.radioboxOption, 0, wx.ALL | wx.EXPAND, 5) + sizerOptions.Add(self.chkbxMute, 0, wx.ALL, 5) + sizerOuter.Add(sizerOptions, 1, wx.EXPAND, 0) + self.SetSizer(sizerOuter) + sizerOuter.Fit(self) + self.Layout() + # end wxGlade + + def OnClose(self, event): + """Perform cleanup tasks and close the feedback dialog.""" + self.feedbackThread.stop() + self.parent.toggleFeedback.SetValue(False) + # TODO: Add wait/notify to make sure thread ended + self.Destroy() + + def OnButtonPrev(self, event): # wxGlade: FeedbackDialog. + """Move back to previous point.""" + # Not first point in region + if self.currPt > 0: + self.currPt -= 1 + # First point in region + else: + # Not first region + if self.currReg > 0: + self.currReg -= 1 + # First region + else: + self.currReg = len(self.parent.regions) - 1 + self.currPt = len(self.parent.regions[self.currReg].verts) - 1 + + def OnButtonPick(self, event): # wxGlade: FeedbackDialog. + #self.parent.Raise() + print "Select not yet implemented." + + def OnButtonNext(self, event): # wxGlade: FeedbackDialog. + """Move on to next point.""" + # Not last point in region + if self.currPt < len(self.parent.regions[self.currReg].verts) - 1: + self.currPt += 1 + # Last point in region + else: + # Not last region + if self.currReg < len(self.parent.regions) - 1: + self.currReg += 1 + # Last region + else: + self.currReg = 0 + self.currPt = 0 +# end of class FeedbackDialog + + +class Region: + def __init__(self, points, name="R0", rgb=[0, 0, 0]): # TODO: random color/name + """Create an object to represent a region. + + points - List of tuples of floats containing vertex information + [(x1, y1), (x2, y2), ...] + name - String defining region name + rgb - List of integers defining color + [red, green, blue], each with value in range [0 255] + """ + # TODO: Add name, color, convex/concave, possibly adjoining edges + self.verts = points + self.name = name + self.color = rgb + + def __str__(self): + """Representation of object.""" + s = "%s\t{%03d\t%03d\t%03d}\t[" % \ + (self.name, self.color[0], self.color[1], self.color[2]) + for iPt, pt in enumerate(self.verts): + s += str(pt) + if iPt < len(self.verts) - 1: + s += "\t" + s += "]" + return s +# end of class Region + + +class Action: + def __init__(self, oldState, newState): + """Create an object that represents an (un/re)doable action. + + oldState - Previous state of the affected object(s) + newState - Changed state of the affected object(s) + + These arguments will usually be one or more regions that were changed. + An argument of "None" indicates either creation or deletion. + """ + self.oldState = oldState + self.newState = newState +# end of class Action + + +class Point: + def __init__(self, x, y): + """Create an object that allows floating point vector operations. + + x - Float, first coordinate of point + y - Float, second coordinate of point + """ + if isinstance(x, float) and isinstance(y, float): + self.x = x + self.y = y + else: + raise TypeError('\'Point\' creation takes only \'float\' values') + + def __str__(self): + """Representation of object.""" + return '(%.3f\t%.3f)' % (self.x, self.y) + + def __hash__(self): + """Hashtable representation of object.""" + tup = (self.x, self.y) + return tup.__hash__() + + def __eq__(self, other): + """Checks equality (self == other).""" + return isinstance(other, Point) and self.x == other.x and self.y == other.y + + def __ne__(self, other): + """Checks non-equality (self != other).""" + return not self.__eq__(other) + + def __add__(self, other): + """Addition operator (self + other).""" + if isinstance(other, Point): + return Point(self.x + other.x, self.y + other.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(self.x + other[0], self.y + other[1]) + else: + raise TypeError('cannot add \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __radd__(self, other): + """Right addition operator (other + self).""" + return self.__add__(other) + + def __sub__(self, other): + """Subtraction operator (self - other).""" + if isinstance(other, Point): + return Point(self.x - other.x, self.y - other.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(self.x - other[0], self.y - other[1]) + else: + raise TypeError('cannot subtract \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __rsub__(self, other): + """Right subtraction operator (other - self).""" + if isinstance(other, Point): + return Point(other.x - self.x, other.y - self.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(other[0] - self.x, other[1] - self.y) + else: + raise TypeError('cannot subtract \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __mul__(self, other): + """Multiplication operator (self * other).""" + if isinstance(other, float): + return Point(self.x * other, self.y * other) + else: + raise TypeError('cannot multiply \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __rmul__(self, other): + """Right multiplication operator (other * self).""" + return self.__mul__(other) + + def __div__(self, other): + """Division operator (self / other).""" + if isinstance(other, float): + return Point(self.x / other, self.y / other) + else: + raise TypeError('cannot divide \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __truediv__(self, other): + """True division operator.""" + return self.__div__(other) + + def Dot(self, other): + """Dot product.""" + if isinstance(other, Point): + return self.x * other.x + self.y * other.y + elif isinstance(other, tuple) and len(other) == 2: + return self.x * other[0] + self.y * other[1] + else: + raise TypeError('cannot compute dot product of \'Point\' and \'' + \ + other.__class__.__name__ + '\' object') + + def Dist(self, other): + """Euclidean distance from this point to the other.""" + if isinstance(other, Point): + return math.sqrt((self.x - other.x) ** 2 + \ + (self.y - other.y) ** 2) + elif isinstance(other, tuple) and len(other) == 2: + return math.sqrt((self.x - other[0]) ** 2 + \ + (self.y - other[1]) ** 2) + else: + raise TypeError('cannot compute distance from \'Point\' to \'' + \ + other.__class__.__name__ + '\' object') + + def Norm(self): + """Length of the vector.""" + return math.sqrt(self.x ** 2 + self.y ** 2) +# end of class Point + + +class ViconMarkerListener(threading.Thread): + def __init__(self, parent): + """Create the a socket to receive Vicon data.""" + super(ViconMarkerListener, self).__init__() + + # Communication parameters + self.parent = parent # RegionEditor GUI + self.addr = ("0.0.0.0", 7500) + self.bufsize = 65536 + self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.lock = threading.Lock() + self.close = threading.Event() + self.updateFreq = 20 # Hz + + # Tracking parameters + # TODO: Set all paremeters in configuration of GUI + self.minDist = 0.01 # Distance to move to qualify as movement + self.maxDist = 0.1 # Qualified as new point + self.movMaxTime = 15 * self.updateFreq # (sec)*(Hz) + # Iterations during which marker is not moving + # before stopping tracking + self.invMaxTime = 1 * self.updateFreq # (sec)*(Hz) + # Iterations during which marker is not found + # before stopping tracking + + # Tracking containers + self.oldPoses = [] # Previous marker positions + self.movingPoses = [] # Markers that are moving + self.movingTimeout = [] # Iterations left before movement timeout + self.invisTimeout = [] # Iteractions left before not-found timeout + + def run(self): + """Open the socket to start communication. Process messages.""" + # Open socket for communication + self.udpSock.bind(self.addr) + + # Receive communication until stopped + self.close.clear() + delay = 1 / self.updateFreq + while not self.close.isSet(): + self.lock.acquire() + data = self.udpSock.recv(self.bufsize) + self.lock.release() + self.ProcessData(data) + time.sleep(delay) + + # Close socket + self.udpSock.close() + self.oldPoses = [] + self.movingPoses = [] + self.movingTimeout = [] + self.invisTimeout = [] + + def stop(self): + """Close the socket to end UDP communication.""" + self.close.set() + + # Deserialize and save data + def ProcessData(self, data): + """Extract marker positions and pass them on to be mapped. + + data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] + """ + # Check for valid data (not null or incomplete) + if data and len(data)%16 == 0: + poses = [] + for i in range(0, len(data), 16): + x, y = struct.unpack('dd', data[i:i+16]) + poses.append(Point(x, y)) + # Save and plot marker positions + self.parent.markerPoses = poses + self.UpdateMovingMarkers(poses) + self.parent.RedrawCanvas() # Force map redraw + + def UpdateMovingMarkers(self, poses): + """Note which markers are newly moving and update position of old + moving markers based on change in position from previous list. + + poses - List of Points, marker positions. + """ + # Not first time through + if self.oldPoses: + # Check all currently tracked markers first + for iMarker, markerPose in enumerate(self.movingPoses): + closestIdx = self.FindClosest(poses, markerPose) + closestDist = markerPose.Dist(poses[closestIdx]) + # Same marker + if closestDist < self.maxDist: + self.invisTimeout[iMarker] = self.invMaxTime + # Is moving + if closestDist > self.minDist: + self.movingTimeout[iMarker] = self.movMaxTime + 1 + self.movingPoses[iMarker] = poses[closestIdx] + # Marker not seen + else: + self.invisTimeout[iMarker] -= 1 + self.movingTimeout[iMarker] -= 1 + # Marker has stopped moving or not been seen for some time + if self.invisTimeout[iMarker] == 0 or \ + self.movingTimeout[iMarker] == 0: + self.invisTimeout.pop(iMarker) + self.movingTimeout.pop(iMarker) + self.movingPoses.pop(iMarker) + # Check through all new markers next + for markerPose in poses: + closestIdx = self.FindClosest(self.oldPoses, markerPose) + closestDist = markerPose.Dist(self.oldPoses[closestIdx]) + # Point is moving + if closestDist < self.maxDist and closestDist > self.minDist: + self.movingPoses.append(markerPose) + self.movingTimeout.append(self.movMaxTime) + self.invisTimeout.append(self.invMaxTime) + self.oldPoses = poses + + def FindClosest(self, points, target): + """Find the closest point to the target. + + points - List of Points, marker positions. + target - Point, point to find marker closest to. + returns - Integer, index of closest point in points. + """ + # Iterate through all points + minDist = float('inf') + minIdx = 0 + for i, pt in enumerate(points): + dist = target.Dist(pt) + if dist < minDist: + minIdx = i + minDist = dist + return minIdx +# end of class ViconMarkerListener + + +class AudioFeedbackThread(threading.Thread): + def __init__(self, feedbackDialog, regEditor): + """Create audio feedback for marker placement. + + fbDia - Dialog box that specifies the point of interest. + regEd - RegionEditor GUI that gets Vicon information. + """ + super(AudioFeedbackThread, self).__init__() + + # Save other objects + self.fbDia = feedbackDialog + self.regEd = regEditor + + # Non-audio parameters + self.close = threading.Event() + self.tolerance = 0.10 # Close-enough distance (m) + self.maxDist = 2.5 # Points must be within this to react (m) + + # Audio parameters for beeping + # Chosen for audibility at distance + # TODO: Make modifiable by configuration file + minFreq = 600 # Lowest frequency played (Hz) + maxFreq = 7000 # Highest frequency played (Hz) + updateFreq = 2.0 # Frequency of possible sound change (Hz) + self.duration = int(1000.0 / updateFreq) + + # Audio parameters for text-to-speech + self.engine = pyttsx.init() + self.engine.setProperty('rate', 120) + self.engine.setProperty('volume', 1.0) + self.speechFormat = "X %.1f, Y %.1f" + self.speechPause = 1.0 # Pause between voice commands + + # Calculate the line representing the distance-frequency mapping + self.freqSlope = (minFreq - maxFreq) / (self.maxDist - self.tolerance) + self.freqIntercept = maxFreq - self.tolerance * self.freqSlope + + def run(self): + """Play sound based on distance of moving marker to goal point.""" + self.close.clear() + while not self.close.isSet(): + soundOption = self.fbDia.radioboxOption.GetSelection() + if not self.fbDia.chkbxMute.GetValue(): + # Get distance from closest marker to point of interest + intPt = self.regEd.regions[self.fbDia.currReg].\ + verts[self.fbDia.currPt] + minStatDistToPt = 2.0 * self.maxDist + for statPt in self.regEd.markerPoses: + if not statPt in self.regEd.viconListener.movingPoses: + minStatDistToPt = min(minStatDistToPt, intPt.Dist(statPt)) + + # Get distance from closest moving point to point of interest + minDistToPt = 2.0 * self.maxDist + minPtIdx = -1 + for iPt, movPt in \ + enumerate(self.regEd.viconListener.movingPoses): + dist = intPt.Dist(movPt) + if dist < minDistToPt: + minDistToPt = dist + minPtIdx = iPt + + # Plot moving point and goal point + dc = wx.WindowDC(self.regEd.canvas) + dc.SetBrush(wx.Brush(wx.Colour(255, 0, 0, 100), wx.SOLID)) + posePix = self.regEd.Map2Pix(intPt) + dc.DrawCircle(posePix[0], posePix[1], 8) + if minPtIdx > -1 and minPtIdx < \ + len(self.regEd.viconListener.movingPoses): + posePix = self.regEd.Map2Pix(\ + self.regEd.viconListener.movingPoses[minPtIdx]) + dc.DrawCircle(posePix[0], posePix[1], 8) + + # Close-enough + if minDistToPt < self.tolerance or \ + minStatDistToPt < self.tolerance: + # Marker is settled + if minStatDistToPt < self.tolerance or self.regEd.\ + viconListener.movingTimeout[minPtIdx] < \ + self.regEd.viconListener.movMaxTime: + # Play "success" sound to indicate done with point + if soundOption: + time.sleep(0.2) + winsound.Beep(600, 200) + winsound.Beep(1200, 200) + winsound.Beep(1800, 200) + time.sleep(0.2) + else: + self.engine.say("Success, next") + self.engine.runAndWait() + time.sleep(self.speechPause) + # Switch to next point of interest if checked + if self.fbDia.chkbxIterate.GetValue(): + self.fbDia.OnButtonNext(None) + # TODO: Check if all points are in correct spots + # and stop if done + + # Marker not yet settled + else: + # Play "good" sound to signal "stop moving marker" + if soundOption: + time.sleep(0.2) + winsound.Beep(1200, 200) + winsound.Beep(1200, 200) + time.sleep(0.2) + else: + self.engine.say("Stop there") + self.engine.runAndWait() + time.sleep(self.speechPause) + + # Still within distance of effect + elif minDistToPt < self.maxDist: + if soundOption: + freq = int(self.freqIntercept + self.freqSlope * \ + minDistToPt) + winsound.Beep(freq, self.duration) + else: + diffPt = intPt - self.regEd.viconListener.\ + movingPoses[minPtIdx] + self.engine.say(self.speechFormat % \ + (diffPt.x, diffPt.y)) + self.engine.runAndWait() + time.sleep(self.speechPause) + + def stop(self): + """Signal for the thread to end.""" + self.engine.stop() + self.close.set() + + +if __name__ == "__main__": + app = wx.PySimpleApp(0) + wx.InitAllImageHandlers() + if len(sys.argv) > 1: + regEd = regionEditor(None, -1, sys.argv[1]) + else: + regEd = regionEditor(None, -1) + app.SetTopWindow(regEd) + app.MainLoop() diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py.bak b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py.bak new file mode 100644 index 00000000..3bd75d59 --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py.bak @@ -0,0 +1,1700 @@ +#!/usr/bin/env python +# -*- coding: iso-8859-15 -*- +# generated by wxGlade 0.6.5 (standalone edition) on Mon Feb 13 13:09:57 2012 + +import os +import sys +import collections +import time +import math +import wx +import threading +import socket +import struct +import copy +import winsound +import pyttsx + +# begin wxGlade: extracode +# end wxGlade + +class regionEditor(wx.Frame): + def __init__(self, *args, **kwds): + # begin wxGlade: regionEditor.__init__ + kwds["style"] = wx.DEFAULT_FRAME_STYLE + wx.Frame.__init__(self, *args, **kwds) + + # Menu Bar + self.RegionEditor_menubar = wx.MenuBar() + self.filemenu = wx.Menu() + self.menuNew = wx.MenuItem(self.filemenu, wx.NewId(), "New", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuNew) + self.menuOpen = wx.MenuItem(self.filemenu, wx.NewId(), "Open", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuOpen) + self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSave) + self.menuSaveAs = wx.MenuItem(self.filemenu, wx.NewId(), "Save As", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSaveAs) + self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuExit) + self.RegionEditor_menubar.Append(self.filemenu, "File") + self.menuEdit = wx.Menu() + self.menuUndo = wx.MenuItem(self.menuEdit, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuUndo) + self.menuRedo = wx.MenuItem(self.menuEdit, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuRedo) + self.RegionEditor_menubar.Append(self.menuEdit, "Edit") + self.menuDrawing = wx.Menu() + self.menuAutobound = wx.MenuItem(self.menuDrawing, wx.NewId(), "Autoboundary", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuAutobound) + self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "Rectangle", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuRect) + self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuPoly) + self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuAddPoint) + self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_NORMAL) + self.menuDrawing.AppendItem(self.menuRemPoint) + self.RegionEditor_menubar.Append(self.menuDrawing, "Drawing") + self.menuView = wx.Menu() + self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "Markers", "", wx.ITEM_CHECK) + self.menuView.AppendItem(self.menuMarkers) + self.menuMarkersClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuMarkersClear) + self.menuCamera = wx.MenuItem(self.menuView, wx.NewId(), "Camera Capture", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuCamera) + self.menuImageImport = wx.MenuItem(self.menuView, wx.NewId(), "Import Background Image", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuImageImport) + self.menuImageClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Background Image", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuImageClear) + self.RegionEditor_menubar.Append(self.menuView, "View") + self.helpmenu = wx.Menu() + self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuAbout) + self.RegionEditor_menubar.Append(self.helpmenu, "Help") + self.SetMenuBar(self.RegionEditor_menubar) + # Menu Bar end + self.sidebar = wx.Panel(self, -1) + self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Vicon") + self.buttonCamera = wx.Button(self.sidebar, -1, "Camera") + self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Square") + self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") + self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Dimen.") + self.toggleFeedback = wx.ToggleButton(self.sidebar, -1, "Feedback") + self.buttonCal = wx.Button(self.sidebar, -1, "Calibrate") + self.canvas = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + + self.__set_properties() + self.__do_layout() + + self.Bind(wx.EVT_MENU, self.OnMenuNew, self.menuNew) + self.Bind(wx.EVT_MENU, self.OnMenuOpen, self.menuOpen) + self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) + self.Bind(wx.EVT_MENU, self.OnMenuSaveAs, self.menuSaveAs) + self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) + self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) + self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) + self.Bind(wx.EVT_MENU, self.OnMenuAutobound, self.menuAutobound) + self.Bind(wx.EVT_MENU, self.OnMenuRect, self.menuRect) + self.Bind(wx.EVT_MENU, self.OnMenuPoly, self.menuPoly) + self.Bind(wx.EVT_MENU, self.OnMenuAddPoint, self.menuAddPoint) + self.Bind(wx.EVT_MENU, self.OnMenuRemPoint, self.menuRemPoint) + self.Bind(wx.EVT_MENU, self.OnMenuMarkers, self.menuMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuMarkersClear, self.menuMarkersClear) + self.Bind(wx.EVT_MENU, self.OnMenuCamera, self.menuCamera) + self.Bind(wx.EVT_MENU, self.OnMenuImageImport, self.menuImageImport) + self.Bind(wx.EVT_MENU, self.OnMenuImageClear, self.menuImageClear) + self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnButtonCamera, self.buttonCamera) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFeedback, self.toggleFeedback) + self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) + # end wxGlade + + # Handle input + if len(args) > 2 and isinstance(args[2], str): + self.fileName = os.path.join(os.getcwd(), args[2]) + else: + self.fileName = "" + + # Bind mouse events + self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown, self.canvas) + self.canvas.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp, self.canvas) + #self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) + self.canvas.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown, self.canvas) + self.canvas.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp, self.canvas) + self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel, self.canvas) + self.canvas.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow, self.canvas) + self.canvas.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow, self.canvas) + + # Bind keyboard events + self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) + self.canvas.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.canvas) + + # Determine mapping of the canvas panel to the field + canvasLen = self.canvas.GetSize() # Initial size of canvas (pixels) + fieldRange = [(-3.0, 9.0), (-3.0, 3.0)] # Initial range of field (m) + # [(xmin, xmax), (ymin, ymax)] + # pose = pixPose * scale + offset + # Note: y-pixels and y-pose have opposite directions + xScale = (fieldRange[0][1] - fieldRange[0][0]) / float(canvasLen[0]) + xOffset = fieldRange[0][0] + yScale = -(fieldRange[1][1] - fieldRange[1][0]) / float(canvasLen[1]) + yOffset = -fieldRange[1][0] + self.canvasScale = Point(xScale, yScale) + self.canvasOffset = Point(xOffset, yOffset) + + # Set up for region creation + self.regions = [] # List of regions in the map + self.adjacent = [] # List of lists holding transition + # edges between regions. + # adjacent[i][j] contains a list of + # indices of edges in region i that + # connect to edges in region j. + # adjacent[j][i] should contain a + # list of the same length, but edge + # indices are for region j. + # adjacent[i][i] will be empty. + self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick + self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick + self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) + self.polyVerts = [] # Keeps points for region creation + # and dimensioning + # Region creation: [Point(x0,y0), ...] + # Dimensioning: (idxRegion, idxVert) + self.polySnaps = [] # Keeps snap information for each + # new region creation point + # [(idxReg, idxPt, idxEdge), ...] + + # Set up for undo/redo capabilities + # TODO: Disable self.menuUndo and self.menuRedo + self.unredoBufLen = 50 + self.undoActions = collections.deque() + self.redoActions = collections.deque() + + # Add paint event handler to draw on the canvas + self.Bind(wx.EVT_PAINT, self.OnCanvasPaint, self.canvas) + + # Create Vicon listener + self.markerPoses = [] # Marker positions to be drawn + self.viconListener = ViconMarkerListener(self) + self.dlgFeedback = None + + # Add close event handler to cleanup and possibly save before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Display the GUI window and set up the map canvas + self.Show() + self.DrawGrid() + + def __set_properties(self): + # begin wxGlade: regionEditor.__set_properties + self.SetTitle("Region Editor") + self.toggleVicon.SetMinSize((50, 50)) + self.buttonCamera.SetMinSize((50, 50)) + self.toggleSquare.SetMinSize((50, 50)) + self.togglePoly.SetMinSize((50, 50)) + self.toggleDim.SetMinSize((50, 50)) + self.toggleFeedback.SetMinSize((50, 50)) + self.buttonCal.SetMinSize((50, 50)) + self.sidebar.SetMinSize((150, 400)) + self.canvas.SetMinSize((800, 400)) + self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255)) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: regionEditor.__do_layout + sizer_1 = wx.BoxSizer(wx.HORIZONTAL) + grid_sizer_1 = wx.GridSizer(4, 2, 5, 5) + grid_sizer_1.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonCamera, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.toggleFeedback, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonCal, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + self.sidebar.SetSizer(grid_sizer_1) + sizer_1.Add(self.sidebar, 0, wx.EXPAND, 0) + sizer_1.Add(self.canvas, 1, wx.EXPAND, 0) + self.SetSizer(sizer_1) + sizer_1.Fit(self) + self.Layout() + # end wxGlade + + def OnClose(self, event): + """Perform cleanup tasks and close the application.""" + # Check if the closure can even be canceled + # TODO: Check if map is unsaved and ask if they want to save before closing + if not event or event.CanVeto(): + dlg = wx.MessageDialog(self, + "Do you really want to close this application?", + "Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION) + result = dlg.ShowModal() + dlg.Destroy() + if result == wx.ID_OK: + self.viconListener.stop() + # TODO: Check if vicon is indeed running, and put wait-notify + # in to close port before closing GUI + self.Destroy() + else: + self.viconListener.stop() + self.Destroy() + + def OnToggleVicon(self, event): # wxGlade: regionEditor. + # Switch Vicon streaming on or off based on state of toggle button + if self.toggleVicon.GetValue(): + self.viconListener.start() + else: + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + + def OnButtonCamera(self, event): # wxGlade: regionEditor. + print "Camera not yet implemented" + # TODO + event.Skip() + + def OnToggleSquare(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleSquare) + + def OnTogglePoly(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.togglePoly) + + def OnToggleDim(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleDim) + + def OnToggleFeedback(self, event): # wxGlade: regionEditor. + self.ResetMapToggles(self.toggleFeedback) + if self.toggleFeedback.GetValue(): + self.dlgFeedback = FeedbackDialog(self) + self.dlgFeedback.ShowModal() + elif self.dlgFeedback: + self.dlgFeedback.OnClose(None) + + def OnButtonCal(self, event): # wxGlade: regionEditor. + # TODO + print "Calibration not yet implemented" + self.ResetMapToggles() + + def OnMenuNew(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuNew' not implemented" + event.Skip() + + def OnMenuOpen(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuOpen' not implemented" + event.Skip() + + def OnMenuSave(self, event): # wxGlade: regionEditor. + """Save to file that has already been used.""" + if self.fileName: + f = open(self.fileName, 'w') + f.write("# This is a region definition file for the LTLMoP " + \ + "toolkit.\n# Format details are described at the " + \ + "beginning of each section below.\n# Note that all values " + \ + "are separated by *tabs*.\n\nBackground: # Relative path " + \ + "of background image file\n") + f.write("None\n\n") # TODO: Support for background images + f.write("Obstacles: # Indices of regions to treat as obstacles\n") + f.write("\n\n") # TODO: Support for obstacles + f.write("Regions: # Name {ColorR ColorG ColorB} " + \ + "[(x1 y1) (x2 y2) ...]\n") + for reg in self.regions: + f.write(str(reg) + "\n") + f.write("\n") + f.write("Thumbnail: # Relative path of image file that has " + \ + "region shapes overlayed on background image\n") + f.write("None\n\n") # TODO: Save png thumbnail + f.write("Transitions: # Region1Idx Region2Idx " + \ + "[(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) " + \ + "...]\n") + for iAdj in range(len(self.adjacent)): + for jAdj, adjList in enumerate(self.adjacent[iAdj]): + if iAdj != jAdj and adjList: + line = "%d\t%d\t[" % (iAdj, jAdj) + for kAdj, adj in enumerate(adjList): + line += "(%d\t%d)" % adj + if kAdj < len(adjList) - 1: + line += "\t" + line += "]\n" + f.write(line) + f.close() + else: + self.OnMenuSaveAs(None) + + def OnMenuSaveAs(self, event): # wxGlade: regionEditor. + dialogSave = wx.FileDialog(self, message="Save File As", \ + defaultDir=sys.path[0], \ + defaultFile=self.fileName.split('\\').pop(), \ + wildcard="*.regions", style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT) + # Hit Save and confirmed overwrite if necessary + if dialogSave.ShowModal() == wx.ID_OK: + self.fileName = dialogSave.GetPath() + self.OnMenuSave(None) + dialogSave.Destroy() + + def OnMenuExit(self, event): # wxGlade: regionEditor. + self.OnClose(None) + + def OnMenuUndo(self, event): # wxGlade: regionEditor. + """Revert the most recent undoable change.""" + # Currently drawing polygon + # Note that this is not a redoable action by design + if self.polyVerts: + self.polyVerts = [] + self.polySnaps = [] + self.RedrawCanvas() + # Other undoable changes exist + elif self.undoActions: + action = self.undoActions.pop() + # Creation action + if not action.oldState: + # Single region creation + if isinstance(action.newState, Region): + self.regions.remove(action.newState) + # Map load from blank canvas + if isinstance(action.newState, list): + self.regions = [] + # TODO: Background image load from blank + # Deletion action + if not action.newState: + # Single region deletion + if isinstance(action.oldState, Region): + self.regions.append(action.oldState) + # Multiple region deletion or map clear + if isinstance(action.oldState, list): + self.regions.extend(action.oldState) + # TODO: Background image clear + # Modification action + else: + # Single region modification + if isinstance(action.oldState, Region): + idx = self.regions.index(action.newState) + self.regions[idx] = action.oldState + # Map load from non-blank canvas + if isinstance(action.oldState, list): + self.regions = action.oldState + # TODO: Background image load from other image + self.redoActions.append(action) + # TODO: if not self.undoActions: disable self.menuUndo + # TODO: enable self.menuRedo + self.RedrawCanvas() + + def OnMenuRedo(self, event): # wxGlade: regionEditor. + """Reapply most recently undone action.""" + # Redoable actions exist + if self.redoActions: + action = self.redoActions.pop() + # Creation action + if not action.oldState: + # Single region creation + if isinstance(action.newState, Region): + self.regions.append(action.newState) + # Map load from blank canvas + if isinstance(action.newState, list): + self.regions = action.newState + # TODO: Background image load from blank + # Deletion action + if not action.newState: + # Single region deletion + if isinstance(action.oldState, Region): + self.regions.remove(action.oldState) + # Multiple region deletion or map clear + if isinstance(action.oldState, list): + for reg in action.oldState: + self.regions.remove(reg) + # TODO: Background image clear + # Modification action + else: + # Single region modification + if isinstance(action.oldState, Region): + idx = self.regions.index(action.oldState) + self.regions[idx] = action.newState + # Map load from non-blank canvas + if isinstance(action.oldState, list): + self.regions = action.newState + # TODO: Background image load from other image + self.undoActions.append(action) + # TODO: if not self.redoActions: disable self.menuRedo + # TODO: enable self.menuUndo + self.RedrawCanvas() + + def OnMenuAutobound(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuAutobound' not implemented" + event.Skip() + + def OnMenuRect(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuRect' not implemented" + event.Skip() + + def OnMenuPoly(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuPoly' not implemented" + event.Skip() + + def OnMenuAddPoint(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuAddPoint' not implemented" + event.Skip() + + def OnMenuRemPoint(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuRemPoint' not implemented" + event.Skip() + + def OnMenuMarkers(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuMarkers' not implemented" + event.Skip() + + def OnMenuMarkersClear(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuMarkersClear' not implemented" + event.Skip() + + def OnMenuCamera(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuCamera' not implemented" + event.Skip() + + def OnMenuImageImport(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuImageImport' not implemented" + event.Skip() + + def OnMenuImageClear(self, event): # wxGlade: regionEditor. + print "Event handler `OnMenuImageClear' not implemented" + event.Skip() + + def OnMenuAbout(self, event): # wxGlade: regionEditor. + print "About not yet implemented" + event.Skip() + + def OnMouseLeftDown(self, event): + """Save the left click point so it can be used later.""" + self.leftClickPt, iReg, iPt, iEd = \ + self.SnapPoint(self.Pix2Map(event.GetPosition())) + + def OnMouseLeftUp(self, event): + """Perform appropriate action based on current mode of operation.""" + # Get click position + ptPix = event.GetPosition() + pt, iReg, iPt, iEd = self.SnapPoint(self.Pix2Map(ptPix)) + + # Creating a rectangular region + if self.toggleSquare.GetValue(): + # Making the second corner of rectangle + if self.polyVerts: + # Snap vertices to regions as necessary, not to Vicon + # This may result in a non-square region, but may be preferable + x0 = self.polyVerts[0].x + y0 = self.polyVerts[0].y + pt1, iReg1, iPt1, iEd1, snapped1 = \ + self.SnapRegions(Point(x0, pt.y), False) + pt3, iReg3, iPt3, iEd3, snapped3 = \ + self.SnapRegions(Point(pt.x, y0), False) + # Move clicked points if other vertices snap and they don't + if snapped1: + if iReg == -1: + pt = Point(pt.x, pt1.y) + if self.polySnaps[0][0] == -1: + self.polyVerts[0] = Point(pt1.x, self.polyVerts[0].y) + if snapped3: + if iReg == -1: + pt = Point(pt3.x, pt.y) + if self.polySnaps[0][0] == -1: + self.polyVerts[0] = Point(self.polyVerts[0].x, pt3.y) + self.polyVerts.append(pt1) + self.polyVerts.append(pt) + self.polyVerts.append(pt3) + self.polySnaps.append((iReg1, iPt1, iEd1)) + self.polySnaps.append((iReg, iPt, iEd)) + self.polySnaps.append((iReg3, iPt3, iEd3)) + # Create a square between previous click and new click + self.CreateRegion() + # Making the first corner of rectangle + else: + # Save point as first corner of square + self.polyVerts.append(pt) + self.polySnaps.append((iReg, iPt, iEd)) + + # Creating a polygonal region + elif self.togglePoly.GetValue(): + # Closing the polygon to create a region + if self.polyVerts and len(self.polyVerts) > 2 and \ + pt == self.polyVerts[0]: + self.CreateRegion() + # New point distinct from others + elif not pt in self.polyVerts: + self.polyVerts.append(pt) + self.polySnaps.append((iReg, iPt, iEd)) + # Plot line between last two points + if len(self.polyVerts) > 1: + x1pix, y1pix = self.Map2Pix(self.polyVerts[-2]) + x2pix, y2pix = self.Map2Pix(pt) + dc = wx.WindowDC(self.canvas) + dc.DrawLine(x1pix, y1pix, x2pix, y2pix) + + # Dimensioning region edge + elif self.toggleDim.GetValue(): + # First point on region to be clicked + if not self.polyVerts and iReg != -1 and iPt != -1: + # Store region and point indeces + self.polyVerts = (iReg, iPt) + # Second unique point to be clicked + elif iReg != -1 and iPt != -1 and (iReg, iPt) != self.polyVerts: + # Request dimension + currDist = self.regions[iReg].verts[iPt].Dist(self.regions[\ + self.polyVerts[0]].verts[self.polyVerts[1]]) + dimDlg = wx.TextEntryDialog(self, \ + "Current Length: %.3f" % currDist, caption='Dimension') + if dimDlg.ShowModal() == wx.ID_OK: + # Check for valid dimension (allow negative values) + try: + dim = float(dimDlg.GetValue()) + except ValueError: + dimDlg.Destroy() + return + dimDlg.Destroy() + + # Move second point along same line to specified distance + oldRegion = copy.deepcopy(self.regions[iReg]) + pt0 = self.regions[self.polyVerts[0]].verts[self.polyVerts[1]] + signx = 1.0 + signy = 1.0 + # Vertical line case + if pt0.x == pt.x: + if pt0.y > pt.y: + signy = -1.0 + dx = 0.0 + dy = signy * (dim - pt.Dist(pt0)) + # Horizontal and normal line cases + else: + if pt0.x > pt.x: + signx = -1.0 + if pt0.y > pt.y: + signy = -1.0 + slope = (pt.y - pt0.y) / (pt.x - pt0.x) + dx = signx * (dim - pt.Dist(pt0)) / \ + math.sqrt(1 + slope ** 2) + dy = slope * dx + self.regions[iReg].verts[iPt] = \ + self.regions[iReg].verts[iPt] + Point(dx, dy) + self.AddToUndo(Action(oldRegion, self.regions[iReg])) + self.polyVerts = [] + self.RedrawCanvas() + + # Panning the map view + elif pt.Dist(self.leftClickPt) > self.tolerance: + downClickPix = self.Map2Pix(self.leftClickPt) + self.canvasOffset = Point(self.canvasScale.x * \ + (downClickPix[0] - ptPix[0]) + self.canvasOffset.x, \ + self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ + self.canvasOffset.y) + self.RedrawCanvas() + + # TODO: May need to handle all mouse events in one huge window + # to avoid having the double click interfere with regular clicking + """ + def OnMouseLeftDClick(self, event): + """Perform action based on current mode of operation.""" + # Creating a polygonal region + if self.togglePoly.GetValue() and self.polyVerts and \ + len(self.polyVerts) > 2: + self.CreateRegion() + """ + + def OnMouseRightDown(self, event): + """Save the right click point so it can be used later.""" + self.rightClickPt, iReg, iPt, iEd = \ + self.SnapPoint(self.Pix2Map(event.GetPosition())) + + def OnMouseRightUp(self, event): + # Check if in region creation or dimensioning mode + if self.toggleSquare.GetValue() or self.togglePoly.GetValue() or \ + self.toggleDim.GetValue(): + self.ResetMapToggles() + # TODO: else: open some kind of right-click menu at right-click point + + def OnMouseWheel(self, event): + """Zoom on the map canvas.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.canvasOffset = Point(float(ptPix[0]) * self.canvasScale.x * \ + (1 - scaler) + self.canvasOffset.x, float(ptPix[1]) * \ + self.canvasScale.y * (1 - scaler) + self.canvasOffset.y) + self.canvasScale = self.canvasScale * scaler + self.RedrawCanvas() + + def OnKeyDown(self, event): + keycode = event.GetKeyCode() + + # Backspace/Delete - Removes last set point during region creation + if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ + self.polyVerts: + if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): + self.polyVerts.pop() + self.polySnaps.pop() + self.RedrawCanvas() + elif self.toggleDim.GetValue(): + self.polyVerts = [] + + # Escape - Stops region/dimension creation + elif keycode == wx.WXK_ESCAPE and (self.toggleSquare.GetValue() or \ + self.togglePoly.GetValue() or self.toggleDim.GetValue()): + self.ResetMapToggles() + + # Ctrl+n - New + if event.CmdDown() and keycode == 78: + self.OnMenuNew(None) + + # Ctrl+o - Open + if event.CmdDown() and keycode == 79: + self.OnMenuOpen(None) + + # Ctrl+s - Save + if event.CmdDown() and keycode == 83: + self.OnMenuSave(None) + + # Ctrl+q - Quit + if event.CmdDown() and keycode == 81: + self.OnMenuExit(None) + + # Ctrl+z - Undo + elif event.CmdDown() and keycode == 90: + self.OnMenuUndo(None) + + # Ctrl+y - Redo + elif event.CmdDown() and keycode == 89: + self.OnMenuRedo(None) + + # Pass event on so other key combinations still work + else: + event.Skip() + + def OnEnterWindow(self, event): + """Set the focus to the canvas to enable zooming.""" + self.canvas.SetFocus() + + def OnLeaveWindow(self, event): + """Unset the focus from the canvas to disable zooming.""" + self.SetFocus() + + def OnCanvasPaint(self, event): + """Redraw the contents of the canvas panel.""" + # Set up to draw + dc = wx.PaintDC(self.canvas) + self.RedrawCanvas(dc) + + def RedrawCanvas(self, dc=None): + """Redraw the contents of the canvas panel. + Callable from outside or inside EVT_PAINT handler. + + dc - Device context object for drawing to canvas. + """ + # Clear canvas + self.canvas.ClearBackground() + + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Redraw all markers + self.DrawGrid(dc) + self.DrawMarkers(self.markerPoses, dc) + + # Redraw all regions + for region in self.regions: + self.DrawRegion(region, dc) + + # Redraw all transition face indicators + # Lower triangular matrix only + for iReg in range(1, len(self.adjacent)): + self.DrawAdjacencies(iReg, dc) + + # Redraw partial region + if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): + for iVert in range(len(self.polyVerts) - 1): + ptPix1 = self.Map2Pix(self.polyVerts[iVert]) + ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) + dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) + + def DrawGrid(self, dc=None): + """Draw the axes and grid on the map canvas. + + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw axes + xOff = self.canvasOffset.x + yOff = self.canvasOffset.y + xPixOff = int(-xOff / self.canvasScale.x) + yPixOff = int(-yOff / self.canvasScale.y) + colLim, rowLim = self.canvas.GetSize() + dc.DrawLine(0, yPixOff, colLim, yPixOff) + dc.DrawLine(xPixOff, 0, xPixOff, rowLim) + + # TODO: Draw grid/ticks + + def DrawMarkers(self, poses, dc=None): + """Draw markers at specified global positions. + + poses - List of tuples containing positions of markers in meters [(x, y), ...] + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw each marker + for pose in poses: + posePix = self.Map2Pix(pose) + dc.DrawCircle(posePix[0], posePix[1], 5) + + def DrawRegion(self, region, dc=None): + """Draw a single region. + + region - Instance of Region class, contains information about the region. + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside EVT_PAINT handler + if not dc: + dc = wx.WindowDC(self.canvas) + + # Draw region + vertsPix = [] + for vert in region.verts: + vertsPix.append(self.Map2Pix(vert)) + dc.DrawPolygon(vertsPix) + + def DrawAdjacencies(self, iReg, dc=None): + """Draw lines to show adjacent region faces for one region. + Uses self.regions and self.adjacent. + + iReg - Int, index of region of interest in self.regions. + dc - Device context used for drawing on the canvas panel. + """ + # Create device context if calling from outside other drawing methods + if not dc: + dc = wx.WindowDC(self.canvas) + oldPen = dc.GetPen() + dc.SetPen(wx.Pen(wx.Colour(255, 0, 0, 100), 3, wx.SHORT_DASH)) + + # Iterate adjacency matrix looking for shared faces for one region + # Only need to iterate through lower triangle (not counting diagonal) + # since the matrix is "symmetric" and diagonal is just region to itself + for jReg in range(iReg): + for iREdge1, iREdge2 in self.adjacent[iReg][jReg]: + # Not last edge in region + pt1 = self.regions[iReg].verts[iREdge1] + if iREdge1 < len(self.regions[iReg].verts) - 1: + pt2 = self.regions[iReg].verts[iREdge1 + 1] + # Last edge in region + else: + pt2 = self.regions[iReg].verts[0] + pt1Pix = self.Map2Pix(pt1) + pt2Pix = self.Map2Pix(pt2) + dc.DrawLine(pt1Pix[0], pt1Pix[1], pt2Pix[0], pt2Pix[1]) + dc.SetPen(oldPen) # TODO: Maybe can remove if everything sets own pen + + def ResetMapToggles(self, toggleStay=None): + """Clear all the other map-feature toggle buttons. + Also resets region creation. + + toggleStay - Toggle button object to retain state. + """ + # Reset region creation and clear temporary lines + self.polyVerts = [] + self.polySnaps = [] + self.RedrawCanvas() + + # Turn off all toggles and revert specified one + if toggleStay: + state = toggleStay.GetValue() + self.toggleSquare.SetValue(False) + self.togglePoly.SetValue(False) + self.toggleDim.SetValue(False) + if toggleStay: + toggleStay.SetValue(state) + + def CreateRegion(self): + """Instantiate and create a region from, perform cleanup actions. + Use polyVerts and polyAdjEdges to make the region and find transitions. + """ + # Create region + region = Region(self.polyVerts) # TODO: Add name and color to regions + self.regions.append(region) + idxNewReg = len(self.regions) - 1 + # Add row and column to list of lists of lists representing adjacency + self.adjacent.append([[] for col in xrange(len(self.adjacent))]) + for row in self.adjacent: + row.append([]) + self.AddToUndo(Action(None, region)) + # TODO: Change Undo setup so that adjacency matrix can be added with + # regions in one undo step + + # Look for adjacent edges to other regions + # First add vertices in walls where another region vertex is + # Check new region against other regions + for iPt, (iReg, iRPoint, iREdge) in enumerate(self.polySnaps): + # Point snapped to the edge of another region + if iREdge != -1: + # Add point to other region and update old transitions + self.AddPointToRegion(self.polyVerts[iPt], iReg, iREdge) + # Track which point it is connected to + self.polySnaps[iPt] = (iReg, iREdge + 1, -1) + # Check other regions against new region + for iReg, otherReg in enumerate(self.regions): + for iPt, pt in enumerate(otherReg.verts): + pt, iRPoint, iREdge, snapped = \ + self.Snap1Region(region, pt, False) + # Other region vertex snapped to wall of new region + if iREdge != -1: + # Add point to new region and update old transitions + self.AddPointToRegion(pt, idxNewReg, iREdge) + # Track which point it is connected to + self.polySnaps.insert(iREdge + 1, (iReg, iPt, -1)) + + # Next look for adjacent edges and update transition matrix accordingly + for iSide in range(len(self.polySnaps)): + iReg1, iRPoint1, iREdge1 = self.polySnaps[iSide] + if iSide < len(self.polySnaps) - 1: + iReg2, iRPoint2, iREdge2 = self.polySnaps[iSide + 1] + else: + iReg2, iRPoint2, iREdge2 = self.polySnaps[0] + # Same region and adjacent points + if iReg1 != -1 and iReg1 == iReg2: + # TODO: Could be same point that is already shared by two or + # more regions. Need to check for this. + # Not last side in other region + if abs(iRPoint1 - iRPoint2) == 1: + iOtherRegSide = min(iRPoint1, iRPoint2) + self.adjacent[idxNewReg][iReg1].\ + append((iSide, iOtherRegSide)) + self.adjacent[iReg1][idxNewReg].\ + append((iOtherRegSide, iSide)) + # Last side in other region + elif (iRPoint1 == 0 and iRPoint2 == \ + len(self.regions[iReg2].verts) - 1) or \ + (iRPoint2 == 0 and iRPoint1 == \ + len(self.regions[iReg1].verts) - 1): + iOtherRegSide = len(self.regions[iReg1].verts) - 1 + self.adjacent[idxNewReg][iReg1].\ + append((iSide, iOtherRegSide)) + self.adjacent[iReg1][idxNewReg].\ + append((iOtherRegSide, iSide)) + + # Cleanup and draw + self.polyVerts = [] + self.polySnaps = [] + self.polyAdjEdges = [] + self.DrawRegion(region) + self.DrawAdjacencies(idxNewReg) + + def AddPointToRegion(self, pt, iReg, iEdge): + """Add a vertex to the region. + + pt - Point object, location of new vertex in map coordinates + iRegion - Int, index of region to modify + iEdge - Int, index of the edge to replace with edges to and from pt + """ + # Add point to other region + self.regions[iReg].verts.insert(iEdge + 1, pt) + # Update all transition edges + # Loop through all regions + for jReg in range(len(self.adjacent[iReg])): + # All transitioning faces from region to others + for kPair in range(len(self.adjacent[iReg][jReg])): + thisRegFace, otherRegFace = self.adjacent[iReg][jReg][kPair] + # Transition face has index greater than affected edge + if thisRegFace > iEdge: + self.adjacent[iReg][jReg][kPair] = \ + (thisRegFace + 1, otherRegFace) + # Transition face is the affected edge + elif thisRegFace == iEdge: + self.adjacent[iReg][jReg].\ + append((thisRegFace + 1, otherRegFace)) + # All transitioning faces from other regions to this one + for kPair in range(len(self.adjacent[jReg][iReg])): + otherRegFace, thisRegFace = self.adjacent[jReg][iReg][kPair] + # Transition face has index greater than affected edge + if thisRegFace > iEdge: + self.adjacent[jReg][iReg][kPair] = \ + (otherRegFace, thisRegFace + 1) + # Transition face is the affected edge + elif thisRegFace == iEdge: + self.adjacent[jReg][iReg].\ + append((otherRegFace, thisRegFace + 1)) + + def AddToUndo(self, action): + """Add specified action to the undo queue. + + action - Action object to be added + """ + # Note that this is only called when doing a new action, + # not when redoing since this clears the redo buffer + self.undoActions.append(action) + while len(self.undoActions) > self.unredoBufLen: + self.undoActions.popleft() + self.redoActions.clear() + # TODO: enable self.menuUndo + + def SnapPoint(self, pt): + """Snap the point to any nearby Vicon or region point. + + pt - Point object, map coordinates of point + returns - (snappedPt, idxRegion, idxRPoint, idxREdge) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + """ + # TODO: Make menubar checkbox to disable/enable snapto + # Check through all region points and edges first + # (since Vicon points may be moving around) + snapped = False + pt, idxRegion, idxRPoint, idxREdge, snapped = \ + self.SnapRegions(pt, snapped) + + # Check points in current region creation + # Only snap to vertices + # Don't count this for iRegion or iRPoint + pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped) + + # Check all Vicon points + pt, idxMarker, snapped = self.SnapVicon(pt, snapped) + + # Only return region indices, since they are usually all that matter + return pt, idxRegion, idxRPoint, idxREdge + + def SnapRegions(self, pt, snapped): + """Snap the point to any sufficiently "nearby" region vertex or wall. + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge + """ + idxRegion = -1 + idxRPoint = -1 + idxREdge = -1 + i = 0 # Region incrementer + while (not snapped) and i < len(self.regions): + pt, idxRPoint, idxREdge, snapped = \ + self.Snap1Region(self.regions[i], pt, snapped) + if snapped: + idxRegion = i + i += 1 + + return pt, idxRegion, idxRPoint, idxREdge, snapped + + def Snap1Region(self, region, pt, snapped): + """Snap the point to any sufficiently "nearby" region vertex or wall + in the specified region. + + region - Region object, region of interest + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge + """ + idxRPoint = -1 + idxREdge = -1 + # Check first point + chkPt = region.verts[0] + if (not snapped) and pt.Dist(chkPt) < self.tolerance: + pt = chkPt + snapped = True + idxRPoint = 0 + j = 1 # Region point incrementer + while (not snapped) and j < len(region.verts): + # Check next point + chkPt = region.verts[j] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + snapped = True + idxRPoint = j + # Check edge between previous and just-checked point + else: + p0 = region.verts[j - 1] + p1 = chkPt + chkPt = self.ProjPtOnLine(pt, p0, p1) + # Check that projected point is on finite line and close + if pt.Dist(chkPt) < self.tolerance and \ + chkPt.x <= max(p0.x, p1.x) and \ + chkPt.x >= min(p0.x, p1.x) and \ + chkPt.y <= max(p0.y, p1.y) and \ + chkPt.y >= min(p0.y, p1.y): + pt = chkPt + snapped = True + idxREdge = j - 1 + j += 1 + # Check last edge + if not snapped: + p0 = region.verts[j - 1] + p1 = region.verts[0] + chkPt = self.ProjPtOnLine(pt, p0, p1) + if pt.Dist(chkPt) < self.tolerance and \ + chkPt.x <= max(p0.x, p1.x) and \ + chkPt.x >= min(p0.x, p1.x) and \ + chkPt.y <= max(p0.y, p1.y) and \ + chkPt.y >= min(p0.y, p1.y): + pt = chkPt + snapped = True + idxREdge = j - 1 + + return pt, idxRPoint, idxREdge, snapped + + def SnapPoly(self, pt, snapped): + """Snap the point to any vertex in the currently being created region + if it is sufficiently "nearby". + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxPoint, snapped) + snappedPt - Point object, point after snapping + idxPoint - int, index of point in self.polyVerts if snapped to it + if not snapped to point it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a polygon point + """ + idxPoint = -1 + i = 0 # Misc point incrementer + while (not snapped) and i < len(self.polyVerts): + chkPt = self.polyVerts[i] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + idxPoint = i + snapped = True + i += 1 + + return pt, idxPoint, snapped + + def SnapVicon(self, pt, snapped): + """Snap the point to any saved Vicon marker position if it is + sufficiently "nearby". + + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxMarker, snapped) + snappedPt - Point object, point after snapping + idxMarker - int, index of point in self.markerPoses if snapped + if not snapped to point it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a Vicon point + """ + idxMarker = -1 + i = 0 # Vicon point incrementer + while (not snapped) and i < len(self.markerPoses): + chkPt = self.markerPoses[i] + if pt.Dist(chkPt) < self.tolerance: + pt = chkPt + idxMarker = i + snapped = True + i += 1 + + return pt, idxMarker, snapped + + def Map2Pix(self, pose): + """Convert from map coordinates to pixel coordinates. + + pose - Point, map coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.canvasOffset.x) / self.canvasScale.x) + row = int((pose.y - self.canvasOffset.y) / self.canvasScale.y) + return (col, row) + + def Pix2Map(self, pixPose): + """Convert from pixel coordinates to map coordinates. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, map coordinates of point + """ + x = float(pixPose[0]) * self.canvasScale.x + self.canvasOffset.x + y = float(pixPose[1]) * self.canvasScale.y + self.canvasOffset.y + return Point(x, y) + + def ProjPtOnLine(self, pt, p0, p1): + """Find the projection of a point on an infinite line. + + pt - Point object, point to be projected. + p1 - Point object, one endpoint of line. + p2 - Point object, other endpoint of line. + returns - Point object, projected point on line. + """ + s = p1 - p0 # Vector to project on (p0 is origin) + v = pt - p0 # Vector to point to project + u = (v.Dot(s) / s.Dot(s)) * s # Projected vector + return p0 + u # Map back to global coordinates +# end of class RegionEditor + + +class FeedbackDialog(wx.Dialog): + def __init__(self, *args, **kwds): + # begin wxGlade: FeedbackDialog.__init__ + kwds["style"] = wx.DEFAULT_DIALOG_STYLE + wx.Dialog.__init__(self, *args, **kwds) + self.buttonPrev = wx.Button(self, -1, "Previous") + self.buttonPick = wx.Button(self, -1, "Select") + self.buttonNext = wx.Button(self, -1, "Next") + self.chkbxIterate = wx.CheckBox(self, -1, "Automatically iterate points when marker is in position") + self.radioboxOption = wx.RadioBox(self, -1, "Feedback Method", choices=["Speech", "Beeping"], majorDimension=1, style=wx.RA_SPECIFY_ROWS) + self.chkbxMute = wx.CheckBox(self, -1, "Mute") + + self.__set_properties() + self.__do_layout() + + self.Bind(wx.EVT_BUTTON, self.OnButtonPrev, self.buttonPrev) + self.Bind(wx.EVT_BUTTON, self.OnButtonPick, self.buttonPick) + self.Bind(wx.EVT_BUTTON, self.OnButtonNext, self.buttonNext) + # end wxGlade + + # Add close event handler to cleanup before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Save reference to RegionEditor GUI + if len(args) > 0: + self.parent = args[0] + else: + print "Warning: FeedbackDialog will not work without " + \ + "reference to RegionEditor GUI as first parameter." + self.parent = None + + # Track current point + self.chkbxIterate.SetValue(True) + self.currReg = 0 + self.currPt = 0 + + # Start audio feedback thread + self.feedbackThread = AudioFeedbackThread(self, self.parent) + self.feedbackThread.start() + + def __set_properties(self): + # begin wxGlade: FeedbackDialog.__set_properties + self.SetTitle("Marker Placement") + self.buttonPrev.SetMinSize((50, 50)) + self.buttonPick.SetMinSize((50, 50)) + self.buttonNext.SetMinSize((50, 50)) + self.chkbxIterate.SetValue(1) + self.radioboxOption.SetSelection(0) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: FeedbackDialog.__do_layout + sizerOuter = wx.BoxSizer(wx.VERTICAL) + sizerOptions = wx.BoxSizer(wx.VERTICAL) + sizerButtons = wx.BoxSizer(wx.HORIZONTAL) + sizerButtons.Add(self.buttonPrev, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerButtons.Add(self.buttonPick, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerButtons.Add(self.buttonNext, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerOuter.Add(sizerButtons, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizerOptions.Add(self.chkbxIterate, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizerOptions.Add(self.radioboxOption, 0, wx.ALL | wx.EXPAND, 5) + sizerOptions.Add(self.chkbxMute, 0, wx.ALL, 5) + sizerOuter.Add(sizerOptions, 1, wx.EXPAND, 0) + self.SetSizer(sizerOuter) + sizerOuter.Fit(self) + self.Layout() + # end wxGlade + + def OnClose(self, event): + """Perform cleanup tasks and close the feedback dialog.""" + self.feedbackThread.stop() + self.parent.toggleFeedback.SetValue(False) + # TODO: Add wait/notify to make sure thread ended + self.Destroy() + + def OnButtonPrev(self, event): # wxGlade: FeedbackDialog. + """Move back to previous point.""" + # Not first point in region + if self.currPt > 0: + self.currPt -= 1 + # First point in region + else: + # Not first region + if self.currReg > 0: + self.currReg -= 1 + # First region + else: + self.currReg = len(self.parent.regions) - 1 + self.currPt = len(self.parent.regions[self.currReg].verts) - 1 + + def OnButtonPick(self, event): # wxGlade: FeedbackDialog. + #self.parent.Raise() + print "Select not yet implemented." + + def OnButtonNext(self, event): # wxGlade: FeedbackDialog. + """Move on to next point.""" + # Not last point in region + if self.currPt < len(self.parent.regions[self.currReg].verts) - 1: + self.currPt += 1 + # Last point in region + else: + # Not last region + if self.currReg < len(self.parent.regions) - 1: + self.currReg += 1 + # Last region + else: + self.currReg = 0 + self.currPt = 0 +# end of class FeedbackDialog + + +class Region: + def __init__(self, points, name="R0", rgb=[0, 0, 0]): # TODO: random color/name + """Create an object to represent a region. + + points - List of tuples containing vertex information + [(x1, y1), (x2, y2), ...] + """ + # TODO: Add name, color, convex/concave, possibly adjoining edges + self.verts = points + self.name = name + self.color = rgb + + def __str__(self): + """Representation of object.""" + s = "%s\t{%03d\t%03d\t%03d}\t[" % \ + (self.name, self.color[0], self.color[1], self.color[2]) + for iPt, pt in enumerate(self.verts): + s += str(pt) + if iPt < len(self.verts) - 1: + s += "\t" + s += "]" + return s +# end of class Region + + +class Action: + def __init__(self, oldState, newState): + """Create an object that represents an (un/re)doable action. + + oldState - Previous state of the affected object(s) + newState - Changed state of the affected object(s) + + These arguments will usually be one or more regions that were changed. + An argument of "None" indicates either creation or deletion. + """ + self.oldState = oldState + self.newState = newState +# end of class Action + + +class Point: + def __init__(self, x, y): + """Create an object that allows floating point vector operations. + + x - Float, first coordinate of point + y - Float, second coordinate of point + """ + if isinstance(x, float) and isinstance(y, float): + self.x = x + self.y = y + else: + raise TypeError('\'Point\' creation takes only \'float\' values') + + def __str__(self): + """Representation of object.""" + return '(%.3f\t%.3f)' % (self.x, self.y) + + def __hash__(self): + """Hashtable representation of object.""" + tup = (self.x, self.y) + return tup.__hash__() + + def __eq__(self, other): + """Checks equality (self == other).""" + return isinstance(other, Point) and self.x == other.x and self.y == other.y + + def __ne__(self, other): + """Checks non-equality (self != other).""" + return not self.__eq__(other) + + def __add__(self, other): + """Addition operator (self + other).""" + if isinstance(other, Point): + return Point(self.x + other.x, self.y + other.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(self.x + other[0], self.y + other[1]) + else: + raise TypeError('cannot add \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __radd__(self, other): + """Right addition operator (other + self).""" + return self.__add__(other) + + def __sub__(self, other): + """Subtraction operator (self - other).""" + if isinstance(other, Point): + return Point(self.x - other.x, self.y - other.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(self.x - other[0], self.y - other[1]) + else: + raise TypeError('cannot subtract \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __rsub__(self, other): + """Right subtraction operator (other - self).""" + if isinstance(other, Point): + return Point(other.x - self.x, other.y - self.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(other[0] - self.x, other[1] - self.y) + else: + raise TypeError('cannot subtract \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __mul__(self, other): + """Multiplication operator (self * other).""" + if isinstance(other, float): + return Point(self.x * other, self.y * other) + else: + raise TypeError('cannot multiply \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __rmul__(self, other): + """Right multiplication operator (other * self).""" + return self.__mul__(other) + + def __div__(self, other): + """Division operator (self / other).""" + if isinstance(other, float): + return Point(self.x / other, self.y / other) + else: + raise TypeError('cannot divide \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __truediv__(self, other): + """True division operator.""" + return self.__div__(other) + + def Dot(self, other): + """Dot product.""" + if isinstance(other, Point): + return self.x * other.x + self.y * other.y + elif isinstance(other, tuple) and len(other) == 2: + return self.x * other[0] + self.y * other[1] + else: + raise TypeError('cannot compute dot product of \'Point\' and \'' + \ + other.__class__.__name__ + '\' object') + + def Dist(self, other): + """Euclidean distance from this point to the other.""" + if isinstance(other, Point): + return math.sqrt((self.x - other.x) ** 2 + \ + (self.y - other.y) ** 2) + elif isinstance(other, tuple) and len(other) == 2: + return math.sqrt((self.x - other[0]) ** 2 + \ + (self.y - other[1]) ** 2) + else: + raise TypeError('cannot compute distance from \'Point\' to \'' + \ + other.__class__.__name__ + '\' object') + + def Norm(self): + """Length of the vector.""" + return math.sqrt(self.x ** 2 + self.y ** 2) +# end of class Point + + +class ViconMarkerListener(threading.Thread): + def __init__(self, parent): + """Create the a socket to receive Vicon data.""" + super(ViconMarkerListener, self).__init__() + + # Communication parameters + self.parent = parent # RegionEditor GUI + self.addr = ("0.0.0.0", 7500) + self.bufsize = 65536 + self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.lock = threading.Lock() + self.close = threading.Event() + self.updateFreq = 20 # Hz + + # Tracking parameters + # TODO: Set all paremeters in configuration of GUI + self.minDist = 0.01 # Distance to move to qualify as movement + self.maxDist = 0.1 # Qualified as new point + self.movMaxTime = 15 * self.updateFreq # (sec)*(Hz) + # Iterations during which marker is not moving + # before stopping tracking + self.invMaxTime = 1 * self.updateFreq # (sec)*(Hz) + # Iterations during which marker is not found + # before stopping tracking + + # Tracking containers + self.oldPoses = [] # Previous marker positions + self.movingPoses = [] # Markers that are moving + self.movingTimeout = [] # Iterations left before movement timeout + self.invisTimeout = [] # Iteractions left before not-found timeout + + def run(self): + """Open the socket to start communication. Process messages.""" + # Open socket for communication + self.udpSock.bind(self.addr) + + # Receive communication until stopped + self.close.clear() + delay = 1 / self.updateFreq + while not self.close.isSet(): + self.lock.acquire() + data = self.udpSock.recv(self.bufsize) + self.lock.release() + self.ProcessData(data) + time.sleep(delay) + + # Close socket + self.udpSock.close() + self.oldPoses = [] + self.movingPoses = [] + self.movingTimeout = [] + self.invisTimeout = [] + + def stop(self): + """Close the socket to end UDP communication.""" + self.close.set() + + # Deserialize and save data + def ProcessData(self, data): + """Extract marker positions and pass them on to be mapped. + + data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] + """ + # Check for valid data (not null or incomplete) + if data and len(data)%16 == 0: + poses = [] + for i in range(0, len(data), 16): + x, y = struct.unpack('dd', data[i:i+16]) + poses.append(Point(x, y)) + # Save and plot marker positions + self.parent.markerPoses = poses + self.UpdateMovingMarkers(poses) + self.parent.RedrawCanvas() # Force map redraw + + def UpdateMovingMarkers(self, poses): + """Note which markers are newly moving and update position of old + moving markers based on change in position from previous list. + + poses - List of Points, marker positions. + """ + # Not first time through + if self.oldPoses: + # Check all currently tracked markers first + for iMarker, markerPose in enumerate(self.movingPoses): + closestIdx = self.FindClosest(poses, markerPose) + closestDist = markerPose.Dist(poses[closestIdx]) + # Same marker + if closestDist < self.maxDist: + self.invisTimeout[iMarker] = self.invMaxTime + # Is moving + if closestDist > self.minDist: + self.movingTimeout[iMarker] = self.movMaxTime + 1 + self.movingPoses[iMarker] = poses[closestIdx] + # Marker not seen + else: + self.invisTimeout[iMarker] -= 1 + self.movingTimeout[iMarker] -= 1 + # Marker has stopped moving or not been seen for some time + if self.invisTimeout[iMarker] == 0 or \ + self.movingTimeout[iMarker] == 0: + self.invisTimeout.pop(iMarker) + self.movingTimeout.pop(iMarker) + self.movingPoses.pop(iMarker) + # Check through all new markers next + for markerPose in poses: + closestIdx = self.FindClosest(self.oldPoses, markerPose) + closestDist = markerPose.Dist(self.oldPoses[closestIdx]) + # Point is moving + if closestDist < self.maxDist and closestDist > self.minDist: + self.movingPoses.append(markerPose) + self.movingTimeout.append(self.movMaxTime) + self.invisTimeout.append(self.invMaxTime) + self.oldPoses = poses + + def FindClosest(self, points, target): + """Find the closest point to the target. + + points - List of Points, marker positions. + target - Point, point to find marker closest to. + returns - Integer, index of closest point in points. + """ + # Iterate through all points + minDist = float('inf') + minIdx = 0 + for i, pt in enumerate(points): + dist = target.Dist(pt) + if dist < minDist: + minIdx = i + minDist = dist + return minIdx +# end of class ViconMarkerListener + + +class AudioFeedbackThread(threading.Thread): + def __init__(self, feedbackDialog, regEditor): + """Create audio feedback for marker placement. + + fbDia - Dialog box that specifies the point of interest. + regEd - RegionEditor GUI that gets Vicon information. + """ + super(AudioFeedbackThread, self).__init__() + + # Save other objects + self.fbDia = feedbackDialog + self.regEd = regEditor + + # Non-audio parameters + self.close = threading.Event() + self.tolerance = 0.10 # Close-enough distance (m) + self.maxDist = 2.5 # Points must be within this to react (m) + + # Audio parameters for beeping + # Chosen for audibility at distance + # TODO: Make modifiable by configuration file + minFreq = 600 # Lowest frequency played (Hz) + maxFreq = 7000 # Highest frequency played (Hz) + updateFreq = 2.0 # Frequency of possible sound change (Hz) + self.duration = int(1000.0 / updateFreq) + + # Audio parameters for text-to-speech + self.engine = pyttsx.init() + self.engine.setProperty('rate', 120) + self.engine.setProperty('volume', 1.0) + self.speechFormat = "X %.1f, Y %.1f" + self.speechPause = 1.0 # Pause between voice commands + + # Calculate the line representing the distance-frequency mapping + self.freqSlope = (minFreq - maxFreq) / (self.maxDist - self.tolerance) + self.freqIntercept = maxFreq - self.tolerance * self.freqSlope + + def run(self): + """Play sound based on distance of moving marker to goal point.""" + self.close.clear() + while not self.close.isSet(): + soundOption = self.fbDia.radioboxOption.GetSelection() + if not self.fbDia.chkbxMute.GetValue(): + # Get distance from closest marker to point of interest + intPt = self.regEd.regions[self.fbDia.currReg].\ + verts[self.fbDia.currPt] + minStatDistToPt = 2.0 * self.maxDist + for statPt in self.regEd.markerPoses: + if not statPt in self.regEd.viconListener.movingPoses: + minStatDistToPt = min(minStatDistToPt, intPt.Dist(statPt)) + + # Get distance from closest moving point to point of interest + minDistToPt = 2.0 * self.maxDist + minPtIdx = -1 + for iPt, movPt in \ + enumerate(self.regEd.viconListener.movingPoses): + dist = intPt.Dist(movPt) + if dist < minDistToPt: + minDistToPt = dist + minPtIdx = iPt + + # Plot moving point and goal point + dc = wx.WindowDC(self.regEd.canvas) + dc.SetBrush(wx.Brush(wx.Colour(255, 0, 0, 100), wx.SOLID)) + posePix = self.regEd.Map2Pix(intPt) + dc.DrawCircle(posePix[0], posePix[1], 8) + if minPtIdx > -1 and minPtIdx < \ + len(self.regEd.viconListener.movingPoses): + posePix = self.regEd.Map2Pix(\ + self.regEd.viconListener.movingPoses[minPtIdx]) + dc.DrawCircle(posePix[0], posePix[1], 8) + + # Close-enough + if minDistToPt < self.tolerance or \ + minStatDistToPt < self.tolerance: + # Marker is settled + if minStatDistToPt < self.tolerance or self.regEd.\ + viconListener.movingTimeout[minPtIdx] < \ + self.regEd.viconListener.movMaxTime: + # Play "success" sound to indicate done with point + if soundOption: + time.sleep(0.2) + winsound.Beep(600, 200) + winsound.Beep(1200, 200) + winsound.Beep(1800, 200) + time.sleep(0.2) + else: + self.engine.say("Success, next") + self.engine.runAndWait() + time.sleep(self.speechPause) + # Switch to next point of interest if checked + if self.fbDia.chkbxIterate.GetValue(): + self.fbDia.OnButtonNext(None) + # TODO: Check if all points are in correct spots + # and stop if done + + # Marker not yet settled + else: + # Play "good" sound to signal "stop moving marker" + if soundOption: + time.sleep(0.2) + winsound.Beep(1200, 200) + winsound.Beep(1200, 200) + time.sleep(0.2) + else: + self.engine.say("Stop there") + self.engine.runAndWait() + time.sleep(self.speechPause) + + # Still within distance of effect + elif minDistToPt < self.maxDist: + if soundOption: + freq = int(self.freqIntercept + self.freqSlope * \ + minDistToPt) + winsound.Beep(freq, self.duration) + else: + diffPt = intPt - self.regEd.viconListener.\ + movingPoses[minPtIdx] + self.engine.say(self.speechFormat % \ + (diffPt.x, diffPt.y)) + self.engine.runAndWait() + time.sleep(self.speechPause) + + def stop(self): + """Signal for the thread to end.""" + self.engine.stop() + self.close.set() + + +if __name__ == "__main__": + app = wx.PySimpleApp(0) + wx.InitAllImageHandlers() + if len(sys.argv) > 1: + regEd = regionEditor(None, -1, sys.argv[1]) + else: + regEd = regionEditor(None, -1) + app.SetTopWindow(regEd) + app.MainLoop() diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditorV2.py b/src/RegionEditorFiles/NewRegionEditor/regionEditorV2.py new file mode 100644 index 00000000..c93488bb --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditorV2.py @@ -0,0 +1,287 @@ +#!/usr/bin/env python +import time +import math +import wx +import wx.lib.plot as plot +import threading +import socket +import struct + +class RegionEditor(wx.Frame): + def __init__(self, parent): + """Create the main frame to hold the Region Editor functionality.""" + wx.Frame.__init__(self, parent, title="Region Editor") + + # Status bar + self.CreateStatusBar() + + # Menu bar + filemenu = wx.Menu() # Create "File" menu tab + menuSave = filemenu.Append(wx.ID_SAVE, "&Save", "Save the current map") + filemenu.AppendSeparator() + menuExit = filemenu.Append(wx.ID_EXIT, "E&xit", "Terminate the program") + editmenu = wx.Menu() # Create "Edit" menu tab + menuUndo = editmenu.Append(wx.ID_UNDO, "&Undo", "Revert the previous action") + menuRedo = editmenu.Append(wx.ID_REDO, "&Redo", "Revert the previously undone action") + helpmenu = wx.Menu() # Create "Help" menu tab + menuAbout = helpmenu.Append(wx.ID_ABOUT, "&About", "Information about the program") + self.Bind(wx.EVT_MENU, self.OnMenuSave, menuSave) # Make menu items call functions + self.Bind(wx.EVT_MENU, self.OnMenuExit, menuExit) + self.Bind(wx.EVT_MENU, self.OnMenuUndo, menuUndo) + self.Bind(wx.EVT_MENU, self.OnMenuRedo, menuRedo) + self.Bind(wx.EVT_MENU, self.OnMenuAbout, menuAbout) + menubar = wx.MenuBar() # Create menu bar with tabs + menubar.Append(filemenu, "&File") + menubar.Append(editmenu, "&Edit") + menubar.Append(helpmenu, "&Help") + self.SetMenuBar(menubar) + + # Create control sidebar and map drawing panels + sizer = wx.BoxSizer(wx.HORIZONTAL) + self.sidebar = ControlSidebar(self) + self.canvas = MapCanvas(self) + sizer.Add(self.sidebar, 0, wx.EXPAND) + sizer.Add(self.canvas, 1, wx.EXPAND) + self.SetSizerAndFit(sizer) + + self.Show(True) + + def OnMenuSave(self, event): + # TODO + pass + + def OnMenuExit(self, event): + # TODO: Check if map is saved, etc + self.Close(True) + + def OnMenuUndo(self, event): + # TODO + pass + + def OnMenuRedo(self, event): + # TODO + pass + + def OnMenuAbout(self, event): + # TODO + pass + + +class ControlSidebar(wx.Panel): + def __init__(self, parent): + """Create the sidebar that contains all control buttons.""" + wx.Panel.__init__(self, parent, size=(150, 400), style = wx.SUNKEN_BORDER) + self.parent = parent + + # Control buttons + rowSizer = wx.BoxSizer(wx.VERTICAL) # Top-level sizer + visSizer = wx.BoxSizer(wx.HORIZONTAL) # Vicon and camera display row + polySizer = wx.BoxSizer(wx.HORIZONTAL) # Region creation row + self.toggleVicon = wx.ToggleButton(self, label='V', size=(50, 50)) + self.buttonCamera = wx.Button(self, label='C', size=(50, 50)) + self.toggleSquare = wx.ToggleButton(self, label='S', size=(50, 50)) + self.togglePolygon = wx.ToggleButton(self, label='P', size=(50, 50)) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnButtonCamera, self.buttonCamera) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePolygon, self.togglePolygon) + visSizer.Add(self.toggleVicon, proportion=0) + visSizer.Add(self.buttonCamera, proportion=0) + polySizer.Add(self.toggleSquare, proportion=0) + polySizer.Add(self.togglePolygon, proportion=0) + rowSizer.Add(visSizer, 1) + rowSizer.Add(polySizer, 1) + self.SetSizerAndFit(rowSizer) + + def OnToggleVicon(self, event): + # Switch Vicon streaming on or off based on state of toggle button + if self.toggleVicon.GetValue(): + self.parent.canvas.listener.start() + else: + self.parent.canvas.listener.stop() + + def OnButtonCamera(self, event): + # TODO + pass + + def OnToggleSquare(self, event): + self.clearMapToggles(self.toggleSquare) + + def OnTogglePolygon(self, event): + self.clearMapToggles(self.togglePolygon) + + def clearMapToggles(self, toggleOn): + """Clear all the other map-feature toggle buttons. + + toggleOn - Toggle button object to turn back on. + """ + self.toggleSquare.SetValue(False) + self.togglePolygon.SetValue(False) + toggleOn.SetValue(True) + + +class MapCanvas(plot.PlotCanvas): + def __init__(self, parent): + """Create the main map area for drawing regions.""" + + # Initialize member parameters + self.parent = parent + self.leftClickPt = (0.0, 0.0) # Location of last left downclick + self.rightClickPt = (0.0, 0.0) # Location of last right downclick + self.canvasSize = (800.0, 400.0) # (pixels) + self.mapBound = [(-3.0, 9.0), (-3.0, 3.0)] # Map boundaries [(xmin, xmax), (ymin, ymax)] (m) + self.tolerance = (5.0 / self.canvasSize[0]) * \ + (self.mapBound[0][1] - self.mapBound[0][0]) # Distance to consider as "same point" (m) + self.polyVerts = [] # Keeps points for region creation + + # Parent constructor + plot.PlotCanvas.__init__(self, parent, size=self.canvasSize, style = wx.SUNKEN_BORDER) + + # Set up canvas for plotting + self.SetBackgroundColour('WHITE') + self.SetInitialSize(size=self.canvasSize) + emptyMarkers = plot.PolyMarker([]) + gc = plot.PlotGraphics([emptyMarkers]) + self.Draw(gc, xAxis=self.mapBound[0], yAxis=self.mapBound[1]) + self.listener = ViconMarkerListener(self) + + # Subscribe to mouse events + self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown) + self.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp) + self.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown) + self.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp) + self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) + + def OnMouseLeftDown(self, event): + """Save the left click point so it can be used later.""" + self.leftClickPt = self.PositionScreenToUser(event.GetPosition()) + + def OnMouseLeftUp(self, event): + """Perform appropriate action based on current mode of operation.""" + # Get click position + pt = self.PositionScreenToUser(event.GetPosition()) + + # Creating a square region + if self.parent.sidebar.toggleSquare.GetValue(): + # Making the second corner of a square + if self.polyVerts: + # Create a square between previous click and new click + x1, y1 = self.polyVerts[0] + x2, y2 = pt + self.DrawRegion([(x1, y1), (x1, y2), (x2, y2), (x2, y1)]) + self.polyVerts = [] + # Single click on a spot + elif math.sqrt((pt[0] - self.leftClickPt[0]) ** 2 + \ + (pt[1] - self.leftClickPt[1]) ** 2) < self.tolerance: + # Save point as first corner of square + self.polyVerts.append(pt) + # Dragged from one spot to another + else: + # Create a square between the downclick and upclick + x1, y1 = self.leftClickPt + x2, y2 = pt + self.DrawRegion([(x1, y1), (x1, y2), (x2, y2), (x2, y1)]) + self.polyVerts = [] + + # Creating a polygonal region + elif self.parent.sidebar.togglePolygon.GetValue(): + pass + + def OnMouseRightDown(self, event): + """Save the right click point so it can be used later.""" + self.rightClickPt = self.PositionScreenToUser(event.GetPosition()) + # TODO: Possibly clear polyVerts + + def OnMouseRightUp(self, event): + # TODO + pass + + def OnMouseWheel(self, event): + # TODO + pass + + def DrawMarkers(self, pos): + """Draw markers at specified global positions. + + pos - list of tuples containing positions of markers in meters [(x, y), ...] + """ + marker = plot.PolyMarker(pos) + gc = plot.PlotGraphics([marker]) + self.Draw(gc, xAxis=(-3, 9), yAxis=(-3, 3)) + + def DrawRegion(self, verts): + """Draw a region contained by the specified points. + + verts - List of tuples containing points that enclose the region. + [(x1, y1), (x2, y2), ...] + The list shall not loop back to the first point. + """ + # Plot all lines + # TODO: Get fill, may need to changes from wx.lib.plot library + verts.append(verts[0]) + lines = plot.PolyLine(verts) + gc = plot.PlotGraphics([lines]) + self.Draw(gc, xAxis=(-3, 9), yAxis=(-3, 3)) + + # TODO: OnResize + # Change mapBoundaries and canvasSize + # Recalculate tolerance + # Redraw everything only once (not continuously) + + +class ViconMarkerListener(threading.Thread): + def __init__(self, parent): + """Create the a socket to receive Vicon data. + + parent - Panel containing the drawing canvas on which to plot markers + """ + super(ViconMarkerListener, self).__init__() + self.canvas = parent + self.addr = ("0.0.0.0", 7500) + self.bufsize = 65536 + self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.lock = threading.Lock() + self.close = threading.Event() + + def run(self): + """Open the socket to start communication. Process messages.""" + # Open socket for communication + self.udpSock.bind(self.addr) + + # Receive communication until stopped + while not self.close.isSet(): + self.lock.acquire() + data = self.udpSock.recv(self.bufsize) + self.ProcessData(data) + self.lock.release() + time.sleep(0.05) + + # Close socket + self.udpSock.close() + + def stop(self): + """Close the socket to end UDP communication.""" + self.close.set() + + # Deserialize and save data + def ProcessData(self, data): + """Extract marker positions and pass them on to be mapped. + + data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] + """ + # Check for valid data (not null or incomplete) + print len(data) + if data and len(data)%16 == 0: + pos = [] + for i in range(0, len(data), 16): + x, y = struct.unpack('dd', data[i:i+16]) + pos.append((x, y)) + if i < 160: + print x,y + self.canvas.DrawMarkers(pos) # Plot Vicon markers + + +if __name__ == "__main__": + app = wx.App(False) + frame = RegionEditor(None) + app.MainLoop() \ No newline at end of file diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/MarkerStream.cs b/src/RegionEditorFiles/ViconMarkerBroadcaster/MarkerStream.cs new file mode 100644 index 00000000..49b3a626 --- /dev/null +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/MarkerStream.cs @@ -0,0 +1,167 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Net; +using System.Net.Sockets; +using System.Diagnostics; +using DEASL.Core.Mathematics; +using ViconDataStreamSDK.DotNET; + +namespace ViconMarkerBroadcaster +{ + /// + /// This class contains minimal functionality, used only to stream labeled + /// and unlabeled marker data from Vicon over UDP to another program on + /// the local computer. This was made to work with the LTLMoP map creator. + /// + /// All input arguments are optional. + /// The port for UDP communication can be specified as the first argument + /// when calling this program. Otherwise it will default to port 7500. + /// The frequency for UDP communication can be specified as the second + /// argument when calling the program. This should match up with the update + /// frequency of the ViconMarkerListener in the LTLMoP map creator. If this + /// is not specified, it will default to 20 Hz. + /// + /// Most of the code is copied and adjusted from DEASL.Components.MapEditor + /// and DEASL.Resources.ViconBroadcaster. + /// + class MarkerStream + { + static void Main(string[] args) + { + // Default update frequency for sending data to LTLMoP (Hz) + double DEFAULT_FREQ = 20.0; + + // Default port used for communicating with the LTLMoP map creator. + int DEFAULT_PORT = 7500; + + // Delay before declaring timeout if no data (ms) + int timeoutms = 5000; + + // Process arguments + int port = DEFAULT_PORT; + double updateFreq = DEFAULT_FREQ; + if (args.Length > 0) + { + // Get port number + try + { + port = Int32.Parse(args[0]); + } + catch (Exception) + { + Console.WriteLine("Invalid argument for port number."); + Console.WriteLine("Using default port: " + DEFAULT_PORT); + } + + // Get update frequency + if (args.Length > 1) + { + try + { + updateFreq = Double.Parse(args[1]); + } + catch (Exception) + { + Console.WriteLine("Invalid argument for update frequency."); + Console.WriteLine("Using default frequency: " + DEFAULT_FREQ); + } + } + } + int delayms = (int)(1000.0 / updateFreq); + + // Stopwatch for checking timeout + Stopwatch swatch = new Stopwatch(); + + // Connect to Vicon + Client vicon = new Client(); // SDK class that controls communication with Vicon + Output_Connect res = vicon.Connect("10.0.0.102"); + if (res.Result != Result.Success) + { + Console.WriteLine("Error while connecting to Vicon."); + Console.ReadKey(); + vicon = null; + return; + } + + // Set stream mode to "polling" of catched Vicon frames + if (vicon.SetStreamMode(StreamMode.ClientPullPreFetch).Result != Result.Success) + { + Console.WriteLine("Error while setting stream mode."); + Console.ReadKey(); + return; + } + + // Use unlabeled as well as labeled markers + // TODO: Make sure that labeled markers are read by default + if (vicon.EnableUnlabeledMarkerData().Result != Result.Success) + { + Console.WriteLine("Error while enabling unlabeled markers."); + Console.WriteLine("Press any key to exit"); + Console.ReadKey(); + return; + } + + Console.WriteLine("Connecting to Vicon."); + + // Set up port for connecting to LTLMoP + UdpClient controlClient = new UdpClient(); + IPEndPoint destAddr = new IPEndPoint(IPAddress.Loopback, port); + + Console.WriteLine("Requesting broadcasting to begin."); + + // Update marker information and send over UDP until closed + swatch.Start(); + while (true) + { + // Update vicon markers + Result frameResult = vicon.GetFrame().Result; + uint nMarkers = vicon.GetUnlabeledMarkerCount().MarkerCount; + if (frameResult == Result.NoFrame || (swatch.IsRunning && nMarkers == 0)) + { + if (swatch.IsRunning && swatch.ElapsedMilliseconds > timeoutms) + { + Console.WriteLine("No data received from Vicon for several seconds."); + Console.WriteLine("Please check that Vicon is on and Vicon Nexus is started."); + Console.WriteLine("Press any key to exit"); + Console.ReadKey(); + return; + } + continue; + } + else if (frameResult != Result.Success) + { + Console.WriteLine("Error while enabling retrieving frame."); + continue; + } + + // Have received data so stop stopwatch + if (swatch.IsRunning) + { + Console.WriteLine("Connection to Vicon confirmed. Data broadcasting."); + swatch.Stop(); + } + // Loop through frame, retrieving marker positions and adding + // them to the byte-message to be sent over UDP + byte[] message = new byte[nMarkers * 16]; // 8 bytes, per x and y coordinate, per marker + for (uint i = 0; i < nMarkers; i++) + { + double[] pos = vicon.GetUnlabeledMarkerGlobalTranslation(i).Translation; + // Convert millimeters into meters, round to nearest millimeter, then convert to bytes + byte[] x = BitConverter.GetBytes(Math.Round(pos[0] / 1000, 3)); + byte[] y = BitConverter.GetBytes(Math.Round(pos[1] / 1000, 3)); + System.Buffer.BlockCopy(x, 0, message, (int)i * 16, 8); + System.Buffer.BlockCopy(y, 0, message, (int)i * 16 + 8, 8); + } + + // Send message over UDP + controlClient.Send(message, message.Length, destAddr); + + // Sleep until next update + Thread.Sleep(delayms); + } + } + } +} diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/Properties/AssemblyInfo.cs b/src/RegionEditorFiles/ViconMarkerBroadcaster/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..9ca59f9d --- /dev/null +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ViconMarkerBroadcaster")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ViconMarkerBroadcaster")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("134a2e7d-e030-437b-8afb-c2a3d3f61bea")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconDataStreamSDK_CPP.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconDataStreamSDK_CPP.dll new file mode 100644 index 0000000000000000000000000000000000000000..c567dcc3db994932d175175b0a7b8e9c688cb9e9 GIT binary patch literal 397312 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�^RaGT5d@FRX@Dm)lkq8vQQrfB8nQ@xBs$0D+a3>}IrG*O~tyV>JrT8K-5)^TPend5LeR z*53r~FYS3T;C)KKYka;Dd~E{!A_tRkKoz8I_`jW}E{u@H8=dQg!9Y-gR7e#ibRk2P zHlj|R=Tv4TsM5BpZy`}_SiRrI*UEg{6X0O#a8sz;@Pk}E8KUMT>KXD0YeQz7-ipcG z+c}8827xE)A67%6vD{Wn4;1qQlqzKZc_l;Gsyjf~G@gw&YsY zbY0qf*4o_{R)6CROv&HN%K<0cRCZmyr8c16PbB*!sH<0kf-1-%thg(Sa3dDP=6dJJ zNAsVpaOOX|3pZbMlQnuOM}B!puhnWw{pQ)(ZDNnSC7KLO)K$*`V5Wr zW!Iz?qcFDk>c7SCn9u^X^U^yO8_} zdQRvJcM3fxr?1eHe{dH$^7}@njttL%HhAPu;q4wnV9dyONZvrE{DSC!wdDv|9pVI+ z^YJ6$ASMJ>>KFzf&&q`&&W=_Rj<7>nN8X_H8Da(nVg}_{ePn%wE9O~xKP`C_D?UJ> z_-=O5oFi1CxYv{dh3JrNZwA}RD(W9MBD8PVt~wBwHqa?+gKj^G&qVBye&1>Onz%l) zv8PE31GyA2tsy$o#r17<*!rt%_01Crm(-xlc%i~T#`6EDgHXu;5|R9zYdK^{yKYp zfVLU^brRtEH~Q=7=aopd#-E}-XFC4$&R+rEI#@cGT)G`7XV@ssb�hh;zI~eB|rhfK-dg3 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 z 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

+ + + Edit Region + + wxVERTICAL + + wxEXPAND + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + 1 + + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + + + + wxEXPAND + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + 1 + + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + $parent + $id + + 40, 40 + + + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + + + wxEXPAND + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + wx.ID_OK + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 8 + + + + wx.ID_CANCEL + + + + + +
diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index 4fc40462..9d07fc14 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -633,7 +633,6 @@ def OnMouseLeftUp(self, event): # Do something about that region selection if iRegInner != -1: - print "Inside region ", iRegInner # Selecting single region if not event.CmdDown(): self.selectedRegions = [] @@ -649,7 +648,6 @@ def OnMouseLeftUp(self, event): # Clear all region selections else: - print "Outside regions" self.selectedRegions = [] self.RedrawCanvas() @@ -665,6 +663,17 @@ def OnMouseLeftDClick(self, event): if self.togglePoly.GetValue() and self.polyVerts and \ len(self.polyVerts) > 2: self.CreateRegion() + + # Editing a region + if self.selectedRegions and not self.toggleSquare.GetValue() and \ + not self.togglePoly.GetValue() and \ + not self.toggleDim.GetValue(): + # Edit the latest selected region + iReg = self.selectedRegions.pop() + self.selectedRegions = [] + self.selectedRegions.append(iReg) + self.EditRegion(iReg) + def OnMouseRightDown(self, event): """Save the right click point so it can be used later.""" @@ -1017,6 +1026,47 @@ def AddPointToRegion(self, pt, iReg, iEdge): self.adjacent[jReg][iReg].\ append((otherRegFace, thisRegFace + 1)) + def EditRegion(self, iReg): + """Show the edit region dialog. + Allow user to change name, color, and obstacleness of a region. + + iReg - Index of region to edit + """ + # Create dialog + regEdDia = RegionEditDialog(self, wx.ID_ANY, "Edit Region Information") + + # Set appropriate control values + regEdDia.textName.SetValue(self.regions[iReg].name) + regEdDia.colorPicker.SetColour(self.regions[iReg].color) + regEdDia.chkbxObst.SetValue(self.regions[iReg].isObstacle) + + # Wait for user to close the dialog + done = False + while not done: + answer = regEdDia.ShowModal() + # User canceled + if answer == wx.ID_CANCEL: + regEdDia.Destroy() + done = True + # Same name or unique new name + elif regEdDia.textName.GetValue() == self.regions[iReg].name or \ + regEdDia.textName.GetValue() not in \ + [r.name for r in self.regions]: + self.regions[iReg].name = regEdDia.textName.GetValue() + self.regions[iReg].color = regEdDia.colorPicker.GetColour() + self.regions[iReg].isObstacle = regEdDia.chkbxObst.GetValue() + regEdDia.Destroy() + done = True + # Non-unique name - needs to re-edit + else: + wx.MessageBox("Region with name \"%s\" already exists." % \ + (regEdDia.textName.GetValue()), "Error", \ + style = wx.OK | wx.ICON_ERROR) + + # Redraw the regions to ensure correct name/color + self.RedrawCanvas() + # TODO: Add to undo + def Autoboundary(self): """Automatically create region representing the boundary of the map.""" # Check that there are regions first @@ -1396,9 +1446,53 @@ def OnButtonNext(self, event): # wxGlade: FeedbackDialog. self.currPt = 0 # end of class FeedbackDialog +class RegionEditDialog(wx.Dialog): + def __init__(self, *args, **kwds): + # begin wxGlade: RegionEditDialog.__init__ + kwds["style"] = wx.DEFAULT_DIALOG_STYLE + wx.Dialog.__init__(self, *args, **kwds) + self.label_1 = wx.StaticText(self, -1, "Name: ") + self.textName = wx.TextCtrl(self, -1, "") + self.label_2 = wx.StaticText(self, -1, "Color: ") + self.colorPicker = wx.ColourPickerCtrl(self, -1) + self.chkbxObst = wx.CheckBox(self, -1, "Treat as obstacle") + self.buttonOk = wx.Button(self, wx.ID_OK, "OK") + self.buttonCancel = wx.Button(self, wx.ID_CANCEL, "Cancel") + + self.__set_properties() + self.__do_layout() + # end wxGlade + + def __set_properties(self): + # begin wxGlade: RegionEditDialog.__set_properties + self.SetTitle("Edit Region") + self.colorPicker.SetMinSize((40, 40)) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: RegionEditDialog.__do_layout + sizer_2 = wx.BoxSizer(wx.VERTICAL) + sizer_5 = wx.BoxSizer(wx.HORIZONTAL) + sizer_4 = wx.BoxSizer(wx.HORIZONTAL) + sizer_3 = wx.BoxSizer(wx.HORIZONTAL) + sizer_3.Add(self.label_1, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_3.Add(self.textName, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_2.Add(sizer_3, 1, wx.EXPAND, 0) + sizer_4.Add(self.label_2, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_4.Add(self.colorPicker, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_2.Add(sizer_4, 1, wx.EXPAND, 0) + sizer_2.Add(self.chkbxObst, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_5.Add(self.buttonOk, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_5.Add(self.buttonCancel, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 8) + sizer_2.Add(sizer_5, 1, wx.EXPAND, 0) + self.SetSizer(sizer_2) + sizer_2.Fit(self) + self.Layout() + # end wxGlade +# end of class RegionEditDialog class Region: - def __init__(self, points, name, rgb=None): # TODO: random color/name + def __init__(self, points, name, rgb=None): """Create an object to represent a region. points - List of Points containing vertex information @@ -1407,18 +1501,19 @@ def __init__(self, points, name, rgb=None): # TODO: random color/name rgb - List of integers defining color [red, green, blue], each with value in range [0 255] """ - # TODO: Add name, color, convex/concave, possibly adjoining edges + # TODO: Add convex/concave self.verts = points self.name = name if not rgb: rgb = [random.randint(0, 255), random.randint(0, 255), \ random.randint(0,255)] - self.color = rgb + self.color = wx.Colour(rgb[0], rgb[1], rgb[2]) + self.isObstacle = False def __str__(self): """Representation of object.""" - s = "%s\t{%03d\t%03d\t%03d}\t[" % \ - (self.name, self.color[0], self.color[1], self.color[2]) + s = "%s\t{%03d\t%03d\t%03d}\t[" % (self.name, self.color.Red(), \ + self.color.Green(), self.color.Blue()) for iPt, pt in enumerate(self.verts): s += str(pt) if iPt < len(self.verts) - 1: From 2b3c25ae84c1d5b0c0c6739091b3155695f432f3 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 11 Apr 2012 10:49:21 -0400 Subject: [PATCH 05/26] Backup commit before changing EditRegion to use a region object instead of an index. --- src/RegionEditorFiles/NewRegionEditor/regionEditor.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index 9d07fc14..05b820ff 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -922,7 +922,7 @@ def CreateRegion(self): """ # Create region rName = 'r' + str(len(self.regions)) - region = Region(self.polyVerts, rName) # TODO: Add color to regions + region = Region(self.polyVerts, rName) self.regions.append(region) idxNewReg = len(self.regions) - 1 # Add row and column to list of lists of lists representing adjacency @@ -1067,6 +1067,8 @@ def EditRegion(self, iReg): self.RedrawCanvas() # TODO: Add to undo + #def RecalcAdjacency(self, + def Autoboundary(self): """Automatically create region representing the boundary of the map.""" # Check that there are regions first From 7a06461fff63fcdbcce1146e4cf70ca06b98a1ee Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 11 Apr 2012 10:55:39 -0400 Subject: [PATCH 06/26] Fixed bug of not being able to select a different region on first click after editing some region. Also made editing regions done using region object rather than index. --- .../NewRegionEditor/regionEditor.py | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index 05b820ff..e55328ca 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -668,11 +668,14 @@ def OnMouseLeftDClick(self, event): if self.selectedRegions and not self.toggleSquare.GetValue() and \ not self.togglePoly.GetValue() and \ not self.toggleDim.GetValue(): + # Unset double-click flag since event does not propagate here + self.justDoubleClicked = False + # Edit the latest selected region iReg = self.selectedRegions.pop() self.selectedRegions = [] self.selectedRegions.append(iReg) - self.EditRegion(iReg) + self.EditRegion(self.regions[iReg]) def OnMouseRightDown(self, event): @@ -1026,19 +1029,19 @@ def AddPointToRegion(self, pt, iReg, iEdge): self.adjacent[jReg][iReg].\ append((otherRegFace, thisRegFace + 1)) - def EditRegion(self, iReg): + def EditRegion(self, reg): """Show the edit region dialog. Allow user to change name, color, and obstacleness of a region. - iReg - Index of region to edit + reg - Region to edit """ # Create dialog regEdDia = RegionEditDialog(self, wx.ID_ANY, "Edit Region Information") # Set appropriate control values - regEdDia.textName.SetValue(self.regions[iReg].name) - regEdDia.colorPicker.SetColour(self.regions[iReg].color) - regEdDia.chkbxObst.SetValue(self.regions[iReg].isObstacle) + regEdDia.textName.SetValue(reg.name) + regEdDia.colorPicker.SetColour(reg.color) + regEdDia.chkbxObst.SetValue(reg.isObstacle) # Wait for user to close the dialog done = False @@ -1049,12 +1052,12 @@ def EditRegion(self, iReg): regEdDia.Destroy() done = True # Same name or unique new name - elif regEdDia.textName.GetValue() == self.regions[iReg].name or \ + elif regEdDia.textName.GetValue() == reg.name or \ regEdDia.textName.GetValue() not in \ [r.name for r in self.regions]: - self.regions[iReg].name = regEdDia.textName.GetValue() - self.regions[iReg].color = regEdDia.colorPicker.GetColour() - self.regions[iReg].isObstacle = regEdDia.chkbxObst.GetValue() + reg.name = regEdDia.textName.GetValue() + reg.color = regEdDia.colorPicker.GetColour() + reg.isObstacle = regEdDia.chkbxObst.GetValue() regEdDia.Destroy() done = True # Non-unique name - needs to re-edit From 114b0a7a654935f491abf10b3c2e02a9ef1f1e38 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 11 Apr 2012 16:21:22 -0400 Subject: [PATCH 07/26] Fixed most problems with adjacencies. Made regions selectable, editable, dragable, and deletable. --- .../NewRegionEditor/regionEditor.py | 307 ++++++++++++------ 1 file changed, 206 insertions(+), 101 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index e55328ca..bd8d9126 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -504,9 +504,9 @@ def OnMouseLeftUp(self, event): x0 = self.polyVerts[0].x y0 = self.polyVerts[0].y pt1, iReg1, iPt1, iEd1, snapped1 = \ - self.SnapRegions(Point(x0, pt.y), False) + self.SnapRegions(Point(x0, pt.y)) pt3, iReg3, iPt3, iEd3, snapped3 = \ - self.SnapRegions(Point(pt.x, y0), False) + self.SnapRegions(Point(pt.x, y0)) # Move clicked points if other vertices snap and they don't if snapped1: if iReg == -1: @@ -602,18 +602,27 @@ def OnMouseLeftUp(self, event): elif self.selectedRegions and \ pt.Dist(self.leftClickPt) > self.tolerance: self.leftClickPt, iReg, iPt, iEd, snapped = \ - self.SnapRegions(self.leftClickPt, False) + self.SnapRegions(self.leftClickPt) iRegInner = self.InsideRegions(self.leftClickPt) # Dragging point(s) - if iPt != -1: - # TODO: Change point(s) position and check adjacencies - pass + if iReg in self.selectedRegions and iPt != -1: + # Change point position and check adjacencies + self.regions[iReg].verts[iPt].Set(pt.x, pt.y) + self.RecalcAdjacency(iReg) + self.RedrawCanvas() # Dragging region(s) - elif iReg != -1 or iRegInner != -1: - # TODO: Change region(s) position and check adjacencies - pass + elif iReg in self.selectedRegions or \ + iRegInner in self.selectedRegions: + # Change region(s) position and check adjacencies + delta = pt - self.leftClickPt + for iRegSel in self.selectedRegions: + for iPt in range(len(self.regions[iRegSel].verts)): + self.regions[iRegSel].verts[iPt] += delta + for iRegSel in self.selectedRegions: + self.RecalcAdjacency(iRegSel) + self.RedrawCanvas() # Panning the map view elif pt.Dist(self.leftClickPt) > self.tolerance: @@ -651,8 +660,6 @@ def OnMouseLeftUp(self, event): self.selectedRegions = [] self.RedrawCanvas() - # TODO: May need to handle all mouse events in one huge window - # to avoid having the double click interfere with regular clicking def OnMouseLeftDClick(self, event): """Perform action based on current mode of operation.""" @@ -703,12 +710,20 @@ def OnMouseWheel(self, event): self.canvasScale.y * (1 - scaler) + self.canvasOffset.y) self.canvasScale = self.canvasScale * scaler self.RedrawCanvas() - + def OnKeyDown(self, event): keycode = event.GetKeyCode() - # Backspace/Delete - Removes last set point during region creation + # Backspace/Delete - Deletes selected regions if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ + self.selectedRegions and not self.togglePoly.GetValue() and \ + not self.toggleSquare.GetValue(): + self.selectedRegions.sort() + while self.selectedRegions: + self.DeleteRegion(self.selectedRegions.pop()) + + # Backspace/Delete - Removes last set point during region creation + elif (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ self.polyVerts: if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): self.polyVerts.pop() @@ -723,19 +738,19 @@ def OnKeyDown(self, event): self.ResetMapToggles() # Ctrl+n - New - if event.CmdDown() and keycode == 78: + elif event.CmdDown() and keycode == 78: self.OnMenuNew(None) # Ctrl+o - Open - if event.CmdDown() and keycode == 79: + elif event.CmdDown() and keycode == 79: self.OnMenuOpen(None) # Ctrl+s - Save - if event.CmdDown() and keycode == 83: + elif event.CmdDown() and keycode == 83: self.OnMenuSave(None) # Ctrl+q - Quit - if event.CmdDown() and keycode == 81: + elif event.CmdDown() and keycode == 81: self.OnMenuExit(None) # Ctrl+z - Undo @@ -745,19 +760,24 @@ def OnKeyDown(self, event): # Ctrl+y - Redo elif event.CmdDown() and keycode == 89: self.OnMenuRedo(None) - + + # Ctrl+a - Select All + elif event.CmdDown() and keycode == 65: + self.selectedRegions = range(len(self.regions)) + self.RedrawCanvas() + # Pass event on so other key combinations still work else: event.Skip() - + def OnEnterWindow(self, event): """Set the focus to the canvas to enable zooming.""" self.canvas.SetFocus() - + def OnLeaveWindow(self, event): """Unset the focus from the canvas to disable zooming.""" self.SetFocus() - + def OnCanvasPaint(self, event): """Redraw the contents of the canvas panel.""" # Set up to draw @@ -935,57 +955,8 @@ def CreateRegion(self): self.AddToUndo(Action(None, region)) # TODO: Change Undo setup so that adjacency matrix can be added with # regions in one undo step - - # Look for adjacent edges to other regions - # First add vertices in walls where another region vertex is - # Check new region against other regions - for iPt, (iReg, iRPoint, iREdge) in enumerate(self.polySnaps): - # Point snapped to the edge of another region - if iREdge != -1: - # Add point to other region and update old transitions - self.AddPointToRegion(self.polyVerts[iPt], iReg, iREdge) - # Track which point it is connected to - self.polySnaps[iPt] = (iReg, iREdge + 1, -1) - # Check other regions against new region - for iReg, otherReg in enumerate(self.regions): - for iPt, pt in enumerate(otherReg.verts): - pt, iRPoint, iREdge, snapped = \ - self.Snap1Region(region, pt, False) - # Other region vertex snapped to wall of new region - if iREdge != -1: - # Add point to new region and update old transitions - self.AddPointToRegion(pt, idxNewReg, iREdge) - # Track which point it is connected to - self.polySnaps.insert(iREdge + 1, (iReg, iPt, -1)) - - # Next look for adjacent edges and update transition matrix accordingly - for iSide in range(len(self.polySnaps)): - iReg1, iRPoint1, iREdge1 = self.polySnaps[iSide] - if iSide < len(self.polySnaps) - 1: - iReg2, iRPoint2, iREdge2 = self.polySnaps[iSide + 1] - else: - iReg2, iRPoint2, iREdge2 = self.polySnaps[0] - # Same region and adjacent points - if iReg1 != -1 and iReg1 == iReg2: - # TODO: Could be same point that is already shared by two or - # more regions. Need to check for this. - # Not last side in other region - if abs(iRPoint1 - iRPoint2) == 1: - iOtherRegSide = min(iRPoint1, iRPoint2) - self.adjacent[idxNewReg][iReg1].\ - append((iSide, iOtherRegSide)) - self.adjacent[iReg1][idxNewReg].\ - append((iOtherRegSide, iSide)) - # Last side in other region - elif (iRPoint1 == 0 and iRPoint2 == \ - len(self.regions[iReg2].verts) - 1) or \ - (iRPoint2 == 0 and iRPoint1 == \ - len(self.regions[iReg1].verts) - 1): - iOtherRegSide = len(self.regions[iReg1].verts) - 1 - self.adjacent[idxNewReg][iReg1].\ - append((iSide, iOtherRegSide)) - self.adjacent[iReg1][idxNewReg].\ - append((iOtherRegSide, iSide)) + + self.RecalcAdjacency(idxNewReg) # Cleanup and draw self.polyVerts = [] @@ -993,11 +964,30 @@ def CreateRegion(self): self.polyAdjEdges = [] self.DrawRegion(region) self.DrawAdjacencies(idxNewReg) + + def DeleteRegion(self, iReg): + """Removes region from regions list and adjacency list. + + iReg - Index of region to remove + """ + # Remove region from tracking lists + self.regions.pop(iReg) + self.adjacent.pop(iReg) + for jReg in range(len(self.regions)): + self.adjacent[jReg].pop(iReg) + + # Redraw regions + self.RedrawCanvas() + + # TODO: Add to undo def AddPointToRegion(self, pt, iReg, iEdge): """Add a vertex to the region. pt - Point object, location of new vertex in map coordinates + Unless this is a new Point object, it is recommended that this be + a copy of the previous Point object + AddPointToRegion(copy.copy(pt), iReg, iEdge) iRegion - Int, index of region to modify iEdge - Int, index of the edge to replace with edges to and from pt """ @@ -1070,7 +1060,97 @@ def EditRegion(self, reg): self.RedrawCanvas() # TODO: Add to undo - #def RecalcAdjacency(self, + def RecalcAdjacency(self, iReg, iRegStart=0): + """Recalculate the adjacent walls between the specified region and + other regions. If walls or points are "close enough" to being colinear + or colocated, they will be moved so that they overlap. The saved + adjacency matrix will be updated accordingly. + + Can specify which region to start checking with so that the input + region will not check against all regions. This is useful if entire map + needs to be rechecked, it can be done so with: + + for iReg, reg in enumerate(self.regions): + self.RecalcAdjacency(iReg, iRegStart=iReg) + + This will avoid redundant checking of regions. Note that the function + will avoid checking against itself, so there is no reason to avoid + calling it on itself. + + iReg - Index of region of interest + iRegStart - Specifies to check reg against self.regions[iRegStart:] + """ + # Reset adjacency related to this region + for iOthReg in range(len(self.regions)): + self.adjacent[iReg][iOthReg] = [] + self.adjacent[iOthReg][iReg] = [] + + # Pull region for easy access + reg = self.regions[iReg] + + # Keeps track of the colocation of vertices of this region with points + # of other regions + # List of lists of tuples + # Outer list - len(vertColloc) == len(reg.verts) + # Inner list - Contains collocation information for each region vertex + # Tuple - Contains collocation information from vertex on this region + # to vertex on another region in the format: + # (iReg, iPt) + vertsColloc = [[] for iPt in xrange(len(reg.verts))] + + # Check all other regions against this region + for iOthReg in range(len(self.regions[iRegStart:])): + # No need to check against self + if iOthReg == iReg: + continue + + for iOthPt, othPt in enumerate(self.regions[iOthReg].verts): + pt, iPt, iEd, snapped = self.Snap1Region(reg, othPt) + # Other region vertex snapped to wall of new region + if iEd != -1: + # Add point to new region and update old transitions + self.AddPointToRegion(copy.copy(pt), iReg, iEd) + vertsColloc.append([]) + # Don't bother tracking point connectivity here + # Recheck it in next loop so we can look at all regions + + # Check this region against others and create new vertices as necessary + for iPt, pt in enumerate(reg.verts): + snapResults = self.SnapRegions(pt, checkAll=True) + # Process the "nearness" information + for othPt, iOthReg, iOthPt, iOthEd in snapResults: + # Ignore same region + if iOthReg == iReg: + continue + + # Change region point location + pt.Set(othPt.x, othPt.y) + + # Snapped to a point in the other region + if iOthPt != -1: + vertsColloc[iPt].append((iOthReg, iOthPt)) + # Snapped to an edge of the other region + elif iOthEd != -1: + self.AddPointToRegion(copy.copy(pt), iOthReg, iOthEd) + vertsColloc[iPt].append((iOthReg, iOthEd + 1)) + + # Now look for adjacent edges and update transition matrix accordingly + for iPt in range(len(reg.verts)): # Start point of edge + jPt = (iPt + 1) % len(reg.verts) # End point of edge + for iOthReg, iOthPt in vertsColloc[iPt]: + jOthPt1 = (iOthPt - 1) % len(self.regions[iOthReg].verts) + jOthPt2 = (iOthPt + 1) % len(self.regions[iOthReg].verts) + # Check edge on other region prior to point + if (iOthReg, jOthPt1) in vertsColloc[jPt]: + # Indicate transition from this region to other region + # from current this region side to other region side + # and reverse transition as well + self.adjacent[iReg][iOthReg].append((iPt, jOthPt1)) + self.adjacent[iOthReg][iReg].append((jOthPt1, iPt)) + # Check edge on other region after point + elif (iOthReg, jOthPt2) in vertsColloc[jPt]: + self.adjacent[iReg][iOthReg].append((iPt, iOthPt)) + self.adjacent[iOthReg][iReg].append((iOthPt, iPt)) def Autoboundary(self): """Automatically create region representing the boundary of the map.""" @@ -1125,12 +1205,12 @@ def SnapPoint(self, pt): # (since Vicon points may be moving around) snapped = False pt, idxRegion, idxRPoint, idxREdge, snapped = \ - self.SnapRegions(pt, snapped) + self.SnapRegions(pt, snapped=snapped) # Check points in current region creation # Only snap to vertices # Don't count this for iRegion or iRPoint - pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped) + pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped=snapped) # Check all Vicon points pt, idxMarker, snapped = self.SnapVicon(pt, snapped) @@ -1138,39 +1218,59 @@ def SnapPoint(self, pt): # Only return region indices, since they are usually all that matter return pt, idxRegion, idxRPoint, idxREdge - def SnapRegions(self, pt, snapped): + def SnapRegions(self, pt, checkAll=False, snapped=False): """Snap the point to any sufficiently "nearby" region vertex or wall. pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not + checkAll - Boolean, true if this function should check the point + against all regions, even if it has already snapped to one + snapped - Boolean, true if point has snapped already, false if not If point is already snapped, this function will just return - returns - (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) - snappedPt - Point object, point after snapping - idxRegion - int, index of region if snapped to region point/edge - if not snapped to region it will be -1 - idxRPoint - int, index of point in region.verts if snapped to point - if not snapped to point it will be -1 - idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] - if not snapped to edge it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a region point or edge + returns - + If checkAll is true, then the return will be a list containing + tuples in the format (snappedPt, idxRegion, idxRPoint, idxREdge), + where each entry is as described below. If there is no snapping + then the list will be empty. + If checkAll is false, then a single tuple will be returned: + (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge """ - idxRegion = -1 - idxRPoint = -1 - idxREdge = -1 - i = 0 # Region incrementer - while (not snapped) and i < len(self.regions): + # Initialize output + if not checkAll: + idxRegion = -1 + idxRPoint = -1 + idxREdge = -1 + else: + output = [] + + # Check through regions + i = len(self.regions) - 1 # Region decrementer + while (checkAll or not snapped) and i >= 0: pt, idxRPoint, idxREdge, snapped = \ - self.Snap1Region(self.regions[i], pt, snapped) - if snapped: + self.Snap1Region(self.regions[i], pt, \ + snapped=(not checkAll and snapped)) + if idxRPoint != -1 or idxREdge != -1: idxRegion = i - i += 1 - - return pt, idxRegion, idxRPoint, idxREdge, snapped + if checkAll: + output.append((pt, idxRegion, idxRPoint, idxREdge)) + i -= 1 + + if not checkAll: + return pt, idxRegion, idxRPoint, idxREdge, snapped + else: + return output - def Snap1Region(self, region, pt, snapped): + def Snap1Region(self, region, pt, snapped=False): """Snap the point to any sufficiently "nearby" region vertex or wall in the specified region. @@ -1236,7 +1336,7 @@ def Snap1Region(self, region, pt, snapped): return pt, idxRPoint, idxREdge, snapped - def SnapPoly(self, pt, snapped): + def SnapPoly(self, pt, snapped=False): """Snap the point to any vertex in the currently being created region if it is sufficiently "nearby". @@ -1650,6 +1750,11 @@ def __div__(self, other): def __truediv__(self, other): """True division operator.""" return self.__div__(other) + + def Set(self, x, y): + """Change the value of the point.""" + self.x = x + self.y = y def Dot(self, other): """Dot product.""" From b3e6f19236dc91feea9e872521bfbc3fdd799b8a Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Sun, 15 Apr 2012 16:49:11 -0400 Subject: [PATCH 08/26] Added file-open functionality to region editor. --- .../NewRegionEditor/regionEditor.py | 91 ++- src/regionEditor.py | 671 ++++++++++++++---- 2 files changed, 618 insertions(+), 144 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index bd8d9126..55992e79 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -13,8 +13,10 @@ import struct import copy import random +import re import winsound import pyttsx +import lib.fileMethods as fileMethods # begin wxGlade: extracode # end wxGlade @@ -295,8 +297,86 @@ def OnMenuNew(self, event): # wxGlade: regionEditor. event.Skip() def OnMenuOpen(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuOpen' not implemented" - event.Skip() + # Start up save dialog + dialogOpen = wx.FileDialog(self, message="Open File", \ + defaultDir=sys.path[0], \ + defaultFile=self.fileName.split('\\').pop(), \ + wildcard="*.regions", style=wx.FD_OPEN) + + # Hit Open + if dialogOpen.ShowModal() == wx.ID_OK: + filePath = dialogOpen.GetPath() + if not os.path.exists(filePath) or not ('.regions' in filePath): + return + + # Pull all data from file into dictionary for parsing + data = fileMethods.readFromFile(filePath) + + if data is None: + return + + # Clear all current information + self.regions = [] + self.adjacent = [] + # self.bkgndImage = None + + # TODO: Uncomment when background image is included + #try: + # self.bkgndImage = data["Background"][0] + #except KeyError: + # self.bkgndImage = None + + # Set all region information from lines in file + # Each region line format is this: + # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] + for rData in data["Regions"]: + rData = re.sub('[\[\]\(\)\{\}]', '', rData) + rData = rData.split() # Separates on any whitespace + rName = rData[0] + rRGB = [] + for i in range(1, 4): # Convert colors to integers + rRGB.append(int(rData[i])) + rVerts = [] + for i in range(4, len(rData), 2): + x = float(rData[i]) + y = float(rData[i+1]) + rVerts.append(Point(x, y)) + region = Region(rVerts, rName, rgb=rRGB) + self.regions.append(region) + + # Make an empty adjacency matrix of size (nRegions) x (nRegions) + self.adjacent = [[[] for j in range(len(self.regions))] \ + for i in range(len(self.regions))] + + # Assign region transitions + # Each transition line format is this: + # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] + for tData in data["Transitions"]: + tData = re.sub('[\[\]\(\)]', '', tData) + tData = tData.split(); # Separate on any whitespace + iReg1 = int(tData[0]) + iReg2 = int(tData[1]) + faces = [] + # All transitions between regions + for i in range(2, len(transData), 2): + iFaceReg1 = int(tData[i]) + iFaceReg2 = int(tData[i+1]) + self.adjacent[iReg1][iReg2].append((iFaceReg1, iFaceReg2)) + # Note that region file specifies transitions in both directions + # So mirroring here is unnecessary + + # Set "obstacleness" of regions + if "Obstacles" in data: + for iReg in data["Obstacles"]: + self.regions[iReg].isObstacle = True + + # Store the filename for saving + self.fileName = filePath + + # TODO: Rescale/pan map to bring full map into view + self.RedrawCanvas() + + dialogOpen.Destroy() def OnMenuSave(self, event): # wxGlade: regionEditor. """Save to file that has already been used.""" @@ -305,8 +385,8 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. f.write("# This is a region definition file for the LTLMoP " + \ "toolkit.\n# Format details are described at the " + \ "beginning of each section below.\n# Note that all values " + \ - "are separated by *tabs*.\n\nBackground: # Relative path " + \ - "of background image file\n") + "are separated by *whitespace*.\n\nBackground: # Relative " + \ + "path of background image file\n") f.write("None\n\n") # TODO: Support for background images f.write("Obstacles: # Indices of regions to treat as obstacles\n") f.write("\n\n") # TODO: Support for obstacles @@ -319,9 +399,6 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. for reg in self.regions: f.write(str(reg) + "\n") f.write("\n") - f.write("Thumbnail: # Relative path of image file that has " + \ - "region shapes overlayed on background image\n") - f.write("None\n\n") # TODO: Save png thumbnail f.write("Transitions: # Region1Idx Region2Idx " + \ "[(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) " + \ "...]\n") diff --git a/src/regionEditor.py b/src/regionEditor.py index 53740ca8..55992e79 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -13,8 +13,10 @@ import struct import copy import random +import re import winsound import pyttsx +import lib.fileMethods as fileMethods # begin wxGlade: extracode # end wxGlade @@ -124,7 +126,7 @@ def __init__(self, *args, **kwds): # Bind mouse events self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown, self.canvas) self.canvas.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp, self.canvas) - #self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) + self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) self.canvas.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown, self.canvas) self.canvas.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp, self.canvas) self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel, self.canvas) @@ -148,7 +150,7 @@ def __init__(self, *args, **kwds): self.canvasScale = Point(xScale, yScale) self.canvasOffset = Point(xOffset, yOffset) - # Set up for region creation + # Region-related parameters self.regions = [] # List of regions in the map self.adjacent = [] # List of lists holding transition # edges between regions. @@ -159,9 +161,6 @@ def __init__(self, *args, **kwds): # list of the same length, but edge # indices are for region j. # adjacent[i][i] will be empty. - self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick - self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick - self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) self.polyVerts = [] # Keeps points for region creation # and dimensioning # Region creation: [Point(x0,y0), ...] @@ -172,6 +171,13 @@ def __init__(self, *args, **kwds): self.boundary = None # Region representing the map bound # TODO: When changing the name of a region, check if it is called boundary + # Mouse-related parameters + self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick + self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick + self.justDoubleClicked = False # Indicating double-click event + self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) + self.selectedRegions = [] # List of currently selected regions + # Set up for undo/redo capabilities # TODO: Disable self.menuUndo and self.menuRedo self.unredoBufLen = 50 @@ -291,8 +297,86 @@ def OnMenuNew(self, event): # wxGlade: regionEditor. event.Skip() def OnMenuOpen(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuOpen' not implemented" - event.Skip() + # Start up save dialog + dialogOpen = wx.FileDialog(self, message="Open File", \ + defaultDir=sys.path[0], \ + defaultFile=self.fileName.split('\\').pop(), \ + wildcard="*.regions", style=wx.FD_OPEN) + + # Hit Open + if dialogOpen.ShowModal() == wx.ID_OK: + filePath = dialogOpen.GetPath() + if not os.path.exists(filePath) or not ('.regions' in filePath): + return + + # Pull all data from file into dictionary for parsing + data = fileMethods.readFromFile(filePath) + + if data is None: + return + + # Clear all current information + self.regions = [] + self.adjacent = [] + # self.bkgndImage = None + + # TODO: Uncomment when background image is included + #try: + # self.bkgndImage = data["Background"][0] + #except KeyError: + # self.bkgndImage = None + + # Set all region information from lines in file + # Each region line format is this: + # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] + for rData in data["Regions"]: + rData = re.sub('[\[\]\(\)\{\}]', '', rData) + rData = rData.split() # Separates on any whitespace + rName = rData[0] + rRGB = [] + for i in range(1, 4): # Convert colors to integers + rRGB.append(int(rData[i])) + rVerts = [] + for i in range(4, len(rData), 2): + x = float(rData[i]) + y = float(rData[i+1]) + rVerts.append(Point(x, y)) + region = Region(rVerts, rName, rgb=rRGB) + self.regions.append(region) + + # Make an empty adjacency matrix of size (nRegions) x (nRegions) + self.adjacent = [[[] for j in range(len(self.regions))] \ + for i in range(len(self.regions))] + + # Assign region transitions + # Each transition line format is this: + # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] + for tData in data["Transitions"]: + tData = re.sub('[\[\]\(\)]', '', tData) + tData = tData.split(); # Separate on any whitespace + iReg1 = int(tData[0]) + iReg2 = int(tData[1]) + faces = [] + # All transitions between regions + for i in range(2, len(transData), 2): + iFaceReg1 = int(tData[i]) + iFaceReg2 = int(tData[i+1]) + self.adjacent[iReg1][iReg2].append((iFaceReg1, iFaceReg2)) + # Note that region file specifies transitions in both directions + # So mirroring here is unnecessary + + # Set "obstacleness" of regions + if "Obstacles" in data: + for iReg in data["Obstacles"]: + self.regions[iReg].isObstacle = True + + # Store the filename for saving + self.fileName = filePath + + # TODO: Rescale/pan map to bring full map into view + self.RedrawCanvas() + + dialogOpen.Destroy() def OnMenuSave(self, event): # wxGlade: regionEditor. """Save to file that has already been used.""" @@ -301,8 +385,8 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. f.write("# This is a region definition file for the LTLMoP " + \ "toolkit.\n# Format details are described at the " + \ "beginning of each section below.\n# Note that all values " + \ - "are separated by *tabs*.\n\nBackground: # Relative path " + \ - "of background image file\n") + "are separated by *whitespace*.\n\nBackground: # Relative " + \ + "path of background image file\n") f.write("None\n\n") # TODO: Support for background images f.write("Obstacles: # Indices of regions to treat as obstacles\n") f.write("\n\n") # TODO: Support for obstacles @@ -315,9 +399,6 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. for reg in self.regions: f.write(str(reg) + "\n") f.write("\n") - f.write("Thumbnail: # Relative path of image file that has " + \ - "region shapes overlayed on background image\n") - f.write("None\n\n") # TODO: Save png thumbnail f.write("Transitions: # Region1Idx Region2Idx " + \ "[(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) " + \ "...]\n") @@ -486,9 +567,13 @@ def OnMouseLeftUp(self, event): # Get click position ptPix = event.GetPosition() pt, iReg, iPt, iEd = self.SnapPoint(self.Pix2Map(ptPix)) - + + # Has been handled by double-click event handler + if self.justDoubleClicked: + self.justDoubleClicked = False # Reset flag + # Creating a rectangular region - if self.toggleSquare.GetValue(): + elif self.toggleSquare.GetValue(): # Making the second corner of rectangle if self.polyVerts: # Snap vertices to regions as necessary, not to Vicon @@ -496,9 +581,9 @@ def OnMouseLeftUp(self, event): x0 = self.polyVerts[0].x y0 = self.polyVerts[0].y pt1, iReg1, iPt1, iEd1, snapped1 = \ - self.SnapRegions(Point(x0, pt.y), False) + self.SnapRegions(Point(x0, pt.y)) pt3, iReg3, iPt3, iEd3, snapped3 = \ - self.SnapRegions(Point(pt.x, y0), False) + self.SnapRegions(Point(pt.x, y0)) # Move clicked points if other vertices snap and they don't if snapped1: if iReg == -1: @@ -589,7 +674,33 @@ def OnMouseLeftUp(self, event): self.AddToUndo(Action(oldRegion, self.regions[iReg])) self.polyVerts = [] self.RedrawCanvas() - + + # Dragging region(s) or vertices + elif self.selectedRegions and \ + pt.Dist(self.leftClickPt) > self.tolerance: + self.leftClickPt, iReg, iPt, iEd, snapped = \ + self.SnapRegions(self.leftClickPt) + iRegInner = self.InsideRegions(self.leftClickPt) + + # Dragging point(s) + if iReg in self.selectedRegions and iPt != -1: + # Change point position and check adjacencies + self.regions[iReg].verts[iPt].Set(pt.x, pt.y) + self.RecalcAdjacency(iReg) + self.RedrawCanvas() + + # Dragging region(s) + elif iReg in self.selectedRegions or \ + iRegInner in self.selectedRegions: + # Change region(s) position and check adjacencies + delta = pt - self.leftClickPt + for iRegSel in self.selectedRegions: + for iPt in range(len(self.regions[iRegSel].verts)): + self.regions[iRegSel].verts[iPt] += delta + for iRegSel in self.selectedRegions: + self.RecalcAdjacency(iRegSel) + self.RedrawCanvas() + # Panning the map view elif pt.Dist(self.leftClickPt) > self.tolerance: downClickPix = self.Map2Pix(self.leftClickPt) @@ -598,15 +709,58 @@ def OnMouseLeftUp(self, event): self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ self.canvasOffset.y) self.RedrawCanvas() + + # Check if selecting or deselecting a region + else: + if iReg != -1: + iRegInner = iReg + else: + iRegInner = self.InsideRegions(pt) + + # Do something about that region selection + if iRegInner != -1: + # Selecting single region + if not event.CmdDown(): + self.selectedRegions = [] + self.selectedRegions.append(iRegInner) + + # Deselecting a region + elif iRegInner in self.selectedRegions: + self.selectedRegions.remove(iRegInner) + + # Adding a region to the selection + else: + self.selectedRegions.append(iRegInner) + + # Clear all region selections + else: + self.selectedRegions = [] + self.RedrawCanvas() - # TODO: May need to handle all mouse events in one huge window - # to avoid having the double click interfere with regular clicking - #def OnMouseLeftDClick(self, event): - # """Perform action based on current mode of operation.""" - # # Creating a polygonal region - # if self.togglePoly.GetValue() and self.polyVerts and \ - # len(self.polyVerts) > 2: - # self.CreateRegion() + def OnMouseLeftDClick(self, event): + """Perform action based on current mode of operation.""" + + # Set double-click flag so that next mouse-up is ignored + self.justDoubleClicked = True + + # Creating a polygonal region + if self.togglePoly.GetValue() and self.polyVerts and \ + len(self.polyVerts) > 2: + self.CreateRegion() + + # Editing a region + if self.selectedRegions and not self.toggleSquare.GetValue() and \ + not self.togglePoly.GetValue() and \ + not self.toggleDim.GetValue(): + # Unset double-click flag since event does not propagate here + self.justDoubleClicked = False + + # Edit the latest selected region + iReg = self.selectedRegions.pop() + self.selectedRegions = [] + self.selectedRegions.append(iReg) + self.EditRegion(self.regions[iReg]) + def OnMouseRightDown(self, event): """Save the right click point so it can be used later.""" @@ -633,12 +787,20 @@ def OnMouseWheel(self, event): self.canvasScale.y * (1 - scaler) + self.canvasOffset.y) self.canvasScale = self.canvasScale * scaler self.RedrawCanvas() - + def OnKeyDown(self, event): keycode = event.GetKeyCode() - # Backspace/Delete - Removes last set point during region creation + # Backspace/Delete - Deletes selected regions if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ + self.selectedRegions and not self.togglePoly.GetValue() and \ + not self.toggleSquare.GetValue(): + self.selectedRegions.sort() + while self.selectedRegions: + self.DeleteRegion(self.selectedRegions.pop()) + + # Backspace/Delete - Removes last set point during region creation + elif (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ self.polyVerts: if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): self.polyVerts.pop() @@ -653,19 +815,19 @@ def OnKeyDown(self, event): self.ResetMapToggles() # Ctrl+n - New - if event.CmdDown() and keycode == 78: + elif event.CmdDown() and keycode == 78: self.OnMenuNew(None) # Ctrl+o - Open - if event.CmdDown() and keycode == 79: + elif event.CmdDown() and keycode == 79: self.OnMenuOpen(None) # Ctrl+s - Save - if event.CmdDown() and keycode == 83: + elif event.CmdDown() and keycode == 83: self.OnMenuSave(None) # Ctrl+q - Quit - if event.CmdDown() and keycode == 81: + elif event.CmdDown() and keycode == 81: self.OnMenuExit(None) # Ctrl+z - Undo @@ -675,42 +837,49 @@ def OnKeyDown(self, event): # Ctrl+y - Redo elif event.CmdDown() and keycode == 89: self.OnMenuRedo(None) - + + # Ctrl+a - Select All + elif event.CmdDown() and keycode == 65: + self.selectedRegions = range(len(self.regions)) + self.RedrawCanvas() + # Pass event on so other key combinations still work else: event.Skip() - + def OnEnterWindow(self, event): """Set the focus to the canvas to enable zooming.""" self.canvas.SetFocus() - + def OnLeaveWindow(self, event): """Unset the focus from the canvas to disable zooming.""" self.SetFocus() - + def OnCanvasPaint(self, event): """Redraw the contents of the canvas panel.""" # Set up to draw dc = wx.PaintDC(self.canvas) self.RedrawCanvas(dc) - + def RedrawCanvas(self, dc=None): """Redraw the contents of the canvas panel. Callable from outside or inside EVT_PAINT handler. - + dc - Device context object for drawing to canvas. """ # Clear canvas self.canvas.ClearBackground() - - # Create device context if calling from outside EVT_PAINT handler + + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) - - # Redraw all markers + + # Draw grid background self.DrawGrid(dc) + + # Redraw all markers self.DrawMarkers(self.markerPoses, dc) - + # Redraw all regions for region in self.regions: self.DrawRegion(region, dc) @@ -719,20 +888,24 @@ def RedrawCanvas(self, dc=None): # Lower triangular matrix only for iReg in range(1, len(self.adjacent)): self.DrawAdjacencies(iReg, dc) - + + # Redraw selection handles + for iReg in self.selectedRegions: + self.DrawSelectionHandle(iReg, dc) + # Redraw partial region if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): for iVert in range(len(self.polyVerts) - 1): ptPix1 = self.Map2Pix(self.polyVerts[iVert]) ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) - + def DrawGrid(self, dc=None): """Draw the axes and grid on the map canvas. dc - Device context used for drawing on the canvas panel. """ - # Create device context if calling from outside EVT_PAINT handler + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) @@ -750,10 +923,11 @@ def DrawGrid(self, dc=None): def DrawMarkers(self, poses, dc=None): """Draw markers at specified global positions. - poses - List of tuples containing positions of markers in meters [(x, y), ...] + poses - List of tuples containing positions of markers in meters + [(x, y), ...] dc - Device context used for drawing on the canvas panel. """ - # Create device context if calling from outside EVT_PAINT handler + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) @@ -761,6 +935,20 @@ def DrawMarkers(self, poses, dc=None): for pose in poses: posePix = self.Map2Pix(pose) dc.DrawCircle(posePix[0], posePix[1], 5) + + def DrawSelectionHandle(self, iReg, dc=None): + """Draw markers indicating region(s) that have been selected by mouse. + + iReg - Index of region selected + dc - Device context used for drawing on the canvas panel + """ + # Create device context if not created + if not dc: + dc = wx.WindowDC(self.canvas) + + for pt in self.regions[iReg].verts: + ptPix = self.Map2Pix(pt) + dc.DrawCircle(ptPix[0], ptPix[1], 5) def DrawRegion(self, region, dc=None): """Draw a single region. @@ -768,7 +956,7 @@ def DrawRegion(self, region, dc=None): region - Instance of Region class, contains information about the region. dc - Device context used for drawing on the canvas panel. """ - # Create device context if calling from outside EVT_PAINT handler + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) @@ -785,7 +973,7 @@ def DrawAdjacencies(self, iReg, dc=None): iReg - Int, index of region of interest in self.regions. dc - Device context used for drawing on the canvas panel. """ - # Create device context if calling from outside other drawing methods + # Create device context if not created if not dc: dc = wx.WindowDC(self.canvas) oldPen = dc.GetPen() @@ -834,7 +1022,7 @@ def CreateRegion(self): """ # Create region rName = 'r' + str(len(self.regions)) - region = Region(self.polyVerts, rName) # TODO: Add color to regions + region = Region(self.polyVerts, rName) self.regions.append(region) idxNewReg = len(self.regions) - 1 # Add row and column to list of lists of lists representing adjacency @@ -844,57 +1032,8 @@ def CreateRegion(self): self.AddToUndo(Action(None, region)) # TODO: Change Undo setup so that adjacency matrix can be added with # regions in one undo step - - # Look for adjacent edges to other regions - # First add vertices in walls where another region vertex is - # Check new region against other regions - for iPt, (iReg, iRPoint, iREdge) in enumerate(self.polySnaps): - # Point snapped to the edge of another region - if iREdge != -1: - # Add point to other region and update old transitions - self.AddPointToRegion(self.polyVerts[iPt], iReg, iREdge) - # Track which point it is connected to - self.polySnaps[iPt] = (iReg, iREdge + 1, -1) - # Check other regions against new region - for iReg, otherReg in enumerate(self.regions): - for iPt, pt in enumerate(otherReg.verts): - pt, iRPoint, iREdge, snapped = \ - self.Snap1Region(region, pt, False) - # Other region vertex snapped to wall of new region - if iREdge != -1: - # Add point to new region and update old transitions - self.AddPointToRegion(pt, idxNewReg, iREdge) - # Track which point it is connected to - self.polySnaps.insert(iREdge + 1, (iReg, iPt, -1)) - - # Next look for adjacent edges and update transition matrix accordingly - for iSide in range(len(self.polySnaps)): - iReg1, iRPoint1, iREdge1 = self.polySnaps[iSide] - if iSide < len(self.polySnaps) - 1: - iReg2, iRPoint2, iREdge2 = self.polySnaps[iSide + 1] - else: - iReg2, iRPoint2, iREdge2 = self.polySnaps[0] - # Same region and adjacent points - if iReg1 != -1 and iReg1 == iReg2: - # TODO: Could be same point that is already shared by two or - # more regions. Need to check for this. - # Not last side in other region - if abs(iRPoint1 - iRPoint2) == 1: - iOtherRegSide = min(iRPoint1, iRPoint2) - self.adjacent[idxNewReg][iReg1].\ - append((iSide, iOtherRegSide)) - self.adjacent[iReg1][idxNewReg].\ - append((iOtherRegSide, iSide)) - # Last side in other region - elif (iRPoint1 == 0 and iRPoint2 == \ - len(self.regions[iReg2].verts) - 1) or \ - (iRPoint2 == 0 and iRPoint1 == \ - len(self.regions[iReg1].verts) - 1): - iOtherRegSide = len(self.regions[iReg1].verts) - 1 - self.adjacent[idxNewReg][iReg1].\ - append((iSide, iOtherRegSide)) - self.adjacent[iReg1][idxNewReg].\ - append((iOtherRegSide, iSide)) + + self.RecalcAdjacency(idxNewReg) # Cleanup and draw self.polyVerts = [] @@ -902,11 +1041,30 @@ def CreateRegion(self): self.polyAdjEdges = [] self.DrawRegion(region) self.DrawAdjacencies(idxNewReg) + + def DeleteRegion(self, iReg): + """Removes region from regions list and adjacency list. + + iReg - Index of region to remove + """ + # Remove region from tracking lists + self.regions.pop(iReg) + self.adjacent.pop(iReg) + for jReg in range(len(self.regions)): + self.adjacent[jReg].pop(iReg) + + # Redraw regions + self.RedrawCanvas() + + # TODO: Add to undo def AddPointToRegion(self, pt, iReg, iEdge): """Add a vertex to the region. pt - Point object, location of new vertex in map coordinates + Unless this is a new Point object, it is recommended that this be + a copy of the previous Point object + AddPointToRegion(copy.copy(pt), iReg, iEdge) iRegion - Int, index of region to modify iEdge - Int, index of the edge to replace with edges to and from pt """ @@ -938,6 +1096,139 @@ def AddPointToRegion(self, pt, iReg, iEdge): self.adjacent[jReg][iReg].\ append((otherRegFace, thisRegFace + 1)) + def EditRegion(self, reg): + """Show the edit region dialog. + Allow user to change name, color, and obstacleness of a region. + + reg - Region to edit + """ + # Create dialog + regEdDia = RegionEditDialog(self, wx.ID_ANY, "Edit Region Information") + + # Set appropriate control values + regEdDia.textName.SetValue(reg.name) + regEdDia.colorPicker.SetColour(reg.color) + regEdDia.chkbxObst.SetValue(reg.isObstacle) + + # Wait for user to close the dialog + done = False + while not done: + answer = regEdDia.ShowModal() + # User canceled + if answer == wx.ID_CANCEL: + regEdDia.Destroy() + done = True + # Same name or unique new name + elif regEdDia.textName.GetValue() == reg.name or \ + regEdDia.textName.GetValue() not in \ + [r.name for r in self.regions]: + reg.name = regEdDia.textName.GetValue() + reg.color = regEdDia.colorPicker.GetColour() + reg.isObstacle = regEdDia.chkbxObst.GetValue() + regEdDia.Destroy() + done = True + # Non-unique name - needs to re-edit + else: + wx.MessageBox("Region with name \"%s\" already exists." % \ + (regEdDia.textName.GetValue()), "Error", \ + style = wx.OK | wx.ICON_ERROR) + + # Redraw the regions to ensure correct name/color + self.RedrawCanvas() + # TODO: Add to undo + + def RecalcAdjacency(self, iReg, iRegStart=0): + """Recalculate the adjacent walls between the specified region and + other regions. If walls or points are "close enough" to being colinear + or colocated, they will be moved so that they overlap. The saved + adjacency matrix will be updated accordingly. + + Can specify which region to start checking with so that the input + region will not check against all regions. This is useful if entire map + needs to be rechecked, it can be done so with: + + for iReg, reg in enumerate(self.regions): + self.RecalcAdjacency(iReg, iRegStart=iReg) + + This will avoid redundant checking of regions. Note that the function + will avoid checking against itself, so there is no reason to avoid + calling it on itself. + + iReg - Index of region of interest + iRegStart - Specifies to check reg against self.regions[iRegStart:] + """ + # Reset adjacency related to this region + for iOthReg in range(len(self.regions)): + self.adjacent[iReg][iOthReg] = [] + self.adjacent[iOthReg][iReg] = [] + + # Pull region for easy access + reg = self.regions[iReg] + + # Keeps track of the colocation of vertices of this region with points + # of other regions + # List of lists of tuples + # Outer list - len(vertColloc) == len(reg.verts) + # Inner list - Contains collocation information for each region vertex + # Tuple - Contains collocation information from vertex on this region + # to vertex on another region in the format: + # (iReg, iPt) + vertsColloc = [[] for iPt in xrange(len(reg.verts))] + + # Check all other regions against this region + for iOthReg in range(len(self.regions[iRegStart:])): + # No need to check against self + if iOthReg == iReg: + continue + + for iOthPt, othPt in enumerate(self.regions[iOthReg].verts): + pt, iPt, iEd, snapped = self.Snap1Region(reg, othPt) + # Other region vertex snapped to wall of new region + if iEd != -1: + # Add point to new region and update old transitions + self.AddPointToRegion(copy.copy(pt), iReg, iEd) + vertsColloc.append([]) + # Don't bother tracking point connectivity here + # Recheck it in next loop so we can look at all regions + + # Check this region against others and create new vertices as necessary + for iPt, pt in enumerate(reg.verts): + snapResults = self.SnapRegions(pt, checkAll=True) + # Process the "nearness" information + for othPt, iOthReg, iOthPt, iOthEd in snapResults: + # Ignore same region + if iOthReg == iReg: + continue + + # Change region point location + pt.Set(othPt.x, othPt.y) + + # Snapped to a point in the other region + if iOthPt != -1: + vertsColloc[iPt].append((iOthReg, iOthPt)) + # Snapped to an edge of the other region + elif iOthEd != -1: + self.AddPointToRegion(copy.copy(pt), iOthReg, iOthEd) + vertsColloc[iPt].append((iOthReg, iOthEd + 1)) + + # Now look for adjacent edges and update transition matrix accordingly + for iPt in range(len(reg.verts)): # Start point of edge + jPt = (iPt + 1) % len(reg.verts) # End point of edge + for iOthReg, iOthPt in vertsColloc[iPt]: + jOthPt1 = (iOthPt - 1) % len(self.regions[iOthReg].verts) + jOthPt2 = (iOthPt + 1) % len(self.regions[iOthReg].verts) + # Check edge on other region prior to point + if (iOthReg, jOthPt1) in vertsColloc[jPt]: + # Indicate transition from this region to other region + # from current this region side to other region side + # and reverse transition as well + self.adjacent[iReg][iOthReg].append((iPt, jOthPt1)) + self.adjacent[iOthReg][iReg].append((jOthPt1, iPt)) + # Check edge on other region after point + elif (iOthReg, jOthPt2) in vertsColloc[jPt]: + self.adjacent[iReg][iOthReg].append((iPt, iOthPt)) + self.adjacent[iOthReg][iReg].append((iOthPt, iPt)) + def Autoboundary(self): """Automatically create region representing the boundary of the map.""" # Check that there are regions first @@ -991,12 +1282,12 @@ def SnapPoint(self, pt): # (since Vicon points may be moving around) snapped = False pt, idxRegion, idxRPoint, idxREdge, snapped = \ - self.SnapRegions(pt, snapped) + self.SnapRegions(pt, snapped=snapped) # Check points in current region creation # Only snap to vertices # Don't count this for iRegion or iRPoint - pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped) + pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped=snapped) # Check all Vicon points pt, idxMarker, snapped = self.SnapVicon(pt, snapped) @@ -1004,39 +1295,59 @@ def SnapPoint(self, pt): # Only return region indices, since they are usually all that matter return pt, idxRegion, idxRPoint, idxREdge - def SnapRegions(self, pt, snapped): + def SnapRegions(self, pt, checkAll=False, snapped=False): """Snap the point to any sufficiently "nearby" region vertex or wall. pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not + checkAll - Boolean, true if this function should check the point + against all regions, even if it has already snapped to one + snapped - Boolean, true if point has snapped already, false if not If point is already snapped, this function will just return - returns - (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) - snappedPt - Point object, point after snapping - idxRegion - int, index of region if snapped to region point/edge - if not snapped to region it will be -1 - idxRPoint - int, index of point in region.verts if snapped to point - if not snapped to point it will be -1 - idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] - if not snapped to edge it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a region point or edge + returns - + If checkAll is true, then the return will be a list containing + tuples in the format (snappedPt, idxRegion, idxRPoint, idxREdge), + where each entry is as described below. If there is no snapping + then the list will be empty. + If checkAll is false, then a single tuple will be returned: + (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.verts if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.verts[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge """ - idxRegion = -1 - idxRPoint = -1 - idxREdge = -1 - i = 0 # Region incrementer - while (not snapped) and i < len(self.regions): + # Initialize output + if not checkAll: + idxRegion = -1 + idxRPoint = -1 + idxREdge = -1 + else: + output = [] + + # Check through regions + i = len(self.regions) - 1 # Region decrementer + while (checkAll or not snapped) and i >= 0: pt, idxRPoint, idxREdge, snapped = \ - self.Snap1Region(self.regions[i], pt, snapped) - if snapped: + self.Snap1Region(self.regions[i], pt, \ + snapped=(not checkAll and snapped)) + if idxRPoint != -1 or idxREdge != -1: idxRegion = i - i += 1 - - return pt, idxRegion, idxRPoint, idxREdge, snapped + if checkAll: + output.append((pt, idxRegion, idxRPoint, idxREdge)) + i -= 1 + + if not checkAll: + return pt, idxRegion, idxRPoint, idxREdge, snapped + else: + return output - def Snap1Region(self, region, pt, snapped): + def Snap1Region(self, region, pt, snapped=False): """Snap the point to any sufficiently "nearby" region vertex or wall in the specified region. @@ -1102,7 +1413,7 @@ def Snap1Region(self, region, pt, snapped): return pt, idxRPoint, idxREdge, snapped - def SnapPoly(self, pt, snapped): + def SnapPoly(self, pt, snapped=False): """Snap the point to any vertex in the currently being created region if it is sufficiently "nearby". @@ -1155,7 +1466,23 @@ def SnapVicon(self, pt, snapped): i += 1 return pt, idxMarker, snapped - + + def InsideRegions(self, pt): + """Find region containing point. Looks through regions on top first + (those that were created later). + + pt - Point, point of interest + returns - int, index of containing region, or -1 if none + """ + iReg = -1 + i = len(self.regions) - 1 + while iReg == -1 and i >= 0: + if self.regions[i].PtInRegion(pt): + iReg = i + i -= 1 + + return iReg + def Map2Pix(self, pose): """Convert from map coordinates to pixel coordinates. @@ -1301,35 +1628,100 @@ def OnButtonNext(self, event): # wxGlade: FeedbackDialog. self.currPt = 0 # end of class FeedbackDialog +class RegionEditDialog(wx.Dialog): + def __init__(self, *args, **kwds): + # begin wxGlade: RegionEditDialog.__init__ + kwds["style"] = wx.DEFAULT_DIALOG_STYLE + wx.Dialog.__init__(self, *args, **kwds) + self.label_1 = wx.StaticText(self, -1, "Name: ") + self.textName = wx.TextCtrl(self, -1, "") + self.label_2 = wx.StaticText(self, -1, "Color: ") + self.colorPicker = wx.ColourPickerCtrl(self, -1) + self.chkbxObst = wx.CheckBox(self, -1, "Treat as obstacle") + self.buttonOk = wx.Button(self, wx.ID_OK, "OK") + self.buttonCancel = wx.Button(self, wx.ID_CANCEL, "Cancel") + + self.__set_properties() + self.__do_layout() + # end wxGlade + + def __set_properties(self): + # begin wxGlade: RegionEditDialog.__set_properties + self.SetTitle("Edit Region") + self.colorPicker.SetMinSize((40, 40)) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: RegionEditDialog.__do_layout + sizer_2 = wx.BoxSizer(wx.VERTICAL) + sizer_5 = wx.BoxSizer(wx.HORIZONTAL) + sizer_4 = wx.BoxSizer(wx.HORIZONTAL) + sizer_3 = wx.BoxSizer(wx.HORIZONTAL) + sizer_3.Add(self.label_1, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_3.Add(self.textName, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_2.Add(sizer_3, 1, wx.EXPAND, 0) + sizer_4.Add(self.label_2, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_4.Add(self.colorPicker, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_2.Add(sizer_4, 1, wx.EXPAND, 0) + sizer_2.Add(self.chkbxObst, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_5.Add(self.buttonOk, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_5.Add(self.buttonCancel, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 8) + sizer_2.Add(sizer_5, 1, wx.EXPAND, 0) + self.SetSizer(sizer_2) + sizer_2.Fit(self) + self.Layout() + # end wxGlade +# end of class RegionEditDialog class Region: - def __init__(self, points, name, rgb=None): # TODO: random color/name + def __init__(self, points, name, rgb=None): """Create an object to represent a region. - points - List of tuples of floats containing vertex information - [(x1, y1), (x2, y2), ...] + points - List of Points containing vertex information + [Point(x1, y1), Point(x2, y2), ...] name - String defining region name rgb - List of integers defining color [red, green, blue], each with value in range [0 255] """ - # TODO: Add name, color, convex/concave, possibly adjoining edges + # TODO: Add convex/concave self.verts = points self.name = name if not rgb: rgb = [random.randint(0, 255), random.randint(0, 255), \ random.randint(0,255)] - self.color = rgb + self.color = wx.Colour(rgb[0], rgb[1], rgb[2]) + self.isObstacle = False def __str__(self): """Representation of object.""" - s = "%s\t{%03d\t%03d\t%03d}\t[" % \ - (self.name, self.color[0], self.color[1], self.color[2]) + s = "%s\t{%03d\t%03d\t%03d}\t[" % (self.name, self.color.Red(), \ + self.color.Green(), self.color.Blue()) for iPt, pt in enumerate(self.verts): s += str(pt) if iPt < len(self.verts) - 1: s += "\t" s += "]" return s + + def PtInRegion(self, pt): + """Check if a point is inside of the region. + Algorithm taken from C# version of Solution 1 from + http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ + + pt - Point to check + returns - Boolean, True if the point is inside of the region + """ + result = False + n = len(self.verts) + for i in range(n): + j = (i + 1) % n + if ((self.verts[j].y <= pt.y and pt.y < self.verts[i].y) or \ + (self.verts[i].y <= pt.y and pt.y < self.verts[j].y)) and \ + pt.x < (self.verts[i].x - self.verts[j].x) * \ + (pt.y - self.verts[j].y) / \ + (self.verts[i].y - self.verts[j].y) + self.verts[j].x: + result = not result + return result # end of class Region @@ -1435,6 +1827,11 @@ def __div__(self, other): def __truediv__(self, other): """True division operator.""" return self.__div__(other) + + def Set(self, x, y): + """Change the value of the point.""" + self.x = x + self.y = y def Dot(self, other): """Dot product.""" From 1f886d26e62ca1e9185c5626677dcd4aa7b77027 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Tue, 17 Apr 2012 10:24:49 -0400 Subject: [PATCH 09/26] Added labels and colors to plotting of regions. Created Calibration GUI but have not yet added functionality. --- .../NewRegionEditor/RegionEditorV3.wxg | 166 +++++++++- .../NewRegionEditor/regionEditor.py | 301 ++++++++++++++++-- src/regionEditor.py | 301 ++++++++++++++++-- 3 files changed, 723 insertions(+), 45 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg index 5c3bd670..7809cd1f 100644 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg @@ -1,5 +1,5 @@ - + @@ -411,4 +411,168 @@ + + + Map Calibration + 1 + + wxHORIZONTAL + + wxEXPAND + 0 + + + + 100, 300 + + 5 + 2 + 2 + 5 + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleVicon + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnButtonImage + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleAddPoint + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleDeletePoint + + 50, 50 + + + + + + + wxRIGHT|wxEXPAND + 3 + + + + #ffffff + 320, 320 + + + + wxLEFT|wxEXPAND + 3 + + + + #ffffff + 320, 320 + + + + + + + + + menuSave + OnMenuSave + + + + menuExit + OnMenuExit + + + + + + menuUndo + OnMenuUndo + + + + menuRedo + OnMenuRedo + + + + menuSelectAll + OnMenuSelectAll + + + + menuClearAll + OnMenuClearAll + + + + + + menuShowMarkers + 1 + OnMenuShowMarkers + + + + menuClearMarkers + OnMenuClearMarkers + + + + menuLoadImage + OnMenuLoadImage + + + + menuClearImage + OnMenuClearImage + + + + + + menuHowTo + OnMenuHowTo + + + + menuAbout + OnMenuAbout + + + + + diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index 55992e79..b48645e0 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -575,7 +575,7 @@ def OnMouseLeftUp(self, event): # Creating a rectangular region elif self.toggleSquare.GetValue(): # Making the second corner of rectangle - if self.polyVerts: + if self.polyVerts and pt.Dist(self.polyVerts[0]) > self.tolerance: # Snap vertices to regions as necessary, not to Vicon # This may result in a non-square region, but may be preferable x0 = self.polyVerts[0].x @@ -673,6 +673,7 @@ def OnMouseLeftUp(self, event): self.regions[iReg].verts[iPt] + Point(dx, dy) self.AddToUndo(Action(oldRegion, self.regions[iReg])) self.polyVerts = [] + self.RecalcAdjacency(iReg) self.RedrawCanvas() # Dragging region(s) or vertices @@ -759,7 +760,7 @@ def OnMouseLeftDClick(self, event): iReg = self.selectedRegions.pop() self.selectedRegions = [] self.selectedRegions.append(iReg) - self.EditRegion(self.regions[iReg]) + self.EditRegion(iReg) def OnMouseRightDown(self, event): @@ -872,26 +873,33 @@ def RedrawCanvas(self, dc=None): # Create device context if not created if not dc: - dc = wx.WindowDC(self.canvas) + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() # Draw grid background self.DrawGrid(dc) - # Redraw all markers - self.DrawMarkers(self.markerPoses, dc) + # Redraw boundary region + if self.boundary: + self.DrawRegion(self.boundary, dc, boundary=True) # Redraw all regions for region in self.regions: - self.DrawRegion(region, dc) + self.DrawRegion(region, dc=dc) # Redraw all transition face indicators # Lower triangular matrix only for iReg in range(1, len(self.adjacent)): - self.DrawAdjacencies(iReg, dc) + self.DrawAdjacencies(iReg, dc=dc) + + # Redraw all markers + self.DrawMarkers(self.markerPoses, dc=dc) # Redraw selection handles for iReg in self.selectedRegions: - self.DrawSelectionHandle(iReg, dc) + self.DrawSelectionHandle(iReg, dc=dc) # Redraw partial region if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): @@ -899,6 +907,8 @@ def RedrawCanvas(self, dc=None): ptPix1 = self.Map2Pix(self.polyVerts[iVert]) ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) + + dc.EndDrawing() def DrawGrid(self, dc=None): """Draw the axes and grid on the map canvas. @@ -906,8 +916,13 @@ def DrawGrid(self, dc=None): dc - Device context used for drawing on the canvas panel. """ # Create device context if not created + isNewDC = False if not dc: - dc = wx.WindowDC(self.canvas) + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() # Draw axes xOff = self.canvasOffset.x @@ -917,8 +932,11 @@ def DrawGrid(self, dc=None): colLim, rowLim = self.canvas.GetSize() dc.DrawLine(0, yPixOff, colLim, yPixOff) dc.DrawLine(xPixOff, 0, xPixOff, rowLim) - + # TODO: Draw grid/ticks + + if isNewDC: + dc.EndDrawing() def DrawMarkers(self, poses, dc=None): """Draw markers at specified global positions. @@ -928,13 +946,21 @@ def DrawMarkers(self, poses, dc=None): dc - Device context used for drawing on the canvas panel. """ # Create device context if not created + isNewDC = False if not dc: - dc = wx.WindowDC(self.canvas) + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() # Draw each marker for pose in poses: posePix = self.Map2Pix(pose) dc.DrawCircle(posePix[0], posePix[1], 5) + + if isNewDC: + dc.EndDrawing() def DrawSelectionHandle(self, iReg, dc=None): """Draw markers indicating region(s) that have been selected by mouse. @@ -943,28 +969,85 @@ def DrawSelectionHandle(self, iReg, dc=None): dc - Device context used for drawing on the canvas panel """ # Create device context if not created + isNewDC = False if not dc: - dc = wx.WindowDC(self.canvas) + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() for pt in self.regions[iReg].verts: ptPix = self.Map2Pix(pt) dc.DrawCircle(ptPix[0], ptPix[1], 5) + + if isNewDC: + dc.EndDrawing() - def DrawRegion(self, region, dc=None): + def DrawRegion(self, region, dc=None, isBoundary=False): """Draw a single region. region - Instance of Region class, contains information about the region. dc - Device context used for drawing on the canvas panel. + isBoundary - Boolean, true if drawing the boundary region. """ # Create device context if not created + isNewDC = False if not dc: - dc = wx.WindowDC(self.canvas) - + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() + + # Set brush to region color + innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ + region.color.Blue(), 128) + if not isBoundary: + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) + else: + dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) + dc.SetTextForeground(wx.BLACK) + dc.SetBackgroundMode(wx.TRANSPARENT) + dc.SetFont(wx.Font(12, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) + + # Set up label + if region.isObstacle: + labelText = "(%s)" % region.name + else: + labelText = region.name + labelWidth, labelHeight = dc.GetTextExtent(labelText) + # Draw region vertsPix = [] + xLabelPix = 0 + yLabelPix = 0 for vert in region.verts: - vertsPix.append(self.Map2Pix(vert)) + vertPix = self.Map2Pix(vert) + vertsPix.append(vertPix) + if not isBoundary: # Put label in center + xLabelPix += vertPix[0] + yLabelPix += vertPix[1] + else: # Put label in lower right corner + xLabelPix = max(xLabelPix, vertPix[0]) + yLabelPix = max(yLabelPix, vertPix[1]) dc.DrawPolygon(vertsPix) + if isBoundary: + xLabelPix = xLabelPix / len(region.verts) - labelWidth + yLabelPix = yLabelPix / len(region.verts) - labelHeight + else: + xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 + yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 + + # Draw label + dc.SetBrush(wx.Brush(region.color, wx.SOLID)) + dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ + labelWidth + 10, labelHeight + 6, 3) + dc.DrawText(labelText, xLabelPix, yLabelPix) + + if isNewDC: + dc.EndDrawing() def DrawAdjacencies(self, iReg, dc=None): """Draw lines to show adjacent region faces for one region. @@ -975,9 +1058,11 @@ def DrawAdjacencies(self, iReg, dc=None): """ # Create device context if not created if not dc: - dc = wx.WindowDC(self.canvas) - oldPen = dc.GetPen() - dc.SetPen(wx.Pen(wx.Colour(255, 0, 0, 100), 3, wx.SHORT_DASH)) + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() + dc.SetPen(wx.Pen(wx.Colour(255, 0, 0), 3, wx.SHORT_DASH)) # Iterate adjacency matrix looking for shared faces for one region # Only need to iterate through lower triangle (not counting diagonal) @@ -994,7 +1079,6 @@ def DrawAdjacencies(self, iReg, dc=None): pt1Pix = self.Map2Pix(pt1) pt2Pix = self.Map2Pix(pt2) dc.DrawLine(pt1Pix[0], pt1Pix[1], pt2Pix[0], pt2Pix[1]) - dc.SetPen(oldPen) # TODO: Maybe can remove if everything sets own pen def ResetMapToggles(self, toggleStay=None): """Clear all the other map-feature toggle buttons. @@ -1096,16 +1180,17 @@ def AddPointToRegion(self, pt, iReg, iEdge): self.adjacent[jReg][iReg].\ append((otherRegFace, thisRegFace + 1)) - def EditRegion(self, reg): + def EditRegion(self, iReg): """Show the edit region dialog. Allow user to change name, color, and obstacleness of a region. - reg - Region to edit + iReg - Index of region to edit """ # Create dialog regEdDia = RegionEditDialog(self, wx.ID_ANY, "Edit Region Information") # Set appropriate control values + reg = self.regions[iReg] regEdDia.textName.SetValue(reg.name) regEdDia.colorPicker.SetColour(reg.color) regEdDia.chkbxObst.SetValue(reg.isObstacle) @@ -1133,6 +1218,11 @@ def EditRegion(self, reg): (regEdDia.textName.GetValue()), "Error", \ style = wx.OK | wx.ICON_ERROR) + # Check for boundary + if reg.name.lower() == 'boundary': + self.boundary = reg + self.DeleteRegion(iReg) + # Redraw the regions to ensure correct name/color self.RedrawCanvas() # TODO: Add to undo @@ -1673,6 +1763,173 @@ def __do_layout(self): # end wxGlade # end of class RegionEditDialog +class CalibrationFrame(wx.Frame): + def __init__(self, *args, **kwds): + # begin wxGlade: CalibrationFrame.__init__ + kwds["style"] = wx.DEFAULT_FRAME_STYLE + wx.Frame.__init__(self, *args, **kwds) + + # Menu Bar + self.calibFrame_menubar = wx.MenuBar() + self.filemenu = wx.Menu() + self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSave) + self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuExit) + self.calibFrame_menubar.Append(self.filemenu, "File") + self.editmenu = wx.Menu() + self.menuUndo = wx.MenuItem(self.editmenu, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuUndo) + self.menuRedo = wx.MenuItem(self.editmenu, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuRedo) + self.menuSelectAll = wx.MenuItem(self.editmenu, wx.NewId(), "Select All", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuSelectAll) + self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuClearAll) + self.calibFrame_menubar.Append(self.editmenu, "Edit") + self.toolsmenu = wx.Menu() + self.menuShowMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Show Markers", "", wx.ITEM_CHECK) + self.toolsmenu.AppendItem(self.menuShowMarkers) + self.menuClearMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuClearMarkers) + self.menuLoadImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Load Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuLoadImage) + self.menuClearImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuClearImage) + self.calibFrame_menubar.Append(self.toolsmenu, "Tools") + self.helpmenu = wx.Menu() + self.menuHowTo = wx.MenuItem(self.helpmenu, wx.NewId(), "How To Use", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuHowTo) + self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuAbout) + self.calibFrame_menubar.Append(self.helpmenu, "Help") + self.SetMenuBar(self.calibFrame_menubar) + # Menu Bar end + self.sidebar = wx.Panel(self, -1) + self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Markers") + self.buttonImage = wx.Button(self.sidebar, -1, "Image") + self.toggleAddPoint = wx.ToggleButton(self.sidebar, -1, "Point +") + self.toggleDeletePoint = wx.ToggleButton(self.sidebar, -1, "Point -") + self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + self.reference = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + + self.__set_properties() + self.__do_layout() + + self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) + self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) + self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) + self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) + self.Bind(wx.EVT_MENU, self.OnMenuSelectAll, self.menuSelectAll) + self.Bind(wx.EVT_MENU, self.OnMenuClearAll, self.menuClearAll) + self.Bind(wx.EVT_MENU, self.OnMenuShowMarkers, self.menuShowMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuClearMarkers, self.menuClearMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuLoadImage, self.menuLoadImage) + self.Bind(wx.EVT_MENU, self.OnMenuClearImage, self.menuClearImage) + self.Bind(wx.EVT_MENU, self.OnMenuHowTo, self.menuHowTo) + self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleAddPoint, self.toggleAddPoint) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) + # end wxGlade + + def __set_properties(self): + # begin wxGlade: CalibrationFrame.__set_properties + self.SetTitle("Map Calibration") + self.toggleVicon.SetMinSize((50, 50)) + self.buttonImage.SetMinSize((50, 50)) + self.toggleAddPoint.SetMinSize((50, 50)) + self.toggleDeletePoint.SetMinSize((50, 50)) + self.sidebar.SetMinSize((100, 300)) + self.map.SetMinSize((320, 320)) + self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) + self.reference.SetMinSize((320, 320)) + self.reference.SetBackgroundColour(wx.Colour(255, 255, 255)) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: CalibrationFrame.__do_layout + sizer_6 = wx.BoxSizer(wx.HORIZONTAL) + grid_sizer_2 = wx.GridSizer(2, 2, 5, 5) + grid_sizer_2.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_2.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_2.Add(self.toggleAddPoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_2.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + self.sidebar.SetSizer(grid_sizer_2) + sizer_6.Add(self.sidebar, 0, wx.EXPAND, 0) + sizer_6.Add(self.map, 1, wx.RIGHT | wx.EXPAND, 3) + sizer_6.Add(self.reference, 1, wx.LEFT | wx.EXPAND, 3) + self.SetSizer(sizer_6) + sizer_6.Fit(self) + self.Layout() + # end wxGlade + + def OnMenuSave(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuSave' not implemented!" + event.Skip() + + def OnMenuExit(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuExit' not implemented!" + event.Skip() + + def OnMenuUndo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuUndo' not implemented!" + event.Skip() + + def OnMenuRedo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuRedo' not implemented!" + event.Skip() + + def OnMenuSelectAll(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuSelectAll' not implemented!" + event.Skip() + + def OnMenuClearAll(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuClearAll' not implemented!" + event.Skip() + + def OnMenuShowMarkers(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuShowMarkers' not implemented!" + event.Skip() + + def OnMenuClearMarkers(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuClearMarkers' not implemented!" + event.Skip() + + def OnMenuLoadImage(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuLoadImage' not implemented!" + event.Skip() + + def OnMenuClearImage(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuClearImage' not implemented!" + event.Skip() + + def OnMenuHowTo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuHowTo' not implemented!" + event.Skip() + + def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuAbout' not implemented!" + event.Skip() + + def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnToggleVicon' not implemented!" + event.Skip() + + def OnButtonImage(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnButtonImage' not implemented!" + event.Skip() + + def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnToggleAddPoint' not implemented!" + event.Skip() + + def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnToggleDeletePoint' not implemented!" + event.Skip() +# end of class CalibrationFrame + class Region: def __init__(self, points, name, rgb=None): """Create an object to represent a region. diff --git a/src/regionEditor.py b/src/regionEditor.py index 55992e79..b48645e0 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -575,7 +575,7 @@ def OnMouseLeftUp(self, event): # Creating a rectangular region elif self.toggleSquare.GetValue(): # Making the second corner of rectangle - if self.polyVerts: + if self.polyVerts and pt.Dist(self.polyVerts[0]) > self.tolerance: # Snap vertices to regions as necessary, not to Vicon # This may result in a non-square region, but may be preferable x0 = self.polyVerts[0].x @@ -673,6 +673,7 @@ def OnMouseLeftUp(self, event): self.regions[iReg].verts[iPt] + Point(dx, dy) self.AddToUndo(Action(oldRegion, self.regions[iReg])) self.polyVerts = [] + self.RecalcAdjacency(iReg) self.RedrawCanvas() # Dragging region(s) or vertices @@ -759,7 +760,7 @@ def OnMouseLeftDClick(self, event): iReg = self.selectedRegions.pop() self.selectedRegions = [] self.selectedRegions.append(iReg) - self.EditRegion(self.regions[iReg]) + self.EditRegion(iReg) def OnMouseRightDown(self, event): @@ -872,26 +873,33 @@ def RedrawCanvas(self, dc=None): # Create device context if not created if not dc: - dc = wx.WindowDC(self.canvas) + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() # Draw grid background self.DrawGrid(dc) - # Redraw all markers - self.DrawMarkers(self.markerPoses, dc) + # Redraw boundary region + if self.boundary: + self.DrawRegion(self.boundary, dc, boundary=True) # Redraw all regions for region in self.regions: - self.DrawRegion(region, dc) + self.DrawRegion(region, dc=dc) # Redraw all transition face indicators # Lower triangular matrix only for iReg in range(1, len(self.adjacent)): - self.DrawAdjacencies(iReg, dc) + self.DrawAdjacencies(iReg, dc=dc) + + # Redraw all markers + self.DrawMarkers(self.markerPoses, dc=dc) # Redraw selection handles for iReg in self.selectedRegions: - self.DrawSelectionHandle(iReg, dc) + self.DrawSelectionHandle(iReg, dc=dc) # Redraw partial region if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): @@ -899,6 +907,8 @@ def RedrawCanvas(self, dc=None): ptPix1 = self.Map2Pix(self.polyVerts[iVert]) ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) + + dc.EndDrawing() def DrawGrid(self, dc=None): """Draw the axes and grid on the map canvas. @@ -906,8 +916,13 @@ def DrawGrid(self, dc=None): dc - Device context used for drawing on the canvas panel. """ # Create device context if not created + isNewDC = False if not dc: - dc = wx.WindowDC(self.canvas) + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() # Draw axes xOff = self.canvasOffset.x @@ -917,8 +932,11 @@ def DrawGrid(self, dc=None): colLim, rowLim = self.canvas.GetSize() dc.DrawLine(0, yPixOff, colLim, yPixOff) dc.DrawLine(xPixOff, 0, xPixOff, rowLim) - + # TODO: Draw grid/ticks + + if isNewDC: + dc.EndDrawing() def DrawMarkers(self, poses, dc=None): """Draw markers at specified global positions. @@ -928,13 +946,21 @@ def DrawMarkers(self, poses, dc=None): dc - Device context used for drawing on the canvas panel. """ # Create device context if not created + isNewDC = False if not dc: - dc = wx.WindowDC(self.canvas) + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() # Draw each marker for pose in poses: posePix = self.Map2Pix(pose) dc.DrawCircle(posePix[0], posePix[1], 5) + + if isNewDC: + dc.EndDrawing() def DrawSelectionHandle(self, iReg, dc=None): """Draw markers indicating region(s) that have been selected by mouse. @@ -943,28 +969,85 @@ def DrawSelectionHandle(self, iReg, dc=None): dc - Device context used for drawing on the canvas panel """ # Create device context if not created + isNewDC = False if not dc: - dc = wx.WindowDC(self.canvas) + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() for pt in self.regions[iReg].verts: ptPix = self.Map2Pix(pt) dc.DrawCircle(ptPix[0], ptPix[1], 5) + + if isNewDC: + dc.EndDrawing() - def DrawRegion(self, region, dc=None): + def DrawRegion(self, region, dc=None, isBoundary=False): """Draw a single region. region - Instance of Region class, contains information about the region. dc - Device context used for drawing on the canvas panel. + isBoundary - Boolean, true if drawing the boundary region. """ # Create device context if not created + isNewDC = False if not dc: - dc = wx.WindowDC(self.canvas) - + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() + + # Set brush to region color + innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ + region.color.Blue(), 128) + if not isBoundary: + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) + else: + dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) + dc.SetTextForeground(wx.BLACK) + dc.SetBackgroundMode(wx.TRANSPARENT) + dc.SetFont(wx.Font(12, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) + + # Set up label + if region.isObstacle: + labelText = "(%s)" % region.name + else: + labelText = region.name + labelWidth, labelHeight = dc.GetTextExtent(labelText) + # Draw region vertsPix = [] + xLabelPix = 0 + yLabelPix = 0 for vert in region.verts: - vertsPix.append(self.Map2Pix(vert)) + vertPix = self.Map2Pix(vert) + vertsPix.append(vertPix) + if not isBoundary: # Put label in center + xLabelPix += vertPix[0] + yLabelPix += vertPix[1] + else: # Put label in lower right corner + xLabelPix = max(xLabelPix, vertPix[0]) + yLabelPix = max(yLabelPix, vertPix[1]) dc.DrawPolygon(vertsPix) + if isBoundary: + xLabelPix = xLabelPix / len(region.verts) - labelWidth + yLabelPix = yLabelPix / len(region.verts) - labelHeight + else: + xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 + yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 + + # Draw label + dc.SetBrush(wx.Brush(region.color, wx.SOLID)) + dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ + labelWidth + 10, labelHeight + 6, 3) + dc.DrawText(labelText, xLabelPix, yLabelPix) + + if isNewDC: + dc.EndDrawing() def DrawAdjacencies(self, iReg, dc=None): """Draw lines to show adjacent region faces for one region. @@ -975,9 +1058,11 @@ def DrawAdjacencies(self, iReg, dc=None): """ # Create device context if not created if not dc: - dc = wx.WindowDC(self.canvas) - oldPen = dc.GetPen() - dc.SetPen(wx.Pen(wx.Colour(255, 0, 0, 100), 3, wx.SHORT_DASH)) + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() + dc.SetPen(wx.Pen(wx.Colour(255, 0, 0), 3, wx.SHORT_DASH)) # Iterate adjacency matrix looking for shared faces for one region # Only need to iterate through lower triangle (not counting diagonal) @@ -994,7 +1079,6 @@ def DrawAdjacencies(self, iReg, dc=None): pt1Pix = self.Map2Pix(pt1) pt2Pix = self.Map2Pix(pt2) dc.DrawLine(pt1Pix[0], pt1Pix[1], pt2Pix[0], pt2Pix[1]) - dc.SetPen(oldPen) # TODO: Maybe can remove if everything sets own pen def ResetMapToggles(self, toggleStay=None): """Clear all the other map-feature toggle buttons. @@ -1096,16 +1180,17 @@ def AddPointToRegion(self, pt, iReg, iEdge): self.adjacent[jReg][iReg].\ append((otherRegFace, thisRegFace + 1)) - def EditRegion(self, reg): + def EditRegion(self, iReg): """Show the edit region dialog. Allow user to change name, color, and obstacleness of a region. - reg - Region to edit + iReg - Index of region to edit """ # Create dialog regEdDia = RegionEditDialog(self, wx.ID_ANY, "Edit Region Information") # Set appropriate control values + reg = self.regions[iReg] regEdDia.textName.SetValue(reg.name) regEdDia.colorPicker.SetColour(reg.color) regEdDia.chkbxObst.SetValue(reg.isObstacle) @@ -1133,6 +1218,11 @@ def EditRegion(self, reg): (regEdDia.textName.GetValue()), "Error", \ style = wx.OK | wx.ICON_ERROR) + # Check for boundary + if reg.name.lower() == 'boundary': + self.boundary = reg + self.DeleteRegion(iReg) + # Redraw the regions to ensure correct name/color self.RedrawCanvas() # TODO: Add to undo @@ -1673,6 +1763,173 @@ def __do_layout(self): # end wxGlade # end of class RegionEditDialog +class CalibrationFrame(wx.Frame): + def __init__(self, *args, **kwds): + # begin wxGlade: CalibrationFrame.__init__ + kwds["style"] = wx.DEFAULT_FRAME_STYLE + wx.Frame.__init__(self, *args, **kwds) + + # Menu Bar + self.calibFrame_menubar = wx.MenuBar() + self.filemenu = wx.Menu() + self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSave) + self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuExit) + self.calibFrame_menubar.Append(self.filemenu, "File") + self.editmenu = wx.Menu() + self.menuUndo = wx.MenuItem(self.editmenu, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuUndo) + self.menuRedo = wx.MenuItem(self.editmenu, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuRedo) + self.menuSelectAll = wx.MenuItem(self.editmenu, wx.NewId(), "Select All", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuSelectAll) + self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuClearAll) + self.calibFrame_menubar.Append(self.editmenu, "Edit") + self.toolsmenu = wx.Menu() + self.menuShowMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Show Markers", "", wx.ITEM_CHECK) + self.toolsmenu.AppendItem(self.menuShowMarkers) + self.menuClearMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuClearMarkers) + self.menuLoadImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Load Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuLoadImage) + self.menuClearImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuClearImage) + self.calibFrame_menubar.Append(self.toolsmenu, "Tools") + self.helpmenu = wx.Menu() + self.menuHowTo = wx.MenuItem(self.helpmenu, wx.NewId(), "How To Use", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuHowTo) + self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuAbout) + self.calibFrame_menubar.Append(self.helpmenu, "Help") + self.SetMenuBar(self.calibFrame_menubar) + # Menu Bar end + self.sidebar = wx.Panel(self, -1) + self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Markers") + self.buttonImage = wx.Button(self.sidebar, -1, "Image") + self.toggleAddPoint = wx.ToggleButton(self.sidebar, -1, "Point +") + self.toggleDeletePoint = wx.ToggleButton(self.sidebar, -1, "Point -") + self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + self.reference = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + + self.__set_properties() + self.__do_layout() + + self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) + self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) + self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) + self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) + self.Bind(wx.EVT_MENU, self.OnMenuSelectAll, self.menuSelectAll) + self.Bind(wx.EVT_MENU, self.OnMenuClearAll, self.menuClearAll) + self.Bind(wx.EVT_MENU, self.OnMenuShowMarkers, self.menuShowMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuClearMarkers, self.menuClearMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuLoadImage, self.menuLoadImage) + self.Bind(wx.EVT_MENU, self.OnMenuClearImage, self.menuClearImage) + self.Bind(wx.EVT_MENU, self.OnMenuHowTo, self.menuHowTo) + self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleAddPoint, self.toggleAddPoint) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) + # end wxGlade + + def __set_properties(self): + # begin wxGlade: CalibrationFrame.__set_properties + self.SetTitle("Map Calibration") + self.toggleVicon.SetMinSize((50, 50)) + self.buttonImage.SetMinSize((50, 50)) + self.toggleAddPoint.SetMinSize((50, 50)) + self.toggleDeletePoint.SetMinSize((50, 50)) + self.sidebar.SetMinSize((100, 300)) + self.map.SetMinSize((320, 320)) + self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) + self.reference.SetMinSize((320, 320)) + self.reference.SetBackgroundColour(wx.Colour(255, 255, 255)) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: CalibrationFrame.__do_layout + sizer_6 = wx.BoxSizer(wx.HORIZONTAL) + grid_sizer_2 = wx.GridSizer(2, 2, 5, 5) + grid_sizer_2.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_2.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_2.Add(self.toggleAddPoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_2.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + self.sidebar.SetSizer(grid_sizer_2) + sizer_6.Add(self.sidebar, 0, wx.EXPAND, 0) + sizer_6.Add(self.map, 1, wx.RIGHT | wx.EXPAND, 3) + sizer_6.Add(self.reference, 1, wx.LEFT | wx.EXPAND, 3) + self.SetSizer(sizer_6) + sizer_6.Fit(self) + self.Layout() + # end wxGlade + + def OnMenuSave(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuSave' not implemented!" + event.Skip() + + def OnMenuExit(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuExit' not implemented!" + event.Skip() + + def OnMenuUndo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuUndo' not implemented!" + event.Skip() + + def OnMenuRedo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuRedo' not implemented!" + event.Skip() + + def OnMenuSelectAll(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuSelectAll' not implemented!" + event.Skip() + + def OnMenuClearAll(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuClearAll' not implemented!" + event.Skip() + + def OnMenuShowMarkers(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuShowMarkers' not implemented!" + event.Skip() + + def OnMenuClearMarkers(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuClearMarkers' not implemented!" + event.Skip() + + def OnMenuLoadImage(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuLoadImage' not implemented!" + event.Skip() + + def OnMenuClearImage(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuClearImage' not implemented!" + event.Skip() + + def OnMenuHowTo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuHowTo' not implemented!" + event.Skip() + + def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuAbout' not implemented!" + event.Skip() + + def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnToggleVicon' not implemented!" + event.Skip() + + def OnButtonImage(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnButtonImage' not implemented!" + event.Skip() + + def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnToggleAddPoint' not implemented!" + event.Skip() + + def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnToggleDeletePoint' not implemented!" + event.Skip() +# end of class CalibrationFrame + class Region: def __init__(self, points, name, rgb=None): """Create an object to represent a region. From 50e78b848d99c8f99c06bf9bae512068ae57f89d Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 18 Apr 2012 14:41:15 -0400 Subject: [PATCH 10/26] Created calibration GUI. Fixed some small problems with painting in regionEditor. --- .../NewRegionEditor/RegionEditorV3.wxg | 268 ++++-- src/regionEditor.py | 781 ++++++++++++++++-- 2 files changed, 910 insertions(+), 139 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg index 7809cd1f..dc108c6f 100644 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg @@ -1,5 +1,5 @@ - + @@ -415,95 +415,15 @@ Map Calibration 1 - - wxHORIZONTAL - - wxEXPAND - 0 - - - - 100, 300 - - 5 - 2 - 2 - 5 - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleVicon - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnButtonImage - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleAddPoint - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleDeletePoint - - 50, 50 - - - - - - - wxRIGHT|wxEXPAND - 3 - - - - #ffffff - 320, 320 - - - - wxLEFT|wxEXPAND - 3 - - - - #ffffff - 320, 320 - - - + #f0f0f0 + + + menuReset + OnMenuReset + menuSave @@ -526,13 +446,18 @@ menuRedo OnMenuRedo + + + --- + --- + menuSelectAll OnMenuSelectAll - + menuClearAll OnMenuClearAll @@ -549,11 +474,21 @@ menuClearMarkers OnMenuClearMarkers + + + --- + --- + menuLoadImage OnMenuLoadImage + + + menuDimen + OnMenuDimen + menuClearImage @@ -574,5 +509,162 @@ + + wxHORIZONTAL + + 0 + + + + 110, 245 + + wxVERTICAL + + wxTOP|wxBOTTOM|wxEXPAND + 5 + + + wxHORIZONTAL + + wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnToggleVicon + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnButtonImage + + 50, 50 + + + + + + wxTOP|wxBOTTOM|wxEXPAND + 5 + + + wxHORIZONTAL + + wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnToggleAddPoint + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnToggleDeletePoint + + 50, 50 + + + + + + wxTOP|wxBOTTOM|wxEXPAND + 5 + + + wxHORIZONTAL + + wxALIGN_CENTER_VERTICAL + 0 + + + x + 40, 25 + + + + wxALIGN_CENTER_VERTICAL + 0 + + + y + 40, 25 + + + + wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL + 0 + + + + wx.ID_OK + + OnButtonEnterPoint + + 25, 25 + + + + + + wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnToggleDimen + + 50, 50 + + + + + + + wxEXPAND + 0 + + + wxVERTICAL + + wxBOTTOM|wxEXPAND + 3 + + + + #ffffff + 600, 300 + + + + wxTOP|wxEXPAND + 3 + + + + #ffffff + 600, 300 + + + + + diff --git a/src/regionEditor.py b/src/regionEditor.py index b48645e0..c5d99c8c 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -7,6 +7,7 @@ import collections import time import math +import numpy import wx import threading import socket @@ -17,6 +18,7 @@ import winsound import pyttsx import lib.fileMethods as fileMethods +import lib._transformations as _transformations # begin wxGlade: extracode # end wxGlade @@ -176,6 +178,8 @@ def __init__(self, *args, **kwds): self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick self.justDoubleClicked = False # Indicating double-click event self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) + # TODO: Make tolerance a parameter on pixels only + # Calculate "same point" with scale later self.selectedRegions = [] # List of currently selected regions # Set up for undo/redo capabilities @@ -185,7 +189,8 @@ def __init__(self, *args, **kwds): self.redoActions = collections.deque() # Add paint event handler to draw on the canvas - self.Bind(wx.EVT_PAINT, self.OnCanvasPaint, self.canvas) + # TODO: Fix problems here + #self.canvas.Bind(wx.EVT_PAINT, self.OnCanvasPaint) # Create Vicon listener self.markerPoses = [] # Marker positions to be drawn @@ -288,9 +293,8 @@ def OnToggleFeedback(self, event): # wxGlade: regionEditor. self.dlgFeedback.OnClose(None) def OnButtonCal(self, event): # wxGlade: regionEditor. - # TODO - print "Calibration not yet implemented" self.ResetMapToggles() + calibGUI = CalibrationFrame(self) def OnMenuNew(self, event): # wxGlade: regionEditor. print "Event handler `OnMenuNew' not implemented" @@ -851,6 +855,7 @@ def OnKeyDown(self, event): def OnEnterWindow(self, event): """Set the focus to the canvas to enable zooming.""" self.canvas.SetFocus() + self.RedrawCanvas() def OnLeaveWindow(self, event): """Unset the focus from the canvas to disable zooming.""" @@ -860,7 +865,10 @@ def OnCanvasPaint(self, event): """Redraw the contents of the canvas panel.""" # Set up to draw dc = wx.PaintDC(self.canvas) + + # Redraw self.RedrawCanvas(dc) + event.Skip() def RedrawCanvas(self, dc=None): """Redraw the contents of the canvas panel. @@ -873,10 +881,10 @@ def RedrawCanvas(self, dc=None): # Create device context if not created if not dc: - windc = wx.WindowDC(self.canvas) - dc = wx.GCDC(windc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() + dc = wx.WindowDC(self.canvas) + dc = wx.GCDC(dc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() # Draw grid background self.DrawGrid(dc) @@ -910,6 +918,13 @@ def RedrawCanvas(self, dc=None): dc.EndDrawing() + def RedrawVicon(self): + """Redraw the contents of the canvas panel quickly, only worrying about + updating the marker positions and currently being created regions. + """ + # TODO: Save and use image of map to increase speed + self.RedrawCanvas() + def DrawGrid(self, dc=None): """Draw the axes and grid on the map canvas. @@ -953,11 +968,14 @@ def DrawMarkers(self, poses, dc=None): dc = wx.GCDC(windc) self.canvas.PrepareDC(dc) dc.BeginDrawing() - + + # Set up brush + #dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) + # Draw each marker for pose in poses: posePix = self.Map2Pix(pose) - dc.DrawCircle(posePix[0], posePix[1], 5) + dc.DrawCircle(posePix[0], posePix[1], 4) if isNewDC: dc.EndDrawing() @@ -1001,12 +1019,17 @@ def DrawRegion(self, region, dc=None, isBoundary=False): dc.BeginDrawing() # Set brush to region color - innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ - region.color.Blue(), 128) - if not isBoundary: - dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - else: + # Set brush to region color + if isBoundary: dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + elif region.isObstacle: + obstColor = wx.Colour(region.color.Red() / 10, \ + region.color.Green() / 10, region.color.Blue() / 10, 128) + dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) + else: + innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ + region.color.Blue(), 128) + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) dc.SetTextForeground(wx.BLACK) dc.SetBackgroundMode(wx.TRANSPARENT) @@ -1321,6 +1344,21 @@ def RecalcAdjacency(self, iReg, iRegStart=0): def Autoboundary(self): """Automatically create region representing the boundary of the map.""" + if self.regions: + minx, maxx, miny, maxy = self.GetMapBoundaries() + # Create region + points = [Point(minx, maxy), Point(maxx, maxy), \ + Point(maxx, miny), Point(minx, miny)] + self.boundary = Region(points, 'boundary') + else: + print "No regions defined, so no boundary created." + + def GetMapBoundaries(self): + """Find the minimum and maximum coordinates of all regions on map. + + returns None if no regions defined + returns (minX, maxX, minY, maxY) otherwise + """ # Check that there are regions first if self.regions: # Find extrema of map @@ -1335,10 +1373,9 @@ def Autoboundary(self): miny = min(miny, pt.y) maxy = max(maxy, pt.y) - # Create region - points = [Point(minx, maxy), Point(maxx, maxy), \ - Point(maxx, miny), Point(minx, miny)] - self.boundary = Region(points, 'boundary') + return minx, maxx, miny, maxy + else: + return None def AddToUndo(self, action): """Add specified action to the undo queue. @@ -1772,6 +1809,8 @@ def __init__(self, *args, **kwds): # Menu Bar self.calibFrame_menubar = wx.MenuBar() self.filemenu = wx.Menu() + self.menuReset = wx.MenuItem(self.filemenu, wx.NewId(), "Reset", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuReset) self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuSave) self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) @@ -1782,9 +1821,10 @@ def __init__(self, *args, **kwds): self.editmenu.AppendItem(self.menuUndo) self.menuRedo = wx.MenuItem(self.editmenu, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) self.editmenu.AppendItem(self.menuRedo) + self.editmenu.AppendSeparator() self.menuSelectAll = wx.MenuItem(self.editmenu, wx.NewId(), "Select All", "", wx.ITEM_NORMAL) self.editmenu.AppendItem(self.menuSelectAll) - self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All", "", wx.ITEM_NORMAL) + self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All Points", "", wx.ITEM_NORMAL) self.editmenu.AppendItem(self.menuClearAll) self.calibFrame_menubar.Append(self.editmenu, "Edit") self.toolsmenu = wx.Menu() @@ -1792,8 +1832,11 @@ def __init__(self, *args, **kwds): self.toolsmenu.AppendItem(self.menuShowMarkers) self.menuClearMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) self.toolsmenu.AppendItem(self.menuClearMarkers) + self.toolsmenu.AppendSeparator() self.menuLoadImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Load Image", "", wx.ITEM_NORMAL) self.toolsmenu.AppendItem(self.menuLoadImage) + self.menuDimen = wx.MenuItem(self.toolsmenu, wx.NewId(), "Dimension Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuDimen) self.menuClearImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Image", "", wx.ITEM_NORMAL) self.toolsmenu.AppendItem(self.menuClearImage) self.calibFrame_menubar.Append(self.toolsmenu, "Tools") @@ -1810,12 +1853,17 @@ def __init__(self, *args, **kwds): self.buttonImage = wx.Button(self.sidebar, -1, "Image") self.toggleAddPoint = wx.ToggleButton(self.sidebar, -1, "Point +") self.toggleDeletePoint = wx.ToggleButton(self.sidebar, -1, "Point -") + self.textEnterPointX = wx.TextCtrl(self.sidebar, -1, "") + self.textEnterPointY = wx.TextCtrl(self.sidebar, -1, "") + self.buttonEnterPoint = wx.Button(self.sidebar, wx.ID_OK, "OK") + self.toggleDimen = wx.ToggleButton(self.sidebar, -1, "Dimen.") self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - self.reference = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + self.ref = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) self.__set_properties() self.__do_layout() + self.Bind(wx.EVT_MENU, self.OnMenuReset, self.menuReset) self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) @@ -1825,6 +1873,7 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_MENU, self.OnMenuShowMarkers, self.menuShowMarkers) self.Bind(wx.EVT_MENU, self.OnMenuClearMarkers, self.menuClearMarkers) self.Bind(wx.EVT_MENU, self.OnMenuLoadImage, self.menuLoadImage) + self.Bind(wx.EVT_MENU, self.OnMenuDimen, self.menuDimen) self.Bind(wx.EVT_MENU, self.OnMenuClearImage, self.menuClearImage) self.Bind(wx.EVT_MENU, self.OnMenuHowTo, self.menuHowTo) self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) @@ -1832,46 +1881,205 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleAddPoint, self.toggleAddPoint) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) + self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDimen, self.toggleDimen) # end wxGlade - + + # Check that regionEditor object was passed in correctly + if len(args) > 0 and isinstance(args[0], regionEditor): + self.parent = args[0] + if not self.parent.regions: + print "No regions defined. Exiting calibration." + self.Destroy() + else: + print "No regionEditor object passed in. Exiting calibration." + self.Destroy() + + # Bind mouse events + self.map.Bind(wx.EVT_LEFT_DOWN, self.OnMapMouseLeftDown, self.map) + self.map.Bind(wx.EVT_LEFT_UP, self.OnMapMouseLeftUp, self.map) + self.map.Bind(wx.EVT_MOUSEWHEEL, self.OnMapMouseWheel, self.map) + self.map.Bind(wx.EVT_ENTER_WINDOW, self.OnMapEnterWindow, self.map) + self.map.Bind(wx.EVT_LEAVE_WINDOW, self.OnMapLeaveWindow, self.map) + self.ref.Bind(wx.EVT_LEFT_DOWN, self.OnRefMouseLeftDown, self.ref) + self.ref.Bind(wx.EVT_LEFT_UP, self.OnRefMouseLeftUp, self.ref) + self.ref.Bind(wx.EVT_MOUSEWHEEL, self.OnRefMouseWheel, self.ref) + self.ref.Bind(wx.EVT_ENTER_WINDOW, self.OnRefEnterWindow, self.ref) + self.ref.Bind(wx.EVT_LEAVE_WINDOW, self.OnRefLeaveWindow, self.ref) + + # Bind keyboard events + self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) + self.map.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.map) + self.ref.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.ref) + + # Add close event handler to cleanup before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Determine mapping of the map panel to the field + # Avoid difficulties by having same scale for x and y + mapLen = self.map.GetSize() # Initial size of map panel (pixels) + # Initial range of field (xmin, xmax, ymin, ymax) + xmin, xmax, ymin, ymax = self.parent.GetMapBoundaries() + # pose = pixPose * scale + offset + # Note: y-pixels and y-pose have opposite directions + xScale = (xmax - xmin) / float(mapLen[0]) + yScale = (ymax - ymin) / float(mapLen[1]) + maxScale = max(xScale, yScale) + xOffset = xmin+(float(mapLen[0]) * maxScale - (xmax - xmin)) / 2 + yOffset = ymax+(float(mapLen[1]) * maxScale - (ymax - ymin)) / 2 + self.mapScale = Point(maxScale, -maxScale) + self.mapOffset = Point(xOffset, yOffset) + # Determine initial mapping of the reference panel to the field + # Initially defines a 1:1 mapping (at least scale/offset-wise) to map + refLen = self.ref.GetSize() # Initial size of reference panel (pixels) + xScale = (xmax - xmin) / float(refLen[0]) + yScale = (ymax - ymin) / float(refLen[1]) + maxScale = max(xScale, yScale) + xOffset = xmin+(float(refLen[0]) * maxScale - (xmax - xmin)) / 2 + yOffset = ymax+(float(refLen[1]) * maxScale - (ymax - ymin)) / 2 + self.refScale = Point(maxScale, -maxScale) + self.refOffset = Point(xOffset, yOffset) + + # Calibration-related parameters + self.calibPoints = [] # List of lists of Points + # matching map to reference positions + # [[mapPt1, refPt1], [mapPt2, refPt2], ...] + self.newCalibPt = [None, None] # List of two points + # for creating new calibration points + # [mapNewPt, refNewPt] + + # Mouse-related parameters + self.mapLeftClickPt = Point(0.0, 0.0) + self.refLeftClickPt = Point(0.0, 0.0) + self.selectedPoints = [] # Points that have been selected by mouse + tolerance = 5.0 # Pixel tolerance to consider "same point" + self.mapTolerance = tolerance * self.mapScale.x + self.refTolerance = tolerance * self.refScale.x + + # Set up for undo/redo capabilities + # TODO: Disable self.menuUndo and self.menuRedo + self.unredoBufLen = 50 + self.undoActions = collections.deque() + self.redoActions = collections.deque() + + # Create Vicon listener + self.markerPoses = [] # Marker positions to be drawn + self.viconListener = ViconMarkerListener(self) + + # Display the GUI window and set up the map canvas + self.Show() + self.RedrawMap() + + def __set_properties(self): # begin wxGlade: CalibrationFrame.__set_properties self.SetTitle("Map Calibration") + self.SetBackgroundColour(wx.Colour(240, 240, 240)) self.toggleVicon.SetMinSize((50, 50)) self.buttonImage.SetMinSize((50, 50)) self.toggleAddPoint.SetMinSize((50, 50)) self.toggleDeletePoint.SetMinSize((50, 50)) - self.sidebar.SetMinSize((100, 300)) - self.map.SetMinSize((320, 320)) + self.textEnterPointX.SetMinSize((40, 25)) + self.textEnterPointX.SetToolTipString("x") + self.textEnterPointY.SetMinSize((40, 25)) + self.textEnterPointY.SetToolTipString("y") + self.buttonEnterPoint.SetMinSize((25, 25)) + self.toggleDimen.SetMinSize((50, 50)) + self.sidebar.SetMinSize((110, 245)) + self.map.SetMinSize((600, 300)) self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) - self.reference.SetMinSize((320, 320)) - self.reference.SetBackgroundColour(wx.Colour(255, 255, 255)) + self.ref.SetMinSize((600, 300)) + self.ref.SetBackgroundColour(wx.Colour(255, 255, 255)) # end wxGlade def __do_layout(self): # begin wxGlade: CalibrationFrame.__do_layout sizer_6 = wx.BoxSizer(wx.HORIZONTAL) - grid_sizer_2 = wx.GridSizer(2, 2, 5, 5) - grid_sizer_2.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_2.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_2.Add(self.toggleAddPoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_2.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - self.sidebar.SetSizer(grid_sizer_2) - sizer_6.Add(self.sidebar, 0, wx.EXPAND, 0) - sizer_6.Add(self.map, 1, wx.RIGHT | wx.EXPAND, 3) - sizer_6.Add(self.reference, 1, wx.LEFT | wx.EXPAND, 3) + sizer_7 = wx.BoxSizer(wx.VERTICAL) + sizer_8 = wx.BoxSizer(wx.VERTICAL) + sizer_11 = wx.BoxSizer(wx.HORIZONTAL) + sizer_10 = wx.BoxSizer(wx.HORIZONTAL) + sizer_9 = wx.BoxSizer(wx.HORIZONTAL) + sizer_9.Add(self.toggleVicon, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_9.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_9, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_10.Add(self.toggleAddPoint, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_10.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_10, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_11.Add(self.textEnterPointX, 0, wx.ALIGN_CENTER_VERTICAL, 0) + sizer_11.Add(self.textEnterPointY, 0, wx.ALIGN_CENTER_VERTICAL, 0) + sizer_11.Add(self.buttonEnterPoint, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_11, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_8.Add(self.toggleDimen, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5) + self.sidebar.SetSizer(sizer_8) + sizer_6.Add(self.sidebar, 0, 0, 0) + sizer_7.Add(self.map, 1, wx.BOTTOM | wx.EXPAND, 3) + sizer_7.Add(self.ref, 1, wx.TOP | wx.EXPAND, 3) + sizer_6.Add(sizer_7, 1, wx.EXPAND, 0) self.SetSizer(sizer_6) sizer_6.Fit(self) self.Layout() # end wxGlade - + + def OnClose(self, event): + """Perform cleanup tasks and close the application.""" + self.viconListener.stop() + self.Destroy() + + def OnMenuReset(self, event): # wxGlade: CalibrationFrame. + """Clear all calibration points, background images, and markers.""" + self.OnMenuClearMarkers(None) + self.OnMenuClearImage(None) + self.OnMenuClearAll(None) + def OnMenuSave(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuSave' not implemented!" - event.Skip() + """Performs calibration on regions using calibration points to + calculate a transformation matrix that includes rotation. Moves all the + region points as appropriate, then close this GUI.""" + # Check that sufficient number of calibration points have been defined + if len(self.calibPoints) < 3: + msg = "Calibration requires that at least 3 calibration " + \ + "points are defined. Please define more points." + notifyDialog = wx.MessageDialog(self, msg, \ + style=wx.OK|wx.ICON_EXCLAMATION|wx.STAY_ON_TOP) + notifyDialog.ShowModal() + notifyDialog.Destroy() + return + + # Put calibration points into desired format + mapPts = numpy.mat([self.calibPoints[0][0].x, \ + self.calibPoints[0][0].y]).T + regPts = numpy.mat([self.calibPoints[0][1].x, \ + self.calibPoints[0][1].y]).T + for ptPair in self.calibPoints: + mapPts = numpy.hstack([mapPts, \ + numpy.mat([ptPair[0].x, ptPair[0].y]).T]) + regPts = numpy.hstack([regPts, \ + numpy.mat([ptPair[1].x, ptPair[1].y]).T]) + + # Get tranformation matrix such that + # regPt = T * mapPt + T = _transformations.affine_matrix_from_points(mapPts, regPts) + + # Apply transformation to all region points + # TODO: Add this to undo in regionEditor somehow + for reg in self.parent.regions: + for pt in reg.verts: + ptMat = numpy.mat([pt.x, pt.y, 1.0]).T + newPtMat = T * ptMat + pt.Set(float(newPtMat[0]), float(newPtMat[1])) + if self.parent.boundary: + for pt in self.parent.boundary.verts: + ptMat = numpy.mat([pt.x, pt.y, 1.0]).T + newPtMat = T * ptMat + pt.Set(float(newPtMat[0]), float(newPtMat[1])) + self.parent.RedrawCanvas() + + # Quit calibration + self.OnClose(None) def OnMenuExit(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuExit' not implemented!" - event.Skip() + self.OnClose(None) def OnMenuUndo(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnMenuUndo' not implemented!" @@ -1890,16 +2098,33 @@ def OnMenuClearAll(self, event): # wxGlade: CalibrationFrame. event.Skip() def OnMenuShowMarkers(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuShowMarkers' not implemented!" - event.Skip() + # Switch Vicon streaming on or off based on state of menu checkbox + if self.menuShowMarkers.IsChecked(): + self.toggleVicon.SetValue(True) + self.viconListener.start() + else: + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + self.toggleVicon.SetValue(False) def OnMenuClearMarkers(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuClearMarkers' not implemented!" - event.Skip() + if self.menuShowMarkers.IsChecked(): + self.toggleVicon.SetValue(False) + self.menuShowMarkers.Check(False) + self.viconListener.stop() + self.viconListener = ViconMarkerListener(self) + time.sleep(0.1) + self.markerPoses = [] + self.RedrawVicon() def OnMenuLoadImage(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnMenuLoadImage' not implemented!" event.Skip() + + def OnMenuDimen(self, event): # wxGlade: CalibrationFrame. + print "OnMenuDimen" + event.Skip() def OnMenuClearImage(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnMenuClearImage' not implemented!" @@ -1914,20 +2139,472 @@ def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. event.Skip() def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnToggleVicon' not implemented!" - event.Skip() + # Switch Vicon streaming on or off based on state of toggle button + if self.toggleVicon.GetValue(): + self.menuShowMarkers.Check(True) + self.viconListener.start() + else: + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + self.menuShowMarkers.Check(False) def OnButtonImage(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnButtonImage' not implemented!" event.Skip() - + def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnToggleAddPoint' not implemented!" + self.ResetToggles(toggleKeep=self.toggleAddPoint) + # TODO: When menu items are added for add point, flip on here + + def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. + self.ResetToggles(toggleKeep=self.toggleDeletePoint) + # TODO: When menu items are added for delete point, flip on here + + def OnButtonEnterPoint(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnButtonEnterPoint' not implemented" event.Skip() - def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnToggleDeletePoint' not implemented!" + def OnToggleDimen(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnToggleDimen' not implemented" event.Skip() + + def OnMapMouseLeftDown(self, event): + """Save downclick point on map for future use.""" + self.mapLeftClickPt, iCalibPt, iReg = \ + self.SnapPointMap(self.MapPix2M(event.GetPosition())) + + def OnMapMouseLeftUp(self, event): + """React to the finalization of the left click on the map.""" + ptPix = event.GetPosition() + pt, iCalibPt, iReg = \ + self.SnapPointMap(self.MapPix2M(ptPix)) + + # Creating a calibration point + if self.toggleAddPoint.GetValue() and iCalibPt == -1: + # First point clicked for adding new point + if not self.newCalibPt[1]: + self.newCalibPt[0] = pt + self.RedrawMap() + + # Finalizing calibration point (second point clicked) + else: + self.calibPoints.append([pt, self.newCalibPt[1]]) + self.newCalibPt = [None, None] + self.Redraw() + + # Removing a calibration point + elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: + self.calibPoints.pop(iCalibPt) + self.Redraw() + + # Panning the map view + elif pt.Dist(self.mapLeftClickPt) > self.mapTolerance: + downClickPix = self.MapM2Pix(self.mapLeftClickPt) + self.mapOffset = Point(self.mapScale.x * \ + (downClickPix[0] - ptPix[0]) + self.mapOffset.x, \ + self.mapScale.y * (downClickPix[1] - ptPix[1]) + \ + self.mapOffset.y) + self.RedrawMap() + + def OnMapMouseWheel(self, event): + """Zoom on the map.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.mapOffset = Point(float(ptPix[0]) * self.mapScale.x * \ + (1 - scaler) + self.mapOffset.x, float(ptPix[1]) * \ + self.mapScale.y * (1 - scaler) + self.mapOffset.y) + self.mapScale = self.mapScale * scaler + self.RedrawMap() + + def OnMapEnterWindow(self, event): + """Set focus on map to enable zooming.""" + self.map.SetFocus() + + def OnMapLeaveWindow(self, event): + """Return focus to main GUI.""" + self.SetFocus() + + def OnRefMouseLeftDown(self, event): + """Save downclick point on reference panel for future use.""" + self.refLeftClickPt, iCalibPt, iReg = \ + self.SnapPointMap(self.RefPix2M(event.GetPosition())) + + def OnRefMouseLeftUp(self, event): + """React to the finalization of the left click on the map.""" + ptPix = event.GetPosition() + pt, iCalibPt = \ + self.SnapPointRef(self.RefPix2M(ptPix)) + + # Creating a calibration point + if self.toggleAddPoint.GetValue() and iCalibPt == -1: + # First point clicked for adding new point + if not self.newCalibPt[0]: + self.newCalibPt[1] = pt + self.RedrawMap() + + # Finalizing calibration point (second point clicked) + else: + self.calibPoints.append([self.newCalibPt[0], pt]) + self.newCalibPt = [None, None] + self.Redraw() + + # Removing a calibration point + elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: + self.calibPoints.pop(iCalibPt) + self.Redraw() + + # Panning the reference view + elif pt.Dist(self.refLeftClickPt) > self.refTolerance: + downClickPix = self.RefM2Pix(self.refLeftClickPt) + self.refOffset = Point(self.refScale.x * \ + (downClickPix[0] - ptPix[0]) + self.refOffset.x, \ + self.refScale.y * (downClickPix[1] - ptPix[1]) + \ + self.refOffset.y) + self.RedrawRef() + + def OnRefMouseWheel(self, event): + """Zoom on the reference panel.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.refOffset = Point(float(ptPix[0]) * self.refScale.x * \ + (1 - scaler) + self.refOffset.x, float(ptPix[1]) * \ + self.refScale.y * (1 - scaler) + self.refOffset.y) + self.refScale = self.refScale * scaler + self.RedrawRef() + + def OnRefEnterWindow(self, event): + """Set focus on reference panel to enable zooming.""" + self.ref.SetFocus() + + def OnRefLeaveWindow(self, event): + """Return focus to main GUI.""" + self.SetFocus() + + def OnKeyDown(self, event): + print "OnKeyDown" + event.Skip() + + def Redraw(self): + """Redraw map and reference panels.""" + self.RedrawMap() + self.RedrawRef() + + def RedrawMap(self): + """Redraw the map panel.""" + # Clear map + self.map.ClearBackground() + + # Create device context + windc = wx.WindowDC(self.map) + dc = wx.GCDC(windc) + self.map.PrepareDC(dc) + dc.BeginDrawing() + + # Redraw boundary region + if self.parent.boundary: + self.DrawRegion(self.boundary, dc=dc, boundary=True) + + # Redraw all regions + for region in self.parent.regions: + self.DrawRegion(region, dc=dc) + + # Draw calibration points + for iPtPair, ptPair in enumerate(self.calibPoints): + self.DrawCalibPoint(self.MapM2Pix(ptPair[0]), str(iPtPair), dc) + + # Draw single point from currently being made calibration point + if self.newCalibPt[0]: + self.DrawCalibPoint(self.MapM2Pix(self.newCalibPt[0]), "", dc) + + dc.EndDrawing() + + def RedrawRef(self): + """Redraw the reference panel.""" + # Clear ref + self.ref.ClearBackground() + + # Create device context + windc = wx.WindowDC(self.ref) + dc = wx.GCDC(windc) + self.ref.PrepareDC(dc) + dc.BeginDrawing() + + # TODO: Draw background image + + # Draw calibration points + for iPtPair, ptPair in enumerate(self.calibPoints): + self.DrawCalibPoint(self.RefM2Pix(ptPair[1]), str(iPtPair), dc) + + # Draw single point from currently being made calibration point + if self.newCalibPt[1]: + self.DrawCalibPoint(self.RefM2Pix(self.newCalibPt[1]), "", dc) + + # Draw markers + dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) + dc.SetPen(wx.Pen(wx.Colour(0, 0, 0, 125), 1, wx.SOLID)) + for pt in self.markerPoses: + ptPix = self.RefM2Pix(pt) + dc.DrawCircle(ptPix[0], ptPix[1], 4) + + dc.EndDrawing() + + def RedrawVicon(self): + # TODO: Redraw saved image of background since it is faster and + # vicon needs to be redrawn at a high frequency + self.RedrawRef() + + def DrawRegion(self, region, dc, isBoundary=False): + """Draw a single region. + + region - Instance of Region class, contains information about the region. + dc - Device context used for drawing on the panel. + isBoundary - Boolean, true if drawing the boundary region. + """ + # Set brush to region color + if isBoundary: + dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + elif region.isObstacle: + obstColor = wx.Colour(region.color.Red() / 10, \ + region.color.Green() / 10, region.color.Blue() / 10, 128) + dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) + else: + innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ + region.color.Blue(), 128) + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) + dc.SetTextForeground(wx.BLACK) + dc.SetBackgroundMode(wx.TRANSPARENT) + dc.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) + + # Set up label + if region.isObstacle: + labelText = "(%s)" % region.name + else: + labelText = region.name + labelWidth, labelHeight = dc.GetTextExtent(labelText) + + # Draw region + vertsPix = [] + xLabelPix = 0 + yLabelPix = 0 + for vert in region.verts: + vertPix = self.MapM2Pix(vert) + vertsPix.append(vertPix) + if not isBoundary: # Put label in center + xLabelPix += vertPix[0] + yLabelPix += vertPix[1] + else: # Put label in lower right corner + xLabelPix = max(xLabelPix, vertPix[0]) + yLabelPix = max(yLabelPix, vertPix[1]) + dc.DrawPolygon(vertsPix) + if isBoundary: + xLabelPix = xLabelPix / len(region.verts) - labelWidth + yLabelPix = yLabelPix / len(region.verts) - labelHeight + else: + xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 + yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 + + # Draw label + dc.SetBrush(wx.Brush(region.color, wx.SOLID)) + dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ + labelWidth + 10, labelHeight + 6, 3) + dc.DrawText(labelText, xLabelPix, yLabelPix) + + def DrawCalibPoint(self, ptPix, label, dc): + """Draw a single calibration point. + + ptPix - Point to draw with coordinates in pixels + label - String to label point with - usually point index + If label is empty, point will be drawn in a differnt color + dc - Device context that allows for drawing + """ + # Draw circle + radius = 5 + if label: + innerColor = wx.RED + else: + innerColor = wx.GREEN + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) + dc.SetPen(wx.Pen(wx.BLACK, 1, wx.SOLID)) + dc.DrawCircle(ptPix[0], ptPix[1], radius) + + # Draw label + if label: + dc.SetTextForeground(wx.BLACK) + dc.SetBackgroundMode(wx.TRANSPARENT) + dc.SetFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) + labelWidth, labelHeight = dc.GetTextExtent(label) + xLabelPix = ptPix[0] - radius + yLabelPix = ptPix[1] - radius + dc.DrawText(label, xLabelPix, yLabelPix) + + def ResetToggles(self, toggleKeep=None): + """Unpress toggle buttons except that specified. Reset calibration + point creation. Redraw the panels. + + toggleKeep - Toggle button to retain the value of + """ + # Reset toggles + valueKeep = toggleKeep.GetValue() + self.toggleAddPoint.SetValue(False) + self.toggleDeletePoint.SetValue(False) + self.toggleDimen.SetValue(False) + toggleKeep.SetValue(valueKeep) + + # Reset partial calibration point creation + self.newCalibPt = [None, None] + + # Redraw the map and reference panels + self.Redraw() + + def SnapPointMap(self, pt): + """Snap the point to the closest calibration point, region vertex, or + region edge from the map panel. + + pt - Point to snap in absolute coordinates + returns - (snappedPt, idxCalibPt, idxReg) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + idxReg - Index of region snapped-to (-1 if not snapped to region) + """ + # Check calibration points first + snapped = False + pt, idxCalibPt, snapped = \ + self.SnapCalibPoints(pt, 0, snapped=snapped) + + # Check regions next + pt, idxReg, idxRPoint, idxREdge, snapped = \ + self.parent.SnapRegions(pt, snapped=snapped) + + return pt, idxCalibPt, idxReg + + def SnapPointRef(self, pt): + """Snap the point to the closest calibration point or marker from the + reference panel. + + pt - Point to snap in absolute coordinates + returns - (snappedPt, iCalibPt, iReg) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + """ + # Check calibration points first + snapped = False + pt, idxCalibPt, snapped = \ + self.SnapCalibPoints(pt, 1, snapped=snapped) + + # Check marker points next + pt, snapped = self.SnapVicon(pt, snapped=snapped) + + return pt, idxCalibPt + + def SnapCalibPoints(self, pt, idxPanel, snapped=False): + """Snap the point to the first sufficiently close calibration point in + the specified panel. + + pt - Point to be snapped in absolute coordinates + idxPanel - 0 indicating map panel, 1 indicating reference panel + snapped - Boolean, whether point has been snapped already + If snapped was true in input, then function will immediately + return, setting the same value to the output snapped + returns - (snappedPt, idxCalibPt, snapped) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + snapped - Boolean indicating if the point has ever been snapped + """ + # Set tolerance in absolute coordinates + if idxPanel == 0: + tol = self.mapTolerance + else: + tol = self.refTolerance + + # Check through all calibration points until snapping + idxCalibPt = -1 + iCPt = len(self.calibPoints) - 1 + while not snapped and iCPt > -1: + if pt.Dist(self.calibPoints[iCPt][idxPanel]) < tol: + pt = self.calibPoints[iCPt][idxPanel] + idxCalibPt = iCPt + snapped = True + iCPt -= 1 + + return pt, idxCalibPt, snapped + + def SnapVicon(self, pt, snapped=False): + """Snap the given point to any sufficiently close marker point. + + pt - Point to be snapped, in absolute coordinates + snapped - Boolean, indicates if point has already been snapped + If snapped was true in input, then function will immediately + return, setting the same value to the output snapped + returns - (snappedPt, snapped) + snappedPt - Point after snapping + snapped - Boolean, indicates if point has ever been snapped + """ + # Check all points until snapped + iVPt = 0 + while not snapped and iVPt < len(self.markerPoses): + if pt.Dist(self.markerPoses[iVPt]) < self.refTolerance: + pt = self.markerPoses[iVPt] + snapped = True + iVPt += 1 + + return pt, snapped + + def MapM2Pix(self, pose): + """Convert from absolute (meter) coordinates to pixel coordinates for + the map panel. + + pose - Point, absolute coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.mapOffset.x) / self.mapScale.x) + row = int((pose.y - self.mapOffset.y) / self.mapScale.y) + return (col, row) + + def MapPix2M(self, pixPose): + """Convert from pixel coordinates to absolute (meter) coordinates for + the map panel. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, absolute coordinates of point + """ + x = float(pixPose[0]) * self.mapScale.x + self.mapOffset.x + y = float(pixPose[1]) * self.mapScale.y + self.mapOffset.y + return Point(x, y) + + def RefM2Pix(self, pose): + """Convert from absolute (meter) coordinates to pixel coordinates for + the reference panel. + + pose - Point, absolute coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.refOffset.x) / self.refScale.x) + row = int((pose.y - self.refOffset.y) / self.refScale.y) + return (col, row) + + def RefPix2M(self, pixPose): + """Convert from pixel coordinates to absolute (meter) coordinates for + the reference panel. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, absolute coordinates of point + """ + x = float(pixPose[0]) * self.refScale.x + self.refOffset.x + y = float(pixPose[1]) * self.refScale.y + self.refOffset.y + return Point(x, y) # end of class CalibrationFrame class Region: @@ -2124,7 +2801,7 @@ def __init__(self, parent): super(ViconMarkerListener, self).__init__() # Communication parameters - self.parent = parent # RegionEditor GUI + self.parent = parent # regionEditor or CalibrationFrame self.addr = ("0.0.0.0", 7500) self.bufsize = 65536 self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) @@ -2188,9 +2865,11 @@ def ProcessData(self, data): x, y = struct.unpack('dd', data[i:i+16]) poses.append(Point(x, y)) # Save and plot marker positions + # Both regionEditor GUI and CalibrationFrame GUI have + # markerPoses field and RedrawVicon method self.parent.markerPoses = poses self.UpdateMovingMarkers(poses) - self.parent.RedrawCanvas() # Force map redraw + self.parent.RedrawVicon() # Force map redraw def UpdateMovingMarkers(self, poses): """Note which markers are newly moving and update position of old From 73a8fa48ac3d7fbbe96a0280c956ab83b1846212 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 18 Apr 2012 15:16:20 -0400 Subject: [PATCH 11/26] Added button for Autoboundary and functionality for that and autoboundary on menu. Fixed some label positioning issues with boundary. --- .../NewRegionEditor/RegionEditorV3.wxg | 17 ++++- src/regionEditor.py | 63 +++++++++++++------ 2 files changed, 57 insertions(+), 23 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg index dc108c6f..3fa841dc 100644 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg @@ -1,5 +1,5 @@ - + @@ -120,7 +120,7 @@ - 150, 400 + 120, 400 5 4 @@ -186,7 +186,18 @@ 50, 50 - + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnButtonAutobound + + 50, 50 + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 0 diff --git a/src/regionEditor.py b/src/regionEditor.py index c5d99c8c..6d5e2eaa 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -85,6 +85,7 @@ def __init__(self, *args, **kwds): self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Rect.") self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Length") + self.buttonAutobound = wx.Button(self.sidebar, -1, "Boundary") self.toggleFeedback = wx.ToggleButton(self.sidebar, -1, "Feedback") self.buttonCal = wx.Button(self.sidebar, -1, "Calibrate") self.canvas = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) @@ -115,6 +116,7 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) + self.Bind(wx.EVT_BUTTON, self.OnButtonAutobound, self.buttonAutobound) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFeedback, self.toggleFeedback) self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) # end wxGlade @@ -212,9 +214,10 @@ def __set_properties(self): self.toggleSquare.SetMinSize((50, 50)) self.togglePoly.SetMinSize((50, 50)) self.toggleDim.SetMinSize((50, 50)) + self.buttonAutobound.SetMinSize((50, 50)) self.toggleFeedback.SetMinSize((50, 50)) self.buttonCal.SetMinSize((50, 50)) - self.sidebar.SetMinSize((150, 400)) + self.sidebar.SetMinSize((120, 400)) self.canvas.SetMinSize((800, 400)) self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255)) # end wxGlade @@ -228,6 +231,7 @@ def __do_layout(self): grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonAutobound, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.toggleFeedback, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.buttonCal, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) self.sidebar.SetSizer(grid_sizer_1) @@ -256,7 +260,7 @@ def OnClose(self, event): else: self.viconListener.stop() self.Destroy() - + def OnToggleVicon(self, event): # wxGlade: regionEditor. # Switch Vicon streaming on or off based on state of toggle button if self.toggleVicon.GetValue(): @@ -269,21 +273,25 @@ def OnToggleVicon(self, event): # wxGlade: regionEditor. self.viconListener.stop() # Reinitialize thread to enable restarting it self.viconListener = ViconMarkerListener(self) - + def OnButtonCamera(self, event): # wxGlade: regionEditor. print "Camera not yet implemented" # TODO event.Skip() - + def OnToggleSquare(self, event): # wxGlade: regionEditor. self.ResetMapToggles(self.toggleSquare) - + def OnTogglePoly(self, event): # wxGlade: regionEditor. self.ResetMapToggles(self.togglePoly) - + def OnToggleDim(self, event): # wxGlade: regionEditor. self.ResetMapToggles(self.toggleDim) - + + def OnButtonAutobound(self, event): # wxGlade: regionEditor. + self.Autoboundary() + self.RedrawCanvas() + def OnToggleFeedback(self, event): # wxGlade: regionEditor. self.ResetMapToggles(self.toggleFeedback) if self.toggleFeedback.GetValue(): @@ -291,7 +299,7 @@ def OnToggleFeedback(self, event): # wxGlade: regionEditor. self.dlgFeedback.ShowModal() elif self.dlgFeedback: self.dlgFeedback.OnClose(None) - + def OnButtonCal(self, event): # wxGlade: regionEditor. self.ResetMapToggles() calibGUI = CalibrationFrame(self) @@ -385,6 +393,18 @@ def OnMenuOpen(self, event): # wxGlade: regionEditor. def OnMenuSave(self, event): # wxGlade: regionEditor. """Save to file that has already been used.""" if self.fileName: + # Bring up dialog box to ask about boundary if necessary + if self.regions and not self.boundary: + msg = "No boundary found. Automatically create rectangular boundary?" + boundDialog = wx.MessageDialog(self, msg, style=wx.YES_NO|wx.CANCEL|\ + wx.YES_DEFAULT|wx.ICON_EXCLAMATION|wx.STAY_ON_TOP) + boundDiaResult = boundDialog.ShowModal() + if boundDiaResult == wx.ID_YES: + self.Autoboundary() + elif boundDiaResult == wx.ID_CANCEL: + return + + # Save file f = open(self.fileName, 'w') f.write("# This is a region definition file for the LTLMoP " + \ "toolkit.\n# Format details are described at the " + \ @@ -396,9 +416,7 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. f.write("\n\n") # TODO: Support for obstacles f.write("Regions: # Name {ColorR ColorG ColorB} " + \ "[(x1 y1) (x2 y2) ...]\n") - if not self.boundary: - self.Autoboundary() - if self.boundary: # Check in case there were no regions + if self.boundary: f.write(str(self.boundary) + "\n") for reg in self.regions: f.write(str(reg) + "\n") @@ -518,8 +536,8 @@ def OnMenuRedo(self, event): # wxGlade: regionEditor. self.RedrawCanvas() def OnMenuAutobound(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuAutobound' not implemented" - event.Skip() + self.Autoboundary() + self.RedrawCanvas() def OnMenuRect(self, event): # wxGlade: regionEditor. print "Event handler `OnMenuRect' not implemented" @@ -891,7 +909,7 @@ def RedrawCanvas(self, dc=None): # Redraw boundary region if self.boundary: - self.DrawRegion(self.boundary, dc, boundary=True) + self.DrawRegion(self.boundary, dc, isBoundary=True) # Redraw all regions for region in self.regions: @@ -1022,15 +1040,17 @@ def DrawRegion(self, region, dc=None, isBoundary=False): # Set brush to region color if isBoundary: dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + dc.SetPen(wx.Pen(wx.BLACK, 3, wx.SOLID)) elif region.isObstacle: obstColor = wx.Colour(region.color.Red() / 10, \ region.color.Green() / 10, region.color.Blue() / 10, 128) dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) else: innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ region.color.Blue(), 128) dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) dc.SetTextForeground(wx.BLACK) dc.SetBackgroundMode(wx.TRANSPARENT) dc.SetFont(wx.Font(12, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) @@ -1057,16 +1077,17 @@ def DrawRegion(self, region, dc=None, isBoundary=False): yLabelPix = max(yLabelPix, vertPix[1]) dc.DrawPolygon(vertsPix) if isBoundary: - xLabelPix = xLabelPix / len(region.verts) - labelWidth - yLabelPix = yLabelPix / len(region.verts) - labelHeight + xLabelPix = xLabelPix - labelWidth + yLabelPix = yLabelPix else: xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 # Draw label - dc.SetBrush(wx.Brush(region.color, wx.SOLID)) - dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ - labelWidth + 10, labelHeight + 6, 3) + if not isBoundary: + dc.SetBrush(wx.Brush(region.color, wx.SOLID)) + dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ + labelWidth + 10, labelHeight + 6, 3) dc.DrawText(labelText, xLabelPix, yLabelPix) if isNewDC: @@ -2224,6 +2245,7 @@ def OnMapMouseWheel(self, event): def OnMapEnterWindow(self, event): """Set focus on map to enable zooming.""" self.map.SetFocus() + self.RedrawMap() def OnMapLeaveWindow(self, event): """Return focus to main GUI.""" @@ -2284,6 +2306,7 @@ def OnRefMouseWheel(self, event): def OnRefEnterWindow(self, event): """Set focus on reference panel to enable zooming.""" self.ref.SetFocus() + self.RedrawRef() def OnRefLeaveWindow(self, event): """Return focus to main GUI.""" From 44cce822ad25eb51697c7d9275060162b85fb179 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Tue, 24 Apr 2012 14:27:58 -0400 Subject: [PATCH 12/26] Improved ViconMarkerBroadcaster (does not depend on DEASL) and made standalone listener in python for it. --- .../NewRegionEditor/regionEditor.py | 793 ++++++++++++++++-- .../ViconMarkerBroadcaster/MarkerStream.cs | 1 - .../ViconMarkerBroadcaster.csproj | 6 - .../ViconMarkerBroadcaster.sln | 42 - .../ViconMarkerBroadcaster.suo | Bin 35328 -> 0 bytes .../ViconMarkerListener.py | 82 ++ .../ViconMarkerBroadcaster/bin/Debug/Core.dll | Bin 273920 -> 0 bytes .../ViconMarkerBroadcaster/bin/Debug/Core.pdb | Bin 837120 -> 0 bytes .../bin/Debug/ICSharpCode.SharpZipLib.dll | Bin 192512 -> 0 bytes .../bin/Debug/Tao.OpenGl.dll | Bin 933888 -> 0 bytes .../bin/Debug/Tao.Platform.Windows.dll | Bin 86016 -> 0 bytes .../bin/Debug/ViconDataStreamSDK_CPP.dll | Bin 397312 -> 0 bytes .../bin/Debug/ViconDataStreamSDK_DotNET.dll | Bin 184320 -> 0 bytes .../bin/Debug/ViconMarkerBroadcaster.exe | Bin 7680 -> 0 bytes .../Debug/ViconMarkerBroadcaster.exe.config | 8 - .../bin/Debug/ViconMarkerBroadcaster.pdb | Bin 13824 -> 0 bytes .../Debug/ViconMarkerBroadcaster.vshost.exe | Bin 11600 -> 0 bytes .../ViconMarkerBroadcaster.vshost.exe.config | 8 - ...ViconMarkerBroadcaster.vshost.exe.manifest | 11 - .../bin/Release/ViconDataStreamSDK_DotNET.dll | Bin 184320 -> 0 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 6003 -> 0 bytes .../x86/Debug/ResolveAssemblyReference.cache | Bin 31482 -> 0 bytes ...kerBroadcaster.csproj.FileListAbsolute.txt | 36 - .../obj/x86/Debug/ViconMarkerBroadcaster.exe | Bin 7680 -> 0 bytes .../obj/x86/Debug/ViconMarkerBroadcaster.pdb | Bin 13824 -> 0 bytes .../ViconMarkerBroadcaster/readme.txt | 12 + src/lib/regions.py | 1 - src/regionEditor.py | 83 +- 28 files changed, 874 insertions(+), 209 deletions(-) delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.sln delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.suo create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerListener.py delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.dll delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.pdb delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ICSharpCode.SharpZipLib.dll delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.OpenGl.dll delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.Platform.Windows.dll delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconDataStreamSDK_CPP.dll delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconDataStreamSDK_DotNET.dll delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe.config delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.pdb delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.config delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.manifest delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Release/ViconDataStreamSDK_DotNET.dll delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ResolveAssemblyReference.cache delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.csproj.FileListAbsolute.txt delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.exe delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.pdb create mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/readme.txt diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py index b48645e0..b67cfe2a 100644 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py @@ -7,6 +7,7 @@ import collections import time import math +import numpy import wx import threading import socket @@ -17,6 +18,7 @@ import winsound import pyttsx import lib.fileMethods as fileMethods +import lib._transformations as _transformations # begin wxGlade: extracode # end wxGlade @@ -83,6 +85,7 @@ def __init__(self, *args, **kwds): self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Rect.") self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Length") + self.buttonAutobound = wx.Button(self.sidebar, -1, "Boundary") self.toggleFeedback = wx.ToggleButton(self.sidebar, -1, "Feedback") self.buttonCal = wx.Button(self.sidebar, -1, "Calibrate") self.canvas = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) @@ -113,6 +116,7 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) + self.Bind(wx.EVT_BUTTON, self.OnButtonAutobound, self.buttonAutobound) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFeedback, self.toggleFeedback) self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) # end wxGlade @@ -176,6 +180,8 @@ def __init__(self, *args, **kwds): self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick self.justDoubleClicked = False # Indicating double-click event self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) + # TODO: Make tolerance a parameter on pixels only + # Calculate "same point" with scale later self.selectedRegions = [] # List of currently selected regions # Set up for undo/redo capabilities @@ -185,7 +191,8 @@ def __init__(self, *args, **kwds): self.redoActions = collections.deque() # Add paint event handler to draw on the canvas - self.Bind(wx.EVT_PAINT, self.OnCanvasPaint, self.canvas) + # TODO: Fix problems here + #self.canvas.Bind(wx.EVT_PAINT, self.OnCanvasPaint) # Create Vicon listener self.markerPoses = [] # Marker positions to be drawn @@ -207,9 +214,10 @@ def __set_properties(self): self.toggleSquare.SetMinSize((50, 50)) self.togglePoly.SetMinSize((50, 50)) self.toggleDim.SetMinSize((50, 50)) + self.buttonAutobound.SetMinSize((50, 50)) self.toggleFeedback.SetMinSize((50, 50)) self.buttonCal.SetMinSize((50, 50)) - self.sidebar.SetMinSize((150, 400)) + self.sidebar.SetMinSize((120, 400)) self.canvas.SetMinSize((800, 400)) self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255)) # end wxGlade @@ -223,6 +231,7 @@ def __do_layout(self): grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonAutobound, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.toggleFeedback, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.buttonCal, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) self.sidebar.SetSizer(grid_sizer_1) @@ -288,9 +297,8 @@ def OnToggleFeedback(self, event): # wxGlade: regionEditor. self.dlgFeedback.OnClose(None) def OnButtonCal(self, event): # wxGlade: regionEditor. - # TODO - print "Calibration not yet implemented" self.ResetMapToggles() + calibGUI = CalibrationFrame(self) def OnMenuNew(self, event): # wxGlade: regionEditor. print "Event handler `OnMenuNew' not implemented" @@ -851,6 +859,7 @@ def OnKeyDown(self, event): def OnEnterWindow(self, event): """Set the focus to the canvas to enable zooming.""" self.canvas.SetFocus() + self.RedrawCanvas() def OnLeaveWindow(self, event): """Unset the focus from the canvas to disable zooming.""" @@ -860,7 +869,10 @@ def OnCanvasPaint(self, event): """Redraw the contents of the canvas panel.""" # Set up to draw dc = wx.PaintDC(self.canvas) + + # Redraw self.RedrawCanvas(dc) + event.Skip() def RedrawCanvas(self, dc=None): """Redraw the contents of the canvas panel. @@ -873,10 +885,10 @@ def RedrawCanvas(self, dc=None): # Create device context if not created if not dc: - windc = wx.WindowDC(self.canvas) - dc = wx.GCDC(windc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() + dc = wx.WindowDC(self.canvas) + dc = wx.GCDC(dc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() # Draw grid background self.DrawGrid(dc) @@ -910,6 +922,13 @@ def RedrawCanvas(self, dc=None): dc.EndDrawing() + def RedrawVicon(self): + """Redraw the contents of the canvas panel quickly, only worrying about + updating the marker positions and currently being created regions. + """ + # TODO: Save and use image of map to increase speed + self.RedrawCanvas() + def DrawGrid(self, dc=None): """Draw the axes and grid on the map canvas. @@ -953,11 +972,14 @@ def DrawMarkers(self, poses, dc=None): dc = wx.GCDC(windc) self.canvas.PrepareDC(dc) dc.BeginDrawing() - + + # Set up brush + #dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) + # Draw each marker for pose in poses: posePix = self.Map2Pix(pose) - dc.DrawCircle(posePix[0], posePix[1], 5) + dc.DrawCircle(posePix[0], posePix[1], 4) if isNewDC: dc.EndDrawing() @@ -1001,12 +1023,17 @@ def DrawRegion(self, region, dc=None, isBoundary=False): dc.BeginDrawing() # Set brush to region color - innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ - region.color.Blue(), 128) - if not isBoundary: - dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - else: + # Set brush to region color + if isBoundary: dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + elif region.isObstacle: + obstColor = wx.Colour(region.color.Red() / 10, \ + region.color.Green() / 10, region.color.Blue() / 10, 128) + dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) + else: + innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ + region.color.Blue(), 128) + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) dc.SetTextForeground(wx.BLACK) dc.SetBackgroundMode(wx.TRANSPARENT) @@ -1321,6 +1348,21 @@ def RecalcAdjacency(self, iReg, iRegStart=0): def Autoboundary(self): """Automatically create region representing the boundary of the map.""" + if self.regions: + minx, maxx, miny, maxy = self.GetMapBoundaries() + # Create region + points = [Point(minx, maxy), Point(maxx, maxy), \ + Point(maxx, miny), Point(minx, miny)] + self.boundary = Region(points, 'boundary') + else: + print "No regions defined, so no boundary created." + + def GetMapBoundaries(self): + """Find the minimum and maximum coordinates of all regions on map. + + returns None if no regions defined + returns (minX, maxX, minY, maxY) otherwise + """ # Check that there are regions first if self.regions: # Find extrema of map @@ -1335,10 +1377,9 @@ def Autoboundary(self): miny = min(miny, pt.y) maxy = max(maxy, pt.y) - # Create region - points = [Point(minx, maxy), Point(maxx, maxy), \ - Point(maxx, miny), Point(minx, miny)] - self.boundary = Region(points, 'boundary') + return minx, maxx, miny, maxy + else: + return None def AddToUndo(self, action): """Add specified action to the undo queue. @@ -1605,6 +1646,10 @@ def ProjPtOnLine(self, pt, p0, p1): v = pt - p0 # Vector to point to project u = (v.Dot(s) / s.Dot(s)) * s # Projected vector return p0 + u # Map back to global coordinates + def OnButtonAutobound(self, event): # wxGlade: regionEditor. + print "Event handler `OnButtonAutobound' not implemented" + event.Skip() + # end of class RegionEditor @@ -1772,6 +1817,8 @@ def __init__(self, *args, **kwds): # Menu Bar self.calibFrame_menubar = wx.MenuBar() self.filemenu = wx.Menu() + self.menuReset = wx.MenuItem(self.filemenu, wx.NewId(), "Reset", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuReset) self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuSave) self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) @@ -1782,9 +1829,10 @@ def __init__(self, *args, **kwds): self.editmenu.AppendItem(self.menuUndo) self.menuRedo = wx.MenuItem(self.editmenu, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) self.editmenu.AppendItem(self.menuRedo) + self.editmenu.AppendSeparator() self.menuSelectAll = wx.MenuItem(self.editmenu, wx.NewId(), "Select All", "", wx.ITEM_NORMAL) self.editmenu.AppendItem(self.menuSelectAll) - self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All", "", wx.ITEM_NORMAL) + self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All Points", "", wx.ITEM_NORMAL) self.editmenu.AppendItem(self.menuClearAll) self.calibFrame_menubar.Append(self.editmenu, "Edit") self.toolsmenu = wx.Menu() @@ -1792,8 +1840,11 @@ def __init__(self, *args, **kwds): self.toolsmenu.AppendItem(self.menuShowMarkers) self.menuClearMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) self.toolsmenu.AppendItem(self.menuClearMarkers) + self.toolsmenu.AppendSeparator() self.menuLoadImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Load Image", "", wx.ITEM_NORMAL) self.toolsmenu.AppendItem(self.menuLoadImage) + self.menuDimen = wx.MenuItem(self.toolsmenu, wx.NewId(), "Dimension Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuDimen) self.menuClearImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Image", "", wx.ITEM_NORMAL) self.toolsmenu.AppendItem(self.menuClearImage) self.calibFrame_menubar.Append(self.toolsmenu, "Tools") @@ -1810,12 +1861,17 @@ def __init__(self, *args, **kwds): self.buttonImage = wx.Button(self.sidebar, -1, "Image") self.toggleAddPoint = wx.ToggleButton(self.sidebar, -1, "Point +") self.toggleDeletePoint = wx.ToggleButton(self.sidebar, -1, "Point -") + self.textEnterPointX = wx.TextCtrl(self.sidebar, -1, "") + self.textEnterPointY = wx.TextCtrl(self.sidebar, -1, "") + self.buttonEnterPoint = wx.Button(self.sidebar, wx.ID_OK, "OK") + self.toggleDimen = wx.ToggleButton(self.sidebar, -1, "Dimen.") self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - self.reference = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + self.ref = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) self.__set_properties() self.__do_layout() + self.Bind(wx.EVT_MENU, self.OnMenuReset, self.menuReset) self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) @@ -1825,6 +1881,7 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_MENU, self.OnMenuShowMarkers, self.menuShowMarkers) self.Bind(wx.EVT_MENU, self.OnMenuClearMarkers, self.menuClearMarkers) self.Bind(wx.EVT_MENU, self.OnMenuLoadImage, self.menuLoadImage) + self.Bind(wx.EVT_MENU, self.OnMenuDimen, self.menuDimen) self.Bind(wx.EVT_MENU, self.OnMenuClearImage, self.menuClearImage) self.Bind(wx.EVT_MENU, self.OnMenuHowTo, self.menuHowTo) self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) @@ -1832,46 +1889,205 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleAddPoint, self.toggleAddPoint) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) + self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDimen, self.toggleDimen) # end wxGlade - + + # Check that regionEditor object was passed in correctly + if len(args) > 0 and isinstance(args[0], regionEditor): + self.parent = args[0] + if not self.parent.regions: + print "No regions defined. Exiting calibration." + self.Destroy() + else: + print "No regionEditor object passed in. Exiting calibration." + self.Destroy() + + # Bind mouse events + self.map.Bind(wx.EVT_LEFT_DOWN, self.OnMapMouseLeftDown, self.map) + self.map.Bind(wx.EVT_LEFT_UP, self.OnMapMouseLeftUp, self.map) + self.map.Bind(wx.EVT_MOUSEWHEEL, self.OnMapMouseWheel, self.map) + self.map.Bind(wx.EVT_ENTER_WINDOW, self.OnMapEnterWindow, self.map) + self.map.Bind(wx.EVT_LEAVE_WINDOW, self.OnMapLeaveWindow, self.map) + self.ref.Bind(wx.EVT_LEFT_DOWN, self.OnRefMouseLeftDown, self.ref) + self.ref.Bind(wx.EVT_LEFT_UP, self.OnRefMouseLeftUp, self.ref) + self.ref.Bind(wx.EVT_MOUSEWHEEL, self.OnRefMouseWheel, self.ref) + self.ref.Bind(wx.EVT_ENTER_WINDOW, self.OnRefEnterWindow, self.ref) + self.ref.Bind(wx.EVT_LEAVE_WINDOW, self.OnRefLeaveWindow, self.ref) + + # Bind keyboard events + self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) + self.map.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.map) + self.ref.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.ref) + + # Add close event handler to cleanup before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Determine mapping of the map panel to the field + # Avoid difficulties by having same scale for x and y + mapLen = self.map.GetSize() # Initial size of map panel (pixels) + # Initial range of field (xmin, xmax, ymin, ymax) + xmin, xmax, ymin, ymax = self.parent.GetMapBoundaries() + # pose = pixPose * scale + offset + # Note: y-pixels and y-pose have opposite directions + xScale = (xmax - xmin) / float(mapLen[0]) + yScale = (ymax - ymin) / float(mapLen[1]) + maxScale = max(xScale, yScale) + xOffset = xmin+(float(mapLen[0]) * maxScale - (xmax - xmin)) / 2 + yOffset = ymax+(float(mapLen[1]) * maxScale - (ymax - ymin)) / 2 + self.mapScale = Point(maxScale, -maxScale) + self.mapOffset = Point(xOffset, yOffset) + # Determine initial mapping of the reference panel to the field + # Initially defines a 1:1 mapping (at least scale/offset-wise) to map + refLen = self.ref.GetSize() # Initial size of reference panel (pixels) + xScale = (xmax - xmin) / float(refLen[0]) + yScale = (ymax - ymin) / float(refLen[1]) + maxScale = max(xScale, yScale) + xOffset = xmin+(float(refLen[0]) * maxScale - (xmax - xmin)) / 2 + yOffset = ymax+(float(refLen[1]) * maxScale - (ymax - ymin)) / 2 + self.refScale = Point(maxScale, -maxScale) + self.refOffset = Point(xOffset, yOffset) + + # Calibration-related parameters + self.calibPoints = [] # List of lists of Points + # matching map to reference positions + # [[mapPt1, refPt1], [mapPt2, refPt2], ...] + self.newCalibPt = [None, None] # List of two points + # for creating new calibration points + # [mapNewPt, refNewPt] + + # Mouse-related parameters + self.mapLeftClickPt = Point(0.0, 0.0) + self.refLeftClickPt = Point(0.0, 0.0) + self.selectedPoints = [] # Points that have been selected by mouse + tolerance = 5.0 # Pixel tolerance to consider "same point" + self.mapTolerance = tolerance * self.mapScale.x + self.refTolerance = tolerance * self.refScale.x + + # Set up for undo/redo capabilities + # TODO: Disable self.menuUndo and self.menuRedo + self.unredoBufLen = 50 + self.undoActions = collections.deque() + self.redoActions = collections.deque() + + # Create Vicon listener + self.markerPoses = [] # Marker positions to be drawn + self.viconListener = ViconMarkerListener(self) + + # Display the GUI window and set up the map canvas + self.Show() + self.RedrawMap() + + def __set_properties(self): # begin wxGlade: CalibrationFrame.__set_properties self.SetTitle("Map Calibration") + self.SetBackgroundColour(wx.Colour(240, 240, 240)) self.toggleVicon.SetMinSize((50, 50)) self.buttonImage.SetMinSize((50, 50)) self.toggleAddPoint.SetMinSize((50, 50)) self.toggleDeletePoint.SetMinSize((50, 50)) - self.sidebar.SetMinSize((100, 300)) - self.map.SetMinSize((320, 320)) + self.textEnterPointX.SetMinSize((40, 25)) + self.textEnterPointX.SetToolTipString("x") + self.textEnterPointY.SetMinSize((40, 25)) + self.textEnterPointY.SetToolTipString("y") + self.buttonEnterPoint.SetMinSize((25, 25)) + self.toggleDimen.SetMinSize((50, 50)) + self.sidebar.SetMinSize((110, 245)) + self.map.SetMinSize((600, 300)) self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) - self.reference.SetMinSize((320, 320)) - self.reference.SetBackgroundColour(wx.Colour(255, 255, 255)) + self.ref.SetMinSize((600, 300)) + self.ref.SetBackgroundColour(wx.Colour(255, 255, 255)) # end wxGlade def __do_layout(self): # begin wxGlade: CalibrationFrame.__do_layout sizer_6 = wx.BoxSizer(wx.HORIZONTAL) - grid_sizer_2 = wx.GridSizer(2, 2, 5, 5) - grid_sizer_2.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_2.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_2.Add(self.toggleAddPoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_2.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - self.sidebar.SetSizer(grid_sizer_2) - sizer_6.Add(self.sidebar, 0, wx.EXPAND, 0) - sizer_6.Add(self.map, 1, wx.RIGHT | wx.EXPAND, 3) - sizer_6.Add(self.reference, 1, wx.LEFT | wx.EXPAND, 3) + sizer_7 = wx.BoxSizer(wx.VERTICAL) + sizer_8 = wx.BoxSizer(wx.VERTICAL) + sizer_11 = wx.BoxSizer(wx.HORIZONTAL) + sizer_10 = wx.BoxSizer(wx.HORIZONTAL) + sizer_9 = wx.BoxSizer(wx.HORIZONTAL) + sizer_9.Add(self.toggleVicon, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_9.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_9, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_10.Add(self.toggleAddPoint, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_10.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_10, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_11.Add(self.textEnterPointX, 0, wx.ALIGN_CENTER_VERTICAL, 0) + sizer_11.Add(self.textEnterPointY, 0, wx.ALIGN_CENTER_VERTICAL, 0) + sizer_11.Add(self.buttonEnterPoint, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_11, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_8.Add(self.toggleDimen, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5) + self.sidebar.SetSizer(sizer_8) + sizer_6.Add(self.sidebar, 0, 0, 0) + sizer_7.Add(self.map, 1, wx.BOTTOM | wx.EXPAND, 3) + sizer_7.Add(self.ref, 1, wx.TOP | wx.EXPAND, 3) + sizer_6.Add(sizer_7, 1, wx.EXPAND, 0) self.SetSizer(sizer_6) sizer_6.Fit(self) self.Layout() # end wxGlade - + + def OnClose(self, event): + """Perform cleanup tasks and close the application.""" + self.viconListener.stop() + self.Destroy() + + def OnMenuReset(self, event): # wxGlade: CalibrationFrame. + """Clear all calibration points, background images, and markers.""" + self.OnMenuClearMarkers(None) + self.OnMenuClearImage(None) + self.OnMenuClearAll(None) + def OnMenuSave(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuSave' not implemented!" - event.Skip() + """Performs calibration on regions using calibration points to + calculate a transformation matrix that includes rotation. Moves all the + region points as appropriate, then close this GUI.""" + # Check that sufficient number of calibration points have been defined + if len(self.calibPoints) < 3: + msg = "Calibration requires that at least 3 calibration " + \ + "points are defined. Please define more points." + notifyDialog = wx.MessageDialog(self, msg, \ + style=wx.OK|wx.ICON_EXCLAMATION|wx.STAY_ON_TOP) + notifyDialog.ShowModal() + notifyDialog.Destroy() + return + + # Put calibration points into desired format + mapPts = numpy.mat([self.calibPoints[0][0].x, \ + self.calibPoints[0][0].y]).T + regPts = numpy.mat([self.calibPoints[0][1].x, \ + self.calibPoints[0][1].y]).T + for ptPair in self.calibPoints: + mapPts = numpy.hstack([mapPts, \ + numpy.mat([ptPair[0].x, ptPair[0].y]).T]) + regPts = numpy.hstack([regPts, \ + numpy.mat([ptPair[1].x, ptPair[1].y]).T]) + + # Get tranformation matrix such that + # regPt = T * mapPt + T = _transformations.affine_matrix_from_points(mapPts, regPts) + + # Apply transformation to all region points + # TODO: Add this to undo in regionEditor somehow + for reg in self.parent.regions: + for pt in reg.verts: + ptMat = numpy.mat([pt.x, pt.y, 1.0]).T + newPtMat = T * ptMat + pt.Set(float(newPtMat[0]), float(newPtMat[1])) + if self.parent.boundary: + for pt in self.parent.boundary.verts: + ptMat = numpy.mat([pt.x, pt.y, 1.0]).T + newPtMat = T * ptMat + pt.Set(float(newPtMat[0]), float(newPtMat[1])) + self.parent.RedrawCanvas() + + # Quit calibration + self.OnClose(None) def OnMenuExit(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuExit' not implemented!" - event.Skip() + self.OnClose(None) def OnMenuUndo(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnMenuUndo' not implemented!" @@ -1890,16 +2106,33 @@ def OnMenuClearAll(self, event): # wxGlade: CalibrationFrame. event.Skip() def OnMenuShowMarkers(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuShowMarkers' not implemented!" - event.Skip() + # Switch Vicon streaming on or off based on state of menu checkbox + if self.menuShowMarkers.IsChecked(): + self.toggleVicon.SetValue(True) + self.viconListener.start() + else: + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + self.toggleVicon.SetValue(False) def OnMenuClearMarkers(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuClearMarkers' not implemented!" - event.Skip() + if self.menuShowMarkers.IsChecked(): + self.toggleVicon.SetValue(False) + self.menuShowMarkers.Check(False) + self.viconListener.stop() + self.viconListener = ViconMarkerListener(self) + time.sleep(0.1) + self.markerPoses = [] + self.RedrawVicon() def OnMenuLoadImage(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnMenuLoadImage' not implemented!" event.Skip() + + def OnMenuDimen(self, event): # wxGlade: CalibrationFrame. + print "OnMenuDimen" + event.Skip() def OnMenuClearImage(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnMenuClearImage' not implemented!" @@ -1914,20 +2147,474 @@ def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. event.Skip() def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnToggleVicon' not implemented!" - event.Skip() + # Switch Vicon streaming on or off based on state of toggle button + if self.toggleVicon.GetValue(): + self.menuShowMarkers.Check(True) + self.viconListener.start() + else: + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + self.menuShowMarkers.Check(False) def OnButtonImage(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnButtonImage' not implemented!" event.Skip() - + def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnToggleAddPoint' not implemented!" + self.ResetToggles(toggleKeep=self.toggleAddPoint) + # TODO: When menu items are added for add point, flip on here + + def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. + self.ResetToggles(toggleKeep=self.toggleDeletePoint) + # TODO: When menu items are added for delete point, flip on here + + def OnButtonEnterPoint(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnButtonEnterPoint' not implemented" event.Skip() - def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnToggleDeletePoint' not implemented!" + def OnToggleDimen(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnToggleDimen' not implemented" event.Skip() + + def OnMapMouseLeftDown(self, event): + """Save downclick point on map for future use.""" + self.mapLeftClickPt, iCalibPt, iReg = \ + self.SnapPointMap(self.MapPix2M(event.GetPosition())) + + def OnMapMouseLeftUp(self, event): + """React to the finalization of the left click on the map.""" + ptPix = event.GetPosition() + pt, iCalibPt, iReg = \ + self.SnapPointMap(self.MapPix2M(ptPix)) + + # Creating a calibration point + if self.toggleAddPoint.GetValue() and iCalibPt == -1: + # First point clicked for adding new point + if not self.newCalibPt[1]: + self.newCalibPt[0] = pt + self.RedrawMap() + + # Finalizing calibration point (second point clicked) + else: + self.calibPoints.append([pt, self.newCalibPt[1]]) + self.newCalibPt = [None, None] + self.Redraw() + + # Removing a calibration point + elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: + self.calibPoints.pop(iCalibPt) + self.Redraw() + + # Panning the map view + elif pt.Dist(self.mapLeftClickPt) > self.mapTolerance: + downClickPix = self.MapM2Pix(self.mapLeftClickPt) + self.mapOffset = Point(self.mapScale.x * \ + (downClickPix[0] - ptPix[0]) + self.mapOffset.x, \ + self.mapScale.y * (downClickPix[1] - ptPix[1]) + \ + self.mapOffset.y) + self.RedrawMap() + + def OnMapMouseWheel(self, event): + """Zoom on the map.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.mapOffset = Point(float(ptPix[0]) * self.mapScale.x * \ + (1 - scaler) + self.mapOffset.x, float(ptPix[1]) * \ + self.mapScale.y * (1 - scaler) + self.mapOffset.y) + self.mapScale = self.mapScale * scaler + self.RedrawMap() + + def OnMapEnterWindow(self, event): + """Set focus on map to enable zooming.""" + self.map.SetFocus() + self.RedrawMap() + + def OnMapLeaveWindow(self, event): + """Return focus to main GUI.""" + self.SetFocus() + + def OnRefMouseLeftDown(self, event): + """Save downclick point on reference panel for future use.""" + self.refLeftClickPt, iCalibPt, iReg = \ + self.SnapPointMap(self.RefPix2M(event.GetPosition())) + + def OnRefMouseLeftUp(self, event): + """React to the finalization of the left click on the map.""" + ptPix = event.GetPosition() + pt, iCalibPt = \ + self.SnapPointRef(self.RefPix2M(ptPix)) + + # Creating a calibration point + if self.toggleAddPoint.GetValue() and iCalibPt == -1: + # First point clicked for adding new point + if not self.newCalibPt[0]: + self.newCalibPt[1] = pt + self.RedrawMap() + + # Finalizing calibration point (second point clicked) + else: + self.calibPoints.append([self.newCalibPt[0], pt]) + self.newCalibPt = [None, None] + self.Redraw() + + # Removing a calibration point + elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: + self.calibPoints.pop(iCalibPt) + self.Redraw() + + # Panning the reference view + elif pt.Dist(self.refLeftClickPt) > self.refTolerance: + downClickPix = self.RefM2Pix(self.refLeftClickPt) + self.refOffset = Point(self.refScale.x * \ + (downClickPix[0] - ptPix[0]) + self.refOffset.x, \ + self.refScale.y * (downClickPix[1] - ptPix[1]) + \ + self.refOffset.y) + self.RedrawRef() + + def OnRefMouseWheel(self, event): + """Zoom on the reference panel.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.refOffset = Point(float(ptPix[0]) * self.refScale.x * \ + (1 - scaler) + self.refOffset.x, float(ptPix[1]) * \ + self.refScale.y * (1 - scaler) + self.refOffset.y) + self.refScale = self.refScale * scaler + self.RedrawRef() + + def OnRefEnterWindow(self, event): + """Set focus on reference panel to enable zooming.""" + self.ref.SetFocus() + self.RedrawRef() + + def OnRefLeaveWindow(self, event): + """Return focus to main GUI.""" + self.SetFocus() + + def OnKeyDown(self, event): + print "OnKeyDown" + event.Skip() + + def Redraw(self): + """Redraw map and reference panels.""" + self.RedrawMap() + self.RedrawRef() + + def RedrawMap(self): + """Redraw the map panel.""" + # Clear map + self.map.ClearBackground() + + # Create device context + windc = wx.WindowDC(self.map) + dc = wx.GCDC(windc) + self.map.PrepareDC(dc) + dc.BeginDrawing() + + # Redraw boundary region + if self.parent.boundary: + self.DrawRegion(self.boundary, dc=dc, boundary=True) + + # Redraw all regions + for region in self.parent.regions: + self.DrawRegion(region, dc=dc) + + # Draw calibration points + for iPtPair, ptPair in enumerate(self.calibPoints): + self.DrawCalibPoint(self.MapM2Pix(ptPair[0]), str(iPtPair), dc) + + # Draw single point from currently being made calibration point + if self.newCalibPt[0]: + self.DrawCalibPoint(self.MapM2Pix(self.newCalibPt[0]), "", dc) + + dc.EndDrawing() + + def RedrawRef(self): + """Redraw the reference panel.""" + # Clear ref + self.ref.ClearBackground() + + # Create device context + windc = wx.WindowDC(self.ref) + dc = wx.GCDC(windc) + self.ref.PrepareDC(dc) + dc.BeginDrawing() + + # TODO: Draw background image + + # Draw calibration points + for iPtPair, ptPair in enumerate(self.calibPoints): + self.DrawCalibPoint(self.RefM2Pix(ptPair[1]), str(iPtPair), dc) + + # Draw single point from currently being made calibration point + if self.newCalibPt[1]: + self.DrawCalibPoint(self.RefM2Pix(self.newCalibPt[1]), "", dc) + + # Draw markers + dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) + dc.SetPen(wx.Pen(wx.Colour(0, 0, 0, 125), 1, wx.SOLID)) + for pt in self.markerPoses: + ptPix = self.RefM2Pix(pt) + dc.DrawCircle(ptPix[0], ptPix[1], 4) + + dc.EndDrawing() + + def RedrawVicon(self): + # TODO: Redraw saved image of background since it is faster and + # vicon needs to be redrawn at a high frequency + self.RedrawRef() + + def DrawRegion(self, region, dc, isBoundary=False): + """Draw a single region. + + region - Instance of Region class, contains information about the region. + dc - Device context used for drawing on the panel. + isBoundary - Boolean, true if drawing the boundary region. + """ + # Set brush to region color + if isBoundary: + dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + elif region.isObstacle: + obstColor = wx.Colour(region.color.Red() / 10, \ + region.color.Green() / 10, region.color.Blue() / 10, 128) + dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) + else: + innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ + region.color.Blue(), 128) + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) + dc.SetTextForeground(wx.BLACK) + dc.SetBackgroundMode(wx.TRANSPARENT) + dc.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) + + # Set up label + if region.isObstacle: + labelText = "(%s)" % region.name + else: + labelText = region.name + labelWidth, labelHeight = dc.GetTextExtent(labelText) + + # Draw region + vertsPix = [] + xLabelPix = 0 + yLabelPix = 0 + for vert in region.verts: + vertPix = self.MapM2Pix(vert) + vertsPix.append(vertPix) + if not isBoundary: # Put label in center + xLabelPix += vertPix[0] + yLabelPix += vertPix[1] + else: # Put label in lower right corner + xLabelPix = max(xLabelPix, vertPix[0]) + yLabelPix = max(yLabelPix, vertPix[1]) + dc.DrawPolygon(vertsPix) + if isBoundary: + xLabelPix = xLabelPix / len(region.verts) - labelWidth + yLabelPix = yLabelPix / len(region.verts) - labelHeight + else: + xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 + yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 + + # Draw label + dc.SetBrush(wx.Brush(region.color, wx.SOLID)) + dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ + labelWidth + 10, labelHeight + 6, 3) + dc.DrawText(labelText, xLabelPix, yLabelPix) + + def DrawCalibPoint(self, ptPix, label, dc): + """Draw a single calibration point. + + ptPix - Point to draw with coordinates in pixels + label - String to label point with - usually point index + If label is empty, point will be drawn in a differnt color + dc - Device context that allows for drawing + """ + # Draw circle + radius = 5 + if label: + innerColor = wx.RED + else: + innerColor = wx.GREEN + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) + dc.SetPen(wx.Pen(wx.BLACK, 1, wx.SOLID)) + dc.DrawCircle(ptPix[0], ptPix[1], radius) + + # Draw label + if label: + dc.SetTextForeground(wx.BLACK) + dc.SetBackgroundMode(wx.TRANSPARENT) + dc.SetFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) + labelWidth, labelHeight = dc.GetTextExtent(label) + xLabelPix = ptPix[0] - radius + yLabelPix = ptPix[1] - radius + dc.DrawText(label, xLabelPix, yLabelPix) + + def ResetToggles(self, toggleKeep=None): + """Unpress toggle buttons except that specified. Reset calibration + point creation. Redraw the panels. + + toggleKeep - Toggle button to retain the value of + """ + # Reset toggles + valueKeep = toggleKeep.GetValue() + self.toggleAddPoint.SetValue(False) + self.toggleDeletePoint.SetValue(False) + self.toggleDimen.SetValue(False) + toggleKeep.SetValue(valueKeep) + + # Reset partial calibration point creation + self.newCalibPt = [None, None] + + # Redraw the map and reference panels + self.Redraw() + + def SnapPointMap(self, pt): + """Snap the point to the closest calibration point, region vertex, or + region edge from the map panel. + + pt - Point to snap in absolute coordinates + returns - (snappedPt, idxCalibPt, idxReg) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + idxReg - Index of region snapped-to (-1 if not snapped to region) + """ + # Check calibration points first + snapped = False + pt, idxCalibPt, snapped = \ + self.SnapCalibPoints(pt, 0, snapped=snapped) + + # Check regions next + pt, idxReg, idxRPoint, idxREdge, snapped = \ + self.parent.SnapRegions(pt, snapped=snapped) + + return pt, idxCalibPt, idxReg + + def SnapPointRef(self, pt): + """Snap the point to the closest calibration point or marker from the + reference panel. + + pt - Point to snap in absolute coordinates + returns - (snappedPt, iCalibPt, iReg) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + """ + # Check calibration points first + snapped = False + pt, idxCalibPt, snapped = \ + self.SnapCalibPoints(pt, 1, snapped=snapped) + + # Check marker points next + pt, snapped = self.SnapVicon(pt, snapped=snapped) + + return pt, idxCalibPt + + def SnapCalibPoints(self, pt, idxPanel, snapped=False): + """Snap the point to the first sufficiently close calibration point in + the specified panel. + + pt - Point to be snapped in absolute coordinates + idxPanel - 0 indicating map panel, 1 indicating reference panel + snapped - Boolean, whether point has been snapped already + If snapped was true in input, then function will immediately + return, setting the same value to the output snapped + returns - (snappedPt, idxCalibPt, snapped) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + snapped - Boolean indicating if the point has ever been snapped + """ + # Set tolerance in absolute coordinates + if idxPanel == 0: + tol = self.mapTolerance + else: + tol = self.refTolerance + + # Check through all calibration points until snapping + idxCalibPt = -1 + iCPt = len(self.calibPoints) - 1 + while not snapped and iCPt > -1: + if pt.Dist(self.calibPoints[iCPt][idxPanel]) < tol: + pt = self.calibPoints[iCPt][idxPanel] + idxCalibPt = iCPt + snapped = True + iCPt -= 1 + + return pt, idxCalibPt, snapped + + def SnapVicon(self, pt, snapped=False): + """Snap the given point to any sufficiently close marker point. + + pt - Point to be snapped, in absolute coordinates + snapped - Boolean, indicates if point has already been snapped + If snapped was true in input, then function will immediately + return, setting the same value to the output snapped + returns - (snappedPt, snapped) + snappedPt - Point after snapping + snapped - Boolean, indicates if point has ever been snapped + """ + # Check all points until snapped + iVPt = 0 + while not snapped and iVPt < len(self.markerPoses): + if pt.Dist(self.markerPoses[iVPt]) < self.refTolerance: + pt = self.markerPoses[iVPt] + snapped = True + iVPt += 1 + + return pt, snapped + + def MapM2Pix(self, pose): + """Convert from absolute (meter) coordinates to pixel coordinates for + the map panel. + + pose - Point, absolute coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.mapOffset.x) / self.mapScale.x) + row = int((pose.y - self.mapOffset.y) / self.mapScale.y) + return (col, row) + + def MapPix2M(self, pixPose): + """Convert from pixel coordinates to absolute (meter) coordinates for + the map panel. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, absolute coordinates of point + """ + x = float(pixPose[0]) * self.mapScale.x + self.mapOffset.x + y = float(pixPose[1]) * self.mapScale.y + self.mapOffset.y + return Point(x, y) + + def RefM2Pix(self, pose): + """Convert from absolute (meter) coordinates to pixel coordinates for + the reference panel. + + pose - Point, absolute coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.refOffset.x) / self.refScale.x) + row = int((pose.y - self.refOffset.y) / self.refScale.y) + return (col, row) + + def RefPix2M(self, pixPose): + """Convert from pixel coordinates to absolute (meter) coordinates for + the reference panel. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, absolute coordinates of point + """ + x = float(pixPose[0]) * self.refScale.x + self.refOffset.x + y = float(pixPose[1]) * self.refScale.y + self.refOffset.y + return Point(x, y) # end of class CalibrationFrame class Region: @@ -2124,7 +2811,7 @@ def __init__(self, parent): super(ViconMarkerListener, self).__init__() # Communication parameters - self.parent = parent # RegionEditor GUI + self.parent = parent # regionEditor or CalibrationFrame self.addr = ("0.0.0.0", 7500) self.bufsize = 65536 self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) @@ -2188,9 +2875,11 @@ def ProcessData(self, data): x, y = struct.unpack('dd', data[i:i+16]) poses.append(Point(x, y)) # Save and plot marker positions + # Both regionEditor GUI and CalibrationFrame GUI have + # markerPoses field and RedrawVicon method self.parent.markerPoses = poses self.UpdateMovingMarkers(poses) - self.parent.RedrawCanvas() # Force map redraw + self.parent.RedrawVicon() # Force map redraw def UpdateMovingMarkers(self, poses): """Note which markers are newly moving and update position of old diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/MarkerStream.cs b/src/RegionEditorFiles/ViconMarkerBroadcaster/MarkerStream.cs index 49b3a626..3c6333b8 100644 --- a/src/RegionEditorFiles/ViconMarkerBroadcaster/MarkerStream.cs +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/MarkerStream.cs @@ -6,7 +6,6 @@ using System.Net; using System.Net.Sockets; using System.Diagnostics; -using DEASL.Core.Mathematics; using ViconDataStreamSDK.DotNET; namespace ViconMarkerBroadcaster diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.csproj b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.csproj index 87e328e1..17d6f0f4 100644 --- a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.csproj +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.csproj @@ -50,12 +50,6 @@ - - - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4} - Core - - diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.sln b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.sln deleted file mode 100644 index 9d280113..00000000 --- a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.sln +++ /dev/null @@ -1,42 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ViconMarkerBroadcaster", "ViconMarkerBroadcaster.csproj", "{EB34323F-7ADB-45D9-97B5-BAFD12B78F84}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "..\..\..\..\..\DEASL\Core\Core.csproj", "{DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|x86 = Debug|x86 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|Any CPU.ActiveCfg = Debug|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|Mixed Platforms.ActiveCfg = Debug|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|Mixed Platforms.Build.0 = Debug|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|x86.ActiveCfg = Debug|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Debug|x86.Build.0 = Debug|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|Any CPU.ActiveCfg = Release|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|Mixed Platforms.ActiveCfg = Release|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|Mixed Platforms.Build.0 = Release|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|x86.ActiveCfg = Release|x86 - {EB34323F-7ADB-45D9-97B5-BAFD12B78F84}.Release|x86.Build.0 = Release|x86 - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Debug|x86.ActiveCfg = Debug|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|Any CPU.Build.0 = Release|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DF9C7845-B13A-4FFA-BD14-ABBFBD5B28D4}.Release|x86.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.suo b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerBroadcaster.suo deleted file mode 100644 index 78a9cf032aa56bf5019e8c00c35f23eb07f86cd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35328 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 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerListener.py b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerListener.py new file mode 100644 index 00000000..8483b7d7 --- /dev/null +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconMarkerListener.py @@ -0,0 +1,82 @@ +import time +import struct +import threading +import socket + +class ViconMarkerListener(threading.Thread): + def __init__(self, freq=20.0, ip="0.0.0.0", port=7500, parent=None): + """Create the a socket to receive Vicon data. + + freq - Update frequency in Hz. + ip - IP address to listen on. + Default is local computer. + port - Port to listen on. + Default matches ViconMarkerBroadcaster (C#) default + parent - Object that may be useful. Can change ProcessData method to + make it do something with this object when data is received. + """ + super(ViconMarkerListener, self).__init__() + + # Communication parameters + self.updateFreq = freq + self.addr = (ip, port) + self.bufsize = 65536 + self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.lock = threading.Lock() + self.close = threading.Event() + + # Container for marker positions + self.poses = [] # List of tuples [(x1, y1), (x2, y2), ...] + + # Creator of this object + self.parent = parent + + def run(self): + """Open the socket to start communication. Process messages.""" + # Open socket for communication + self.udpSock.bind(self.addr) + + # Receive communication until stopped + self.close.clear() + delay = 1.0 / self.updateFreq + while not self.close.isSet(): + self.lock.acquire() + data = self.udpSock.recv(self.bufsize) + self.lock.release() + self.ProcessData(data) + time.sleep(delay) + + # Close socket + self.udpSock.close() + + def stop(self): + """Close the socket to end UDP communication.""" + self.close.set() + + # Deserialize and save data + def ProcessData(self, data): + """Extract marker positions and keep them. + + data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] + """ + # Check for valid data (not null or incomplete) + if data and len(data)%16 == 0: + self.poses = [] + for i in range(0, len(data), 16): + x, y = struct.unpack('dd', data[i:i+16]) + self.poses.append((x, y)) + # If you want something to happen every time poses are recieved + # put that in here. You may need to pass in parameter parent. + +# Running by itself will just print out first 10 markers every second forever +if __name__ == "__main__": + vicon = ViconMarkerListener() + vicon.start() + j = 0 + while (1): + time.sleep(1) + print "Vicon Markers:" + for i in range(min(len(vicon.poses), 10)): + print "(%.3f, %.3f)" % vicon.poses[i] + print "" + vicon.stop() \ No newline at end of file diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.dll deleted file mode 100644 index da07d4ec0fb41b5b1f781f5111ec27234ac4d443..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273920 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±9YP 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 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.pdb b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Core.pdb deleted file mode 100644 index 0aac7e19af101cd7dcafeeed905c98e0057f19b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 837120 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 z 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

^kHejm^Bv-j<6Q0KzD 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�|E}~iBJT{unWB(}k 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 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.OpenGl.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.OpenGl.dll deleted file mode 100644 index 62b79fc5c9a406d022e1307eba0cc300e8e1100a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 933888 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⪻5Av&s`^y?+cLW4Sjwr=<{a#oB5dO9ckyM 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

    }AaL#n*ay*Z9&V^bV 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�>yfq+ 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 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe.config b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe.config deleted file mode 100644 index 108d3a0e..00000000 --- a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.exe.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.pdb b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.pdb deleted file mode 100644 index 11767b6dc35881514e3dafc8a1908b2da74f33c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13824 zcmeI2dvH`&9mh`|6hcUF!<*8~LZK~>ZW83xh`h21(rzHI;UT1kCAon$o87Rxyo$89 zR9lPF7PVSIJJN^Lj*fMdsgBAFj>uTY8OLJP=^vf3j@3FNp$=nl+5tb`d+#O}q*#;! z6ZVkbe(w35-+A2g_?>&tr7_-?PGwRZ*z=2R(4$-LId`hwHZoMi;C02z)9Ln@GgNIqPd9=KfN|H3Upeo%Y%i<8&Aa`uJNo}QsD&)1%i4_CJbZhXDEz@`a*ylG8Y<3E2@pz*tuP=GPh!iW-u21N5iW$!=s z#_}~>E3F<;nuX-Uwb27-dd~D{Z1$)*YinB~&5_1bQ%fe@){=;CXsKHrZS_>E;%%v9 zV=Ucir5B}BvG%rDCTpczTun5awqjkOwu~|N)V3tDiLO+4Zy{~lGOeC!s|x9I3fbT* z#MNYa3(@YQ*`lDy23AIQ;1;?}W#4tE zE|o}FZP|D#nF%enl2$t2#(Q3`Z732?ZYKLVx@K#8R=SZsyXH+enf7>cBl>cmeyNo` z$BuX?nriE`vYB)A;dpFgGL^~3aZ_WJKU}{s8libCL7tI&sFtY6AKRqyt~NG2!}#g)1Y?tqm*cmn%&+ z>a)Hw`fQq(t)LdS9&c@V^%#?lcUh?|*)AL{_Ye$d$oyq=r_xTpsf`*Vf7+Jr_E^?x zNL!oTyaUclZ?_V$9h9tcHR%4lnQgIb+a@=k-p~DMj#EcBl6-o8@TaA%jB~H@D}FuO zKsKF9)Ft9pQVmvnbxz>7X}2=jh3)NW)RbKmm;n!Q!@Dqg0^!fer*}$!zK(RP%UWS& zwj{Dny3QQ@>E14;E_Ciy=Mnz&E-RCXZM2*^zsUf6mpUK7W;@raQ}?O!3xA%tqb~}K z!}i-qg7_|R4fza9Jj$A7ov zCzDDFfBdaO>oGHpCTym|VhYe4P#u~_>R;vm2aIU&2?hMit>F~$1)hGqF*e!F%~1V& z3sjpXL!IkPgJap*&q!7=8}& zv|&F5soQ=U%Kll8-++tJAA}!+&%q_|MHqpH;WBs>Ho=$Sa`+llIj_SN#Qy}N@C0mz zr{GHXHe3bYg==9s9j|;9a2@eskiM`hA$?&_gr9(uVH>Q4vY!XriO+`?yc2f7m2e|m z2U)`QdPv{doe+O+ry+f4-v{YCdk@UQFF=*6wYHV`S0MA#J_wnQ_91u=JPu{|dq|(# ze}MG4eah3HhP#OW3o-_FaiKAcfjt!3{Edb8!yw!ZC&5p{Deys916BS^_z>|~@Uw6s zd>A&sN8k!5yH)T};;Z3fa0A>6KM6k%JK^I{>-kG?CsaPI*Dn*l7d` zzY1T0UxR;zPr^5$%IWd=HdJ}bUiwHghE+2HucI)66|L(r%)l{b zb+2A&Do=Hlu`0_riRRov~yc-oR7Qvc{>c^*ovHXl+Wx^tD~@^5Yi@ zxn~1)!XWIlS6^rQb-y2f-5~EW<|RZ=&Kh%IzJu7v8e{;%D~fXvSOS$tb7n(=LpD>z zw}PsUc*4q5U9O{lb|Pn@)j|dBK+@&@BZ+iszyxHVBKh#Y_P_`-jz)6hztdab{_($! z^a%az{|2o2pu8HE;fUsihDXDp`B94KnNeqJ<;YM(?-;|73dDJ+fcbEBdqC@bTS<-c z-G?#UGuWiIma_P|X;u)KhBP6$pwk2Qt@p%{oX+(aeZC_Xchd)%Q<^M0FZRNSUf6r|KEk-EZPMjFry&|EoA~m#J#`@VUsv{C_)> z!|(fZlli@<{UW!oXnz=mXny6k@Aujpv?pjU$?XyOt)0&JfP?GHKj2F8#b2{M@Nch3 BFKPe) diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe deleted file mode 100644 index bb84a51ac4f20534146c09f2fd9c928d15a903b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11600 zcmeG?2~<)?tG75|5OPOMcC{DsnWb(K|p-9Gz zCYX{WA(Jm;dIfQqiJ};SrLL}G(n&hl8zFy;j>apOj_;bS1<^27Oc^0Hz(7W(Czb%1 z@VUW90w!d%4!)s8@lWO`4L-o%@Fz33`3PxI|9bMyD%lrO3DBh`b_0^65V}%-gn|b^ zWm*RtcF<41tL^XP%x>1H-pWw-?KO@iBWB8={z?S^v{7pXzI!Jo%+8WXB|Jbhzz%$;+6FHiiU_~N3I z3EN^9UtHuj{7z%|8vGH<%)(m1Ea7^jMXH#Y>ya2$DiaMPF|c+I&NvSYVbqF9*~#r#ILj8dWjm251tb7C6J%*T7omHQ z|3QZ`M<(G55b{zd>0OBcT-q z$5D_+!Bh&aq+kUFn<&Vjy~Gre83lc5nD5M>aGT=)?fZgOM>nV`Kqv zI0bDf=!~2J||60WgZ0+&DGHhBHk2136`;HfS!lVrq~L;Qp?LLw4#2#K5zlOj)1BCy1d77#r{JpDO<77O@Xp{xhn!4xZ$h!p@= zFfDSIN{Pg1K}r~3)_Zst+KZ6#Bz!U1wTDViV=OmGAajRFq+hp^({qI>UpIiLVv=~h zxay+kDH5kh_;K;yXzG;G*Tj7I0^&~_{e-b1Ng|izo-6pOSGO>vq9h3^M-Ep;2n2i? z;VA;Ob9u6_h6EBx&>#pUI*0gkg>gyTxL$JaT8kGU;HGf+ao-Tzcp`=5x@Rq2jC5KA zDL81CbnCa%R49SU_|be|v6omoM|<(PaYE7-c~ay>L?^|?aX&MN4jh;n*m;M|z$BDt zLV?wpRH>I1yLLe*EkY6~5>Aj35>FW2!};IZ6RZg`l4U+2WpPr3Jg{aVFJ1yBKdala z!{Q|bH-_8;-f}`H`;N<(`ErFZ0s_H?nELq^^AiFst^h{IAPxchk}HJW2r40D)L?1| zN5+-NKyKu|BH5O9=>_$oO%{WM1RNkt$|LX>+U#yGW4SL{W#Dq<^-?pWTs_=s z+sMi))7<${{lWc@(;pS&e4xt(nf|K_4fiC?yA3+_%vvY*l!4@4iv}=BM|c$3*(8Ejv=a+B_=Ss*JEQXuIqpixQ3a_4(W> zyEKm#xtQrM)b=Fwn2Ghv>;fV#EMt&fQn_Nx)Omd`sf+@qw7IY%8d=~wU}z94&^xT# z?O1hMy$gBFV<=2Rx4X%UFBOAX2ZDn_3e*V(5c0klQtL7p%59=S80yz;986D8eMaINL%0wc8G%|*e$MEHmK74Q% z!Aa2qJ`Z*(ODar2$dFuS7_I+z60R6Fg7-`wLHR_mTT!wUQ^u&61Y`_zfv7uESG-PI zL=b$z5K9F^02Rvd;_$Xby>8#V-GB3vXN;}hekVw2b}%EC!sUQGG$K1h+L_tfM2e!P zOCtHUjw8EKEOAUULMMT4SGq-(nO(Kd^R74+p{XEA@0kR39#JP2L9k*3WE=-K98<(} zqe}k)-;w}E#jg-2r+wZ^?F0lS_7$G&N8TMKx*>Foia|&WS+)ZhjyMosg(Ghi3MD_V zlt8Ha0ra7)2BA8})Ao*tk&JOg@{U+nBp*Xj>4k4odB9b z6pKVuFB2+W3WHWIV5QK`MKb6of?7waV3?3D4|tM6FFxSozD0@ZgTuNz{_IdRDFbAO z)M2bA&`X3r0!GVV7PvbAj0da~>bA%RB0vJogpW-A5a@S}5mS7nfE2jYc(OeJxZnXV z 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 - - - - - - - diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.manifest b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.manifest deleted file mode 100644 index 061c9ca9..00000000 --- a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/ViconMarkerBroadcaster.vshost.exe.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Release/ViconDataStreamSDK_DotNET.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Release/ViconDataStreamSDK_DotNET.dll deleted file mode 100644 index eb7947632c646675b80ec799105164e526018e8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184320 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 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.pdb b/src/RegionEditorFiles/ViconMarkerBroadcaster/obj/x86/Debug/ViconMarkerBroadcaster.pdb deleted file mode 100644 index 11767b6dc35881514e3dafc8a1908b2da74f33c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13824 zcmeI2dvH`&9mh`|6hcUF!<*8~LZK~>ZW83xh`h21(rzHI;UT1kCAon$o87Rxyo$89 zR9lPF7PVSIJJN^Lj*fMdsgBAFj>uTY8OLJP=^vf3j@3FNp$=nl+5tb`d+#O}q*#;! z6ZVkbe(w35-+A2g_?>&tr7_-?PGwRZ*z=2R(4$-LId`hwHZoMi;C02z)9Ln@GgNIqPd9=KfN|H3Upeo%Y%i<8&Aa`uJNo}QsD&)1%i4_CJbZhXDEz@`a*ylG8Y<3E2@pz*tuP=GPh!iW-u21N5iW$!=s z#_}~>E3F<;nuX-Uwb27-dd~D{Z1$)*YinB~&5_1bQ%fe@){=;CXsKHrZS_>E;%%v9 zV=Ucir5B}BvG%rDCTpczTun5awqjkOwu~|N)V3tDiLO+4Zy{~lGOeC!s|x9I3fbT* z#MNYa3(@YQ*`lDy23AIQ;1;?}W#4tE zE|o}FZP|D#nF%enl2$t2#(Q3`Z732?ZYKLVx@K#8R=SZsyXH+enf7>cBl>cmeyNo` z$BuX?nriE`vYB)A;dpFgGL^~3aZ_WJKU}{s8libCL7tI&sFtY6AKRqyt~NG2!}#g)1Y?tqm*cmn%&+ z>a)Hw`fQq(t)LdS9&c@V^%#?lcUh?|*)AL{_Ye$d$oyq=r_xTpsf`*Vf7+Jr_E^?x zNL!oTyaUclZ?_V$9h9tcHR%4lnQgIb+a@=k-p~DMj#EcBl6-o8@TaA%jB~H@D}FuO zKsKF9)Ft9pQVmvnbxz>7X}2=jh3)NW)RbKmm;n!Q!@Dqg0^!fer*}$!zK(RP%UWS& zwj{Dny3QQ@>E14;E_Ciy=Mnz&E-RCXZM2*^zsUf6mpUK7W;@raQ}?O!3xA%tqb~}K z!}i-qg7_|R4fza9Jj$A7ov zCzDDFfBdaO>oGHpCTym|VhYe4P#u~_>R;vm2aIU&2?hMit>F~$1)hGqF*e!F%~1V& z3sjpXL!IkPgJap*&q!7=8}& zv|&F5soQ=U%Kll8-++tJAA}!+&%q_|MHqpH;WBs>Ho=$Sa`+llIj_SN#Qy}N@C0mz zr{GHXHe3bYg==9s9j|;9a2@eskiM`hA$?&_gr9(uVH>Q4vY!XriO+`?yc2f7m2e|m z2U)`QdPv{doe+O+ry+f4-v{YCdk@UQFF=*6wYHV`S0MA#J_wnQ_91u=JPu{|dq|(# ze}MG4eah3HhP#OW3o-_FaiKAcfjt!3{Edb8!yw!ZC&5p{Deys916BS^_z>|~@Uw6s zd>A&sN8k!5yH)T};;Z3fa0A>6KM6k%JK^I{>-kG?CsaPI*Dn*l7d` zzY1T0UxR;zPr^5$%IWd=HdJ}bUiwHghE+2HucI)66|L(r%)l{b zb+2A&Do=Hlu`0_riRRov~yc-oR7Qvc{>c^*ovHXl+Wx^tD~@^5Yi@ zxn~1)!XWIlS6^rQb-y2f-5~EW<|RZ=&Kh%IzJu7v8e{;%D~fXvSOS$tb7n(=LpD>z zw}PsUc*4q5U9O{lb|Pn@)j|dBK+@&@BZ+iszyxHVBKh#Y_P_`-jz)6hztdab{_($! z^a%az{|2o2pu8HE;fUsihDXDp`B94KnNeqJ<;YM(?-;|73dDJ+fcbEBdqC@bTS<-c z-G?#UGuWiIma_P|X;u)KhBP6$pwk2Qt@p%{oX+(aeZC_Xchd)%Q<^M0FZRNSUf6r|KEk-EZPMjFry&|EoA~m#J#`@VUsv{C_)> z!|(fZlli@<{UW!oXnz=mXny6k@Aujpv?pjU$?XyOt)0&JfP?GHKj2F8#b2{M@Nch3 BFKPe) diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/readme.txt b/src/RegionEditorFiles/ViconMarkerBroadcaster/readme.txt new file mode 100644 index 00000000..854e486a --- /dev/null +++ b/src/RegionEditorFiles/ViconMarkerBroadcaster/readme.txt @@ -0,0 +1,12 @@ +Steps: +1. Open ViconMarkerBroadcaster.csproj in Visual Studio. +2. Save solution. +3. Build solution as Release. +4. Put these 4 files wherever you want, but they must be in the same directory: + (first three files are in /bin/Release/, while the other doesn't get transferred from the main folder) + ViconMarkerBroadcaster.exe + ViconMarkerBroadcaster.exe.config + ViconDataStreamSDK_DotNET.dll + ViconDataStreamSDK_CPP.dll +5. Make sure Vicon is on. +6. Run executable (recommend not running through Visual Studio to speed up the program). \ No newline at end of file diff --git a/src/lib/regions.py b/src/lib/regions.py index ce778a1e..1fcab01a 100755 --- a/src/lib/regions.py +++ b/src/lib/regions.py @@ -477,7 +477,6 @@ def calcMapCalibFromFile(self, dataFromAllRegions): """ regionDataList = [] boundingBoxList = [] - print dataFromAllRegions minxAll = float("inf") maxxAll = float("-inf") minyAll = float("inf") diff --git a/src/regionEditor.py b/src/regionEditor.py index 6d5e2eaa..b72d7fb8 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -172,8 +172,6 @@ def __init__(self, *args, **kwds): self.polySnaps = [] # Keeps snap information for each # new region creation point # [(idxReg, idxPt, idxEdge), ...] - self.boundary = None # Region representing the map bound - # TODO: When changing the name of a region, check if it is called boundary # Mouse-related parameters self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick @@ -394,7 +392,7 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. """Save to file that has already been used.""" if self.fileName: # Bring up dialog box to ask about boundary if necessary - if self.regions and not self.boundary: + if self.regions and not self.ExistBoundary(): msg = "No boundary found. Automatically create rectangular boundary?" boundDialog = wx.MessageDialog(self, msg, style=wx.YES_NO|wx.CANCEL|\ wx.YES_DEFAULT|wx.ICON_EXCLAMATION|wx.STAY_ON_TOP) @@ -416,8 +414,6 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. f.write("\n\n") # TODO: Support for obstacles f.write("Regions: # Name {ColorR ColorG ColorB} " + \ "[(x1 y1) (x2 y2) ...]\n") - if self.boundary: - f.write(str(self.boundary) + "\n") for reg in self.regions: f.write(str(reg) + "\n") f.write("\n") @@ -907,10 +903,6 @@ def RedrawCanvas(self, dc=None): # Draw grid background self.DrawGrid(dc) - # Redraw boundary region - if self.boundary: - self.DrawRegion(self.boundary, dc, isBoundary=True) - # Redraw all regions for region in self.regions: self.DrawRegion(region, dc=dc) @@ -1020,12 +1012,11 @@ def DrawSelectionHandle(self, iReg, dc=None): if isNewDC: dc.EndDrawing() - def DrawRegion(self, region, dc=None, isBoundary=False): + def DrawRegion(self, region, dc=None): """Draw a single region. region - Instance of Region class, contains information about the region. dc - Device context used for drawing on the canvas panel. - isBoundary - Boolean, true if drawing the boundary region. """ # Create device context if not created isNewDC = False @@ -1037,7 +1028,7 @@ def DrawRegion(self, region, dc=None, isBoundary=False): dc.BeginDrawing() # Set brush to region color - # Set brush to region color + isBoundary = region.name.lower() == "boundary" if isBoundary: dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) dc.SetPen(wx.Pen(wx.BLACK, 3, wx.SOLID)) @@ -1078,7 +1069,6 @@ def DrawRegion(self, region, dc=None, isBoundary=False): dc.DrawPolygon(vertsPix) if isBoundary: xLabelPix = xLabelPix - labelWidth - yLabelPix = yLabelPix else: xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 @@ -1262,11 +1252,6 @@ def EditRegion(self, iReg): (regEdDia.textName.GetValue()), "Error", \ style = wx.OK | wx.ICON_ERROR) - # Check for boundary - if reg.name.lower() == 'boundary': - self.boundary = reg - self.DeleteRegion(iReg) - # Redraw the regions to ensure correct name/color self.RedrawCanvas() # TODO: Add to undo @@ -1286,7 +1271,8 @@ def RecalcAdjacency(self, iReg, iRegStart=0): This will avoid redundant checking of regions. Note that the function will avoid checking against itself, so there is no reason to avoid - calling it on itself. + calling it on itself. It will also not check against the boundary + region. iReg - Index of region of interest iRegStart - Specifies to check reg against self.regions[iRegStart:] @@ -1299,6 +1285,10 @@ def RecalcAdjacency(self, iReg, iRegStart=0): # Pull region for easy access reg = self.regions[iReg] + # Don't check for anything else if boundary + if reg.name.lower() == "boundary": + return + # Keeps track of the colocation of vertices of this region with points # of other regions # List of lists of tuples @@ -1312,7 +1302,8 @@ def RecalcAdjacency(self, iReg, iRegStart=0): # Check all other regions against this region for iOthReg in range(len(self.regions[iRegStart:])): # No need to check against self - if iOthReg == iReg: + if iOthReg == iReg or \ + self.regions[iOthReg].name.lower() == "boundary": continue for iOthPt, othPt in enumerate(self.regions[iOthReg].verts): @@ -1363,6 +1354,16 @@ def RecalcAdjacency(self, iReg, iRegStart=0): self.adjacent[iReg][iOthReg].append((iPt, iOthPt)) self.adjacent[iOthReg][iReg].append((iOthPt, iPt)) + def ExistBoundary(self): + """Check if a boundary region has been defined.""" + found = False + iReg = 0 + while not found and iReg < len(self.regions): + found = self.regions[iReg].name.lower() == "boundary" + iReg += 1 + + return found + def Autoboundary(self): """Automatically create region representing the boundary of the map.""" if self.regions: @@ -1370,7 +1371,7 @@ def Autoboundary(self): # Create region points = [Point(minx, maxy), Point(maxx, maxy), \ Point(maxx, miny), Point(minx, miny)] - self.boundary = Region(points, 'boundary') + self.regions.append(Region(points, 'boundary')) else: print "No regions defined, so no boundary created." @@ -1617,7 +1618,7 @@ def SnapVicon(self, pt, snapped): def InsideRegions(self, pt): """Find region containing point. Looks through regions on top first - (those that were created later). + (those that were created later). Does not return for boundary region. pt - Point, point of interest returns - int, index of containing region, or -1 if none @@ -1625,7 +1626,8 @@ def InsideRegions(self, pt): iReg = -1 i = len(self.regions) - 1 while iReg == -1 and i >= 0: - if self.regions[i].PtInRegion(pt): + if self.regions[i].name.lower() != "boundary" and \ + self.regions[i].PtInRegion(pt): iReg = i i -= 1 @@ -1946,8 +1948,8 @@ def __init__(self, *args, **kwds): xScale = (xmax - xmin) / float(mapLen[0]) yScale = (ymax - ymin) / float(mapLen[1]) maxScale = max(xScale, yScale) - xOffset = xmin+(float(mapLen[0]) * maxScale - (xmax - xmin)) / 2 - yOffset = ymax+(float(mapLen[1]) * maxScale - (ymax - ymin)) / 2 + xOffset = xmin + yOffset = ymax self.mapScale = Point(maxScale, -maxScale) self.mapOffset = Point(xOffset, yOffset) # Determine initial mapping of the reference panel to the field @@ -1956,8 +1958,8 @@ def __init__(self, *args, **kwds): xScale = (xmax - xmin) / float(refLen[0]) yScale = (ymax - ymin) / float(refLen[1]) maxScale = max(xScale, yScale) - xOffset = xmin+(float(refLen[0]) * maxScale - (xmax - xmin)) / 2 - yOffset = ymax+(float(refLen[1]) * maxScale - (ymax - ymin)) / 2 + xOffset = xmin + yOffset = ymax self.refScale = Point(maxScale, -maxScale) self.refOffset = Point(xOffset, yOffset) @@ -2089,11 +2091,6 @@ def OnMenuSave(self, event): # wxGlade: CalibrationFrame. ptMat = numpy.mat([pt.x, pt.y, 1.0]).T newPtMat = T * ptMat pt.Set(float(newPtMat[0]), float(newPtMat[1])) - if self.parent.boundary: - for pt in self.parent.boundary.verts: - ptMat = numpy.mat([pt.x, pt.y, 1.0]).T - newPtMat = T * ptMat - pt.Set(float(newPtMat[0]), float(newPtMat[1])) self.parent.RedrawCanvas() # Quit calibration @@ -2332,10 +2329,6 @@ def RedrawMap(self): self.map.PrepareDC(dc) dc.BeginDrawing() - # Redraw boundary region - if self.parent.boundary: - self.DrawRegion(self.boundary, dc=dc, boundary=True) - # Redraw all regions for region in self.parent.regions: self.DrawRegion(region, dc=dc) @@ -2385,25 +2378,27 @@ def RedrawVicon(self): # vicon needs to be redrawn at a high frequency self.RedrawRef() - def DrawRegion(self, region, dc, isBoundary=False): + def DrawRegion(self, region, dc): """Draw a single region. region - Instance of Region class, contains information about the region. dc - Device context used for drawing on the panel. - isBoundary - Boolean, true if drawing the boundary region. """ # Set brush to region color + isBoundary = region.name.lower() == "boundary" if isBoundary: dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + dc.SetPen(wx.Pen(wx.BLACK, 3, wx.SOLID)) elif region.isObstacle: obstColor = wx.Colour(region.color.Red() / 10, \ region.color.Green() / 10, region.color.Blue() / 10, 128) dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) else: innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ region.color.Blue(), 128) dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) dc.SetTextForeground(wx.BLACK) dc.SetBackgroundMode(wx.TRANSPARENT) dc.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) @@ -2430,16 +2425,16 @@ def DrawRegion(self, region, dc, isBoundary=False): yLabelPix = max(yLabelPix, vertPix[1]) dc.DrawPolygon(vertsPix) if isBoundary: - xLabelPix = xLabelPix / len(region.verts) - labelWidth - yLabelPix = yLabelPix / len(region.verts) - labelHeight + xLabelPix = xLabelPix - labelWidth else: xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 # Draw label - dc.SetBrush(wx.Brush(region.color, wx.SOLID)) - dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ - labelWidth + 10, labelHeight + 6, 3) + if not isBoundary: + dc.SetBrush(wx.Brush(region.color, wx.SOLID)) + dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ + labelWidth + 10, labelHeight + 6, 3) dc.DrawText(labelText, xLabelPix, yLabelPix) def DrawCalibPoint(self, ptPix, label, dc): From f21acd7ad1a64d929c7fe197d4978a7157ffa600 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 25 Apr 2012 02:18:40 -0400 Subject: [PATCH 13/26] Updated regions.py so that it could open files in the new region file format and convert them to the old way of storing, while still being able to save and open the old file format for decomposed regions. Updated regionEditor.py so that it can handle the new file format as well (using json for region storage). Note that calibration does not automatically happen yet in regions.py. --- src/lib/regions.py | 96 ++++++++++++++++++++++---- src/regionEditor.py | 162 +++++++++++++++++++++++++++++--------------- 2 files changed, 192 insertions(+), 66 deletions(-) diff --git a/src/lib/regions.py b/src/lib/regions.py index 4301901d..c5d2da80 100755 --- a/src/lib/regions.py +++ b/src/lib/regions.py @@ -339,7 +339,7 @@ def writeFile(self, filename): "Regions": "Stored as JSON string", "Transitions": "Region 1 Name, Region 2 Name, Bidirectional transition faces (face1_x1, face1_y1, face1_x2, face1_y2, face2_x1, ...)", "CalibrationPoints": "Vertices to use for map calibration: (vertex_region_name, vertex_index)", - "Obstacles": "Names of regions to treat as obstacles"} + "Obstacles": "Names of regions to treat as obstacles"} regionData = [] for r in self.regions: @@ -416,32 +416,59 @@ def readFile(self, filename): for rd in rdata: newRegion = Region() if compatMode: - regionData = rd.split("\t"); + regionData = rd.split(); newRegion.setDataOld(regionData) else: - newRegion.setData(rd) + # If we are not reading a decomposed file, assume that + # specEditor is requesting a read of the new file format + # produced by regionEditor + # New file format has region points in absolute coordinates in + # real world units, and all regions are polygons + if not "_decomposed" in filename: + rd = self.convertRegionDataNewToOld(rd) + newRegion.setData(rd) self.regions.append(newRegion) # Make an empty adjacency matrix of size (# of regions) x (# of regions) self.transitions = [[[] for j in range(len(self.regions))] for i in range(len(self.regions))] for transition in data["Transitions"]: - transData = transition.split("\t"); + transition = re.sub('[\[\]\(\)]', '', transition) # Remove brackets + transData = transition.split(); region1 = self.indexOfRegionWithName(transData[0]) region2 = self.indexOfRegionWithName(transData[1]) faces = [] - for i in range(2, len(transData), 4): - p1 = Point(int(transData[i]), int(transData[i+1])) - p2 = Point(int(transData[i+2]), int(transData[i+3])) - faces.append(tuple(sorted((p1, p2)))) + + # If we are not reading a decomposed file, assume that specEditor + # is requesting a read of the new file format produced by + # regionEditor + # Transitions are defined by face index, not point values, and + # uni-directional transitions are possible + if not "_decomposed" in filename: + for i in range(2, len(transData), 2): + ip1 = int(transData[i]) + ip2 = int(transData[i % len(self.regions[region1].pointArray)]) + p1 = self.regions[region1].pointArray(ip1) + p2 = self.regions[region1].pointArray(ip2) + faces.append(tuple(sorted((p1, p2)))) + + # Don't assume bidirectional transitions + # Adjacency matrix may be nonsymmetric + self.transitions[region1][region2] = faces + + else: + for i in range(2, len(transData), 4): + p1 = Point(int(transData[i]), int(transData[i+1])) + p2 = Point(int(transData[i+2]), int(transData[i+3])) + faces.append(tuple(sorted((p1, p2)))) - # During adjacency matrix reconstruction, we'll mirror over the diagonal - self.transitions[region1][region2] = faces - self.transitions[region2][region1] = faces + # During adjacency matrix reconstruction, we'll mirror over the diagonal + self.transitions[region1][region2] = faces + self.transitions[region2][region1] = faces if "CalibrationPoints" in data: for point in data["CalibrationPoints"]: - [name, index] = point.split("\t") + [name, index] = point.split() self.regions[self.indexOfRegionWithName(name)].alignmentPoints[int(index)] = True if "Obstacles" in data: @@ -451,6 +478,51 @@ def readFile(self, filename): self.filename = filename return True + + def convertRegionDataNewToOld(self, rd): + """ + Take in data on all the regions that was read in the new file format + and convert it to data on the regions in the old format. Points will be + scaled by 1000 (to get milimeter accuracy) and other fields that are + unused in the new format will be set. + """ + # name, position, size, color, type, points, holeList + # name and color can stay the same + rdnew = {'name':rd['name'], + 'color':rd['color']} + + # type is always polygon + rdnew['type'] = 'poly' + + + ######################### + # TODO: + # -Don't do the stupid 1000 multiplier + # -Make transformation matrix + # -Pass in proj into this function + # -Save transformation matrix to calibration + ######################### + + + + # Each point in points and holeList must be converted to pixels + # Also get bounding box then convert all points to relative coordinates + points = [(int(1000.0 * pt[0]), int(-1000.0 * pt[1])) \ + for pt in rd['points']] + leftMargin = min([pt[0] for pt in points]) + topMargin = min([pt[1] for pt in points]) + rightExtent = max([pt[0] for pt in points]) - leftMargin + downExtent = max([pt[1] for pt in points]) - topMargin + points = [(pt[0] - leftMargin, pt[1] - topMargin) for pt in points] + holeList = [(int(1000.0 * pt[0]) - leftMargin, \ + int(-1000.0 * pt[1]) - topMargin) \ + for hole in rd['holeList'] for pt in hole] + rdnew['points'] = points + rdnew['holeList'] = holeList + rdnew['position'] = (leftMargin, topMargin) + rdnew['size'] = (rightExtent, downExtent) + + return rdnew ############################################################ diff --git a/src/regionEditor.py b/src/regionEditor.py index b72d7fb8..e2adcfd0 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -18,6 +18,8 @@ import winsound import pyttsx import lib.fileMethods as fileMethods +import json +from lib.regions import prettierJSONEncoder import lib._transformations as _transformations # begin wxGlade: extracode @@ -337,22 +339,11 @@ def OnMenuOpen(self, event): # wxGlade: regionEditor. # self.bkgndImage = None # Set all region information from lines in file - # Each region line format is this: - # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] - for rData in data["Regions"]: - rData = re.sub('[\[\]\(\)\{\}]', '', rData) - rData = rData.split() # Separates on any whitespace - rName = rData[0] - rRGB = [] - for i in range(1, 4): # Convert colors to integers - rRGB.append(int(rData[i])) - rVerts = [] - for i in range(4, len(rData), 2): - x = float(rData[i]) - y = float(rData[i+1]) - rVerts.append(Point(x, y)) - region = Region(rVerts, rName, rgb=rRGB) - self.regions.append(region) + rdata = json.loads("\n".join(data["Regions"])) + for rd in rdata: + newRegion = Region() + newRegion.setData(rd) + self.regions.append(newRegion) # Make an empty adjacency matrix of size (nRegions) x (nRegions) self.adjacent = [[[] for j in range(len(self.regions))] \ @@ -364,21 +355,21 @@ def OnMenuOpen(self, event): # wxGlade: regionEditor. for tData in data["Transitions"]: tData = re.sub('[\[\]\(\)]', '', tData) tData = tData.split(); # Separate on any whitespace - iReg1 = int(tData[0]) - iReg2 = int(tData[1]) - faces = [] + iReg1 = self.indexOfRegionWithName(tData[0]) + iReg2 = self.indexOfRegionWithName(tData[1]) # All transitions between regions for i in range(2, len(transData), 2): iFaceReg1 = int(tData[i]) iFaceReg2 = int(tData[i+1]) self.adjacent[iReg1][iReg2].append((iFaceReg1, iFaceReg2)) - # Note that region file specifies transitions in both directions - # So mirroring here is unnecessary + # Don't assume bidirectional transitions + # Region file will specify both directions if bidirectional # Set "obstacleness" of regions if "Obstacles" in data: - for iReg in data["Obstacles"]: - self.regions[iReg].isObstacle = True + for regName in data["Obstacles"]: + self.regions[self.indexOfRegionWithName( \ + regName)].isObstacle = True # Store the filename for saving self.fileName = filePath @@ -390,6 +381,7 @@ def OnMenuOpen(self, event): # wxGlade: regionEditor. def OnMenuSave(self, event): # wxGlade: regionEditor. """Save to file that has already been used.""" + # Filename known if self.fileName: # Bring up dialog box to ask about boundary if necessary if self.regions and not self.ExistBoundary(): @@ -402,35 +394,49 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. elif boundDiaResult == wx.ID_CANCEL: return - # Save file - f = open(self.fileName, 'w') - f.write("# This is a region definition file for the LTLMoP " + \ - "toolkit.\n# Format details are described at the " + \ - "beginning of each section below.\n# Note that all values " + \ - "are separated by *whitespace*.\n\nBackground: # Relative " + \ - "path of background image file\n") - f.write("None\n\n") # TODO: Support for background images - f.write("Obstacles: # Indices of regions to treat as obstacles\n") - f.write("\n\n") # TODO: Support for obstacles - f.write("Regions: # Name {ColorR ColorG ColorB} " + \ - "[(x1 y1) (x2 y2) ...]\n") - for reg in self.regions: - f.write(str(reg) + "\n") - f.write("\n") - f.write("Transitions: # Region1Idx Region2Idx " + \ - "[(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) " + \ - "...]\n") - for iAdj in range(len(self.adjacent)): - for jAdj, adjList in enumerate(self.adjacent[iAdj]): - if iAdj != jAdj and adjList: - line = "%d\t%d\t[" % (iAdj, jAdj) - for kAdj, adj in enumerate(adjList): - line += "(%d\t%d)" % adj - if kAdj < len(adjList) - 1: - line += "\t" - line += "]\n" - f.write(line) - f.close() + comments = {"FILE_HEADER":"This is a region definition file for " + + "the LTLMoP toolkit.\nFormat details " + + "are described at the beginning of " + + "each section below.\n", + "Background": "Relative path of background image file", + "Regions": "Stored as JSON string", + "Transitions": "reg1name reg2name " + + "[(reg1face1idx reg2face1idx) " + + "(reg1face2idx reg2face2idx) ...]", + "Obstacles": "Names of regions to treat as obstacles"} + + regionData = [] + for r in self.regions: + d = r.getData() + # Don't store the following attribute inside the regions + del d['isObstacle'] + regionData.append(d) + je = prettierJSONEncoder(indent=4) + regionData = [je.encode(regionData)] + + transitionData = [] + for iReg1, destinations in enumerate(self.adjacent): + # Note: Don't assume bi-directional transitions + for iReg2, faces in enumerate(destinations): + if faces == []: continue # No transitions so skip + + singleTrans = self.regions[iReg1].name + "\t" + \ + self.regions[iReg2].name + "\t[" + for face in faces: + singleTrans += "(" + str(face[0]) + "\t" + \ + str(face[1]) + ")" + transitionData.append(singleTrans) + + obstacleRegions = [r.name for r in self.regions if r.isObstacle] + + # TODO: Get background image in here + data = {"Regions": regionData, + "Transitions": transitionData, + "Obstacles": obstacleRegions} + + fileMethods.writeToFile(self.fileName, data, comments) + + # No known filename else: self.OnMenuSaveAs(None) @@ -1354,6 +1360,13 @@ def RecalcAdjacency(self, iReg, iRegStart=0): self.adjacent[iReg][iOthReg].append((iPt, iOthPt)) self.adjacent[iOthReg][iReg].append((iOthPt, iPt)) + def IndexOfRegionWithName(self, name): + for i, region in enumerate(self.regions): + if region.name.lower() == name.lower(): + return i + print 'WARNING: Region "' + name + '" not found.' + return -1 + def ExistBoundary(self): """Check if a boundary region has been defined.""" found = False @@ -2626,23 +2639,26 @@ def RefPix2M(self, pixPose): # end of class CalibrationFrame class Region: - def __init__(self, points, name, rgb=None): + def __init__(self, points=[], name="", holes=[], rgb=None, obst=False): """Create an object to represent a region. points - List of Points containing vertex information [Point(x1, y1), Point(x2, y2), ...] name - String defining region name + holes - List of lists of points representing holes cut in the region rgb - List of integers defining color [red, green, blue], each with value in range [0 255] + obst - Boolean, True indicates that the region is an obstacle """ # TODO: Add convex/concave self.verts = points self.name = name + self.holeList = holes if not rgb: rgb = [random.randint(0, 255), random.randint(0, 255), \ random.randint(0,255)] self.color = wx.Colour(rgb[0], rgb[1], rgb[2]) - self.isObstacle = False + self.isObstacle = obst def __str__(self): """Representation of object.""" @@ -2655,6 +2671,44 @@ def __str__(self): s += "]" return s + def getData(self): + """Return a copy of the object's internal data. + This is used to save this region to disk. + """ + + data = {'name': self.name, 'color': (self.color.Red(), \ + self.color.Green(), self.color.Blue())} + + data['points'] = [(pt.x, pt.y) for pt in self.verts] + + data['holeList'] = [] + for hole in self.holeList: + data['holeList'].append([(pt.x, pt.y) for pt in hole]) + + data['isObstacle'] = self.isObstacle + + return data + + def setData(self, data): + """Set the object's internal data. + + 'data' is a copy of the object's saved data, as returned by + getData() above. This is used to restore a previously saved region. + """ + + self.name = data['name'] + self.color = wx.Colour(*data['color']) + + self.verts = [Point(*pt) for pt in data['points']] + + if 'holeList' in data: + self.holeList = [] + for hole in data['holeList']: + self.holeList.append([Point(*pt) for pt in hole]) + + if 'isObstacle' in data: + self.isObstacle = data['isObstacle'] + def PtInRegion(self, pt): """Check if a point is inside of the region. Algorithm taken from C# version of Solution 1 from From 08fda994b49a854e2fd51f548ff3e8e5e0ee5c9b Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 25 Apr 2012 12:40:42 -0400 Subject: [PATCH 14/26] Fixed bug that skews connected regions when calibrated. Made option for keeping aspect ratio during calibration, or allowing skewing. --- .../NewRegionEditor/RegionEditorV3.wxg | 47 +++++++++++++++---- src/regionEditor.py | 37 +++++++++++---- 2 files changed, 65 insertions(+), 19 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg index 3fa841dc..03cb27fa 100644 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg @@ -1,5 +1,5 @@ - + @@ -527,7 +527,7 @@ - 110, 245 + 110, 268 wxVERTICAL @@ -634,15 +634,44 @@ - wxTOP|wxBOTTOM|wxALIGN_CENTER_VERTICAL + wxEXPAND + 0 + + + wxHORIZONTAL + + wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnToggleDimen + + 50, 50 + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + OnButtonSave + + 50, 50 + + + + + + wxTOP|wxBOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 5 - - - - OnToggleDimen - - 50, 50 + + 1 + diff --git a/src/regionEditor.py b/src/regionEditor.py index e2adcfd0..ec7f224b 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -785,7 +785,6 @@ def OnMouseLeftDClick(self, event): self.selectedRegions = [] self.selectedRegions.append(iReg) self.EditRegion(iReg) - def OnMouseRightDown(self, event): """Save the right click point so it can be used later.""" @@ -1573,7 +1572,7 @@ def Snap1Region(self, region, pt, snapped=False): snapped = True idxREdge = j - 1 - return pt, idxRPoint, idxREdge, snapped + return copy.copy(pt), idxRPoint, idxREdge, snapped def SnapPoly(self, pt, snapped=False): """Snap the point to any vertex in the currently being created region @@ -1600,7 +1599,7 @@ def SnapPoly(self, pt, snapped=False): snapped = True i += 1 - return pt, idxPoint, snapped + return copy.copy(pt), idxPoint, snapped def SnapVicon(self, pt, snapped): """Snap the point to any saved Vicon marker position if it is @@ -1627,7 +1626,7 @@ def SnapVicon(self, pt, snapped): snapped = True i += 1 - return pt, idxMarker, snapped + return copy.copy(pt), idxMarker, snapped def InsideRegions(self, pt): """Find region containing point. Looks through regions on top first @@ -1893,6 +1892,8 @@ def __init__(self, *args, **kwds): self.textEnterPointY = wx.TextCtrl(self.sidebar, -1, "") self.buttonEnterPoint = wx.Button(self.sidebar, wx.ID_OK, "OK") self.toggleDimen = wx.ToggleButton(self.sidebar, -1, "Dimen.") + self.buttonSave = wx.Button(self.sidebar, -1, "Save") + self.chkbxShear = wx.CheckBox(self.sidebar, -1, "Lock aspect ratio") self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) self.ref = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) @@ -1919,6 +1920,7 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDimen, self.toggleDimen) + self.Bind(wx.EVT_BUTTON, self.OnButtonSave, self.buttonSave) # end wxGlade # Check that regionEditor object was passed in correctly @@ -2021,7 +2023,9 @@ def __set_properties(self): self.textEnterPointY.SetToolTipString("y") self.buttonEnterPoint.SetMinSize((25, 25)) self.toggleDimen.SetMinSize((50, 50)) - self.sidebar.SetMinSize((110, 245)) + self.buttonSave.SetMinSize((50, 50)) + self.chkbxShear.SetValue(1) + self.sidebar.SetMinSize((110, 268)) self.map.SetMinSize((600, 300)) self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) self.ref.SetMinSize((600, 300)) @@ -2033,6 +2037,7 @@ def __do_layout(self): sizer_6 = wx.BoxSizer(wx.HORIZONTAL) sizer_7 = wx.BoxSizer(wx.VERTICAL) sizer_8 = wx.BoxSizer(wx.VERTICAL) + sizer_12 = wx.BoxSizer(wx.HORIZONTAL) sizer_11 = wx.BoxSizer(wx.HORIZONTAL) sizer_10 = wx.BoxSizer(wx.HORIZONTAL) sizer_9 = wx.BoxSizer(wx.HORIZONTAL) @@ -2046,7 +2051,10 @@ def __do_layout(self): sizer_11.Add(self.textEnterPointY, 0, wx.ALIGN_CENTER_VERTICAL, 0) sizer_11.Add(self.buttonEnterPoint, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) sizer_8.Add(sizer_11, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_8.Add(self.toggleDimen, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_12.Add(self.toggleDimen, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_12.Add(self.buttonSave, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_12, 1, wx.EXPAND, 0) + sizer_8.Add(self.chkbxShear, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) self.sidebar.SetSizer(sizer_8) sizer_6.Add(self.sidebar, 0, 0, 0) sizer_7.Add(self.map, 1, wx.BOTTOM | wx.EXPAND, 3) @@ -2093,9 +2101,15 @@ def OnMenuSave(self, event): # wxGlade: CalibrationFrame. regPts = numpy.hstack([regPts, \ numpy.mat([ptPair[1].x, ptPair[1].y]).T]) + # Shearing allows for the scaling of dimensions independently + # (does not keep the aspect ratio) but also skews angles and such + # if the points chosen are not perfect + allowShear = not self.chkbxShear.IsChecked() + # Get tranformation matrix such that # regPt = T * mapPt - T = _transformations.affine_matrix_from_points(mapPts, regPts) + T = _transformations.affine_matrix_from_points(mapPts, regPts, \ + shear=allowShear) # Apply transformation to all region points # TODO: Add this to undo in regionEditor somehow @@ -2200,6 +2214,9 @@ def OnToggleDimen(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnToggleDimen' not implemented" event.Skip() + def OnButtonSave(self, event): # wxGlade: CalibrationFrame. + self.OnMenuSave(None) + def OnMapMouseLeftDown(self, event): """Save downclick point on map for future use.""" self.mapLeftClickPt, iCalibPt, iReg = \ @@ -2570,7 +2587,7 @@ def SnapCalibPoints(self, pt, idxPanel, snapped=False): snapped = True iCPt -= 1 - return pt, idxCalibPt, snapped + return copy.copy(pt), idxCalibPt, snapped def SnapVicon(self, pt, snapped=False): """Snap the given point to any sufficiently close marker point. @@ -2587,11 +2604,11 @@ def SnapVicon(self, pt, snapped=False): iVPt = 0 while not snapped and iVPt < len(self.markerPoses): if pt.Dist(self.markerPoses[iVPt]) < self.refTolerance: - pt = self.markerPoses[iVPt] + pt = copy.copy(self.markerPoses[iVPt]) snapped = True iVPt += 1 - return pt, snapped + return copy.copy(pt), snapped def MapM2Pix(self, pose): """Convert from absolute (meter) coordinates to pixel coordinates for From e474082252eae1e3a8a825f666bd3133a019256e Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Wed, 25 Apr 2012 14:50:34 -0400 Subject: [PATCH 15/26] Fixed undo and redo in regionEditor. It now saves all regions and adjacencies at every step. --- src/regionEditor.py | 185 ++++++++++++++------------------------------ 1 file changed, 56 insertions(+), 129 deletions(-) diff --git a/src/regionEditor.py b/src/regionEditor.py index ec7f224b..e3cde19e 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -171,9 +171,6 @@ def __init__(self, *args, **kwds): # and dimensioning # Region creation: [Point(x0,y0), ...] # Dimensioning: (idxRegion, idxVert) - self.polySnaps = [] # Keeps snap information for each - # new region creation point - # [(idxReg, idxPt, idxEdge), ...] # Mouse-related parameters self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick @@ -289,6 +286,7 @@ def OnToggleDim(self, event): # wxGlade: regionEditor. self.ResetMapToggles(self.toggleDim) def OnButtonAutobound(self, event): # wxGlade: regionEditor. + self.AddToUndo() self.Autoboundary() self.RedrawCanvas() @@ -302,14 +300,19 @@ def OnToggleFeedback(self, event): # wxGlade: regionEditor. def OnButtonCal(self, event): # wxGlade: regionEditor. self.ResetMapToggles() + self.AddToUndo() calibGUI = CalibrationFrame(self) def OnMenuNew(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuNew' not implemented" - event.Skip() + self.AddToUndo() + self.ResetMapToggles() + self.regions = [] + self.adjacent = [] + # TODO: Clear background image + self.RedrawCanvas() def OnMenuOpen(self, event): # wxGlade: regionEditor. - # Start up save dialog + # Start up open dialog dialogOpen = wx.FileDialog(self, message="Open File", \ defaultDir=sys.path[0], \ defaultFile=self.fileName.split('\\').pop(), \ @@ -317,6 +320,7 @@ def OnMenuOpen(self, event): # wxGlade: regionEditor. # Hit Open if dialogOpen.ShowModal() == wx.ID_OK: + self.AddToUndo() filePath = dialogOpen.GetPath() if not os.path.exists(filePath) or not ('.regions' in filePath): return @@ -460,40 +464,17 @@ def OnMenuUndo(self, event): # wxGlade: regionEditor. # Note that this is not a redoable action by design if self.polyVerts: self.polyVerts = [] - self.polySnaps = [] self.RedrawCanvas() # Other undoable changes exist elif self.undoActions: + # Save current state to redo + newAction = Action(self.regions, self.adjacent) + self.redoActions.append(newAction) + + # Undo action action = self.undoActions.pop() - # Creation action - if not action.oldState: - # Single region creation - if isinstance(action.newState, Region): - self.regions.remove(action.newState) - # Map load from blank canvas - if isinstance(action.newState, list): - self.regions = [] - # TODO: Background image load from blank - # Deletion action - if not action.newState: - # Single region deletion - if isinstance(action.oldState, Region): - self.regions.append(action.oldState) - # Multiple region deletion or map clear - if isinstance(action.oldState, list): - self.regions.extend(action.oldState) - # TODO: Background image clear - # Modification action - else: - # Single region modification - if isinstance(action.oldState, Region): - idx = self.regions.index(action.newState) - self.regions[idx] = action.oldState - # Map load from non-blank canvas - if isinstance(action.oldState, list): - self.regions = action.oldState - # TODO: Background image load from other image - self.redoActions.append(action) + self.regions = action.stateRegions + self.adjacent = action.stateAdjacent # TODO: if not self.undoActions: disable self.menuUndo # TODO: enable self.menuRedo self.RedrawCanvas() @@ -502,52 +483,30 @@ def OnMenuRedo(self, event): # wxGlade: regionEditor. """Reapply most recently undone action.""" # Redoable actions exist if self.redoActions: + # Save current state to undo + newAction = Action(self.regions, self.adjacent) + self.undoActions.append(newAction) + + # Redo action action = self.redoActions.pop() - # Creation action - if not action.oldState: - # Single region creation - if isinstance(action.newState, Region): - self.regions.append(action.newState) - # Map load from blank canvas - if isinstance(action.newState, list): - self.regions = action.newState - # TODO: Background image load from blank - # Deletion action - if not action.newState: - # Single region deletion - if isinstance(action.oldState, Region): - self.regions.remove(action.oldState) - # Multiple region deletion or map clear - if isinstance(action.oldState, list): - for reg in action.oldState: - self.regions.remove(reg) - # TODO: Background image clear - # Modification action - else: - # Single region modification - if isinstance(action.oldState, Region): - idx = self.regions.index(action.oldState) - self.regions[idx] = action.newState - # Map load from non-blank canvas - if isinstance(action.oldState, list): - self.regions = action.newState - # TODO: Background image load from other image - self.undoActions.append(action) + self.regions = action.stateRegions + self.adjacent = action.stateAdjacent # TODO: if not self.redoActions: disable self.menuRedo # TODO: enable self.menuUndo self.RedrawCanvas() def OnMenuAutobound(self, event): # wxGlade: regionEditor. + self.AddToUndo() self.Autoboundary() self.RedrawCanvas() def OnMenuRect(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuRect' not implemented" - event.Skip() + self.toggleSquare.SetValue(True) + self.OnToggleSquare(None) def OnMenuPoly(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuPoly' not implemented" - event.Skip() + self.togglePoly.SetValue(True) + self.OnTogglePoly(None) def OnMenuAddPoint(self, event): # wxGlade: regionEditor. print "Event handler `OnMenuAddPoint' not implemented" @@ -562,8 +521,8 @@ def OnMenuMarkers(self, event): # wxGlade: regionEditor. event.Skip() def OnMenuMarkersClear(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuMarkersClear' not implemented" - event.Skip() + self.markerPoses = [] + self.RedrawCanvas() def OnMenuCamera(self, event): # wxGlade: regionEditor. print "Event handler `OnMenuCamera' not implemented" @@ -600,49 +559,29 @@ def OnMouseLeftUp(self, event): elif self.toggleSquare.GetValue(): # Making the second corner of rectangle if self.polyVerts and pt.Dist(self.polyVerts[0]) > self.tolerance: - # Snap vertices to regions as necessary, not to Vicon - # This may result in a non-square region, but may be preferable - x0 = self.polyVerts[0].x - y0 = self.polyVerts[0].y - pt1, iReg1, iPt1, iEd1, snapped1 = \ - self.SnapRegions(Point(x0, pt.y)) - pt3, iReg3, iPt3, iEd3, snapped3 = \ - self.SnapRegions(Point(pt.x, y0)) - # Move clicked points if other vertices snap and they don't - if snapped1: - if iReg == -1: - pt = Point(pt.x, pt1.y) - if self.polySnaps[0][0] == -1: - self.polyVerts[0] = Point(pt1.x, self.polyVerts[0].y) - if snapped3: - if iReg == -1: - pt = Point(pt3.x, pt.y) - if self.polySnaps[0][0] == -1: - self.polyVerts[0] = Point(self.polyVerts[0].x, pt3.y) + pt1 = Point(self.polyVerts[0].x, pt.y) + pt3 = Point(pt.x, self.polyVerts[0].y) self.polyVerts.append(pt1) self.polyVerts.append(pt) self.polyVerts.append(pt3) - self.polySnaps.append((iReg1, iPt1, iEd1)) - self.polySnaps.append((iReg, iPt, iEd)) - self.polySnaps.append((iReg3, iPt3, iEd3)) # Create a square between previous click and new click + self.AddToUndo() self.CreateRegion() # Making the first corner of rectangle else: # Save point as first corner of square self.polyVerts.append(pt) - self.polySnaps.append((iReg, iPt, iEd)) # Creating a polygonal region elif self.togglePoly.GetValue(): # Closing the polygon to create a region if self.polyVerts and len(self.polyVerts) > 2 and \ pt == self.polyVerts[0]: + self.AddToUndo() self.CreateRegion() # New point distinct from others elif not pt in self.polyVerts: self.polyVerts.append(pt) - self.polySnaps.append((iReg, iPt, iEd)) # Plot line between last two points if len(self.polyVerts) > 1: x1pix, y1pix = self.Map2Pix(self.polyVerts[-2]) @@ -673,7 +612,6 @@ def OnMouseLeftUp(self, event): dimDlg.Destroy() # Move second point along same line to specified distance - oldRegion = copy.deepcopy(self.regions[iReg]) pt0 = self.regions[self.polyVerts[0]].verts[self.polyVerts[1]] signx = 1.0 signy = 1.0 @@ -693,9 +631,8 @@ def OnMouseLeftUp(self, event): dx = signx * (dim - pt.Dist(pt0)) / \ math.sqrt(1 + slope ** 2) dy = slope * dx - self.regions[iReg].verts[iPt] = \ - self.regions[iReg].verts[iPt] + Point(dx, dy) - self.AddToUndo(Action(oldRegion, self.regions[iReg])) + self.AddToUndo() + self.regions[iReg].verts[iPt] += Point(dx, dy) self.polyVerts = [] self.RecalcAdjacency(iReg) self.RedrawCanvas() @@ -710,6 +647,7 @@ def OnMouseLeftUp(self, event): # Dragging point(s) if iReg in self.selectedRegions and iPt != -1: # Change point position and check adjacencies + self.AddToUndo() self.regions[iReg].verts[iPt].Set(pt.x, pt.y) self.RecalcAdjacency(iReg) self.RedrawCanvas() @@ -718,6 +656,7 @@ def OnMouseLeftUp(self, event): elif iReg in self.selectedRegions or \ iRegInner in self.selectedRegions: # Change region(s) position and check adjacencies + self.AddToUndo() delta = pt - self.leftClickPt for iRegSel in self.selectedRegions: for iPt in range(len(self.regions[iRegSel].verts)): @@ -771,6 +710,7 @@ def OnMouseLeftDClick(self, event): # Creating a polygonal region if self.togglePoly.GetValue() and self.polyVerts and \ len(self.polyVerts) > 2: + self.AddToUndo() self.CreateRegion() # Editing a region @@ -819,6 +759,7 @@ def OnKeyDown(self, event): if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ self.selectedRegions and not self.togglePoly.GetValue() and \ not self.toggleSquare.GetValue(): + self.AddToUndo() self.selectedRegions.sort() while self.selectedRegions: self.DeleteRegion(self.selectedRegions.pop()) @@ -828,7 +769,6 @@ def OnKeyDown(self, event): self.polyVerts: if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): self.polyVerts.pop() - self.polySnaps.pop() self.RedrawCanvas() elif self.toggleDim.GetValue(): self.polyVerts = [] @@ -1127,7 +1067,6 @@ def ResetMapToggles(self, toggleStay=None): """ # Reset region creation and clear temporary lines self.polyVerts = [] - self.polySnaps = [] self.RedrawCanvas() # Turn off all toggles and revert specified one @@ -1152,15 +1091,11 @@ def CreateRegion(self): self.adjacent.append([[] for col in xrange(len(self.adjacent))]) for row in self.adjacent: row.append([]) - self.AddToUndo(Action(None, region)) - # TODO: Change Undo setup so that adjacency matrix can be added with - # regions in one undo step self.RecalcAdjacency(idxNewReg) # Cleanup and draw self.polyVerts = [] - self.polySnaps = [] self.polyAdjEdges = [] self.DrawRegion(region) self.DrawAdjacencies(idxNewReg) @@ -1178,21 +1113,16 @@ def DeleteRegion(self, iReg): # Redraw regions self.RedrawCanvas() - - # TODO: Add to undo def AddPointToRegion(self, pt, iReg, iEdge): """Add a vertex to the region. pt - Point object, location of new vertex in map coordinates - Unless this is a new Point object, it is recommended that this be - a copy of the previous Point object - AddPointToRegion(copy.copy(pt), iReg, iEdge) iRegion - Int, index of region to modify iEdge - Int, index of the edge to replace with edges to and from pt """ # Add point to other region - self.regions[iReg].verts.insert(iEdge + 1, pt) + self.regions[iReg].verts.insert(iEdge + 1, copy.copy(pt)) # Update all transition edges # Loop through all regions for jReg in range(len(self.adjacent[iReg])): @@ -1246,6 +1176,7 @@ def EditRegion(self, iReg): elif regEdDia.textName.GetValue() == reg.name or \ regEdDia.textName.GetValue() not in \ [r.name for r in self.regions]: + self.AddToUndo() reg.name = regEdDia.textName.GetValue() reg.color = regEdDia.colorPicker.GetColour() reg.isObstacle = regEdDia.chkbxObst.GetValue() @@ -1259,7 +1190,6 @@ def EditRegion(self, iReg): # Redraw the regions to ensure correct name/color self.RedrawCanvas() - # TODO: Add to undo def RecalcAdjacency(self, iReg, iRegStart=0): """Recalculate the adjacent walls between the specified region and @@ -1316,7 +1246,7 @@ def RecalcAdjacency(self, iReg, iRegStart=0): # Other region vertex snapped to wall of new region if iEd != -1: # Add point to new region and update old transitions - self.AddPointToRegion(copy.copy(pt), iReg, iEd) + self.AddPointToRegion(pt, iReg, iEd) vertsColloc.append([]) # Don't bother tracking point connectivity here # Recheck it in next loop so we can look at all regions @@ -1338,7 +1268,7 @@ def RecalcAdjacency(self, iReg, iRegStart=0): vertsColloc[iPt].append((iOthReg, iOthPt)) # Snapped to an edge of the other region elif iOthEd != -1: - self.AddPointToRegion(copy.copy(pt), iOthReg, iOthEd) + self.AddPointToRegion(pt, iOthReg, iOthEd) vertsColloc[iPt].append((iOthReg, iOthEd + 1)) # Now look for adjacent edges and update transition matrix accordingly @@ -1411,13 +1341,12 @@ def GetMapBoundaries(self): else: return None - def AddToUndo(self, action): - """Add specified action to the undo queue. - - action - Action object to be added - """ + def AddToUndo(self): + """Add current state to the undo queue.""" # Note that this is only called when doing a new action, # not when redoing since this clears the redo buffer + action = Action(self.regions, self.adjacent) + print action.stateRegions, action.stateAdjacent self.undoActions.append(action) while len(self.undoActions) > self.unredoBufLen: self.undoActions.popleft() @@ -2749,17 +2678,15 @@ def PtInRegion(self, pt): class Action: - def __init__(self, oldState, newState): + def __init__(self, regions, adjacent): """Create an object that represents an (un/re)doable action. - - oldState - Previous state of the affected object(s) - newState - Changed state of the affected object(s) - - These arguments will usually be one or more regions that were changed. - An argument of "None" indicates either creation or deletion. + Deep copies are used to avoid retaining same state when state changes. + + regions - Regions array before the action was taken. + adjacent - Adjacencies matrix before the action was taken. """ - self.oldState = oldState - self.newState = newState + self.stateRegions = copy.deepcopy(regions) + self.stateAdjacent = copy.deepcopy(adjacent) # end of class Action From 086da9955146a5efc2b908ab69072c957a5425ce Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Sat, 5 May 2012 16:30:10 -0400 Subject: [PATCH 16/26] Calibration modified to hook up to new Calibration GUI. Added functionality for importing background images. Made images scalable with dimension/length button. Added grid to map. Added display of lines and other things on mouse movement. Changed redraw to draw to bitmap, then to canvas, which reduces flashing, especially for redrawing Vicon. --- .../NewRegionEditor/RegionEditorV3.wxg | 49 +- src/lib/calibrate.py | 1314 +++++++++-- src/lib/regions.py | 20 +- src/lib/regionsPoints.py | 216 ++ src/lib/vicon.py | 150 ++ src/regionEditor.py | 1922 +++++------------ 6 files changed, 2120 insertions(+), 1551 deletions(-) create mode 100644 src/lib/regionsPoints.py create mode 100644 src/lib/vicon.py diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg index 03cb27fa..d13fb271 100644 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg @@ -1,5 +1,5 @@ - + @@ -30,6 +30,11 @@ menuSaveAs OnMenuSaveAs + + + --- + --- + menuExit @@ -64,6 +69,11 @@ menuPoly OnMenuPoly + + + --- + --- + menuAddPoint @@ -75,9 +85,9 @@ OnMenuRemPoint - + - + menuMarkers 1 OnMenuMarkers @@ -88,9 +98,9 @@ OnMenuMarkersClear - - menuCamera - OnMenuCamera + + --- + --- @@ -102,6 +112,25 @@ menuImageClear OnMenuImageClear + + + --- + --- + + + + menuFeedback + 1 + + + + --- + --- + + + + menuCalibrate + @@ -131,7 +160,7 @@ 0 - + OnToggleVicon @@ -142,10 +171,10 @@ wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 0 - - + + - OnButtonCamera + OnButtonImage 50, 50 diff --git a/src/lib/calibrate.py b/src/lib/calibrate.py index 216c242a..8e2feb68 100755 --- a/src/lib/calibrate.py +++ b/src/lib/calibrate.py @@ -14,33 +14,20 @@ :Usage: ``calibrate.py [spec_file]`` """ -import wx, sys, os, socket -import fileMethods, regions, project -from numpy import * -import mapRenderer -from _transformations import affine_matrix_from_points +import wx +import sys +import os +import socket +import collections +import copy +import project +import numpy +import _transformations +import vicon +from regionsPoints import Region, Point -# begin wxGlade: extracode -# end wxGlade - -class CalibrateFrame(wx.Frame): +class CalibrateHelper: def __init__(self, *args, **kwds): - # begin wxGlade: CalibrateFrame.__init__ - kwds["style"] = wx.DEFAULT_FRAME_STYLE - wx.Frame.__init__(self, *args, **kwds) - self.panel_map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER) - self.label_instructions = wx.StaticText(self, -1, "Welcome to the LTLMoP Calibration Tool") - self.button_go = wx.Button(self, -1, "Begin") - - self.__set_properties() - self.__do_layout() - - self.Bind(wx.EVT_BUTTON, self.onButtonGo, self.button_go) - # end wxGlade - - self.mapBitmap = None - self.robotPos = None - if len(sys.argv) < 2: print "You must specify a specification file." print "Usage: %s [spec_file]" % sys.argv[0] @@ -61,183 +48,1164 @@ def __init__(self, *args, **kwds): print "(ERROR) Calibration can only be run on a specfication file with a calibration configuration.\nPlease use ConfigEditor to calibrate a configuration." sys.exit(3) - # Initialize the init and pose handlers - - print "Importing handler functions..." - self.proj.importHandlers(['init','pose']) - - self.panel_map.SetBackgroundColour(wx.WHITE) - self.panel_map.SetBackgroundStyle(wx.BG_STYLE_CUSTOM) - self.panel_map.Bind(wx.EVT_PAINT, self.onPaint) - self.Bind(wx.EVT_SIZE, self.onResize, self) - - self.onResize(None) - - # Start timer for blinking - self.robotPos = None - self.markerPos = None - self.timer = wx.Timer(self) - self.timer.Start(500) - self.Bind(wx.EVT_TIMER, self.moveRobot) - self.calibrationWizard = self.doCalibration() + + def doCalibration(self): + # Run the calibration GUI + # It will call outputTransformationMatrix when calibration is saved + calibGUI = CalibrationFrame(self) + + def outputTransformationMatrix(self, T): + """ + Send the transformation matrix to Config Editor via UDP, + or just print if run from command line. + """ + output = repr(T) + if self.configEditorPort is None: + print output + else: + UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) + UDPSock.sendto(output, self.configEditorPort) + yield +# end of class CalibrateFrame - def onResize(self, event): - size = self.panel_map.GetSize() - self.mapBitmap = wx.EmptyBitmap(size.x, size.y) - self.mapScale = mapRenderer.drawMap(self.mapBitmap, self.proj.rfi, scaleToFit=True, drawLabels=True, memory=True) - self.Refresh() - self.Update() +class CalibrationFrame(wx.Frame): + def __init__(self, *args, **kwds): + # begin wxGlade: CalibrationFrame.__init__ + kwds["style"] = wx.DEFAULT_FRAME_STYLE + wx.Frame.__init__(self, *args, **kwds) + + # Menu Bar + self.calibFrame_menubar = wx.MenuBar() + self.filemenu = wx.Menu() + self.menuReset = wx.MenuItem(self.filemenu, wx.NewId(), "Reset", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuReset) + self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuSave) + self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) + self.filemenu.AppendItem(self.menuExit) + self.calibFrame_menubar.Append(self.filemenu, "File") + self.editmenu = wx.Menu() + self.menuUndo = wx.MenuItem(self.editmenu, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuUndo) + self.menuRedo = wx.MenuItem(self.editmenu, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuRedo) + self.editmenu.AppendSeparator() + self.menuSelectAll = wx.MenuItem(self.editmenu, wx.NewId(), "Select All", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuSelectAll) + self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All Points", "", wx.ITEM_NORMAL) + self.editmenu.AppendItem(self.menuClearAll) + self.calibFrame_menubar.Append(self.editmenu, "Edit") + self.toolsmenu = wx.Menu() + self.menuShowMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Show Markers", "", wx.ITEM_CHECK) + self.toolsmenu.AppendItem(self.menuShowMarkers) + self.menuClearMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuClearMarkers) + self.toolsmenu.AppendSeparator() + self.menuLoadImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Load Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuLoadImage) + self.menuDimen = wx.MenuItem(self.toolsmenu, wx.NewId(), "Dimension Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuDimen) + self.menuClearImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Image", "", wx.ITEM_NORMAL) + self.toolsmenu.AppendItem(self.menuClearImage) + self.calibFrame_menubar.Append(self.toolsmenu, "Tools") + self.helpmenu = wx.Menu() + self.menuHowTo = wx.MenuItem(self.helpmenu, wx.NewId(), "How To Use", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuHowTo) + self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) + self.helpmenu.AppendItem(self.menuAbout) + self.calibFrame_menubar.Append(self.helpmenu, "Help") + self.SetMenuBar(self.calibFrame_menubar) + # Menu Bar end + self.sidebar = wx.Panel(self, -1) + self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Markers") + self.buttonImage = wx.Button(self.sidebar, -1, "Image") + self.toggleAddPoint = wx.ToggleButton(self.sidebar, -1, "Point +") + self.toggleDeletePoint = wx.ToggleButton(self.sidebar, -1, "Point -") + self.textEnterPointX = wx.TextCtrl(self.sidebar, -1, "") + self.textEnterPointY = wx.TextCtrl(self.sidebar, -1, "") + self.buttonEnterPoint = wx.Button(self.sidebar, wx.ID_OK, "OK") + self.toggleDimen = wx.ToggleButton(self.sidebar, -1, "Dimen.") + self.buttonSave = wx.Button(self.sidebar, -1, "Save") + self.chkbxShear = wx.CheckBox(self.sidebar, -1, "Lock aspect ratio") + self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + self.ref = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - if event is not None: - event.Skip() + self.__set_properties() + self.__do_layout() - def onPaint(self, event=None): - if self.mapBitmap is None: + self.Bind(wx.EVT_MENU, self.OnMenuReset, self.menuReset) + self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) + self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) + self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) + self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) + self.Bind(wx.EVT_MENU, self.OnMenuSelectAll, self.menuSelectAll) + self.Bind(wx.EVT_MENU, self.OnMenuClearAll, self.menuClearAll) + self.Bind(wx.EVT_MENU, self.OnMenuShowMarkers, self.menuShowMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuClearMarkers, self.menuClearMarkers) + self.Bind(wx.EVT_MENU, self.OnMenuLoadImage, self.menuLoadImage) + self.Bind(wx.EVT_MENU, self.OnMenuDimen, self.menuDimen) + self.Bind(wx.EVT_MENU, self.OnMenuClearImage, self.menuClearImage) + self.Bind(wx.EVT_MENU, self.OnMenuHowTo, self.menuHowTo) + self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleAddPoint, self.toggleAddPoint) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) + self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) + self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDimen, self.toggleDimen) + self.Bind(wx.EVT_BUTTON, self.OnButtonSave, self.buttonSave) + # end wxGlade + + # Check that parent object was passed in correctly + print args[0].__class__.__name__ + if len(args) > 0 and args[0].__class__.__name__ == 'regionEditor': + self.parent = args[0] + self.isCalibHelper = False + print "CalibrationFrame opening in regionEditor mode." + if self.parent.regions: + self.regions = self.parent.regions + else: + print "No regions defined. Exiting calibration." + self.Destroy() + elif len(args) > 0 and args[0].__class__.__name__ == 'CalibrateHelper': + self.parent = args[0] + self.isCalibHelper = True + print "CalibrationFrame opening in specEditor mode." + if self.parent.proj.rfi.regions: + self.regions + else: + print "No regions defined. Exiting calibration." + self.Destroy() + else: + print "No or invalid parent object passed in. Exiting calibration." + self.parent = None + self.regions = [] + self.Destroy() + + # Bind mouse events + self.map.Bind(wx.EVT_LEFT_DOWN, self.OnMapMouseLeftDown, self.map) + self.map.Bind(wx.EVT_LEFT_UP, self.OnMapMouseLeftUp, self.map) + self.map.Bind(wx.EVT_MOUSEWHEEL, self.OnMapMouseWheel, self.map) + self.map.Bind(wx.EVT_ENTER_WINDOW, self.OnMapEnterWindow, self.map) + self.map.Bind(wx.EVT_LEAVE_WINDOW, self.OnMapLeaveWindow, self.map) + self.ref.Bind(wx.EVT_LEFT_DOWN, self.OnRefMouseLeftDown, self.ref) + self.ref.Bind(wx.EVT_LEFT_UP, self.OnRefMouseLeftUp, self.ref) + self.ref.Bind(wx.EVT_MOUSEWHEEL, self.OnRefMouseWheel, self.ref) + self.ref.Bind(wx.EVT_ENTER_WINDOW, self.OnRefEnterWindow, self.ref) + self.ref.Bind(wx.EVT_LEAVE_WINDOW, self.OnRefLeaveWindow, self.ref) + + # Bind keyboard events + self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) + self.map.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.map) + self.ref.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.ref) + + # Add close event handler to cleanup before closing + self.Bind(wx.EVT_CLOSE, self.OnClose) + + # Determine mapping of the map panel to the field + # Avoid difficulties by having same scale for x and y + mapLen = self.map.GetSize() # Initial size of map panel (pixels) + # Initial range of field (xmin, xmax, ymin, ymax) + xmin, xmax, ymin, ymax = self.GetBoundingBox() + # pose = pixPose * scale + offset + # Note: y-pixels and y-pose have opposite directions + xScale = (xmax - xmin) / float(mapLen[0]) + yScale = (ymax - ymin) / float(mapLen[1]) + maxScale = max(xScale, yScale) + xOffset = xmin + yOffset = ymax + self.mapScale = Point(maxScale, -maxScale) + self.mapOffset = Point(xOffset, yOffset) + # Determine initial mapping of the reference panel to the field + # Initially defines a 1:1 mapping (at least scale/offset-wise) to map + refLen = self.ref.GetSize() # Initial size of reference panel (pixels) + xScale = (xmax - xmin) / float(refLen[0]) + yScale = (ymax - ymin) / float(refLen[1]) + maxScale = max(xScale, yScale) + xOffset = xmin + yOffset = ymax + self.refScale = Point(maxScale, -maxScale) + self.refOffset = Point(xOffset, yOffset) + + # Calibration-related parameters + self.calibPoints = [] # List of lists of Points + # matching map to reference positions + # [[mapPt1, refPt1], [mapPt2, refPt2], ...] + self.newCalibPt = [None, None] # List of two points + # for creating new calibration points + # [mapNewPt, refNewPt] + + # Background-related parameters + self.backgroundImage = None # Background image data + self.backgroundPosition = None # Position of left top corner and + # dimensions of the background + # image in absolute coordinates + # [x, y, width, height] + self.backgroundIsSelected = False # Indicates if background image + # is selected (for dragging) + self.dimenPoint = None # Holder for first point during + # dimensioning of image for scaling + + # Mouse-related parameters + self.mapLeftClickPt = Point(0.0, 0.0) + self.refLeftClickPt = Point(0.0, 0.0) + self.selectedPoints = [] # Points that have been selected by mouse + tolerance = 5.0 # Pixel tolerance to consider "same point" + self.mapTolerance = tolerance * self.mapScale.x + self.refTolerance = tolerance * self.refScale.x + + # Set up for undo/redo capabilities + # TODO: Disable self.menuUndo and self.menuRedo + self.unredoBufLen = 50 + self.undoActions = collections.deque() + self.redoActions = collections.deque() + + # Create Vicon listener + self.markerPoses = [] # Marker positions to be drawn + self.viconListener = vicon.ViconMarkerListener(self) + + # Display the GUI window and set up the map canvas + self.Show() + self.RedrawMap() + + def __set_properties(self): + # begin wxGlade: CalibrationFrame.__set_properties + self.SetTitle("Map Calibration") + self.SetBackgroundColour(wx.Colour(240, 240, 240)) + self.toggleVicon.SetMinSize((50, 50)) + self.buttonImage.SetMinSize((50, 50)) + self.toggleAddPoint.SetMinSize((50, 50)) + self.toggleDeletePoint.SetMinSize((50, 50)) + self.textEnterPointX.SetMinSize((40, 25)) + self.textEnterPointX.SetToolTipString("x") + self.textEnterPointY.SetMinSize((40, 25)) + self.textEnterPointY.SetToolTipString("y") + self.buttonEnterPoint.SetMinSize((25, 25)) + self.toggleDimen.SetMinSize((50, 50)) + self.buttonSave.SetMinSize((50, 50)) + self.chkbxShear.SetValue(1) + self.sidebar.SetMinSize((110, 268)) + self.map.SetMinSize((600, 300)) + self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) + self.ref.SetMinSize((600, 300)) + self.ref.SetBackgroundColour(wx.Colour(255, 255, 255)) + # end wxGlade + + def __do_layout(self): + # begin wxGlade: CalibrationFrame.__do_layout + sizer_6 = wx.BoxSizer(wx.HORIZONTAL) + sizer_7 = wx.BoxSizer(wx.VERTICAL) + sizer_8 = wx.BoxSizer(wx.VERTICAL) + sizer_12 = wx.BoxSizer(wx.HORIZONTAL) + sizer_11 = wx.BoxSizer(wx.HORIZONTAL) + sizer_10 = wx.BoxSizer(wx.HORIZONTAL) + sizer_9 = wx.BoxSizer(wx.HORIZONTAL) + sizer_9.Add(self.toggleVicon, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_9.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_9, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_10.Add(self.toggleAddPoint, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_10.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_10, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_11.Add(self.textEnterPointX, 0, wx.ALIGN_CENTER_VERTICAL, 0) + sizer_11.Add(self.textEnterPointY, 0, wx.ALIGN_CENTER_VERTICAL, 0) + sizer_11.Add(self.buttonEnterPoint, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_11, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) + sizer_12.Add(self.toggleDimen, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_12.Add(self.buttonSave, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + sizer_8.Add(sizer_12, 1, wx.EXPAND, 0) + sizer_8.Add(self.chkbxShear, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + self.sidebar.SetSizer(sizer_8) + sizer_6.Add(self.sidebar, 0, 0, 0) + sizer_7.Add(self.map, 1, wx.BOTTOM | wx.EXPAND, 3) + sizer_7.Add(self.ref, 1, wx.TOP | wx.EXPAND, 3) + sizer_6.Add(sizer_7, 1, wx.EXPAND, 0) + self.SetSizer(sizer_6) + sizer_6.Fit(self) + self.Layout() + # end wxGlade + + def OnClose(self, event): + """Perform cleanup tasks and close the application.""" + self.viconListener.stop() + self.Destroy() + + def OnMenuReset(self, event): # wxGlade: CalibrationFrame. + """Clear all calibration points, background images, and markers.""" + self.OnMenuClearMarkers(None) + self.OnMenuClearImage(None) + self.OnMenuClearAll(None) + + def OnMenuSave(self, event): # wxGlade: CalibrationFrame. + """Performs calibration on regions using calibration points to + calculate a transformation matrix that includes rotation. Moves all the + region points as appropriate, then close this GUI.""" + # Check that sufficient number of calibration points have been defined + if len(self.calibPoints) < 3: + msg = "Calibration requires that at least 3 calibration " + \ + "points are defined. Please define more points." + notifyDialog = wx.MessageDialog(self, msg, \ + style=wx.OK|wx.ICON_EXCLAMATION|wx.STAY_ON_TOP) + notifyDialog.ShowModal() + notifyDialog.Destroy() return - - if event is None: - dc = wx.ClientDC(self.panel_map) + + # Put calibration points into desired format + mapPts = numpy.mat([self.calibPoints[0][0].x, \ + self.calibPoints[0][0].y]).T + regPts = numpy.mat([self.calibPoints[0][1].x, \ + self.calibPoints[0][1].y]).T + for ptPair in self.calibPoints: + mapPts = numpy.hstack([mapPts, \ + numpy.mat([ptPair[0].x, ptPair[0].y]).T]) + regPts = numpy.hstack([regPts, \ + numpy.mat([ptPair[1].x, ptPair[1].y]).T]) + + # Shearing allows for the scaling of dimensions independently + # (does not keep the aspect ratio) but also skews angles and such + # if the points chosen are not perfect + allowShear = not self.chkbxShear.IsChecked() + + # Get tranformation matrix such that + # regPt = T * mapPt + T = _transformations.affine_matrix_from_points(mapPts, regPts, \ + shear=allowShear) + + # If being used by regionEditor + if not self.isCalibHelper: + # Apply transformation to all region points + self.parent.AddToUndo() + for reg in self.parent.regions: + for pt in reg.pointArray: + ptMat = numpy.mat([pt.x, pt.y, 1.0]).T + newPtMat = T * ptMat + pt.Set(float(newPtMat[0]), float(newPtMat[1])) + self.parent.RedrawCanvas() + + # If being used by CalibrateHelper else: - pdc = wx.AutoBufferedPaintDC(self.panel_map) - try: - dc = wx.GCDC(pdc) - except: - dc = pdc - else: - self.panel_map.PrepareDC(pdc) + self.parent.outputTransformationMatrix(T) + + # Quit calibration + self.OnClose(None) - self.panel_map.PrepareDC(dc) - dc.BeginDrawing() + def OnMenuExit(self, event): # wxGlade: CalibrationFrame. + self.OnClose(None) - # Draw background - dc.DrawBitmap(self.mapBitmap, 0, 0) + def OnMenuUndo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuUndo' not implemented!" + event.Skip() - # Draw robot - if self.robotPos is not None: - [x,y] = map(lambda x: int(self.mapScale*x), self.robotPos) - dc.DrawCircle(x, y, 15) + def OnMenuRedo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuRedo' not implemented!" + event.Skip() - dc.EndDrawing() + def OnMenuSelectAll(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuSelectAll' not implemented!" + event.Skip() - if event is not None: - event.Skip() + def OnMenuClearAll(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuClearAll' not implemented!" + event.Skip() - def setStepInfo(self, label, button): - self.label_instructions.SetLabel(label) - self.button_go.SetLabel(button) - self.Layout() - self.Refresh() + def OnMenuShowMarkers(self, event): # wxGlade: CalibrationFrame. + # Switch Vicon streaming on or off based on state of menu checkbox + if self.menuShowMarkers.IsChecked(): + self.toggleVicon.SetValue(True) + self.viconListener.start() + else: + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + self.toggleVicon.SetValue(False) - def doCalibration(self): - # Load the calibration points from region file - - pt_names = [] - file_pts = None - for [name, index, x, y] in self.proj.rfi.getCalibrationPoints(): - pt_names.append(name + "_P" + str(index)) - new_pt = mat([float(x), float(y)]).T - if file_pts is None: - file_pts = new_pt - else: - file_pts = hstack([file_pts, new_pt]) + def OnMenuClearMarkers(self, event): # wxGlade: CalibrationFrame. + if self.menuShowMarkers.IsChecked(): + self.toggleVicon.SetValue(False) + self.menuShowMarkers.Check(False) + self.viconListener.stop() + self.viconListener = ViconMarkerListener(self) + time.sleep(0.1) + self.markerPoses = [] + self.RedrawVicon() - if file_pts is None or file_pts.shape[1] < 3: - wx.MessageBox("Please choose at least three points in Region Editor for calibration. Quitting.", "Error", wx.OK) - sys.exit(0) + def OnMenuLoadImage(self, event): # wxGlade: CalibrationFrame. + # Start up open dialog + dialogOpen = wx.FileDialog(self, message="Import Background Image", \ + defaultDir=os.getcwd(), \ + style=wx.FD_OPEN) + + # Hit Open + if dialogOpen.ShowModal() == wx.ID_OK: + filePath = dialogOpen.GetPath() + if not os.path.exists(filePath): + return + + # Load image + self.LoadBackgroundImage(filePath) + + def OnMenuDimen(self, event): # wxGlade: CalibrationFrame. + print "OnMenuDimen" + event.Skip() - # Get real coordinates for calibration points - real_pts = None - for i, point in enumerate(file_pts.T): - # Show blinking circle on map - self.markerPos = point.tolist()[0] + def OnMenuClearImage(self, event): # wxGlade: CalibrationFrame. + self.backgroundImage = None + self.backgroundPosition = None + self.backgroundIsSelected = False + self.RedrawRef() - self.setStepInfo('Please place robot at Point %s shown on the map and press [Capture].' % pt_names[i], "Capture") - yield + def OnMenuHowTo(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuHowTo' not implemented!" + event.Skip() - self.markerPos = None # Disable blinking circle + def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnMenuAbout' not implemented!" + event.Skip() - pose = self.proj.h_instance['pose'].getPose() + def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. + # Switch Vicon streaming on or off based on state of toggle button + if self.toggleVicon.GetValue(): + self.menuShowMarkers.Check(True) + self.viconListener.start() + else: + self.viconListener.stop() + # Reinitialize thread to enable restarting it + self.viconListener = ViconMarkerListener(self) + self.menuShowMarkers.Check(False) - new_pt = mat(pose[0:2]).T - if real_pts is None: - real_pts = new_pt - else: - real_pts = hstack([real_pts, new_pt]) + def OnButtonImage(self, event): # wxGlade: CalibrationFrame. + self.OnMenuLoadImage(None) + + def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. + self.ResetToggles(toggleKeep=self.toggleAddPoint) + # TODO: When menu items are added for add point, flip on here + + def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. + self.ResetToggles(toggleKeep=self.toggleDeletePoint) + # TODO: When menu items are added for delete point, flip on here - self.setStepInfo('Read real point %s coordinate of [%f, %f].' % (pt_names[i], pose[0], pose[1]), "Continue") - yield + def OnButtonEnterPoint(self, event): # wxGlade: CalibrationFrame. + print "Event handler `OnButtonEnterPoint' not implemented" + event.Skip() - # Calculate transformation: - T = affine_matrix_from_points(real_pts, file_pts) + def OnToggleDimen(self, event): # wxGlade: CalibrationFrame. + self.ResetToggles(toggleKeep=self.toggleDimen) + + def OnButtonSave(self, event): # wxGlade: CalibrationFrame. + self.OnMenuSave(None) + + def OnMapMouseLeftDown(self, event): + """Save downclick point on map for future use.""" + self.mapLeftClickPt, iCalibPt, iReg = \ + self.SnapPointMap(self.MapPix2M(event.GetPosition())) + + def OnMapMouseLeftUp(self, event): + """React to the finalization of the left click on the map.""" + ptPix = event.GetPosition() + pt, iCalibPt, iReg = \ + self.SnapPointMap(self.MapPix2M(ptPix)) + + # Creating a calibration point + if self.toggleAddPoint.GetValue() and iCalibPt == -1: + # First point clicked for adding new point + if not self.newCalibPt[1]: + self.newCalibPt[0] = pt + self.RedrawMap() + + # Finalizing calibration point (second point clicked) + else: + self.calibPoints.append([pt, self.newCalibPt[1]]) + self.newCalibPt = [None, None] + self.Redraw() + + # Removing a calibration point + elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: + self.calibPoints.pop(iCalibPt) + self.Redraw() + + # Panning the map view + elif pt.Dist(self.mapLeftClickPt) > self.mapTolerance: + downClickPix = self.MapM2Pix(self.mapLeftClickPt) + self.mapOffset = Point(self.mapScale.x * \ + (downClickPix[0] - ptPix[0]) + self.mapOffset.x, \ + self.mapScale.y * (downClickPix[1] - ptPix[1]) + \ + self.mapOffset.y) + self.RedrawMap() + + def OnMapMouseWheel(self, event): + """Zoom on the map.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.mapOffset = Point(float(ptPix[0]) * self.mapScale.x * \ + (1 - scaler) + self.mapOffset.x, float(ptPix[1]) * \ + self.mapScale.y * (1 - scaler) + self.mapOffset.y) + self.mapScale = self.mapScale * scaler + self.RedrawMap() + + def OnMapEnterWindow(self, event): + """Set focus on map to enable zooming.""" + self.map.SetFocus() + self.RedrawMap() + + def OnMapLeaveWindow(self, event): + """Return focus to main GUI.""" + self.SetFocus() + + def OnRefMouseLeftDown(self, event): + """Save downclick point on reference panel for future use.""" + self.refLeftClickPt, iCalibPt, iReg = \ + self.SnapPointMap(self.RefPix2M(event.GetPosition())) + + def OnRefMouseLeftUp(self, event): + """React to the finalization of the left click on the map.""" + ptPix = event.GetPosition() + pt, iCalibPt = \ + self.SnapPointRef(self.RefPix2M(ptPix)) + + # Creating a calibration point + if self.toggleAddPoint.GetValue() and iCalibPt == -1: + # First point clicked for adding new point + if not self.newCalibPt[0]: + self.newCalibPt[1] = pt + self.RedrawMap() + + # Finalizing calibration point (second point clicked) + else: + self.calibPoints.append([self.newCalibPt[0], pt]) + self.newCalibPt = [None, None] + self.Redraw() + + # Removing a calibration point + elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: + self.calibPoints.pop(iCalibPt) + self.Redraw() + + # Setting scale on background image + elif self.toggleDimen.GetValue() and self.InsideBackgroundImage(pt): + # First point on background image + if not self.dimenPoint: + self.dimenPoint = pt + + # Second unique point on background image + elif pt.Dist(self.dimenPoint) > self.refTolerance: + # Request dimension + currDist = pt.Dist(self.dimenPoint) + dimDlg = wx.TextEntryDialog(self, \ + "Current Length: %.3f" % currDist, caption='Dimension') + if dimDlg.ShowModal() == wx.ID_OK: + # Check for valid dimension (disallow negative values) + try: + dim = float(dimDlg.GetValue()) + if dim <= 0: + dimDlg.Destroy() + return + except ValueError: + dimDlg.Destroy() + return + dimDlg.Destroy() + + # Rescale image + self.backgroundPosition[1] = \ + self.backgroundPosition[1] * dim / currDist + self.RedrawRef() + self.dimenPoint = None + + # Panning the reference view or moving the image + elif pt.Dist(self.refLeftClickPt) > self.refTolerance: + # Moving background image + if self.backgroundIsSelected and \ + self.InsideBackgroundImage(self.refLeftClickPt): + self.backgroundPosition[0] += (pt - self.refLeftClickPt) + # Panning reference view + else: + downClickPix = self.RefM2Pix(self.refLeftClickPt) + self.refOffset = Point(self.refScale.x * \ + (downClickPix[0] - ptPix[0]) + self.refOffset.x, \ + self.refScale.y * (downClickPix[1] - ptPix[1]) + \ + self.refOffset.y) + self.RedrawRef() + + # Check if selecting or deselecting the background image + elif not self.toggleAddPoint.GetValue() and \ + not self.toggleDeletePoint.GetValue(): + isInImage = self.InsideBackgroundImage(pt) + # Selecting background image + if (not event.CmdDown() or not self.backgroundIsSelected) and \ + isInImage: + self.backgroundIsSelected = True + # Deselecting background image + elif (self.backgroundIsSelected and event.CmdDown()) or \ + not isInImage: + self.backgroundIsSelected = False + self.RedrawRef() + + def OnRefMouseWheel(self, event): + """Zoom on the reference panel.""" + ptPix = event.GetPosition() + rot = event.GetWheelRotation() # Usually +/- multiple of 120 + scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll + # Keep mouse on the same point after zooming + # pt = ptPix * scale + offset + # pt = ptPix * scaleNew + offsetNew + self.refOffset = Point(float(ptPix[0]) * self.refScale.x * \ + (1 - scaler) + self.refOffset.x, float(ptPix[1]) * \ + self.refScale.y * (1 - scaler) + self.refOffset.y) + self.refScale = self.refScale * scaler + self.RedrawRef() + + def OnRefEnterWindow(self, event): + """Set focus on reference panel to enable zooming.""" + self.ref.SetFocus() + self.RedrawRef() + + def OnRefLeaveWindow(self, event): + """Return focus to main GUI.""" + self.SetFocus() + + def OnKeyDown(self, event): + print "OnKeyDown" + event.Skip() + + def LoadBackgroundImage(self, filePath): + image = wx.Image(filePath) + if not image.IsOk(): + wx.MessageBox("Cannot import image from file %s" % \ + (os.path.basename(filePath)), "Error", + style = wx.OK | wx.ICON_ERROR, parent=self) + return + + self.backgroundImage = image + + # If image position is unknown, just keep same image size + if not self.backgroundPosition: + leftTop = self.RefPix2M((0, 0)) + xExtent = float(image.GetWidth()) * self.refScale.x + yExtent = -float(image.GetHeight()) * self.refScale.y + self.backgroundPosition = [leftTop, Point(xExtent, yExtent)] + + # Redraw the map with the image + self.RedrawRef() + + def Redraw(self): + """Redraw map and reference panels.""" + self.RedrawMap() + self.RedrawRef() + + def RedrawMap(self): + """Redraw the map panel.""" + # Clear map + self.map.ClearBackground() + + # Create device context + windc = wx.WindowDC(self.map) + dc = wx.GCDC(windc) + self.map.PrepareDC(dc) + dc.BeginDrawing() + + # Redraw all regions + for region in self.regions: + self.DrawRegion(region, dc=dc) + + # Draw calibration points + for iPtPair, ptPair in enumerate(self.calibPoints): + self.DrawCalibPoint(self.MapM2Pix(ptPair[0]), str(iPtPair), dc) + + # Draw single point from currently being made calibration point + if self.newCalibPt[0]: + self.DrawCalibPoint(self.MapM2Pix(self.newCalibPt[0]), "", dc) + + dc.EndDrawing() + + def RedrawRef(self): + """Redraw the reference panel.""" + # Clear ref + self.ref.ClearBackground() + + # Create device context + windc = wx.WindowDC(self.ref) + dc = wx.GCDC(windc) + self.ref.PrepareDC(dc) + dc.BeginDrawing() + + # Draw background image + if self.backgroundImage: + self.DrawBackgroundImage(dc) + + # Draw grid + self.DrawGrid(dc) + + # Draw calibration points + for iPtPair, ptPair in enumerate(self.calibPoints): + self.DrawCalibPoint(self.RefM2Pix(ptPair[1]), str(iPtPair), dc) + + # Draw single point from currently being made calibration point + if self.newCalibPt[1]: + self.DrawCalibPoint(self.RefM2Pix(self.newCalibPt[1]), "", dc) + + # Draw markers + dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) + dc.SetPen(wx.Pen(wx.Colour(0, 0, 0, 125), 1, wx.SOLID)) + for pt in self.markerPoses: + ptPix = self.RefM2Pix(pt) + dc.DrawCircle(ptPix[0], ptPix[1], 4) + + dc.EndDrawing() + + def RedrawVicon(self): + # TODO: Redraw saved image of background since it is faster and + # vicon needs to be redrawn at a high frequency + self.RedrawRef() + + def DrawBackgroundImage(self, dc): + """Draw the background image on the reference canvas.""" + # Rescale image to make sense with current pan/zoom point + xPix, yPix = self.RefM2Pix(self.backgroundPosition[0]) + newWidth = int(self.backgroundPosition[1].x / self.refScale.x) + newHeight = -int(self.backgroundPosition[1].y / self.refScale.y) + if newHeight > 0 and newWidth > 0: + image = self.backgroundImage.Scale(newWidth, newHeight) + bitmap = wx.BitmapFromImage(image) + + # Draw image + dc.DrawBitmap(bitmap, xPix, yPix, False) + + # Draw selection handles + if self.backgroundIsSelected: + xPix, yPix = self.RefM2Pix(self.backgroundPosition[0]) + newWidth = int(self.backgroundPosition[1].x / \ + self.refScale.x) + newHeight = -int(self.backgroundPosition[1].y / \ + self.refScale.y) + if newWidth > 0 and newHeight > 0: + dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255), wx.SOLID)) + dc.DrawCircle(xPix, yPix, 5) + dc.DrawCircle(xPix + newWidth, yPix, 5) + dc.DrawCircle(xPix + newWidth, yPix + newHeight, 5) + dc.DrawCircle(xPix, yPix + newHeight, 5) + + def DrawGrid(self, dc): + """Draw the axes and grid on the reference canvas. - self.setStepInfo("Calibration complete!", "Quit") + dc - Device context used for drawing on the reference panel. + """ + # Draw background gridlines + colLim, rowLim = self.ref.GetSize() + dc.SetPen(wx.Pen(wx.Colour(220, 220, 220), 1, wx.SOLID)) + start = self.RefPix2M((0, 0)) + finish = self.RefPix2M((colLim, rowLim)) + for x in range(int(start.x) - 1, int(finish.x) + 1): + xPix = int((x - self.refOffset.x) / self.refScale.x) + dc.DrawLine(xPix, 0, xPix, rowLim) + for y in range(int(start.y) + 1, int(finish.y) - 1, -1): + yPix = int((y - self.refOffset.y) / self.refScale.y) + dc.DrawLine(0, yPix, colLim, yPix) + + # Draw axes + dc.SetPen(wx.Pen(wx.Colour(0, 0, 0), 1, wx.SOLID)) + xPixOff = int(-self.refOffset.x / self.refScale.x) + yPixOff = int(-self.refOffset.y / self.refScale.y) + dc.DrawLine(0, yPixOff, colLim, yPixOff) + dc.DrawLine(xPixOff, 0, xPixOff, rowLim) + + def DrawRegion(self, region, dc): + """Draw a single region. - # Sends the data back to Config Editor via UDP, or just print - output = repr(T) + region - Instance of Region class, contains information about the region. + dc - Device context used for drawing on the panel. + """ + # Set brush to region color + isBoundary = region.name.lower() == "boundary" + if isBoundary: + dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) + dc.SetPen(wx.Pen(wx.BLACK, 3, wx.SOLID)) + elif region.isObstacle: + obstColor = wx.Colour(region.color.Red() / 10, \ + region.color.Green() / 10, region.color.Blue() / 10, 128) + dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) + else: + innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ + region.color.Blue(), 128) + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) + dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) + dc.SetTextForeground(wx.BLACK) + dc.SetBackgroundMode(wx.TRANSPARENT) + dc.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) + + # Set up label + if region.isObstacle: + labelText = "(%s)" % region.name + else: + labelText = region.name + labelWidth, labelHeight = dc.GetTextExtent(labelText) + + # Draw region + vertsPix = [] + xLabelPix = 0 + yLabelPix = 0 + for vert in region.pointArray: + vertPix = self.MapM2Pix(vert) + vertsPix.append(vertPix) + if not isBoundary: # Put label in center + xLabelPix += vertPix[0] + yLabelPix += vertPix[1] + else: # Put label in lower right corner + xLabelPix = max(xLabelPix, vertPix[0]) + yLabelPix = max(yLabelPix, vertPix[1]) + dc.DrawPolygon(vertsPix) + if isBoundary: + xLabelPix = xLabelPix - labelWidth + else: + xLabelPix = xLabelPix / len(region.pointArray) - labelWidth / 2 + yLabelPix = yLabelPix / len(region.pointArray) - labelHeight / 2 + + # Draw label + if not isBoundary: + dc.SetBrush(wx.Brush(region.color, wx.SOLID)) + dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ + labelWidth + 10, labelHeight + 6, 3) + dc.DrawText(labelText, xLabelPix, yLabelPix) + + def DrawCalibPoint(self, ptPix, label, dc): + """Draw a single calibration point. + + ptPix - Point to draw with coordinates in pixels + label - String to label point with - usually point index + If label is empty, point will be drawn in a differnt color + dc - Device context that allows for drawing + """ + # Draw circle + radius = 5 + if label: + innerColor = wx.RED + else: + innerColor = wx.GREEN + dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) + dc.SetPen(wx.Pen(wx.BLACK, 1, wx.SOLID)) + dc.DrawCircle(ptPix[0], ptPix[1], radius) + + # Draw label + if label: + dc.SetTextForeground(wx.BLACK) + dc.SetBackgroundMode(wx.TRANSPARENT) + dc.SetFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) + labelWidth, labelHeight = dc.GetTextExtent(label) + xLabelPix = ptPix[0] - radius + yLabelPix = ptPix[1] - radius + dc.DrawText(label, xLabelPix, yLabelPix) + + def ResetToggles(self, toggleKeep=None): + """Unpress toggle buttons except that specified. Reset calibration + point creation. Redraw the panels. + + toggleKeep - Toggle button to retain the value of + """ + # Reset toggles + valueKeep = toggleKeep.GetValue() + self.toggleAddPoint.SetValue(False) + self.toggleDeletePoint.SetValue(False) + self.toggleDimen.SetValue(False) + toggleKeep.SetValue(valueKeep) + + # Reset partial calibration point creation + self.newCalibPt = [None, None] + + # Reset dimensioning of image + self.dimenPoint = None + + # Redraw the map and reference panels + self.Redraw() + + def GetBoundingBox(self): + xmin = min([pt.x for region in self.regions for pt in region.pointArray]) + ymin = min([pt.y for region in self.regions for pt in region.pointArray]) + xmax = max([pt.x for region in self.regions for pt in region.pointArray]) + ymax = max([pt.y for region in self.regions for pt in region.pointArray]) - if self.configEditorPort is None: - print output + return (xmin, xmax, ymin, ymax) + + def SnapPointMap(self, pt): + """Snap the point to the closest calibration point, region vertex, or + region edge from the map panel. + + pt - Point to snap in absolute coordinates + returns - (snappedPt, idxCalibPt, idxReg) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + idxReg - Index of region snapped-to (-1 if not snapped to region) + """ + # Check calibration points first + snapped = False + pt, idxCalibPt, snapped = \ + self.SnapCalibPoints(pt, 0, snapped=snapped) + + # Check regions next + pt, idxReg, idxRPoint, idxREdge, snapped = \ + self.SnapRegions(pt, snapped=snapped) + + return pt, idxCalibPt, idxReg + + def SnapPointRef(self, pt): + """Snap the point to the closest calibration point or marker from the + reference panel. + + pt - Point to snap in absolute coordinates + returns - (snappedPt, iCalibPt, iReg) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + """ + # Check calibration points first + snapped = False + pt, idxCalibPt, snapped = \ + self.SnapCalibPoints(pt, 1, snapped=snapped) + + # Check marker points next + pt, snapped = self.SnapVicon(pt, snapped=snapped) + + return pt, idxCalibPt + + def SnapCalibPoints(self, pt, idxPanel, snapped=False): + """Snap the point to the first sufficiently close calibration point in + the specified panel. + + pt - Point to be snapped in absolute coordinates + idxPanel - 0 indicating map panel, 1 indicating reference panel + snapped - Boolean, whether point has been snapped already + If snapped was true in input, then function will immediately + return, setting the same value to the output snapped + returns - (snappedPt, idxCalibPt, snapped) + snappedPt - Point after snapping, in absolute coordinates + idxCalibPt - Index of snapped-to calibration point + (-1 if not snapped to calibration point) + snapped - Boolean indicating if the point has ever been snapped + """ + # Set tolerance in absolute coordinates + if idxPanel == 0: + tol = self.mapTolerance else: - UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) - UDPSock.sendto(output, self.configEditorPort) - yield + tol = self.refTolerance + + # Check through all calibration points until snapping + idxCalibPt = -1 + iCPt = len(self.calibPoints) - 1 + while not snapped and iCPt > -1: + if pt.Dist(self.calibPoints[iCPt][idxPanel]) < tol: + pt = self.calibPoints[iCPt][idxPanel] + idxCalibPt = iCPt + snapped = True + iCPt -= 1 + + return copy.copy(pt), idxCalibPt, snapped + + def SnapVicon(self, pt, snapped=False): + """Snap the given point to any sufficiently close marker point. + + pt - Point to be snapped, in absolute coordinates + snapped - Boolean, indicates if point has already been snapped + If snapped was true in input, then function will immediately + return, setting the same value to the output snapped + returns - (snappedPt, snapped) + snappedPt - Point after snapping + snapped - Boolean, indicates if point has ever been snapped + """ + # Check all points until snapped + iVPt = 0 + while not snapped and iVPt < len(self.markerPoses): + if pt.Dist(self.markerPoses[iVPt]) < self.refTolerance: + pt = copy.copy(self.markerPoses[iVPt]) + snapped = True + iVPt += 1 + + return copy.copy(pt), snapped + + def SnapRegions(self, pt, snapped=False): + """Snap the point to any sufficiently "nearby" region vertex or wall. - def moveRobot(self, event, state=[False]): - if self.markerPos is not None: - if not state[0]: - self.robotPos = None + pt - Point object, map coordinates of point + snapped - Boolean, true if point has snapped already, false if not + If point is already snapped, this function will just return + returns - + A single tuple will be returned: + (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRegion - int, index of region if snapped to region point/edge + if not snapped to region it will be -1 + idxRPoint - int, index of point in region.pointArray if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.pointArray[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge + """ + # Initialize output + idxRegion = -1 + idxRPoint = -1 + idxREdge = -1 + + # Check through regions + i = len(self.regions) - 1 # Region decrementer + while (not snapped) and i >= 0: + pt, idxRPoint, idxREdge, snapped = \ + self.Snap1Region(self.regions[i], pt, snapped=snapped) + if idxRPoint != -1 or idxREdge != -1: + idxRegion = i + i -= 1 + + return pt, idxRegion, idxRPoint, idxREdge, snapped + + def Snap1Region(self, region, pt, snapped=False): + """Snap the point to any sufficiently "nearby" region vertex or wall + in the specified region. + + region - Region object, region of interest + pt - Point object, map coordinates of point + snapped - Boolean, true is point has snapped already, false if not + If point is already snapped, this function will just return + returns - (snappedPt, idxRPoint, idxREdge, snapped) + snappedPt - Point object, point after snapping + idxRPoint - int, index of point in region.pointArray if snapped to point + if not snapped to point it will be -1 + idxREdge - int, index of side in region if snapped to edge + edge j is defined by region.pointArray[j:j+1] + if not snapped to edge it will be -1 + snapped - Boolean, true if point has been snapped, false if not + Note that if input snapped is true, output will be true + even if the point did not snap to a region point or edge + """ + idxRPoint = -1 + idxREdge = -1 + # Check first point + chkPt = region.pointArray[0] + if (not snapped) and pt.Dist(chkPt) < self.mapTolerance: + pt = chkPt + snapped = True + idxRPoint = 0 + j = 1 # Region point incrementer + while (not snapped) and j < len(region.pointArray): + # Check next point + chkPt = region.pointArray[j] + if pt.Dist(chkPt) < self.mapTolerance: + pt = chkPt + snapped = True + idxRPoint = j + # Check edge between previous and just-checked point else: - self.robotPos = self.markerPos - - self.onPaint() - state[0] = not state[0] - - def __set_properties(self): - # begin wxGlade: CalibrateFrame.__set_properties - self.SetTitle("Calibration Tool") - self.SetSize((898, 632)) - self.label_instructions.SetFont(wx.Font(14, wx.DEFAULT, wx.NORMAL, wx.NORMAL, 0, "Lucida Grande")) - self.button_go.SetDefault() - # end wxGlade - - def __do_layout(self): - # begin wxGlade: CalibrateFrame.__do_layout - sizer_1 = wx.BoxSizer(wx.VERTICAL) - sizer_2 = wx.BoxSizer(wx.HORIZONTAL) - sizer_1.Add(self.panel_map, 1, wx.EXPAND, 0) - sizer_1.Add((20, 15), 0, 0, 0) - sizer_2.Add((15, 20), 0, 0, 0) - sizer_2.Add(self.label_instructions, 1, 0, 0) - sizer_2.Add(self.button_go, 0, 0, 0) - sizer_2.Add((15, 20), 0, 0, 0) - sizer_1.Add(sizer_2, 0, wx.EXPAND, 0) - sizer_1.Add((20, 15), 0, 0, 0) - self.SetSizer(sizer_1) - self.Layout() - # end wxGlade - - def onButtonGo(self, event): # wxGlade: CalibrateFrame. - try: - self.calibrationWizard.next() - except StopIteration: - sys.exit(0) - event.Skip() - -# end of class CalibrateFrame - + p0 = region.pointArray[j - 1] + p1 = chkPt + chkPt = self.ProjPtOnLine(pt, p0, p1) + # Check that projected point is on finite line and close + if pt.Dist(chkPt) < self.mapTolerance and \ + chkPt.x <= max(p0.x, p1.x) and \ + chkPt.x >= min(p0.x, p1.x) and \ + chkPt.y <= max(p0.y, p1.y) and \ + chkPt.y >= min(p0.y, p1.y): + pt = chkPt + snapped = True + idxREdge = j - 1 + j += 1 + # Check last edge + if not snapped: + p0 = region.pointArray[j - 1] + p1 = region.pointArray[0] + chkPt = self.ProjPtOnLine(pt, p0, p1) + if pt.Dist(chkPt) < self.mapTolerance and \ + chkPt.x <= max(p0.x, p1.x) and \ + chkPt.x >= min(p0.x, p1.x) and \ + chkPt.y <= max(p0.y, p1.y) and \ + chkPt.y >= min(p0.y, p1.y): + pt = chkPt + snapped = True + idxREdge = j - 1 + + return copy.copy(pt), idxRPoint, idxREdge, snapped + + def InsideBackgroundImage(self, pt): + """Indicates if the given point was clicked inside the background image. + + Returns a boolean. + """ + return self.backgroundImage and \ + pt.x > self.backgroundPosition[0].x and \ + pt.x < self.backgroundPosition[0].x + \ + self.backgroundPosition[1].x and \ + pt.y < self.backgroundPosition[0].y and \ + pt.y > self.backgroundPosition[0].y - \ + self.backgroundPosition[1].y + + def MapM2Pix(self, pose): + """Convert from absolute (meter) coordinates to pixel coordinates for + the map panel. + + pose - Point, absolute coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.mapOffset.x) / self.mapScale.x) + row = int((pose.y - self.mapOffset.y) / self.mapScale.y) + return (col, row) + + def MapPix2M(self, pixPose): + """Convert from pixel coordinates to absolute (meter) coordinates for + the map panel. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, absolute coordinates of point + """ + x = float(pixPose[0]) * self.mapScale.x + self.mapOffset.x + y = float(pixPose[1]) * self.mapScale.y + self.mapOffset.y + return Point(x, y) + + def RefM2Pix(self, pose): + """Convert from absolute (meter) coordinates to pixel coordinates for + the reference panel. + + pose - Point, absolute coordinates of point + returns - Tuple, pixel coordinates in canvas panel (col, row) + """ + col = int((pose.x - self.refOffset.x) / self.refScale.x) + row = int((pose.y - self.refOffset.y) / self.refScale.y) + return (col, row) + + def RefPix2M(self, pixPose): + """Convert from pixel coordinates to absolute (meter) coordinates for + the reference panel. + + pixPose - Tuple, pixel coordinates in canvas panel (col, row) + returns - Point, absolute coordinates of point + """ + x = float(pixPose[0]) * self.refScale.x + self.refOffset.x + y = float(pixPose[1]) * self.refScale.y + self.refOffset.y + return Point(x, y) + + def ProjPtOnLine(self, pt, p0, p1): + """Find the projection of a point on an infinite line. -class CalibrateApp(wx.App): - def OnInit(self): - wx.InitAllImageHandlers() - frame_1 = CalibrateFrame(None, -1, "") - self.SetTopWindow(frame_1) - frame_1.Show() - return 1 + pt - Point object, point to be projected. + p1 - Point object, one endpoint of line. + p2 - Point object, other endpoint of line. + returns - Point object, projected point on line. + """ + s = p1 - p0 # Vector to project on (p0 is origin) + v = pt - p0 # Vector to point to project + u = (v.Dot(s) / s.Dot(s)) * s # Projected vector + return p0 + u # Map back to global coordinates + # end of class CalibrationFrame -# end of class CalibrateApp if __name__ == "__main__": - calibrate = CalibrateApp(0) - calibrate.MainLoop() + app = wx.PySimpleApp(0) + wx.InitAllImageHandlers() + if len(sys.argv) > 1: + calib = CalibrationFrame(None, -1, sys.argv[1]) + else: + calib = CalibrationFrame(None, -1) + app.SetTopWindow(calib) + app.MainLoop() \ No newline at end of file diff --git a/src/lib/regions.py b/src/lib/regions.py index c5d2da80..e608017d 100755 --- a/src/lib/regions.py +++ b/src/lib/regions.py @@ -412,7 +412,14 @@ def readFile(self, filename): compatMode = False except ValueError: compatMode = True - + + # If we are not reading a decomposed file, assume that specEditor is + # requesting a read of the new file format produced by regionEditor + # Need to get the corner of the bounding box to offset all regions by + if not "_decomposed" in filename: + xOff = -min([float(pt[0]) for rd in rdata for pt in rd['points']]) + yOff = -min([float(pt[1]) for rd in rdata for pt in rd['points']]) + offsets = (xOff, yOff) for rd in rdata: newRegion = Region() if compatMode: @@ -425,7 +432,7 @@ def readFile(self, filename): # New file format has region points in absolute coordinates in # real world units, and all regions are polygons if not "_decomposed" in filename: - rd = self.convertRegionDataNewToOld(rd) + rd = self.convertRegionDataNewToOld(rd, offsets) newRegion.setData(rd) self.regions.append(newRegion) @@ -479,12 +486,16 @@ def readFile(self, filename): return True - def convertRegionDataNewToOld(self, rd): + def convertRegionDataNewToOld(self, rd, offsets): """ Take in data on all the regions that was read in the new file format and convert it to data on the regions in the old format. Points will be scaled by 1000 (to get milimeter accuracy) and other fields that are unused in the new format will be set. + + rd - Single region data dictionary + offsets - Whole map offsets to avoid negative coordinates + (xOffset, yOffset) """ # name, position, size, color, type, points, holeList # name and color can stay the same @@ -519,7 +530,8 @@ def convertRegionDataNewToOld(self, rd): for hole in rd['holeList'] for pt in hole] rdnew['points'] = points rdnew['holeList'] = holeList - rdnew['position'] = (leftMargin, topMargin) + xOff, yOff = offsets + rdnew['position'] = (leftMargin + xOff, topMargin + yOff) rdnew['size'] = (rightExtent, downExtent) return rdnew diff --git a/src/lib/regionsPoints.py b/src/lib/regionsPoints.py new file mode 100644 index 00000000..1096c5a2 --- /dev/null +++ b/src/lib/regionsPoints.py @@ -0,0 +1,216 @@ +import math +import random +import wx + +class Region: + def __init__(self, points=[], name="", holes=[], rgb=None, obst=False): + """Create an object to represent a region. + + points - List of Points containing vertex information + [Point(x1, y1), Point(x2, y2), ...] + name - String defining region name + holes - List of lists of points representing holes cut in the region + rgb - List of integers defining color + [red, green, blue], each with value in range [0 255] + obst - Boolean, True indicates that the region is an obstacle + """ + # TODO: Add convex/concave + self.pointArray = points + self.name = name + self.holeList = holes + if not rgb: + rgb = [random.randint(0, 255), random.randint(0, 255), \ + random.randint(0,255)] + self.color = wx.Colour(rgb[0], rgb[1], rgb[2]) + self.isObstacle = obst + + def __str__(self): + """Representation of object.""" + s = "%s\t{%03d\t%03d\t%03d}\t[" % (self.name, self.color.Red(), \ + self.color.Green(), self.color.Blue()) + for iPt, pt in enumerate(self.pointArray): + s += str(pt) + if iPt < len(self.pointArray) - 1: + s += "\t" + s += "]" + return s + + def getData(self): + """Return a copy of the object's internal data. + This is used to save this region to disk. + """ + + data = {'name': self.name, 'color': (self.color.Red(), \ + self.color.Green(), self.color.Blue())} + + data['points'] = [(pt.x, pt.y) for pt in self.pointArray] + + data['holeList'] = [] + for hole in self.holeList: + data['holeList'].append([(pt.x, pt.y) for pt in hole]) + + data['isObstacle'] = self.isObstacle + + return data + + def setData(self, data): + """Set the object's internal data. + + 'data' is a copy of the object's saved data, as returned by + getData() above. This is used to restore a previously saved region. + """ + + self.name = data['name'] + self.color = wx.Colour(*data['color']) + + self.pointArray = [Point(*pt) for pt in data['points']] + + if 'holeList' in data: + self.holeList = [] + for hole in data['holeList']: + self.holeList.append([Point(*pt) for pt in hole]) + + if 'isObstacle' in data: + self.isObstacle = data['isObstacle'] + + def PtInRegion(self, pt): + """Check if a point is inside of the region. + Algorithm taken from C# version of Solution 1 from + http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ + + pt - Point to check + returns - Boolean, True if the point is inside of the region + """ + result = False + n = len(self.pointArray) + for i in range(n): + j = (i + 1) % n + if ((self.pointArray[j].y <= pt.y and pt.y < self.pointArray[i].y) or \ + (self.pointArray[i].y <= pt.y and pt.y < self.pointArray[j].y)) and \ + pt.x < (self.pointArray[i].x - self.pointArray[j].x) * \ + (pt.y - self.pointArray[j].y) / \ + (self.pointArray[i].y - self.pointArray[j].y) + self.pointArray[j].x: + result = not result + return result +# end of class Region + + +class Point: + def __init__(self, x, y): + """Create an object that allows floating point vector operations. + + x - Float, first coordinate of point + y - Float, second coordinate of point + """ + if isinstance(x, float) and isinstance(y, float): + self.x = x + self.y = y + else: + raise TypeError('\'Point\' creation takes only \'float\' values') + + def __str__(self): + """Representation of object.""" + return '(%.3f\t%.3f)' % (self.x, self.y) + + def __hash__(self): + """Hashtable representation of object.""" + tup = (self.x, self.y) + return tup.__hash__() + + def __eq__(self, other): + """Checks equality (self == other).""" + return isinstance(other, Point) and self.x == other.x and self.y == other.y + + def __ne__(self, other): + """Checks non-equality (self != other).""" + return not self.__eq__(other) + + def __add__(self, other): + """Addition operator (self + other).""" + if isinstance(other, Point): + return Point(self.x + other.x, self.y + other.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(self.x + other[0], self.y + other[1]) + else: + raise TypeError('cannot add \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __radd__(self, other): + """Right addition operator (other + self).""" + return self.__add__(other) + + def __sub__(self, other): + """Subtraction operator (self - other).""" + if isinstance(other, Point): + return Point(self.x - other.x, self.y - other.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(self.x - other[0], self.y - other[1]) + else: + raise TypeError('cannot subtract \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __rsub__(self, other): + """Right subtraction operator (other - self).""" + if isinstance(other, Point): + return Point(other.x - self.x, other.y - self.y) + elif isinstance(other, tuple) and len(other) == 2: + return Point(other[0] - self.x, other[1] - self.y) + else: + raise TypeError('cannot subtract \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __mul__(self, other): + """Multiplication operator (self * other).""" + if isinstance(other, float): + return Point(self.x * other, self.y * other) + else: + raise TypeError('cannot multiply \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __rmul__(self, other): + """Right multiplication operator (other * self).""" + return self.__mul__(other) + + def __div__(self, other): + """Division operator (self / other).""" + if isinstance(other, float): + return Point(self.x / other, self.y / other) + else: + raise TypeError('cannot divide \'Point\' and \'' + \ + other.__class__.__name__ + '\' objects') + + def __truediv__(self, other): + """True division operator.""" + return self.__div__(other) + + def Set(self, x, y): + """Change the value of the point.""" + self.x = x + self.y = y + + def Dot(self, other): + """Dot product.""" + if isinstance(other, Point): + return self.x * other.x + self.y * other.y + elif isinstance(other, tuple) and len(other) == 2: + return self.x * other[0] + self.y * other[1] + else: + raise TypeError('cannot compute dot product of \'Point\' and \'' + \ + other.__class__.__name__ + '\' object') + + def Dist(self, other): + """Euclidean distance from this point to the other.""" + if isinstance(other, Point): + return math.sqrt((self.x - other.x) ** 2 + \ + (self.y - other.y) ** 2) + elif isinstance(other, tuple) and len(other) == 2: + return math.sqrt((self.x - other[0]) ** 2 + \ + (self.y - other[1]) ** 2) + else: + raise TypeError('cannot compute distance from \'Point\' to \'' + \ + other.__class__.__name__ + '\' object') + + def Norm(self): + """Length of the vector.""" + return math.sqrt(self.x ** 2 + self.y ** 2) +# end of class Point \ No newline at end of file diff --git a/src/lib/vicon.py b/src/lib/vicon.py new file mode 100644 index 00000000..84ee29a3 --- /dev/null +++ b/src/lib/vicon.py @@ -0,0 +1,150 @@ +import time +import threading +import socket +import struct +from regionsPoints import Region, Point + +class ViconMarkerListener(threading.Thread): + def __init__(self, parent, trackMarkers=False): + """Create the a socket to receive Vicon data. + + When processing the pose data, this thread will set the field + parent.markerPoses with the new marker positions and will call the + function parent.RedrawVicon(). + + trackMarkers indicates whether the moving markers should be identified + and retained (mostly used for audio feedback). + """ + super(ViconMarkerListener, self).__init__() + + # Communication parameters + self.parent = parent # regionEditor or CalibrationFrame + self.addr = ("0.0.0.0", 7500) + self.bufsize = 65536 + self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.lock = threading.Lock() + self.close = threading.Event() + self.updateFreq = 20 # Hz + + # Tracking parameters + # TODO: Set all paremeters in configuration of GUI + self.minDist = 0.01 # Distance to move to qualify as movement + self.maxDist = 0.1 # Qualified as new point + self.movMaxTime = 15 * self.updateFreq # (sec)*(Hz) + # Iterations during which marker is not moving + # before stopping tracking + self.invMaxTime = 1 * self.updateFreq # (sec)*(Hz) + # Iterations during which marker is not found + # before stopping tracking + + # Tracking containers + self.trackMarkers = trackMarkers + # Flag indicating if moving poses should be + # looked for during processing + self.oldPoses = [] # Previous marker positions + self.movingPoses = [] # Markers that are moving + self.movingTimeout = [] # Iterations left before movement timeout + self.invisTimeout = [] # Iteractions left before not-found timeout + + def run(self): + """Open the socket to start communication. Process messages.""" + # Open socket for communication + self.udpSock.bind(self.addr) + + # Receive communication until stopped + self.close.clear() + delay = 1 / self.updateFreq + while not self.close.isSet(): + self.lock.acquire() + data = self.udpSock.recv(self.bufsize) + self.lock.release() + self.ProcessData(data) + time.sleep(delay) + + # Close socket + self.udpSock.close() + self.oldPoses = [] + self.movingPoses = [] + self.movingTimeout = [] + self.invisTimeout = [] + + def stop(self): + """Close the socket to end UDP communication.""" + self.close.set() + + def ProcessData(self, data): + """Extract marker positions and pass them on to be mapped. + + data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] + """ + # Check for valid data (not null or incomplete) + if data and len(data)%16 == 0: + poses = [] + for i in range(0, len(data), 16): + x, y = struct.unpack('dd', data[i:i+16]) + poses.append(Point(x, y)) + # Save and plot marker positions + # Both regionEditor GUI and CalibrationFrame GUI have + # markerPoses field and RedrawVicon method + self.parent.markerPoses = poses + if self.trackMarkers: + self.UpdateMovingMarkers(poses) + self.parent.RedrawVicon() # Force map redraw + + def UpdateMovingMarkers(self, poses): + """Note which markers are newly moving and update position of old + moving markers based on change in position from previous list. + + poses - List of Points, marker positions. + """ + # Not first time through + if self.oldPoses: + # Check all currently tracked markers first + for iMarker, markerPose in enumerate(self.movingPoses): + closestIdx = self.FindClosest(poses, markerPose) + closestDist = markerPose.Dist(poses[closestIdx]) + # Same marker + if closestDist < self.maxDist: + self.invisTimeout[iMarker] = self.invMaxTime + # Is moving + if closestDist > self.minDist: + self.movingTimeout[iMarker] = self.movMaxTime + 1 + self.movingPoses[iMarker] = poses[closestIdx] + # Marker not seen + else: + self.invisTimeout[iMarker] -= 1 + self.movingTimeout[iMarker] -= 1 + # Marker has stopped moving or not been seen for some time + if self.invisTimeout[iMarker] == 0 or \ + self.movingTimeout[iMarker] == 0: + self.invisTimeout.pop(iMarker) + self.movingTimeout.pop(iMarker) + self.movingPoses.pop(iMarker) + # Check through all new markers next + for markerPose in poses: + closestIdx = self.FindClosest(self.oldPoses, markerPose) + closestDist = markerPose.Dist(self.oldPoses[closestIdx]) + # Point is moving + if closestDist < self.maxDist and closestDist > self.minDist: + self.movingPoses.append(markerPose) + self.movingTimeout.append(self.movMaxTime) + self.invisTimeout.append(self.invMaxTime) + self.oldPoses = poses + + def FindClosest(self, points, target): + """Find the closest point to the target. + + points - List of Points, marker positions. + target - Point, point to find marker closest to. + returns - Integer, index of closest point in points. + """ + # Iterate through all points + minDist = float('inf') + minIdx = 0 + for i, pt in enumerate(points): + dist = target.Dist(pt) + if dist < minDist: + minIdx = i + minDist = dist + return minIdx +# end of class ViconMarkerListener \ No newline at end of file diff --git a/src/regionEditor.py b/src/regionEditor.py index e3cde19e..5461c6e9 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -10,17 +10,16 @@ import numpy import wx import threading -import socket -import struct import copy -import random import re import winsound import pyttsx import lib.fileMethods as fileMethods +import lib.vicon as vicon +import lib.calibrate as calibrate +from lib.regionsPoints import Region, Point import json from lib.regions import prettierJSONEncoder -import lib._transformations as _transformations # begin wxGlade: extracode # end wxGlade @@ -42,6 +41,7 @@ def __init__(self, *args, **kwds): self.filemenu.AppendItem(self.menuSave) self.menuSaveAs = wx.MenuItem(self.filemenu, wx.NewId(), "Save As", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuSaveAs) + self.filemenu.AppendSeparator() self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuExit) self.RegionEditor_menubar.Append(self.filemenu, "File") @@ -58,23 +58,29 @@ def __init__(self, *args, **kwds): self.menuDrawing.AppendItem(self.menuRect) self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_NORMAL) self.menuDrawing.AppendItem(self.menuPoly) + self.menuDrawing.AppendSeparator() self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_NORMAL) self.menuDrawing.AppendItem(self.menuAddPoint) self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_NORMAL) self.menuDrawing.AppendItem(self.menuRemPoint) self.RegionEditor_menubar.Append(self.menuDrawing, "Drawing") self.menuView = wx.Menu() - self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "Markers", "", wx.ITEM_CHECK) + self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "Stream Markers", "", wx.ITEM_CHECK) self.menuView.AppendItem(self.menuMarkers) self.menuMarkersClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) self.menuView.AppendItem(self.menuMarkersClear) - self.menuCamera = wx.MenuItem(self.menuView, wx.NewId(), "Camera Capture", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuCamera) + self.menuView.AppendSeparator() self.menuImageImport = wx.MenuItem(self.menuView, wx.NewId(), "Import Background Image", "", wx.ITEM_NORMAL) self.menuView.AppendItem(self.menuImageImport) self.menuImageClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Background Image", "", wx.ITEM_NORMAL) self.menuView.AppendItem(self.menuImageClear) - self.RegionEditor_menubar.Append(self.menuView, "View") + self.menuView.AppendSeparator() + self.menuFeedback = wx.MenuItem(self.menuView, wx.NewId(), "Audio Feedback", "", wx.ITEM_CHECK) + self.menuView.AppendItem(self.menuFeedback) + self.menuView.AppendSeparator() + self.menuCalibrate = wx.MenuItem(self.menuView, wx.NewId(), "Calibrate", "", wx.ITEM_NORMAL) + self.menuView.AppendItem(self.menuCalibrate) + self.RegionEditor_menubar.Append(self.menuView, "Tools") self.helpmenu = wx.Menu() self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) self.helpmenu.AppendItem(self.menuAbout) @@ -82,8 +88,8 @@ def __init__(self, *args, **kwds): self.SetMenuBar(self.RegionEditor_menubar) # Menu Bar end self.sidebar = wx.Panel(self, -1) - self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Vicon") - self.buttonCamera = wx.Button(self.sidebar, -1, "Camera") + self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Markers") + self.buttonImage = wx.Button(self.sidebar, -1, "Image") self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Rect.") self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Length") @@ -109,12 +115,11 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_MENU, self.OnMenuRemPoint, self.menuRemPoint) self.Bind(wx.EVT_MENU, self.OnMenuMarkers, self.menuMarkers) self.Bind(wx.EVT_MENU, self.OnMenuMarkersClear, self.menuMarkersClear) - self.Bind(wx.EVT_MENU, self.OnMenuCamera, self.menuCamera) self.Bind(wx.EVT_MENU, self.OnMenuImageImport, self.menuImageImport) self.Bind(wx.EVT_MENU, self.OnMenuImageClear, self.menuImageClear) self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) - self.Bind(wx.EVT_BUTTON, self.OnButtonCamera, self.buttonCamera) + self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) @@ -123,9 +128,9 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) # end wxGlade - # Handle input + # Handle input that should be the regions file name to load if len(args) > 2 and isinstance(args[2], str): - self.fileName = os.path.join(os.getcwd(), args[2]) + self.fileName = args[2] # Full path to regions file else: self.fileName = "" @@ -138,6 +143,7 @@ def __init__(self, *args, **kwds): self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel, self.canvas) self.canvas.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow, self.canvas) self.canvas.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow, self.canvas) + self.canvas.Bind(wx.EVT_MOTION, self.OnMouseMotion, self.canvas) # Bind keyboard events self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) @@ -156,6 +162,10 @@ def __init__(self, *args, **kwds): self.canvasScale = Point(xScale, yScale) self.canvasOffset = Point(xOffset, yOffset) + # Canvas display bitmap to speed up drawing + self.canvasBitmap = wx.EmptyBitmap(self.canvas.GetSize().GetWidth(), \ + self.canvas.GetSize().GetHeight()) + # Region-related parameters self.regions = [] # List of regions in the map self.adjacent = [] # List of lists holding transition @@ -172,6 +182,15 @@ def __init__(self, *args, **kwds): # Region creation: [Point(x0,y0), ...] # Dimensioning: (idxRegion, idxVert) + # Background-related parameters + self.backgroundImage = None # Background image data + self.backgroundFile = "" # Relative file path to the + # background image + self.backgroundPosition = None # Position of left top corner and + # dimensions of the background + # image in absolute coordinates + # [x, y, width, height] + # Mouse-related parameters self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick @@ -193,13 +212,17 @@ def __init__(self, *args, **kwds): # Create Vicon listener self.markerPoses = [] # Marker positions to be drawn - self.viconListener = ViconMarkerListener(self) + self.viconListener = vicon.ViconMarkerListener(self) self.dlgFeedback = None + self.feedbackPoses = [] # Points to be drawn to give feedback for + # map building # Add close event handler to cleanup and possibly save before closing self.Bind(wx.EVT_CLOSE, self.OnClose) # Display the GUI window and set up the map canvas + if self.fileName: + self.ReadFile(self.fileName) self.Show() self.DrawGrid() @@ -207,7 +230,7 @@ def __set_properties(self): # begin wxGlade: regionEditor.__set_properties self.SetTitle("Region Editor") self.toggleVicon.SetMinSize((50, 50)) - self.buttonCamera.SetMinSize((50, 50)) + self.buttonImage.SetMinSize((50, 50)) self.toggleSquare.SetMinSize((50, 50)) self.togglePoly.SetMinSize((50, 50)) self.toggleDim.SetMinSize((50, 50)) @@ -224,7 +247,7 @@ def __do_layout(self): sizer_1 = wx.BoxSizer(wx.HORIZONTAL) grid_sizer_1 = wx.GridSizer(4, 2, 5, 5) grid_sizer_1.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonCamera, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) + grid_sizer_1.Add(self.buttonImage, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) @@ -269,12 +292,10 @@ def OnToggleVicon(self, event): # wxGlade: regionEditor. else: self.viconListener.stop() # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) + self.viconListener = vicon.ViconMarkerListener(self) - def OnButtonCamera(self, event): # wxGlade: regionEditor. - print "Camera not yet implemented" - # TODO - event.Skip() + def OnButtonImage(self, event): # wxGlade: regionEditor. + self.OnMenuImageImport(None) def OnToggleSquare(self, event): # wxGlade: regionEditor. self.ResetMapToggles(self.toggleSquare) @@ -301,14 +322,16 @@ def OnToggleFeedback(self, event): # wxGlade: regionEditor. def OnButtonCal(self, event): # wxGlade: regionEditor. self.ResetMapToggles() self.AddToUndo() - calibGUI = CalibrationFrame(self) + calibGUI = calibrate.CalibrationFrame(self) def OnMenuNew(self, event): # wxGlade: regionEditor. self.AddToUndo() self.ResetMapToggles() self.regions = [] self.adjacent = [] - # TODO: Clear background image + self.backgroundImage = None + self.backgroundFile = "" + self.backgroundPosition = None self.RedrawCanvas() def OnMenuOpen(self, event): # wxGlade: regionEditor. @@ -325,61 +348,16 @@ def OnMenuOpen(self, event): # wxGlade: regionEditor. if not os.path.exists(filePath) or not ('.regions' in filePath): return - # Pull all data from file into dictionary for parsing - data = fileMethods.readFromFile(filePath) - - if data is None: - return - - # Clear all current information - self.regions = [] - self.adjacent = [] - # self.bkgndImage = None - - # TODO: Uncomment when background image is included - #try: - # self.bkgndImage = data["Background"][0] - #except KeyError: - # self.bkgndImage = None - - # Set all region information from lines in file - rdata = json.loads("\n".join(data["Regions"])) - for rd in rdata: - newRegion = Region() - newRegion.setData(rd) - self.regions.append(newRegion) - - # Make an empty adjacency matrix of size (nRegions) x (nRegions) - self.adjacent = [[[] for j in range(len(self.regions))] \ - for i in range(len(self.regions))] - - # Assign region transitions - # Each transition line format is this: - # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] - for tData in data["Transitions"]: - tData = re.sub('[\[\]\(\)]', '', tData) - tData = tData.split(); # Separate on any whitespace - iReg1 = self.indexOfRegionWithName(tData[0]) - iReg2 = self.indexOfRegionWithName(tData[1]) - # All transitions between regions - for i in range(2, len(transData), 2): - iFaceReg1 = int(tData[i]) - iFaceReg2 = int(tData[i+1]) - self.adjacent[iReg1][iReg2].append((iFaceReg1, iFaceReg2)) - # Don't assume bidirectional transitions - # Region file will specify both directions if bidirectional - - # Set "obstacleness" of regions - if "Obstacles" in data: - for regName in data["Obstacles"]: - self.regions[self.indexOfRegionWithName( \ - regName)].isObstacle = True - # Store the filename for saving self.fileName = filePath + self.ReadFile(self.fileName) + self.isSaved = True + + # Set double click flag in case file was selected that way + self.justDoubleClicked = True - # TODO: Rescale/pan map to bring full map into view - self.RedrawCanvas() + # TODO: Rescale/pan map to bring full map into view + self.RedrawCanvas() dialogOpen.Destroy() @@ -433,12 +411,15 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. obstacleRegions = [r.name for r in self.regions if r.isObstacle] - # TODO: Get background image in here - data = {"Regions": regionData, + backgroundData = [self.backgroundFile] + self.backgroundPosition + + data = {"Background": backgroundData, + "Regions": regionData, "Transitions": transitionData, "Obstacles": obstacleRegions} fileMethods.writeToFile(self.fileName, data, comments) + self.isSaved = True # No known filename else: @@ -524,17 +505,32 @@ def OnMenuMarkersClear(self, event): # wxGlade: regionEditor. self.markerPoses = [] self.RedrawCanvas() - def OnMenuCamera(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuCamera' not implemented" - event.Skip() - def OnMenuImageImport(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuImageImport' not implemented" - event.Skip() + # Start up open dialog + dialogOpen = wx.FileDialog(self, message="Import Background Image", \ + defaultDir=os.getcwd(), \ + defaultFile=os.path.basename(self.fileName), \ + style=wx.FD_OPEN) + + # Hit Open + if dialogOpen.ShowModal() == wx.ID_OK: + filePath = dialogOpen.GetPath() + if not os.path.exists(filePath): + return + + # Load image + self.LoadBackgroundImage(filePath) + self.isSaved = False + + # Set double click flag in case image was selected that way + self.justDoubleClicked = True def OnMenuImageClear(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuImageClear' not implemented" - event.Skip() + """Erase the background image.""" + self.backgroundImage = None + self.backgroundFile = "" + self.backgroundPosition = None + self.RedrawCanvas() def OnMenuAbout(self, event): # wxGlade: regionEditor. print "About not yet implemented" @@ -542,14 +538,14 @@ def OnMenuAbout(self, event): # wxGlade: regionEditor. def OnMouseLeftDown(self, event): """Save the left click point so it can be used later.""" - self.leftClickPt, iReg, iPt, iEd = \ + self.leftClickPt, iReg, iPt, iEd, snapped = \ self.SnapPoint(self.Pix2Map(event.GetPosition())) def OnMouseLeftUp(self, event): """Perform appropriate action based on current mode of operation.""" # Get click position ptPix = event.GetPosition() - pt, iReg, iPt, iEd = self.SnapPoint(self.Pix2Map(ptPix)) + pt, iReg, iPt, iEd, snapped = self.SnapPoint(self.Pix2Map(ptPix)) # Has been handled by double-click event handler if self.justDoubleClicked: @@ -589,20 +585,25 @@ def OnMouseLeftUp(self, event): dc = wx.WindowDC(self.canvas) dc.DrawLine(x1pix, y1pix, x2pix, y2pix) - # Dimensioning region edge + # Dimensioning region edge or setting background image scale elif self.toggleDim.GetValue(): # First point on region to be clicked - if not self.polyVerts and iReg != -1 and iPt != -1: + if (not self.polyVerts or isinstance(self.polyVerts, Point)) \ + and iReg != -1 and iPt != -1: # Store region and point indeces self.polyVerts = (iReg, iPt) - # Second unique point to be clicked + # Second unique point on region to be clicked elif iReg != -1 and iPt != -1 and (iReg, iPt) != self.polyVerts: # Request dimension - currDist = self.regions[iReg].verts[iPt].Dist(self.regions[\ - self.polyVerts[0]].verts[self.polyVerts[1]]) + currDist = self.regions[iReg].pointArray[iPt].Dist(self.regions[\ + self.polyVerts[0]].pointArray[self.polyVerts[1]]) dimDlg = wx.TextEntryDialog(self, \ "Current Length: %.3f" % currDist, caption='Dimension') - if dimDlg.ShowModal() == wx.ID_OK: + result = dimDlg.ShowModal() == wx.ID_OK + if not result: + # Clear first point + self.polyVerts = [] + else: # Check for valid dimension (allow negative values) try: dim = float(dimDlg.GetValue()) @@ -612,7 +613,7 @@ def OnMouseLeftUp(self, event): dimDlg.Destroy() # Move second point along same line to specified distance - pt0 = self.regions[self.polyVerts[0]].verts[self.polyVerts[1]] + pt0 = self.regions[self.polyVerts[0]].pointArray[self.polyVerts[1]] signx = 1.0 signy = 1.0 # Vertical line case @@ -632,49 +633,86 @@ def OnMouseLeftUp(self, event): math.sqrt(1 + slope ** 2) dy = slope * dx self.AddToUndo() - self.regions[iReg].verts[iPt] += Point(dx, dy) + self.regions[iReg].pointArray[iPt] += Point(dx, dy) self.polyVerts = [] self.RecalcAdjacency(iReg) self.RedrawCanvas() + + # Clicking on background image + elif iReg == -1 and self.InsideBackgroundImage(pt): + # First point on background image + if not self.polyVerts or isinstance(self.polyVerts, tuple): + self.polyVerts = pt + + # Second unique point on background image + elif pt.Dist(self.polyVerts) > self.tolerance: + # Request dimension + currDist = pt.Dist(self.polyVerts) + dimDlg = wx.TextEntryDialog(self, \ + "Current Length: %.3f" % currDist, caption='Dimension') + if dimDlg.ShowModal() == wx.ID_OK: + # Check for valid dimension (disallow negative values) + try: + dim = float(dimDlg.GetValue()) + if dim <= 0: + dimDlg.Destroy() + return + except ValueError: + dimDlg.Destroy() + return + dimDlg.Destroy() + + # Rescale image + self.backgroundPosition[1] = \ + self.backgroundPosition[1] * dim / currDist + self.RedrawCanvas() + self.polyVerts = [] - # Dragging region(s) or vertices - elif self.selectedRegions and \ - pt.Dist(self.leftClickPt) > self.tolerance: + # Dragging region(s) or image or vertices or panning map view + elif pt.Dist(self.leftClickPt) > self.tolerance: self.leftClickPt, iReg, iPt, iEd, snapped = \ self.SnapRegions(self.leftClickPt) iRegInner = self.InsideRegions(self.leftClickPt) # Dragging point(s) - if iReg in self.selectedRegions and iPt != -1: + if iReg != -1 and iReg in self.selectedRegions and iPt != -1: # Change point position and check adjacencies self.AddToUndo() - self.regions[iReg].verts[iPt].Set(pt.x, pt.y) + self.regions[iReg].pointArray[iPt].Set(pt.x, pt.y) self.RecalcAdjacency(iReg) self.RedrawCanvas() - # Dragging region(s) - elif iReg in self.selectedRegions or \ - iRegInner in self.selectedRegions: + # Dragging region(s) and/or background image + elif (iReg != -1 and iReg in self.selectedRegions) or \ + (iRegInner != -1 and iRegInner in self.selectedRegions) \ + or (-1 in self.selectedRegions and \ + self.InsideBackgroundImage(self.leftClickPt)): # Change region(s) position and check adjacencies self.AddToUndo() delta = pt - self.leftClickPt for iRegSel in self.selectedRegions: - for iPt in range(len(self.regions[iRegSel].verts)): - self.regions[iRegSel].verts[iPt] += delta + # Change region position + if iRegSel > -1: + for iPt in range(len(self.regions[iRegSel].pointArray)): + self.regions[iRegSel].pointArray[iPt] += delta + # Change background image position + else: + self.backgroundPosition[0] += delta for iRegSel in self.selectedRegions: - self.RecalcAdjacency(iRegSel) + if iRegSel > -1: + self.RecalcAdjacency(iRegSel) self.RedrawCanvas() - # Panning the map view - elif pt.Dist(self.leftClickPt) > self.tolerance: - downClickPix = self.Map2Pix(self.leftClickPt) - self.canvasOffset = Point(self.canvasScale.x * \ - (downClickPix[0] - ptPix[0]) + self.canvasOffset.x, \ - self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ - self.canvasOffset.y) - self.RedrawCanvas() + # Panning the map view + else: + downClickPix = self.Map2Pix(self.leftClickPt) + self.canvasOffset = Point(self.canvasScale.x * \ + (downClickPix[0] - ptPix[0]) + self.canvasOffset.x, \ + self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ + self.canvasOffset.y) + self.RedrawCanvas() - # Check if selecting or deselecting a region + # Check if selecting or deselecting a region or background image else: if iReg != -1: iRegInner = iReg @@ -682,7 +720,8 @@ def OnMouseLeftUp(self, event): iRegInner = self.InsideRegions(pt) # Do something about that region selection - if iRegInner != -1: + # If selecting background image, put -1 as index in selectedRegions + if iRegInner != -1 or self.InsideBackgroundImage(pt): # Selecting single region if not event.CmdDown(): self.selectedRegions = [] @@ -720,15 +759,15 @@ def OnMouseLeftDClick(self, event): # Unset double-click flag since event does not propagate here self.justDoubleClicked = False - # Edit the latest selected region - iReg = self.selectedRegions.pop() - self.selectedRegions = [] - self.selectedRegions.append(iReg) - self.EditRegion(iReg) + # Edit clicked region if selected + iReg = self.InsideRegions(self.Pix2Map(event.GetPosition())) + if iReg != -1 and iReg in self.selectedRegions: + self.selectedRegions = [iReg] + self.EditRegion(iReg) def OnMouseRightDown(self, event): """Save the right click point so it can be used later.""" - self.rightClickPt, iReg, iPt, iEd = \ + self.rightClickPt, iReg, iPt, iEd, snapped = \ self.SnapPoint(self.Pix2Map(event.GetPosition())) def OnMouseRightUp(self, event): @@ -752,6 +791,102 @@ def OnMouseWheel(self, event): self.canvasScale = self.canvasScale * scaler self.RedrawCanvas() + def OnMouseMotion(self, event): + """Show appropriate display if mouse is in motion.""" + # Get position and information + ptPix = event.GetPosition() + pt, iReg, iPt, iEd, snapped = self.SnapPoint(self.Pix2Map(ptPix)) + + # Set mouse cursor display and position as appropriate + # Snapping to something + if self.toggleSquare.GetValue() or self.togglePoly.GetValue() or \ + self.toggleDim.GetValue(): + if snapped: + self.canvas.SetCursor(wx.StockCursor(wx.CURSOR_BULLSEYE)) + else: + self.canvas.SetCursor(wx.StockCursor(wx.CURSOR_CROSS)) + else: + self.canvas.SetCursor(wx.StockCursor(wx.CURSOR_ARROW)) + + + # Create device context for drawing + dc = wx.WindowDC(self.canvas) + dc = wx.GCDC(dc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() + dc.SetBrush(wx.Brush(wx.WHITE, wx.TRANSPARENT)) + dc.SetPen(wx.Pen(wx.BLACK, 1, wx.SHORT_DASH)) + + # Draw lines to or around the mouse if necessary + # Drawing rectangle + if self.toggleSquare.GetValue() and self.polyVerts: + self.RedrawVicon() + ptPix0 = self.Map2Pix(self.polyVerts[-1]) + dc.DrawLine(ptPix0[0], ptPix0[1], ptPix[0], ptPix0[1]) + dc.DrawLine(ptPix[0], ptPix0[1], ptPix[0], ptPix[1]) + dc.DrawLine(ptPix[0], ptPix[1], ptPix0[0], ptPix[1]) + dc.DrawLine(ptPix0[0], ptPix[1], ptPix0[0], ptPix0[1]) + + # Drawing a polygon + elif self.togglePoly.GetValue() and self.polyVerts: + self.RedrawVicon() + ptPix0 = self.Map2Pix(self.polyVerts[-1]) + dc.DrawLine(ptPix0[0], ptPix0[1], ptPix[0], ptPix[1]) + + # Dimensioning an image + elif self.toggleDim.GetValue() and self.polyVerts: + self.RedrawVicon() + ptPix0 = self.Map2Pix(self.regions[self.polyVerts[0]].pointArray[ \ + self.polyVerts[1]]) + dc.DrawLine(ptPix0[0], ptPix0[1], ptPix[0], ptPix[1]) + + # Dragging regions(s) or background image + elif event.LeftIsDown() and self.selectedRegions: + self.leftClickPt, iReg, iPt, iEd, snapped = \ + self.SnapRegions(self.leftClickPt) + iRegInner = self.InsideRegions(self.leftClickPt) + # Dragging point + if iReg != -1 and iReg in self.selectedRegions and iPt != -1: + self.RedrawVicon() + # Draw walls that would connect to the new position + nPts = len(self.regions[iReg].pointArray) + ptPix0 = self.Map2Pix( \ + self.regions[iReg].pointArray[iPt - 1 % nPts]) + ptPix1 = self.Map2Pix( \ + self.regions[iReg].pointArray[iPt + 1 % nPts]) + dc.DrawLine(ptPix0[0], ptPix0[1], ptPix[0], ptPix[1]) + dc.DrawLine(ptPix1[0], ptPix1[1], ptPix[0], ptPix[1]) + + # Dragging region(s) and/or background image + elif (iReg != -1 and iReg in self.selectedRegions) or \ + (iRegInner != -1 and iRegInner in self.selectedRegions) \ + or (-1 in self.selectedRegions and \ + self.InsideBackgroundImage(self.leftClickPt)): + self.RedrawVicon() + # Draw region(s)/image in new position(s) + delta = pt - self.leftClickPt + for iRegSel in self.selectedRegions: + # Region + if iRegSel > -1: + vertsPix = [] + for vert in self.regions[iRegSel].pointArray: + vertPix = self.Map2Pix(vert + delta) + vertsPix.append(vertPix) + dc.DrawPolygon(vertsPix) + # Background image + else: + ptPix0 = self.Map2Pix(self.backgroundPosition[0] + \ + delta) + ptPix1 = self.Map2Pix(self.backgroundPosition[0] + \ + Point(self.backgroundPosition[1].x, \ + -self.backgroundPosition[1].y) + delta) + dc.DrawLine(ptPix0[0], ptPix0[1], ptPix1[0], ptPix0[1]) + dc.DrawLine(ptPix1[0], ptPix0[1], ptPix1[0], ptPix1[1]) + dc.DrawLine(ptPix1[0], ptPix1[1], ptPix0[0], ptPix1[1]) + dc.DrawLine(ptPix0[0], ptPix1[1], ptPix0[0], ptPix0[1]) + + dc.EndDrawing() + def OnKeyDown(self, event): keycode = event.GetKeyCode() @@ -838,15 +973,22 @@ def RedrawCanvas(self, dc=None): # Clear canvas self.canvas.ClearBackground() - # Create device context if not created - if not dc: - dc = wx.WindowDC(self.canvas) - dc = wx.GCDC(dc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() + # Create bitmap to draw to + width, height = self.canvas.GetSize() + self.canvasBitmap = wx.EmptyBitmap(width, height) + dc = wx.MemoryDC() + dc.SelectObject(self.canvasBitmap) + border = [(0, 0), (width, 0), (width, height), (0, height)] + dc.SetBrush(wx.Brush(wx.WHITE, wx.SOLID)) + dc.SetPen(wx.Pen(wx.WHITE, 1, wx.SOLID)) + dc.DrawPolygon(border) + + # Draw background image + if self.backgroundImage: + self.DrawBackgroundImage(dc=dc) - # Draw grid background - self.DrawGrid(dc) + # Draw axes and grid + self.DrawGrid(dc=dc) # Redraw all regions for region in self.regions: @@ -857,6 +999,24 @@ def RedrawCanvas(self, dc=None): for iReg in range(1, len(self.adjacent)): self.DrawAdjacencies(iReg, dc=dc) + dc.SelectObject(wx.NullBitmap) + + self.RedrawVicon() + + def RedrawVicon(self): + """Redraw the contents of the canvas panel quickly, only worrying about + updating the marker positions, currently being created regions, and + things connected to mouse-motion/mouse-hover. + """ + # Create device context + dc = wx.WindowDC(self.canvas) + dc = wx.GCDC(dc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() + + # Draw canvas static images + dc.DrawBitmap(self.canvasBitmap, 0, 0) + # Redraw all markers self.DrawMarkers(self.markerPoses, dc=dc) @@ -871,14 +1031,34 @@ def RedrawCanvas(self, dc=None): ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) + # Redraw feedback points + self.DrawFeedbackPoints(self.feedbackPoses, dc=dc) + dc.EndDrawing() - def RedrawVicon(self): - """Redraw the contents of the canvas panel quickly, only worrying about - updating the marker positions and currently being created regions. - """ - # TODO: Save and use image of map to increase speed - self.RedrawCanvas() + def DrawBackgroundImage(self, dc=None): + # Create device context if not created + isNewDC = False + if not dc: + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() + + # Rescale image to make sense with current pan/zoom point + xPix, yPix = self.Map2Pix(self.backgroundPosition[0]) + newWidth = int(self.backgroundPosition[1].x / self.canvasScale.x) + newHeight = -int(self.backgroundPosition[1].y / self.canvasScale.y) + if newHeight > 0 and newWidth > 0: + image = self.backgroundImage.Scale(newWidth, newHeight) + bitmap = wx.BitmapFromImage(image) + + # Draw image + dc.DrawBitmap(bitmap, xPix, yPix, False) + + if isNewDC: + dc.EndDrawing() def DrawGrid(self, dc=None): """Draw the axes and grid on the map canvas. @@ -893,25 +1073,33 @@ def DrawGrid(self, dc=None): dc = wx.GCDC(windc) self.canvas.PrepareDC(dc) dc.BeginDrawing() - - # Draw axes - xOff = self.canvasOffset.x - yOff = self.canvasOffset.y - xPixOff = int(-xOff / self.canvasScale.x) - yPixOff = int(-yOff / self.canvasScale.y) + + # Draw background gridlines colLim, rowLim = self.canvas.GetSize() + dc.SetPen(wx.Pen(wx.Colour(220, 220, 220), 1, wx.SOLID)) + start = self.Pix2Map((0, 0)) + finish = self.Pix2Map((colLim, rowLim)) + for x in range(int(start.x) - 1, int(finish.x) + 1): + xPix = int((x - self.canvasOffset.x) / self.canvasScale.x) + dc.DrawLine(xPix, 0, xPix, rowLim) + for y in range(int(start.y) + 1, int(finish.y) - 1, -1): + yPix = int((y - self.canvasOffset.y) / self.canvasScale.y) + dc.DrawLine(0, yPix, colLim, yPix) + + # Draw axes + dc.SetPen(wx.Pen(wx.Colour(0, 0, 0), 1, wx.SOLID)) + xPixOff = int(-self.canvasOffset.x / self.canvasScale.x) + yPixOff = int(-self.canvasOffset.y / self.canvasScale.y) dc.DrawLine(0, yPixOff, colLim, yPixOff) dc.DrawLine(xPixOff, 0, xPixOff, rowLim) - # TODO: Draw grid/ticks - if isNewDC: dc.EndDrawing() def DrawMarkers(self, poses, dc=None): """Draw markers at specified global positions. - poses - List of tuples containing positions of markers in meters + poses - List of Points containing positions of markers in meters [(x, y), ...] dc - Device context used for drawing on the canvas panel. """ @@ -925,7 +1113,8 @@ def DrawMarkers(self, poses, dc=None): dc.BeginDrawing() # Set up brush - #dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) + dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) + dc.SetPen(wx.Pen(wx.BLACK, 1, wx.SOLID)) # Draw each marker for pose in poses: @@ -935,10 +1124,39 @@ def DrawMarkers(self, poses, dc=None): if isNewDC: dc.EndDrawing() + def DrawFeedbackPoints(self, poses, dc=None): + """Draw points to assist with map building. + + poses - List of Points with points to draw in global coordinates. + dc - Device context for drawing on the canvas. + """ + # Create device context if not created + isNewDC = False + if not dc: + isNewDC = True + windc = wx.WindowDC(self.canvas) + dc = wx.GCDC(windc) + self.canvas.PrepareDC(dc) + dc.BeginDrawing() + + # Set up brush + dc.SetBrush(wx.Brush(wx.Colour(255, 0, 0, 128), wx.SOLID)) + dc.SetPen(wx.Pen(wx.RED, 1, wx.SOLID)) + + # Draw each marker + for pose in poses: + posePix = self.Map2Pix(pose) + dc.DrawCircle(posePix[0], posePix[1], 8) + + if isNewDC: + dc.EndDrawing() + def DrawSelectionHandle(self, iReg, dc=None): - """Draw markers indicating region(s) that have been selected by mouse. + """Draw markers indicating region(s) or background image that have + been selected by mouse. iReg - Index of region selected + -1 indicates background image dc - Device context used for drawing on the canvas panel """ # Create device context if not created @@ -950,9 +1168,26 @@ def DrawSelectionHandle(self, iReg, dc=None): self.canvas.PrepareDC(dc) dc.BeginDrawing() - for pt in self.regions[iReg].verts: - ptPix = self.Map2Pix(pt) - dc.DrawCircle(ptPix[0], ptPix[1], 5) + # Set up brush + dc.SetPen(wx.Pen(wx.Colour(0, 0, 0), 1, wx.SOLID)) + + # Region + if iReg > -1: + dc.SetBrush(wx.Brush(self.regions[iReg].color, wx.SOLID)) + for pt in self.regions[iReg].pointArray: + ptPix = self.Map2Pix(pt) + dc.DrawCircle(ptPix[0], ptPix[1], 5) + # Background image + else: + xPix, yPix = self.Map2Pix(self.backgroundPosition[0]) + newWidth = int(self.backgroundPosition[1].x / self.canvasScale.x) + newHeight = -int(self.backgroundPosition[1].y / self.canvasScale.y) + if newWidth > 0 and newHeight > 0: + dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255), wx.SOLID)) + dc.DrawCircle(xPix, yPix, 5) + dc.DrawCircle(xPix + newWidth, yPix, 5) + dc.DrawCircle(xPix + newWidth, yPix + newHeight, 5) + dc.DrawCircle(xPix, yPix + newHeight, 5) if isNewDC: dc.EndDrawing() @@ -1002,7 +1237,7 @@ def DrawRegion(self, region, dc=None): vertsPix = [] xLabelPix = 0 yLabelPix = 0 - for vert in region.verts: + for vert in region.pointArray: vertPix = self.Map2Pix(vert) vertsPix.append(vertPix) if not isBoundary: # Put label in center @@ -1015,8 +1250,8 @@ def DrawRegion(self, region, dc=None): if isBoundary: xLabelPix = xLabelPix - labelWidth else: - xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 - yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 + xLabelPix = xLabelPix / len(region.pointArray) - labelWidth / 2 + yLabelPix = yLabelPix / len(region.pointArray) - labelHeight / 2 # Draw label if not isBoundary: @@ -1049,16 +1284,101 @@ def DrawAdjacencies(self, iReg, dc=None): for jReg in range(iReg): for iREdge1, iREdge2 in self.adjacent[iReg][jReg]: # Not last edge in region - pt1 = self.regions[iReg].verts[iREdge1] - if iREdge1 < len(self.regions[iReg].verts) - 1: - pt2 = self.regions[iReg].verts[iREdge1 + 1] + pt1 = self.regions[iReg].pointArray[iREdge1] + if iREdge1 < len(self.regions[iReg].pointArray) - 1: + pt2 = self.regions[iReg].pointArray[iREdge1 + 1] # Last edge in region else: - pt2 = self.regions[iReg].verts[0] + pt2 = self.regions[iReg].pointArray[0] pt1Pix = self.Map2Pix(pt1) pt2Pix = self.Map2Pix(pt2) dc.DrawLine(pt1Pix[0], pt1Pix[1], pt2Pix[0], pt2Pix[1]) + def LoadBackgroundImage(self, filePath): + image = wx.Image(filePath) + if not image.IsOk(): + wx.MessageBox("Cannot import image from file %s" % \ + (os.path.basename(filePath)), "Error", + style = wx.OK | wx.ICON_ERROR, parent=self) + return + + self.backgroundImage = image + self.backgroundFile = os.path.relpath(filePath, \ + os.path.dirname(self.fileName)) + + # If image position is unknown, just keep same image size + if not self.backgroundPosition: + leftTop = self.Pix2Map((0, 0)) + xExtent = float(image.GetWidth()) * self.canvasScale.x + yExtent = -float(image.GetHeight()) * self.canvasScale.y + self.backgroundPosition = [leftTop, Point(xExtent, yExtent)] + + # Redraw the map with the image + self.RedrawCanvas() + + def ReadFile(self, filePath): + """Extract data from the regions file specified. + + filePath - String specifying absolute file path. + """ + # Pull all data from file into dictionary for parsing + data = fileMethods.readFromFile(filePath) + + if data is None: + return + + # Clear all current information + self.regions = [] + self.adjacent = [] + self.backgroundImage = None + self.backgroundFile = "" + self.backgroundPosition = None + + # Load background image if it is defined + if "Background" in data and data["Background"][0] != "None": + backgroundPath = os.path.join(os.path.dirname(self.fileName), \ + data["Background"][0]) + if len(data["Background"]) == 5: + self.backgroundPosition = \ + [Point(float(data["Background"][1]), \ + float(data["Background"][2])), \ + Point(float(data["Background"][3]), \ + float(data["Background"][4]))] + self.LoadBackgroundImage(backgroundPath) + + # Set all region information from lines in file + rdata = json.loads("\n".join(data["Regions"])) + for rd in rdata: + newRegion = Region() + newRegion.setData(rd) + self.regions.append(newRegion) + + # Make an empty adjacency matrix of size (nRegions) x (nRegions) + self.adjacent = [[[] for j in range(len(self.regions))] \ + for i in range(len(self.regions))] + + # Assign region transitions + # Each transition line format is this: + # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] + for tData in data["Transitions"]: + tData = re.sub('[\[\]\(\)]', '', tData) + tData = tData.split(); # Separate on any whitespace + iReg1 = self.indexOfRegionWithName(tData[0]) + iReg2 = self.indexOfRegionWithName(tData[1]) + # All transitions between regions + for i in range(2, len(transData), 2): + iFaceReg1 = int(tData[i]) + iFaceReg2 = int(tData[i+1]) + self.adjacent[iReg1][iReg2].append((iFaceReg1, iFaceReg2)) + # Don't assume bidirectional transitions + # Region file will specify both directions if bidirectional + + # Set "obstacleness" of regions + if "Obstacles" in data: + for regName in data["Obstacles"]: + self.regions[self.indexOfRegionWithName( \ + regName)].isObstacle = True + def ResetMapToggles(self, toggleStay=None): """Clear all the other map-feature toggle buttons. Also resets region creation. @@ -1097,8 +1417,7 @@ def CreateRegion(self): # Cleanup and draw self.polyVerts = [] self.polyAdjEdges = [] - self.DrawRegion(region) - self.DrawAdjacencies(idxNewReg) + self.RedrawCanvas() def DeleteRegion(self, iReg): """Removes region from regions list and adjacency list. @@ -1122,7 +1441,7 @@ def AddPointToRegion(self, pt, iReg, iEdge): iEdge - Int, index of the edge to replace with edges to and from pt """ # Add point to other region - self.regions[iReg].verts.insert(iEdge + 1, copy.copy(pt)) + self.regions[iReg].pointArray.insert(iEdge + 1, copy.copy(pt)) # Update all transition edges # Loop through all regions for jReg in range(len(self.adjacent[iReg])): @@ -1227,12 +1546,12 @@ def RecalcAdjacency(self, iReg, iRegStart=0): # Keeps track of the colocation of vertices of this region with points # of other regions # List of lists of tuples - # Outer list - len(vertColloc) == len(reg.verts) + # Outer list - len(vertColloc) == len(reg.pointArray) # Inner list - Contains collocation information for each region vertex # Tuple - Contains collocation information from vertex on this region # to vertex on another region in the format: # (iReg, iPt) - vertsColloc = [[] for iPt in xrange(len(reg.verts))] + vertsColloc = [[] for iPt in xrange(len(reg.pointArray))] # Check all other regions against this region for iOthReg in range(len(self.regions[iRegStart:])): @@ -1241,7 +1560,7 @@ def RecalcAdjacency(self, iReg, iRegStart=0): self.regions[iOthReg].name.lower() == "boundary": continue - for iOthPt, othPt in enumerate(self.regions[iOthReg].verts): + for iOthPt, othPt in enumerate(self.regions[iOthReg].pointArray): pt, iPt, iEd, snapped = self.Snap1Region(reg, othPt) # Other region vertex snapped to wall of new region if iEd != -1: @@ -1252,7 +1571,7 @@ def RecalcAdjacency(self, iReg, iRegStart=0): # Recheck it in next loop so we can look at all regions # Check this region against others and create new vertices as necessary - for iPt, pt in enumerate(reg.verts): + for iPt, pt in enumerate(reg.pointArray): snapResults = self.SnapRegions(pt, checkAll=True) # Process the "nearness" information for othPt, iOthReg, iOthPt, iOthEd in snapResults: @@ -1272,11 +1591,11 @@ def RecalcAdjacency(self, iReg, iRegStart=0): vertsColloc[iPt].append((iOthReg, iOthEd + 1)) # Now look for adjacent edges and update transition matrix accordingly - for iPt in range(len(reg.verts)): # Start point of edge - jPt = (iPt + 1) % len(reg.verts) # End point of edge + for iPt in range(len(reg.pointArray)): # Start point of edge + jPt = (iPt + 1) % len(reg.pointArray) # End point of edge for iOthReg, iOthPt in vertsColloc[iPt]: - jOthPt1 = (iOthPt - 1) % len(self.regions[iOthReg].verts) - jOthPt2 = (iOthPt + 1) % len(self.regions[iOthReg].verts) + jOthPt1 = (iOthPt - 1) % len(self.regions[iOthReg].pointArray) + jOthPt2 = (iOthPt + 1) % len(self.regions[iOthReg].pointArray) # Check edge on other region prior to point if (iOthReg, jOthPt1) in vertsColloc[jPt]: # Indicate transition from this region to other region @@ -1331,7 +1650,7 @@ def GetMapBoundaries(self): miny = float('inf') maxy = float('-inf') for reg in self.regions: - for pt in reg.verts: + for pt in reg.pointArray: minx = min(minx, pt.x) maxx = max(maxx, pt.x) miny = min(miny, pt.y) @@ -1346,7 +1665,6 @@ def AddToUndo(self): # Note that this is only called when doing a new action, # not when redoing since this clears the redo buffer action = Action(self.regions, self.adjacent) - print action.stateRegions, action.stateAdjacent self.undoActions.append(action) while len(self.undoActions) > self.unredoBufLen: self.undoActions.popleft() @@ -1357,15 +1675,17 @@ def SnapPoint(self, pt): """Snap the point to any nearby Vicon or region point. pt - Point object, map coordinates of point - returns - (snappedPt, idxRegion, idxRPoint, idxREdge) + returns - (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) snappedPt - Point object, point after snapping idxRegion - int, index of region if snapped to region point/edge if not snapped to region it will be -1 - idxRPoint - int, index of point in region.verts if snapped to point + idxRPoint - int, index of point in region.pointArray if snapped to point if not snapped to point it will be -1 idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] + edge j is defined by region.pointArray[j:j+1] if not snapped to edge it will be -1 + snapped - boolean, indicating if it snapped to anything, including + temporary regions and vicon markers """ # TODO: Make menubar checkbox to disable/enable snapto # Check through all region points and edges first @@ -1383,7 +1703,7 @@ def SnapPoint(self, pt): pt, idxMarker, snapped = self.SnapVicon(pt, snapped) # Only return region indices, since they are usually all that matter - return pt, idxRegion, idxRPoint, idxREdge + return pt, idxRegion, idxRPoint, idxREdge, snapped def SnapRegions(self, pt, checkAll=False, snapped=False): """Snap the point to any sufficiently "nearby" region vertex or wall. @@ -1403,10 +1723,10 @@ def SnapRegions(self, pt, checkAll=False, snapped=False): snappedPt - Point object, point after snapping idxRegion - int, index of region if snapped to region point/edge if not snapped to region it will be -1 - idxRPoint - int, index of point in region.verts if snapped to point + idxRPoint - int, index of point in region.pointArray if snapped to point if not snapped to point it will be -1 idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] + edge j is defined by region.pointArray[j:j+1] if not snapped to edge it will be -1 snapped - Boolean, true if point has been snapped, false if not Note that if input snapped is true, output will be true @@ -1447,10 +1767,10 @@ def Snap1Region(self, region, pt, snapped=False): If point is already snapped, this function will just return returns - (snappedPt, idxRPoint, idxREdge, snapped) snappedPt - Point object, point after snapping - idxRPoint - int, index of point in region.verts if snapped to point + idxRPoint - int, index of point in region.pointArray if snapped to point if not snapped to point it will be -1 idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] + edge j is defined by region.pointArray[j:j+1] if not snapped to edge it will be -1 snapped - Boolean, true if point has been snapped, false if not Note that if input snapped is true, output will be true @@ -1459,22 +1779,22 @@ def Snap1Region(self, region, pt, snapped=False): idxRPoint = -1 idxREdge = -1 # Check first point - chkPt = region.verts[0] + chkPt = region.pointArray[0] if (not snapped) and pt.Dist(chkPt) < self.tolerance: pt = chkPt snapped = True idxRPoint = 0 j = 1 # Region point incrementer - while (not snapped) and j < len(region.verts): + while (not snapped) and j < len(region.pointArray): # Check next point - chkPt = region.verts[j] + chkPt = region.pointArray[j] if pt.Dist(chkPt) < self.tolerance: pt = chkPt snapped = True idxRPoint = j # Check edge between previous and just-checked point else: - p0 = region.verts[j - 1] + p0 = region.pointArray[j - 1] p1 = chkPt chkPt = self.ProjPtOnLine(pt, p0, p1) # Check that projected point is on finite line and close @@ -1489,8 +1809,8 @@ def Snap1Region(self, region, pt, snapped=False): j += 1 # Check last edge if not snapped: - p0 = region.verts[j - 1] - p1 = region.verts[0] + p0 = region.pointArray[j - 1] + p1 = region.pointArray[0] chkPt = self.ProjPtOnLine(pt, p0, p1) if pt.Dist(chkPt) < self.tolerance and \ chkPt.x <= max(p0.x, p1.x) and \ @@ -1520,7 +1840,8 @@ def SnapPoly(self, pt, snapped=False): """ idxPoint = -1 i = 0 # Misc point incrementer - while (not snapped) and i < len(self.polyVerts): + while (not snapped) and isinstance(self.polyVerts, list) and \ + i < len(self.polyVerts): chkPt = self.polyVerts[i] if pt.Dist(chkPt) < self.tolerance: pt = chkPt @@ -1574,6 +1895,19 @@ def InsideRegions(self, pt): return iReg + def InsideBackgroundImage(self, pt): + """Indicates if the given point was clicked inside the background image. + + Returns a boolean. + """ + return self.backgroundImage and \ + pt.x > self.backgroundPosition[0].x and \ + pt.x < self.backgroundPosition[0].x + \ + self.backgroundPosition[1].x and \ + pt.y < self.backgroundPosition[0].y and \ + pt.y > self.backgroundPosition[0].y - \ + self.backgroundPosition[1].y + def Map2Pix(self, pose): """Convert from map coordinates to pixel coordinates. @@ -1697,7 +2031,7 @@ def OnButtonPrev(self, event): # wxGlade: FeedbackDialog. # First region else: self.currReg = len(self.parent.regions) - 1 - self.currPt = len(self.parent.regions[self.currReg].verts) - 1 + self.currPt = len(self.parent.regions[self.currReg].pointArray) - 1 def OnButtonPick(self, event): # wxGlade: FeedbackDialog. #self.parent.Raise() @@ -1706,7 +2040,7 @@ def OnButtonPick(self, event): # wxGlade: FeedbackDialog. def OnButtonNext(self, event): # wxGlade: FeedbackDialog. """Move on to next point.""" # Not last point in region - if self.currPt < len(self.parent.regions[self.currReg].verts) - 1: + if self.currPt < len(self.parent.regions[self.currReg].pointArray) - 1: self.currPt += 1 # Last point in region else: @@ -1719,6 +2053,7 @@ def OnButtonNext(self, event): # wxGlade: FeedbackDialog. self.currPt = 0 # end of class FeedbackDialog + class RegionEditDialog(wx.Dialog): def __init__(self, *args, **kwds): # begin wxGlade: RegionEditDialog.__init__ @@ -1764,918 +2099,6 @@ def __do_layout(self): # end wxGlade # end of class RegionEditDialog -class CalibrationFrame(wx.Frame): - def __init__(self, *args, **kwds): - # begin wxGlade: CalibrationFrame.__init__ - kwds["style"] = wx.DEFAULT_FRAME_STYLE - wx.Frame.__init__(self, *args, **kwds) - - # Menu Bar - self.calibFrame_menubar = wx.MenuBar() - self.filemenu = wx.Menu() - self.menuReset = wx.MenuItem(self.filemenu, wx.NewId(), "Reset", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuReset) - self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuSave) - self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuExit) - self.calibFrame_menubar.Append(self.filemenu, "File") - self.editmenu = wx.Menu() - self.menuUndo = wx.MenuItem(self.editmenu, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) - self.editmenu.AppendItem(self.menuUndo) - self.menuRedo = wx.MenuItem(self.editmenu, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) - self.editmenu.AppendItem(self.menuRedo) - self.editmenu.AppendSeparator() - self.menuSelectAll = wx.MenuItem(self.editmenu, wx.NewId(), "Select All", "", wx.ITEM_NORMAL) - self.editmenu.AppendItem(self.menuSelectAll) - self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All Points", "", wx.ITEM_NORMAL) - self.editmenu.AppendItem(self.menuClearAll) - self.calibFrame_menubar.Append(self.editmenu, "Edit") - self.toolsmenu = wx.Menu() - self.menuShowMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Show Markers", "", wx.ITEM_CHECK) - self.toolsmenu.AppendItem(self.menuShowMarkers) - self.menuClearMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) - self.toolsmenu.AppendItem(self.menuClearMarkers) - self.toolsmenu.AppendSeparator() - self.menuLoadImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Load Image", "", wx.ITEM_NORMAL) - self.toolsmenu.AppendItem(self.menuLoadImage) - self.menuDimen = wx.MenuItem(self.toolsmenu, wx.NewId(), "Dimension Image", "", wx.ITEM_NORMAL) - self.toolsmenu.AppendItem(self.menuDimen) - self.menuClearImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Image", "", wx.ITEM_NORMAL) - self.toolsmenu.AppendItem(self.menuClearImage) - self.calibFrame_menubar.Append(self.toolsmenu, "Tools") - self.helpmenu = wx.Menu() - self.menuHowTo = wx.MenuItem(self.helpmenu, wx.NewId(), "How To Use", "", wx.ITEM_NORMAL) - self.helpmenu.AppendItem(self.menuHowTo) - self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) - self.helpmenu.AppendItem(self.menuAbout) - self.calibFrame_menubar.Append(self.helpmenu, "Help") - self.SetMenuBar(self.calibFrame_menubar) - # Menu Bar end - self.sidebar = wx.Panel(self, -1) - self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Markers") - self.buttonImage = wx.Button(self.sidebar, -1, "Image") - self.toggleAddPoint = wx.ToggleButton(self.sidebar, -1, "Point +") - self.toggleDeletePoint = wx.ToggleButton(self.sidebar, -1, "Point -") - self.textEnterPointX = wx.TextCtrl(self.sidebar, -1, "") - self.textEnterPointY = wx.TextCtrl(self.sidebar, -1, "") - self.buttonEnterPoint = wx.Button(self.sidebar, wx.ID_OK, "OK") - self.toggleDimen = wx.ToggleButton(self.sidebar, -1, "Dimen.") - self.buttonSave = wx.Button(self.sidebar, -1, "Save") - self.chkbxShear = wx.CheckBox(self.sidebar, -1, "Lock aspect ratio") - self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - self.ref = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - - self.__set_properties() - self.__do_layout() - - self.Bind(wx.EVT_MENU, self.OnMenuReset, self.menuReset) - self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) - self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) - self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) - self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) - self.Bind(wx.EVT_MENU, self.OnMenuSelectAll, self.menuSelectAll) - self.Bind(wx.EVT_MENU, self.OnMenuClearAll, self.menuClearAll) - self.Bind(wx.EVT_MENU, self.OnMenuShowMarkers, self.menuShowMarkers) - self.Bind(wx.EVT_MENU, self.OnMenuClearMarkers, self.menuClearMarkers) - self.Bind(wx.EVT_MENU, self.OnMenuLoadImage, self.menuLoadImage) - self.Bind(wx.EVT_MENU, self.OnMenuDimen, self.menuDimen) - self.Bind(wx.EVT_MENU, self.OnMenuClearImage, self.menuClearImage) - self.Bind(wx.EVT_MENU, self.OnMenuHowTo, self.menuHowTo) - self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) - self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleAddPoint, self.toggleAddPoint) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) - self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDimen, self.toggleDimen) - self.Bind(wx.EVT_BUTTON, self.OnButtonSave, self.buttonSave) - # end wxGlade - - # Check that regionEditor object was passed in correctly - if len(args) > 0 and isinstance(args[0], regionEditor): - self.parent = args[0] - if not self.parent.regions: - print "No regions defined. Exiting calibration." - self.Destroy() - else: - print "No regionEditor object passed in. Exiting calibration." - self.Destroy() - - # Bind mouse events - self.map.Bind(wx.EVT_LEFT_DOWN, self.OnMapMouseLeftDown, self.map) - self.map.Bind(wx.EVT_LEFT_UP, self.OnMapMouseLeftUp, self.map) - self.map.Bind(wx.EVT_MOUSEWHEEL, self.OnMapMouseWheel, self.map) - self.map.Bind(wx.EVT_ENTER_WINDOW, self.OnMapEnterWindow, self.map) - self.map.Bind(wx.EVT_LEAVE_WINDOW, self.OnMapLeaveWindow, self.map) - self.ref.Bind(wx.EVT_LEFT_DOWN, self.OnRefMouseLeftDown, self.ref) - self.ref.Bind(wx.EVT_LEFT_UP, self.OnRefMouseLeftUp, self.ref) - self.ref.Bind(wx.EVT_MOUSEWHEEL, self.OnRefMouseWheel, self.ref) - self.ref.Bind(wx.EVT_ENTER_WINDOW, self.OnRefEnterWindow, self.ref) - self.ref.Bind(wx.EVT_LEAVE_WINDOW, self.OnRefLeaveWindow, self.ref) - - # Bind keyboard events - self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) - self.map.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.map) - self.ref.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.ref) - - # Add close event handler to cleanup before closing - self.Bind(wx.EVT_CLOSE, self.OnClose) - - # Determine mapping of the map panel to the field - # Avoid difficulties by having same scale for x and y - mapLen = self.map.GetSize() # Initial size of map panel (pixels) - # Initial range of field (xmin, xmax, ymin, ymax) - xmin, xmax, ymin, ymax = self.parent.GetMapBoundaries() - # pose = pixPose * scale + offset - # Note: y-pixels and y-pose have opposite directions - xScale = (xmax - xmin) / float(mapLen[0]) - yScale = (ymax - ymin) / float(mapLen[1]) - maxScale = max(xScale, yScale) - xOffset = xmin - yOffset = ymax - self.mapScale = Point(maxScale, -maxScale) - self.mapOffset = Point(xOffset, yOffset) - # Determine initial mapping of the reference panel to the field - # Initially defines a 1:1 mapping (at least scale/offset-wise) to map - refLen = self.ref.GetSize() # Initial size of reference panel (pixels) - xScale = (xmax - xmin) / float(refLen[0]) - yScale = (ymax - ymin) / float(refLen[1]) - maxScale = max(xScale, yScale) - xOffset = xmin - yOffset = ymax - self.refScale = Point(maxScale, -maxScale) - self.refOffset = Point(xOffset, yOffset) - - # Calibration-related parameters - self.calibPoints = [] # List of lists of Points - # matching map to reference positions - # [[mapPt1, refPt1], [mapPt2, refPt2], ...] - self.newCalibPt = [None, None] # List of two points - # for creating new calibration points - # [mapNewPt, refNewPt] - - # Mouse-related parameters - self.mapLeftClickPt = Point(0.0, 0.0) - self.refLeftClickPt = Point(0.0, 0.0) - self.selectedPoints = [] # Points that have been selected by mouse - tolerance = 5.0 # Pixel tolerance to consider "same point" - self.mapTolerance = tolerance * self.mapScale.x - self.refTolerance = tolerance * self.refScale.x - - # Set up for undo/redo capabilities - # TODO: Disable self.menuUndo and self.menuRedo - self.unredoBufLen = 50 - self.undoActions = collections.deque() - self.redoActions = collections.deque() - - # Create Vicon listener - self.markerPoses = [] # Marker positions to be drawn - self.viconListener = ViconMarkerListener(self) - - # Display the GUI window and set up the map canvas - self.Show() - self.RedrawMap() - - - def __set_properties(self): - # begin wxGlade: CalibrationFrame.__set_properties - self.SetTitle("Map Calibration") - self.SetBackgroundColour(wx.Colour(240, 240, 240)) - self.toggleVicon.SetMinSize((50, 50)) - self.buttonImage.SetMinSize((50, 50)) - self.toggleAddPoint.SetMinSize((50, 50)) - self.toggleDeletePoint.SetMinSize((50, 50)) - self.textEnterPointX.SetMinSize((40, 25)) - self.textEnterPointX.SetToolTipString("x") - self.textEnterPointY.SetMinSize((40, 25)) - self.textEnterPointY.SetToolTipString("y") - self.buttonEnterPoint.SetMinSize((25, 25)) - self.toggleDimen.SetMinSize((50, 50)) - self.buttonSave.SetMinSize((50, 50)) - self.chkbxShear.SetValue(1) - self.sidebar.SetMinSize((110, 268)) - self.map.SetMinSize((600, 300)) - self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) - self.ref.SetMinSize((600, 300)) - self.ref.SetBackgroundColour(wx.Colour(255, 255, 255)) - # end wxGlade - - def __do_layout(self): - # begin wxGlade: CalibrationFrame.__do_layout - sizer_6 = wx.BoxSizer(wx.HORIZONTAL) - sizer_7 = wx.BoxSizer(wx.VERTICAL) - sizer_8 = wx.BoxSizer(wx.VERTICAL) - sizer_12 = wx.BoxSizer(wx.HORIZONTAL) - sizer_11 = wx.BoxSizer(wx.HORIZONTAL) - sizer_10 = wx.BoxSizer(wx.HORIZONTAL) - sizer_9 = wx.BoxSizer(wx.HORIZONTAL) - sizer_9.Add(self.toggleVicon, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_9.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_9, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_10.Add(self.toggleAddPoint, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_10.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_10, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_11.Add(self.textEnterPointX, 0, wx.ALIGN_CENTER_VERTICAL, 0) - sizer_11.Add(self.textEnterPointY, 0, wx.ALIGN_CENTER_VERTICAL, 0) - sizer_11.Add(self.buttonEnterPoint, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_11, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_12.Add(self.toggleDimen, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_12.Add(self.buttonSave, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_12, 1, wx.EXPAND, 0) - sizer_8.Add(self.chkbxShear, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - self.sidebar.SetSizer(sizer_8) - sizer_6.Add(self.sidebar, 0, 0, 0) - sizer_7.Add(self.map, 1, wx.BOTTOM | wx.EXPAND, 3) - sizer_7.Add(self.ref, 1, wx.TOP | wx.EXPAND, 3) - sizer_6.Add(sizer_7, 1, wx.EXPAND, 0) - self.SetSizer(sizer_6) - sizer_6.Fit(self) - self.Layout() - # end wxGlade - - def OnClose(self, event): - """Perform cleanup tasks and close the application.""" - self.viconListener.stop() - self.Destroy() - - def OnMenuReset(self, event): # wxGlade: CalibrationFrame. - """Clear all calibration points, background images, and markers.""" - self.OnMenuClearMarkers(None) - self.OnMenuClearImage(None) - self.OnMenuClearAll(None) - - def OnMenuSave(self, event): # wxGlade: CalibrationFrame. - """Performs calibration on regions using calibration points to - calculate a transformation matrix that includes rotation. Moves all the - region points as appropriate, then close this GUI.""" - # Check that sufficient number of calibration points have been defined - if len(self.calibPoints) < 3: - msg = "Calibration requires that at least 3 calibration " + \ - "points are defined. Please define more points." - notifyDialog = wx.MessageDialog(self, msg, \ - style=wx.OK|wx.ICON_EXCLAMATION|wx.STAY_ON_TOP) - notifyDialog.ShowModal() - notifyDialog.Destroy() - return - - # Put calibration points into desired format - mapPts = numpy.mat([self.calibPoints[0][0].x, \ - self.calibPoints[0][0].y]).T - regPts = numpy.mat([self.calibPoints[0][1].x, \ - self.calibPoints[0][1].y]).T - for ptPair in self.calibPoints: - mapPts = numpy.hstack([mapPts, \ - numpy.mat([ptPair[0].x, ptPair[0].y]).T]) - regPts = numpy.hstack([regPts, \ - numpy.mat([ptPair[1].x, ptPair[1].y]).T]) - - # Shearing allows for the scaling of dimensions independently - # (does not keep the aspect ratio) but also skews angles and such - # if the points chosen are not perfect - allowShear = not self.chkbxShear.IsChecked() - - # Get tranformation matrix such that - # regPt = T * mapPt - T = _transformations.affine_matrix_from_points(mapPts, regPts, \ - shear=allowShear) - - # Apply transformation to all region points - # TODO: Add this to undo in regionEditor somehow - for reg in self.parent.regions: - for pt in reg.verts: - ptMat = numpy.mat([pt.x, pt.y, 1.0]).T - newPtMat = T * ptMat - pt.Set(float(newPtMat[0]), float(newPtMat[1])) - self.parent.RedrawCanvas() - - # Quit calibration - self.OnClose(None) - - def OnMenuExit(self, event): # wxGlade: CalibrationFrame. - self.OnClose(None) - - def OnMenuUndo(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuUndo' not implemented!" - event.Skip() - - def OnMenuRedo(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuRedo' not implemented!" - event.Skip() - - def OnMenuSelectAll(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuSelectAll' not implemented!" - event.Skip() - - def OnMenuClearAll(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuClearAll' not implemented!" - event.Skip() - - def OnMenuShowMarkers(self, event): # wxGlade: CalibrationFrame. - # Switch Vicon streaming on or off based on state of menu checkbox - if self.menuShowMarkers.IsChecked(): - self.toggleVicon.SetValue(True) - self.viconListener.start() - else: - self.viconListener.stop() - # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) - self.toggleVicon.SetValue(False) - - def OnMenuClearMarkers(self, event): # wxGlade: CalibrationFrame. - if self.menuShowMarkers.IsChecked(): - self.toggleVicon.SetValue(False) - self.menuShowMarkers.Check(False) - self.viconListener.stop() - self.viconListener = ViconMarkerListener(self) - time.sleep(0.1) - self.markerPoses = [] - self.RedrawVicon() - - def OnMenuLoadImage(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuLoadImage' not implemented!" - event.Skip() - - def OnMenuDimen(self, event): # wxGlade: CalibrationFrame. - print "OnMenuDimen" - event.Skip() - - def OnMenuClearImage(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuClearImage' not implemented!" - event.Skip() - - def OnMenuHowTo(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuHowTo' not implemented!" - event.Skip() - - def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuAbout' not implemented!" - event.Skip() - - def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. - # Switch Vicon streaming on or off based on state of toggle button - if self.toggleVicon.GetValue(): - self.menuShowMarkers.Check(True) - self.viconListener.start() - else: - self.viconListener.stop() - # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) - self.menuShowMarkers.Check(False) - - def OnButtonImage(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnButtonImage' not implemented!" - event.Skip() - - def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. - self.ResetToggles(toggleKeep=self.toggleAddPoint) - # TODO: When menu items are added for add point, flip on here - - def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. - self.ResetToggles(toggleKeep=self.toggleDeletePoint) - # TODO: When menu items are added for delete point, flip on here - - def OnButtonEnterPoint(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnButtonEnterPoint' not implemented" - event.Skip() - - def OnToggleDimen(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnToggleDimen' not implemented" - event.Skip() - - def OnButtonSave(self, event): # wxGlade: CalibrationFrame. - self.OnMenuSave(None) - - def OnMapMouseLeftDown(self, event): - """Save downclick point on map for future use.""" - self.mapLeftClickPt, iCalibPt, iReg = \ - self.SnapPointMap(self.MapPix2M(event.GetPosition())) - - def OnMapMouseLeftUp(self, event): - """React to the finalization of the left click on the map.""" - ptPix = event.GetPosition() - pt, iCalibPt, iReg = \ - self.SnapPointMap(self.MapPix2M(ptPix)) - - # Creating a calibration point - if self.toggleAddPoint.GetValue() and iCalibPt == -1: - # First point clicked for adding new point - if not self.newCalibPt[1]: - self.newCalibPt[0] = pt - self.RedrawMap() - - # Finalizing calibration point (second point clicked) - else: - self.calibPoints.append([pt, self.newCalibPt[1]]) - self.newCalibPt = [None, None] - self.Redraw() - - # Removing a calibration point - elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: - self.calibPoints.pop(iCalibPt) - self.Redraw() - - # Panning the map view - elif pt.Dist(self.mapLeftClickPt) > self.mapTolerance: - downClickPix = self.MapM2Pix(self.mapLeftClickPt) - self.mapOffset = Point(self.mapScale.x * \ - (downClickPix[0] - ptPix[0]) + self.mapOffset.x, \ - self.mapScale.y * (downClickPix[1] - ptPix[1]) + \ - self.mapOffset.y) - self.RedrawMap() - - def OnMapMouseWheel(self, event): - """Zoom on the map.""" - ptPix = event.GetPosition() - rot = event.GetWheelRotation() # Usually +/- multiple of 120 - scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll - # Keep mouse on the same point after zooming - # pt = ptPix * scale + offset - # pt = ptPix * scaleNew + offsetNew - self.mapOffset = Point(float(ptPix[0]) * self.mapScale.x * \ - (1 - scaler) + self.mapOffset.x, float(ptPix[1]) * \ - self.mapScale.y * (1 - scaler) + self.mapOffset.y) - self.mapScale = self.mapScale * scaler - self.RedrawMap() - - def OnMapEnterWindow(self, event): - """Set focus on map to enable zooming.""" - self.map.SetFocus() - self.RedrawMap() - - def OnMapLeaveWindow(self, event): - """Return focus to main GUI.""" - self.SetFocus() - - def OnRefMouseLeftDown(self, event): - """Save downclick point on reference panel for future use.""" - self.refLeftClickPt, iCalibPt, iReg = \ - self.SnapPointMap(self.RefPix2M(event.GetPosition())) - - def OnRefMouseLeftUp(self, event): - """React to the finalization of the left click on the map.""" - ptPix = event.GetPosition() - pt, iCalibPt = \ - self.SnapPointRef(self.RefPix2M(ptPix)) - - # Creating a calibration point - if self.toggleAddPoint.GetValue() and iCalibPt == -1: - # First point clicked for adding new point - if not self.newCalibPt[0]: - self.newCalibPt[1] = pt - self.RedrawMap() - - # Finalizing calibration point (second point clicked) - else: - self.calibPoints.append([self.newCalibPt[0], pt]) - self.newCalibPt = [None, None] - self.Redraw() - - # Removing a calibration point - elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: - self.calibPoints.pop(iCalibPt) - self.Redraw() - - # Panning the reference view - elif pt.Dist(self.refLeftClickPt) > self.refTolerance: - downClickPix = self.RefM2Pix(self.refLeftClickPt) - self.refOffset = Point(self.refScale.x * \ - (downClickPix[0] - ptPix[0]) + self.refOffset.x, \ - self.refScale.y * (downClickPix[1] - ptPix[1]) + \ - self.refOffset.y) - self.RedrawRef() - - def OnRefMouseWheel(self, event): - """Zoom on the reference panel.""" - ptPix = event.GetPosition() - rot = event.GetWheelRotation() # Usually +/- multiple of 120 - scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll - # Keep mouse on the same point after zooming - # pt = ptPix * scale + offset - # pt = ptPix * scaleNew + offsetNew - self.refOffset = Point(float(ptPix[0]) * self.refScale.x * \ - (1 - scaler) + self.refOffset.x, float(ptPix[1]) * \ - self.refScale.y * (1 - scaler) + self.refOffset.y) - self.refScale = self.refScale * scaler - self.RedrawRef() - - def OnRefEnterWindow(self, event): - """Set focus on reference panel to enable zooming.""" - self.ref.SetFocus() - self.RedrawRef() - - def OnRefLeaveWindow(self, event): - """Return focus to main GUI.""" - self.SetFocus() - - def OnKeyDown(self, event): - print "OnKeyDown" - event.Skip() - - def Redraw(self): - """Redraw map and reference panels.""" - self.RedrawMap() - self.RedrawRef() - - def RedrawMap(self): - """Redraw the map panel.""" - # Clear map - self.map.ClearBackground() - - # Create device context - windc = wx.WindowDC(self.map) - dc = wx.GCDC(windc) - self.map.PrepareDC(dc) - dc.BeginDrawing() - - # Redraw all regions - for region in self.parent.regions: - self.DrawRegion(region, dc=dc) - - # Draw calibration points - for iPtPair, ptPair in enumerate(self.calibPoints): - self.DrawCalibPoint(self.MapM2Pix(ptPair[0]), str(iPtPair), dc) - - # Draw single point from currently being made calibration point - if self.newCalibPt[0]: - self.DrawCalibPoint(self.MapM2Pix(self.newCalibPt[0]), "", dc) - - dc.EndDrawing() - - def RedrawRef(self): - """Redraw the reference panel.""" - # Clear ref - self.ref.ClearBackground() - - # Create device context - windc = wx.WindowDC(self.ref) - dc = wx.GCDC(windc) - self.ref.PrepareDC(dc) - dc.BeginDrawing() - - # TODO: Draw background image - - # Draw calibration points - for iPtPair, ptPair in enumerate(self.calibPoints): - self.DrawCalibPoint(self.RefM2Pix(ptPair[1]), str(iPtPair), dc) - - # Draw single point from currently being made calibration point - if self.newCalibPt[1]: - self.DrawCalibPoint(self.RefM2Pix(self.newCalibPt[1]), "", dc) - - # Draw markers - dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) - dc.SetPen(wx.Pen(wx.Colour(0, 0, 0, 125), 1, wx.SOLID)) - for pt in self.markerPoses: - ptPix = self.RefM2Pix(pt) - dc.DrawCircle(ptPix[0], ptPix[1], 4) - - dc.EndDrawing() - - def RedrawVicon(self): - # TODO: Redraw saved image of background since it is faster and - # vicon needs to be redrawn at a high frequency - self.RedrawRef() - - def DrawRegion(self, region, dc): - """Draw a single region. - - region - Instance of Region class, contains information about the region. - dc - Device context used for drawing on the panel. - """ - # Set brush to region color - isBoundary = region.name.lower() == "boundary" - if isBoundary: - dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) - dc.SetPen(wx.Pen(wx.BLACK, 3, wx.SOLID)) - elif region.isObstacle: - obstColor = wx.Colour(region.color.Red() / 10, \ - region.color.Green() / 10, region.color.Blue() / 10, 128) - dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) - dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) - else: - innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ - region.color.Blue(), 128) - dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) - dc.SetTextForeground(wx.BLACK) - dc.SetBackgroundMode(wx.TRANSPARENT) - dc.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) - - # Set up label - if region.isObstacle: - labelText = "(%s)" % region.name - else: - labelText = region.name - labelWidth, labelHeight = dc.GetTextExtent(labelText) - - # Draw region - vertsPix = [] - xLabelPix = 0 - yLabelPix = 0 - for vert in region.verts: - vertPix = self.MapM2Pix(vert) - vertsPix.append(vertPix) - if not isBoundary: # Put label in center - xLabelPix += vertPix[0] - yLabelPix += vertPix[1] - else: # Put label in lower right corner - xLabelPix = max(xLabelPix, vertPix[0]) - yLabelPix = max(yLabelPix, vertPix[1]) - dc.DrawPolygon(vertsPix) - if isBoundary: - xLabelPix = xLabelPix - labelWidth - else: - xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 - yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 - - # Draw label - if not isBoundary: - dc.SetBrush(wx.Brush(region.color, wx.SOLID)) - dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ - labelWidth + 10, labelHeight + 6, 3) - dc.DrawText(labelText, xLabelPix, yLabelPix) - - def DrawCalibPoint(self, ptPix, label, dc): - """Draw a single calibration point. - - ptPix - Point to draw with coordinates in pixels - label - String to label point with - usually point index - If label is empty, point will be drawn in a differnt color - dc - Device context that allows for drawing - """ - # Draw circle - radius = 5 - if label: - innerColor = wx.RED - else: - innerColor = wx.GREEN - dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - dc.SetPen(wx.Pen(wx.BLACK, 1, wx.SOLID)) - dc.DrawCircle(ptPix[0], ptPix[1], radius) - - # Draw label - if label: - dc.SetTextForeground(wx.BLACK) - dc.SetBackgroundMode(wx.TRANSPARENT) - dc.SetFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) - labelWidth, labelHeight = dc.GetTextExtent(label) - xLabelPix = ptPix[0] - radius - yLabelPix = ptPix[1] - radius - dc.DrawText(label, xLabelPix, yLabelPix) - - def ResetToggles(self, toggleKeep=None): - """Unpress toggle buttons except that specified. Reset calibration - point creation. Redraw the panels. - - toggleKeep - Toggle button to retain the value of - """ - # Reset toggles - valueKeep = toggleKeep.GetValue() - self.toggleAddPoint.SetValue(False) - self.toggleDeletePoint.SetValue(False) - self.toggleDimen.SetValue(False) - toggleKeep.SetValue(valueKeep) - - # Reset partial calibration point creation - self.newCalibPt = [None, None] - - # Redraw the map and reference panels - self.Redraw() - - def SnapPointMap(self, pt): - """Snap the point to the closest calibration point, region vertex, or - region edge from the map panel. - - pt - Point to snap in absolute coordinates - returns - (snappedPt, idxCalibPt, idxReg) - snappedPt - Point after snapping, in absolute coordinates - idxCalibPt - Index of snapped-to calibration point - (-1 if not snapped to calibration point) - idxReg - Index of region snapped-to (-1 if not snapped to region) - """ - # Check calibration points first - snapped = False - pt, idxCalibPt, snapped = \ - self.SnapCalibPoints(pt, 0, snapped=snapped) - - # Check regions next - pt, idxReg, idxRPoint, idxREdge, snapped = \ - self.parent.SnapRegions(pt, snapped=snapped) - - return pt, idxCalibPt, idxReg - - def SnapPointRef(self, pt): - """Snap the point to the closest calibration point or marker from the - reference panel. - - pt - Point to snap in absolute coordinates - returns - (snappedPt, iCalibPt, iReg) - snappedPt - Point after snapping, in absolute coordinates - idxCalibPt - Index of snapped-to calibration point - (-1 if not snapped to calibration point) - """ - # Check calibration points first - snapped = False - pt, idxCalibPt, snapped = \ - self.SnapCalibPoints(pt, 1, snapped=snapped) - - # Check marker points next - pt, snapped = self.SnapVicon(pt, snapped=snapped) - - return pt, idxCalibPt - - def SnapCalibPoints(self, pt, idxPanel, snapped=False): - """Snap the point to the first sufficiently close calibration point in - the specified panel. - - pt - Point to be snapped in absolute coordinates - idxPanel - 0 indicating map panel, 1 indicating reference panel - snapped - Boolean, whether point has been snapped already - If snapped was true in input, then function will immediately - return, setting the same value to the output snapped - returns - (snappedPt, idxCalibPt, snapped) - snappedPt - Point after snapping, in absolute coordinates - idxCalibPt - Index of snapped-to calibration point - (-1 if not snapped to calibration point) - snapped - Boolean indicating if the point has ever been snapped - """ - # Set tolerance in absolute coordinates - if idxPanel == 0: - tol = self.mapTolerance - else: - tol = self.refTolerance - - # Check through all calibration points until snapping - idxCalibPt = -1 - iCPt = len(self.calibPoints) - 1 - while not snapped and iCPt > -1: - if pt.Dist(self.calibPoints[iCPt][idxPanel]) < tol: - pt = self.calibPoints[iCPt][idxPanel] - idxCalibPt = iCPt - snapped = True - iCPt -= 1 - - return copy.copy(pt), idxCalibPt, snapped - - def SnapVicon(self, pt, snapped=False): - """Snap the given point to any sufficiently close marker point. - - pt - Point to be snapped, in absolute coordinates - snapped - Boolean, indicates if point has already been snapped - If snapped was true in input, then function will immediately - return, setting the same value to the output snapped - returns - (snappedPt, snapped) - snappedPt - Point after snapping - snapped - Boolean, indicates if point has ever been snapped - """ - # Check all points until snapped - iVPt = 0 - while not snapped and iVPt < len(self.markerPoses): - if pt.Dist(self.markerPoses[iVPt]) < self.refTolerance: - pt = copy.copy(self.markerPoses[iVPt]) - snapped = True - iVPt += 1 - - return copy.copy(pt), snapped - - def MapM2Pix(self, pose): - """Convert from absolute (meter) coordinates to pixel coordinates for - the map panel. - - pose - Point, absolute coordinates of point - returns - Tuple, pixel coordinates in canvas panel (col, row) - """ - col = int((pose.x - self.mapOffset.x) / self.mapScale.x) - row = int((pose.y - self.mapOffset.y) / self.mapScale.y) - return (col, row) - - def MapPix2M(self, pixPose): - """Convert from pixel coordinates to absolute (meter) coordinates for - the map panel. - - pixPose - Tuple, pixel coordinates in canvas panel (col, row) - returns - Point, absolute coordinates of point - """ - x = float(pixPose[0]) * self.mapScale.x + self.mapOffset.x - y = float(pixPose[1]) * self.mapScale.y + self.mapOffset.y - return Point(x, y) - - def RefM2Pix(self, pose): - """Convert from absolute (meter) coordinates to pixel coordinates for - the reference panel. - - pose - Point, absolute coordinates of point - returns - Tuple, pixel coordinates in canvas panel (col, row) - """ - col = int((pose.x - self.refOffset.x) / self.refScale.x) - row = int((pose.y - self.refOffset.y) / self.refScale.y) - return (col, row) - - def RefPix2M(self, pixPose): - """Convert from pixel coordinates to absolute (meter) coordinates for - the reference panel. - - pixPose - Tuple, pixel coordinates in canvas panel (col, row) - returns - Point, absolute coordinates of point - """ - x = float(pixPose[0]) * self.refScale.x + self.refOffset.x - y = float(pixPose[1]) * self.refScale.y + self.refOffset.y - return Point(x, y) -# end of class CalibrationFrame - -class Region: - def __init__(self, points=[], name="", holes=[], rgb=None, obst=False): - """Create an object to represent a region. - - points - List of Points containing vertex information - [Point(x1, y1), Point(x2, y2), ...] - name - String defining region name - holes - List of lists of points representing holes cut in the region - rgb - List of integers defining color - [red, green, blue], each with value in range [0 255] - obst - Boolean, True indicates that the region is an obstacle - """ - # TODO: Add convex/concave - self.verts = points - self.name = name - self.holeList = holes - if not rgb: - rgb = [random.randint(0, 255), random.randint(0, 255), \ - random.randint(0,255)] - self.color = wx.Colour(rgb[0], rgb[1], rgb[2]) - self.isObstacle = obst - - def __str__(self): - """Representation of object.""" - s = "%s\t{%03d\t%03d\t%03d}\t[" % (self.name, self.color.Red(), \ - self.color.Green(), self.color.Blue()) - for iPt, pt in enumerate(self.verts): - s += str(pt) - if iPt < len(self.verts) - 1: - s += "\t" - s += "]" - return s - - def getData(self): - """Return a copy of the object's internal data. - This is used to save this region to disk. - """ - - data = {'name': self.name, 'color': (self.color.Red(), \ - self.color.Green(), self.color.Blue())} - - data['points'] = [(pt.x, pt.y) for pt in self.verts] - - data['holeList'] = [] - for hole in self.holeList: - data['holeList'].append([(pt.x, pt.y) for pt in hole]) - - data['isObstacle'] = self.isObstacle - - return data - - def setData(self, data): - """Set the object's internal data. - - 'data' is a copy of the object's saved data, as returned by - getData() above. This is used to restore a previously saved region. - """ - - self.name = data['name'] - self.color = wx.Colour(*data['color']) - - self.verts = [Point(*pt) for pt in data['points']] - - if 'holeList' in data: - self.holeList = [] - for hole in data['holeList']: - self.holeList.append([Point(*pt) for pt in hole]) - - if 'isObstacle' in data: - self.isObstacle = data['isObstacle'] - - def PtInRegion(self, pt): - """Check if a point is inside of the region. - Algorithm taken from C# version of Solution 1 from - http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ - - pt - Point to check - returns - Boolean, True if the point is inside of the region - """ - result = False - n = len(self.verts) - for i in range(n): - j = (i + 1) % n - if ((self.verts[j].y <= pt.y and pt.y < self.verts[i].y) or \ - (self.verts[i].y <= pt.y and pt.y < self.verts[j].y)) and \ - pt.x < (self.verts[i].x - self.verts[j].x) * \ - (pt.y - self.verts[j].y) / \ - (self.verts[i].y - self.verts[j].y) + self.verts[j].x: - result = not result - return result -# end of class Region - class Action: def __init__(self, regions, adjacent): @@ -2690,262 +2113,6 @@ def __init__(self, regions, adjacent): # end of class Action -class Point: - def __init__(self, x, y): - """Create an object that allows floating point vector operations. - - x - Float, first coordinate of point - y - Float, second coordinate of point - """ - if isinstance(x, float) and isinstance(y, float): - self.x = x - self.y = y - else: - raise TypeError('\'Point\' creation takes only \'float\' values') - - def __str__(self): - """Representation of object.""" - return '(%.3f\t%.3f)' % (self.x, self.y) - - def __hash__(self): - """Hashtable representation of object.""" - tup = (self.x, self.y) - return tup.__hash__() - - def __eq__(self, other): - """Checks equality (self == other).""" - return isinstance(other, Point) and self.x == other.x and self.y == other.y - - def __ne__(self, other): - """Checks non-equality (self != other).""" - return not self.__eq__(other) - - def __add__(self, other): - """Addition operator (self + other).""" - if isinstance(other, Point): - return Point(self.x + other.x, self.y + other.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(self.x + other[0], self.y + other[1]) - else: - raise TypeError('cannot add \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __radd__(self, other): - """Right addition operator (other + self).""" - return self.__add__(other) - - def __sub__(self, other): - """Subtraction operator (self - other).""" - if isinstance(other, Point): - return Point(self.x - other.x, self.y - other.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(self.x - other[0], self.y - other[1]) - else: - raise TypeError('cannot subtract \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __rsub__(self, other): - """Right subtraction operator (other - self).""" - if isinstance(other, Point): - return Point(other.x - self.x, other.y - self.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(other[0] - self.x, other[1] - self.y) - else: - raise TypeError('cannot subtract \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __mul__(self, other): - """Multiplication operator (self * other).""" - if isinstance(other, float): - return Point(self.x * other, self.y * other) - else: - raise TypeError('cannot multiply \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __rmul__(self, other): - """Right multiplication operator (other * self).""" - return self.__mul__(other) - - def __div__(self, other): - """Division operator (self / other).""" - if isinstance(other, float): - return Point(self.x / other, self.y / other) - else: - raise TypeError('cannot divide \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __truediv__(self, other): - """True division operator.""" - return self.__div__(other) - - def Set(self, x, y): - """Change the value of the point.""" - self.x = x - self.y = y - - def Dot(self, other): - """Dot product.""" - if isinstance(other, Point): - return self.x * other.x + self.y * other.y - elif isinstance(other, tuple) and len(other) == 2: - return self.x * other[0] + self.y * other[1] - else: - raise TypeError('cannot compute dot product of \'Point\' and \'' + \ - other.__class__.__name__ + '\' object') - - def Dist(self, other): - """Euclidean distance from this point to the other.""" - if isinstance(other, Point): - return math.sqrt((self.x - other.x) ** 2 + \ - (self.y - other.y) ** 2) - elif isinstance(other, tuple) and len(other) == 2: - return math.sqrt((self.x - other[0]) ** 2 + \ - (self.y - other[1]) ** 2) - else: - raise TypeError('cannot compute distance from \'Point\' to \'' + \ - other.__class__.__name__ + '\' object') - - def Norm(self): - """Length of the vector.""" - return math.sqrt(self.x ** 2 + self.y ** 2) -# end of class Point - - -class ViconMarkerListener(threading.Thread): - def __init__(self, parent): - """Create the a socket to receive Vicon data.""" - super(ViconMarkerListener, self).__init__() - - # Communication parameters - self.parent = parent # regionEditor or CalibrationFrame - self.addr = ("0.0.0.0", 7500) - self.bufsize = 65536 - self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - self.lock = threading.Lock() - self.close = threading.Event() - self.updateFreq = 20 # Hz - - # Tracking parameters - # TODO: Set all paremeters in configuration of GUI - self.minDist = 0.01 # Distance to move to qualify as movement - self.maxDist = 0.1 # Qualified as new point - self.movMaxTime = 15 * self.updateFreq # (sec)*(Hz) - # Iterations during which marker is not moving - # before stopping tracking - self.invMaxTime = 1 * self.updateFreq # (sec)*(Hz) - # Iterations during which marker is not found - # before stopping tracking - - # Tracking containers - self.oldPoses = [] # Previous marker positions - self.movingPoses = [] # Markers that are moving - self.movingTimeout = [] # Iterations left before movement timeout - self.invisTimeout = [] # Iteractions left before not-found timeout - - def run(self): - """Open the socket to start communication. Process messages.""" - # Open socket for communication - self.udpSock.bind(self.addr) - - # Receive communication until stopped - self.close.clear() - delay = 1 / self.updateFreq - while not self.close.isSet(): - self.lock.acquire() - data = self.udpSock.recv(self.bufsize) - self.lock.release() - self.ProcessData(data) - time.sleep(delay) - - # Close socket - self.udpSock.close() - self.oldPoses = [] - self.movingPoses = [] - self.movingTimeout = [] - self.invisTimeout = [] - - def stop(self): - """Close the socket to end UDP communication.""" - self.close.set() - - # Deserialize and save data - def ProcessData(self, data): - """Extract marker positions and pass them on to be mapped. - - data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] - """ - # Check for valid data (not null or incomplete) - if data and len(data)%16 == 0: - poses = [] - for i in range(0, len(data), 16): - x, y = struct.unpack('dd', data[i:i+16]) - poses.append(Point(x, y)) - # Save and plot marker positions - # Both regionEditor GUI and CalibrationFrame GUI have - # markerPoses field and RedrawVicon method - self.parent.markerPoses = poses - self.UpdateMovingMarkers(poses) - self.parent.RedrawVicon() # Force map redraw - - def UpdateMovingMarkers(self, poses): - """Note which markers are newly moving and update position of old - moving markers based on change in position from previous list. - - poses - List of Points, marker positions. - """ - # Not first time through - if self.oldPoses: - # Check all currently tracked markers first - for iMarker, markerPose in enumerate(self.movingPoses): - closestIdx = self.FindClosest(poses, markerPose) - closestDist = markerPose.Dist(poses[closestIdx]) - # Same marker - if closestDist < self.maxDist: - self.invisTimeout[iMarker] = self.invMaxTime - # Is moving - if closestDist > self.minDist: - self.movingTimeout[iMarker] = self.movMaxTime + 1 - self.movingPoses[iMarker] = poses[closestIdx] - # Marker not seen - else: - self.invisTimeout[iMarker] -= 1 - self.movingTimeout[iMarker] -= 1 - # Marker has stopped moving or not been seen for some time - if self.invisTimeout[iMarker] == 0 or \ - self.movingTimeout[iMarker] == 0: - self.invisTimeout.pop(iMarker) - self.movingTimeout.pop(iMarker) - self.movingPoses.pop(iMarker) - # Check through all new markers next - for markerPose in poses: - closestIdx = self.FindClosest(self.oldPoses, markerPose) - closestDist = markerPose.Dist(self.oldPoses[closestIdx]) - # Point is moving - if closestDist < self.maxDist and closestDist > self.minDist: - self.movingPoses.append(markerPose) - self.movingTimeout.append(self.movMaxTime) - self.invisTimeout.append(self.invMaxTime) - self.oldPoses = poses - - def FindClosest(self, points, target): - """Find the closest point to the target. - - points - List of Points, marker positions. - target - Point, point to find marker closest to. - returns - Integer, index of closest point in points. - """ - # Iterate through all points - minDist = float('inf') - minIdx = 0 - for i, pt in enumerate(points): - dist = target.Dist(pt) - if dist < minDist: - minIdx = i - minDist = dist - return minIdx -# end of class ViconMarkerListener - - class AudioFeedbackThread(threading.Thread): def __init__(self, feedbackDialog, regEditor): """Create audio feedback for marker placement. @@ -2959,6 +2126,21 @@ def __init__(self, feedbackDialog, regEditor): self.fbDia = feedbackDialog self.regEd = regEditor + # Keep track of Vicon settings before opening this + hadMarkers = len(self.regEd.markerPoses) > 0 + wasStreaming = self.regEd.toggleVicon.GetValue() + wasTracking = self.regEd.viconListener.trackMarkers + self.oldSettings = (hadMarkers, wasStreaming, wasTracking) + + # Start Vicon streaming if necessary + if not self.regEd.toggleVicon.GetValue(): + self.regEd.toggleVicon.SetValue(True) + # TODO: Also check menu item + self.regEd.viconListener.start() + + # Tell marker listener to track the moving markers + self.regEd.viconListener.trackMarkers = True + # Non-audio parameters self.close = threading.Event() self.tolerance = 0.10 # Close-enough distance (m) @@ -2991,7 +2173,7 @@ def run(self): if not self.fbDia.chkbxMute.GetValue(): # Get distance from closest marker to point of interest intPt = self.regEd.regions[self.fbDia.currReg].\ - verts[self.fbDia.currPt] + pointArray[self.fbDia.currPt] minStatDistToPt = 2.0 * self.maxDist for statPt in self.regEd.markerPoses: if not statPt in self.regEd.viconListener.movingPoses: @@ -3008,15 +2190,13 @@ def run(self): minPtIdx = iPt # Plot moving point and goal point - dc = wx.WindowDC(self.regEd.canvas) - dc.SetBrush(wx.Brush(wx.Colour(255, 0, 0, 100), wx.SOLID)) - posePix = self.regEd.Map2Pix(intPt) - dc.DrawCircle(posePix[0], posePix[1], 8) + poses = [intPt] if minPtIdx > -1 and minPtIdx < \ len(self.regEd.viconListener.movingPoses): - posePix = self.regEd.Map2Pix(\ + poses.append( \ self.regEd.viconListener.movingPoses[minPtIdx]) - dc.DrawCircle(posePix[0], posePix[1], 8) + self.regEd.feedbackPoses = poses + # Assume that this will be plotted with next Vicon redraw # Close-enough if minDistToPt < self.tolerance or \ @@ -3068,11 +2248,25 @@ def run(self): (diffPt.x, diffPt.y)) self.engine.runAndWait() time.sleep(self.speechPause) - + def stop(self): """Signal for the thread to end.""" self.engine.stop() self.close.set() + + # Reset to old settings + hadMarkers, wasStreaming, wasTracking = self.oldSettings + self.regEd.viconListener.trackMarkers = wasTracking + if not wasStreaming: + self.regEd.toggleVicon.SetValue(False) + # TODO: Change checkbox too + self.regEd.viconListener.stop() + if not hadMarkers: + time.sleep(1) # Wait for Vicon listener to close + self.regEd.markerPoses = [] + + # Clear poses for drawing + self.regEd.feedbackPoses = [] if __name__ == "__main__": From 18d156957b56fcb08ee7df46c140d0341524c4dd Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Mon, 7 May 2012 11:58:29 -0400 Subject: [PATCH 17/26] Changed all buttons to bitmap buttons and added some properties and changed methods so that they can act as toggles. Separated CalibrationFrame wxGlade file from regionEditor. --- .../NewRegionEditor/CalibrationFrame.wxg | 257 ++++++++++ .../NewRegionEditor/RegionEditor.wxg | 442 ++++++++++++++++++ src/images/addCalibPointIcon.bmp | Bin 0 -> 3126 bytes src/images/addCalibPointIconSel.bmp | Bin 0 -> 3126 bytes src/images/audioFeedbackIcon.bmp | Bin 0 -> 3126 bytes src/images/audioFeedbackIconSel.bmp | Bin 0 -> 3126 bytes src/images/autoboundaryIcon.bmp | Bin 0 -> 3126 bytes src/images/delCalibPointIcon.bmp | Bin 0 -> 3126 bytes src/images/delCalibPointIconSel.bmp | Bin 0 -> 3126 bytes src/images/importImageIcon.bmp | Bin 0 -> 3126 bytes src/images/saveIcon.bmp | Bin 0 -> 3126 bytes src/images/streamMarkersIcon.bmp | Bin 0 -> 3126 bytes src/images/streamMarkersIconSel.bmp | Bin 0 -> 3126 bytes src/lib/calibrate.py | 107 +++-- src/regionEditor.py | 296 +++++++----- 15 files changed, 941 insertions(+), 161 deletions(-) create mode 100644 src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg create mode 100644 src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg create mode 100644 src/images/addCalibPointIcon.bmp create mode 100644 src/images/addCalibPointIconSel.bmp create mode 100644 src/images/audioFeedbackIcon.bmp create mode 100644 src/images/audioFeedbackIconSel.bmp create mode 100644 src/images/autoboundaryIcon.bmp create mode 100644 src/images/delCalibPointIcon.bmp create mode 100644 src/images/delCalibPointIconSel.bmp create mode 100644 src/images/importImageIcon.bmp create mode 100644 src/images/saveIcon.bmp create mode 100644 src/images/streamMarkersIcon.bmp create mode 100644 src/images/streamMarkersIconSel.bmp diff --git a/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg b/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg new file mode 100644 index 00000000..5cba2d3a --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg @@ -0,0 +1,257 @@ + + + + + + + Map Calibration + 1 + #f0f0f0 + + + + + + menuReset + OnMenuReset + + + + menuSave + OnMenuSave + + + + menuExit + OnMenuExit + + + + + + menuUndo + OnMenuUndo + + + + menuRedo + OnMenuRedo + + + + --- + --- + + + + menuSelectAll + OnMenuSelectAll + + + + menuClearAll + OnMenuClearAll + + + + + + menuShowMarkers + 1 + OnMenuShowMarkers + + + + menuClearMarkers + OnMenuClearMarkers + + + + --- + --- + + + + menuLoadImage + OnMenuLoadImage + + + + menuDimen + OnMenuDimen + + + + menuClearImage + OnMenuClearImage + + + + + + menuHowTo + OnMenuHowTo + + + + menuAbout + OnMenuAbout + + + + + + wxVERTICAL + + wxEXPAND + 0 + + + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Stream markers + + OnToggleVicon + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Import image + + OnButtonImage + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Add calibration point + + OnToggleAddPoint + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Delete calibration point + + OnToggleDeletePoint + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Scale image + + OnToggleDimen + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Save and return + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + wxHORIZONTAL + + wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 2 + + + x + 1 + 40, 25 + + + + wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 2 + + + y + 1 + 40, 25 + + + + wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 2 + + + + Create calibration point + wx.ID_OK + + OnButtonEnterPoint + + 25, 25 + + + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + + + + + + wxBOTTOM|wxEXPAND + 3 + + + + #ffffff + 600, 300 + + + + wxTOP|wxEXPAND + 3 + + + + #ffffff + 600, 300 + + + + + diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg new file mode 100644 index 00000000..f7717da4 --- /dev/null +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg @@ -0,0 +1,442 @@ + + + + + + + Region Editor + 1 + wx.Frame + + + + + + menuNew + OnMenuNew + + + + menuOpen + OnMenuOpen + + + + menuSave + OnMenuSave + + + + menuSaveAs + OnMenuSaveAs + + + + --- + --- + + + + menuExit + OnMenuExit + + + + + + menuUndo + OnMenuUndo + + + + menuRedo + OnMenuRedo + + + + + + menuAutobound + OnMenuAutobound + + + + menuRect + 1 + OnMenuRect + + + + menuPoly + 1 + OnMenuPoly + + + + --- + --- + + + + menuAddPoint + 1 + OnMenuAddPoint + + + + menuRemPoint + 1 + OnMenuRemPoint + + + + + + menuMarkers + 1 + OnMenuMarkers + + + + menuMarkersClear + OnMenuMarkersClear + + + + --- + --- + + + + menuImageImport + OnMenuImageImport + + + + menuImageClear + OnMenuImageClear + + + + --- + --- + + + + menuFeedback + 1 + + + + --- + --- + + + + menuCalibrate + + + + + + menuAbout + OnMenuAbout + + + + + + wxVERTICAL + + wxEXPAND + 0 + + + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Stream markers + + OnToggleVicon + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Import image + + OnButtonImage + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Rectangle + + OnToggleSquare + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Polygon + + OnTogglePoly + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Set length or scale image + + OnToggleDim + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Autoboundary + + OnButtonAutobound + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Audio feedback + + OnToggleFeedback + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Calibrate + + OnButtonCal + + 32, 32 + + + + + + + wxEXPAND + 0 + + + + #ffffff + 800, 400 + + + + + + + Marker Placement + + wxVERTICAL + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnButtonPrev + + 50, 50 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + OnButtonNext + + 50, 50 + + + + + + wxEXPAND + 0 + + + wxVERTICAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + 1 + + + + + wxALL|wxEXPAND + 5 + + + + 0 + 1 + + + Speech + Beeping + + + + + wxALL + 5 + + + + + + + + + + + + Edit Region + + wxVERTICAL + + wxEXPAND + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + 1 + + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + + + + + wxEXPAND + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + 1 + + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + $parent + $id + + 40, 40 + + + + + + wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 0 + + + + + + + wxEXPAND + 0 + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + wx.ID_OK + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 8 + + + + wx.ID_CANCEL + + + + + + + diff --git a/src/images/addCalibPointIcon.bmp b/src/images/addCalibPointIcon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c8e2de19a449ce2376bc476021b1898ccd5f4912 GIT binary patch literal 3126 zcmeH}!41MN3`NbI0XQL!Owa+ivlF9rv+&DDmT_njs8gv@t;BNDnJVl+xJ2pgNEb7KW9%6+V?)&no8hyE1LbUt>#VT;}8H zuPJ!N-I~+S>>{astiY!#>s$1@lI?ZItTErmP78lJ_W4yi)N+0~MF^iMP>2q#V&}6J z+8G9$>yHZ7au`ItU&qH1je_sTXNrY+yYxCitX4A!#5(JMh_u z)ENe!_QbvPCkamFFleRU;A4qK!S}-_#Y%i$FM4q0R`Y!*BLA&F*W+aP7UqDj-yAM3 dbBeb35MU^pXo!6}Lvi}im*pgN8rrHtSV{B~>}S`sRd4rp z-wf8udX;(p%w2O3B__YWPMA1YWqmAWD8KLf=K>~G7xKlgB7X^A$Qb08=W_WZlL^5s zlO{!u4=h#$YOK~tEDuNc^wE6L8V+qd_4bGPa_tzpKa-jhn(5vDOaXET86E^~b+=>f z@&RNP5DMWT)~lZ-jW93A4uj4V<$Q)1L3lF7mwW?{Q{?z)xVvtgZ(5z)noBS~loeMu1V~qDc!Q+E}=@2+_BR_`lfqx4hWH#~Jy{deX#iYrU`L5K-sk?&9Dc8p(=cck4 vCwztPz7Fg1=c5|4txxs)vI+LJN|)cS-CosVT9M=1oGE%qeEfp;h|oVCCMMQ} literal 0 HcmV?d00001 diff --git a/src/images/autoboundaryIcon.bmp b/src/images/autoboundaryIcon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..054b1c4f1ccbf5dcbbad9ce81fb597c7c084c879 GIT binary patch literal 3126 zcmeH}!41MN3`N780XQMV1t!PJe-ASu3-_6$1C?EiGycskd%H_MLN&4guGL`Os5I8V2{T0tckbpX}4;($_)` z|NPwCer-O7tIK8b2uuCv;OKYdpYMAlmr(If@T7#CAHunWkk8?fgoK}ihZ4>FGTckF z@oV6;r-skJI&^9zu&tT@Rf1ee_yq}qqYC*+2@hA{M-m}ii|-{OcqN}^D5<17{{MlW VSJL7BB{cqQ$j2|JdU(F+881lT6dM2l literal 0 HcmV?d00001 diff --git a/src/images/delCalibPointIcon.bmp b/src/images/delCalibPointIcon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..81eec4b8a47c183c58a7116771f05038b04b030a GIT binary patch literal 3126 zcmeHJTMoi73=97pfG@-+C)fe_=T01LH!IeRB9wM%$5I4Rqc-XzwOv=5cDqkUSz@|N-yy-OzxE^1_r=(33#bO5^ z^&+Xg{VcwkSyZUkEbg}WgM&T=J=}xuQ-t7?0vFMyf(JgWP-i&!JAYKLUWbFI_ci#K z!YJf^_@vm0&*Rk$t~^@44^`xk_2+t=6~2Wj@b#PG>NKZ_#fJbx5sq)}IPi@jX8P_A MenG=S@ug=x0ocqGCjbBd literal 0 HcmV?d00001 diff --git a/src/images/delCalibPointIconSel.bmp b/src/images/delCalibPointIconSel.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7c2f9141782a5a9cd13d9ba4edea02c8d41706d4 GIT binary patch literal 3126 zcmeHJ+YQ1n3^e}?z!&0^2|57(%#@7Q&EUi#3puHi(gYPLR$}GhoX=;e>g_%qCBxA-b%mZ6rJy{*v)5B(I>a0|Ylq6t1zpb#BOc;HhCRfdbd(?!dN89~_58QqCHlE(h8C#2!_wysa2*W>f z{Vi$zt+eh|y6XlZTE5xv=xxj^aegTsl!{^bgi~sHDHF*p50M|4>O35Id^ps;`A2Kr zIayokDNeNIU)>`=JJ6cx{UO!!U8d`MLbUv~zQ>!r4=a&9!YP!~obt9>4{oLB4e_a- z#B^tH?1` z+e+1C;>^sCO>{eTKb5zineN><@fhV&ObUA{GmqF2j6W8PEjt}wo$Ws-M9a6mc!JSp+jU0@o~f^keJ`r--)gp&Qp8m zQM>!k)-$gTu}Q?n3DNSM#!eg$HKVqpv-Y>uOSyV69(AmS*Ls!c6cQA(NSKhCLux5( zdNSYstyh2NEHI3u3CUT+rwGyV-LIY_GI|*`k0CVkcz5{0@me1eGfYS=BDIY4Dl!&i z){t3ebK1f(sTCv_kenk#%lC|RAv%fZ1R@l4Sc+*RC`g`Xa>mR|Zd2tpmF$+nZ7Es1 z%GtnefTO+4w1yBZe}AF}v8hH(BR<1|otorDq*uVLfwQW_@(!7I%7RN4+-&BZl%YJb zR&W+Vw0z&Rj+M%y(PSnsAicznPvvE8DsNW=lHLBGIBt`AW-(@!d_hqbUMsvyd zJVAPhW+qcl_zehDIpHpd9!1=f3UB%sQ2|bY0+0bh05wX=`;`1X#9czP{P5CXqtEmU zp>A8jZ!$dB#CJdy7T(Ck1CvV%)ldhE60ldrq)no{Qt;9mLbUwY%1iLXHe|wi!tD^Z zA-btB6!z7kUoHiL@$z~Iv<00abc)pj1fpfR7@)hfh7c`3u{y*|>Nd>+^?VCC!kx&w zQTW#{2ITS~ZDDfB)TkMUd>AWJrs4Zg@DifsCoRJb)_yTlXISy%zed4B-$lu%mJa07 zpqTHqZ<}od5s-{{u7tKv$2Nk0)I5 zgwNqwT z!G++-0Kxz&BQ^ZdOu)|_HJ^&%11z_R1aM193V(><^>_h94JGCi;{{60$Lsw1QTGq6 z@CTMoz%&d=55%|}Iew87KhPYk^$Vo*1F9qg!AnjE1CRM=D#_yxC-aGqO5#<*!-uAg FbO2)xH>Usq literal 0 HcmV?d00001 diff --git a/src/images/streamMarkersIcon.bmp b/src/images/streamMarkersIcon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..258f7c659ebebcc092c195072e5954576cc5e214 GIT binary patch literal 3126 zcmeH`%?-jZ3`WbH0XQL!Owa+ivlF8s7AsE}SymjU3F*%TOQ~GPexKvCxBGY;J~r~a zvM%3s7*2Q?`>(Ss32gFwtY*^wG)>PHjIPW4WO%JDl=;9pmo*|y5(U18i%^q9#E;;u z5`TXAy7!t7T}4;C$oC_s_7Y8SAklnussOEN+&VS^-)_zFZF1HJXn$~gE78gK@Z<;V z;YV;QQQ%W<%@2p&WHR=ZT}mRpua$hO;&UqbQDGtxrIqJXQzfUU$@KH7snRJ$$;2h6 zlMlp8D4gAXzDU4Slg{P22;Tw|-}6bJ6Z@s9Pdq7~ea-T-5>JM#AT?^J4!|p^=Eva{iJkUSvt8pZ}678B~;vICC2L zfOrXk?(d=wUM9e$E>{bH%j) literal 0 HcmV?d00001 diff --git a/src/lib/calibrate.py b/src/lib/calibrate.py index 8e2feb68..6a786451 100755 --- a/src/lib/calibrate.py +++ b/src/lib/calibrate.py @@ -67,7 +67,6 @@ def outputTransformationMatrix(self, T): UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) UDPSock.sendto(output, self.configEditorPort) yield -# end of class CalibrateFrame class CalibrationFrame(wx.Frame): @@ -118,19 +117,19 @@ def __init__(self, *args, **kwds): self.calibFrame_menubar.Append(self.helpmenu, "Help") self.SetMenuBar(self.calibFrame_menubar) # Menu Bar end - self.sidebar = wx.Panel(self, -1) - self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Markers") - self.buttonImage = wx.Button(self.sidebar, -1, "Image") - self.toggleAddPoint = wx.ToggleButton(self.sidebar, -1, "Point +") - self.toggleDeletePoint = wx.ToggleButton(self.sidebar, -1, "Point -") - self.textEnterPointX = wx.TextCtrl(self.sidebar, -1, "") - self.textEnterPointY = wx.TextCtrl(self.sidebar, -1, "") - self.buttonEnterPoint = wx.Button(self.sidebar, wx.ID_OK, "OK") - self.toggleDimen = wx.ToggleButton(self.sidebar, -1, "Dimen.") - self.buttonSave = wx.Button(self.sidebar, -1, "Save") - self.chkbxShear = wx.CheckBox(self.sidebar, -1, "Lock aspect ratio") - self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - self.ref = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) + self.panel_1 = wx.Panel(self, -1) + self.toggleVicon = wx.BitmapButton(self.panel_1, -1, wx.NullBitmap) + self.buttonImage = wx.BitmapButton(self.panel_1, -1, wx.NullBitmap) + self.toggleAddPoint = wx.BitmapButton(self.panel_1, -1, wx.NullBitmap) + self.toggleDeletePoint = wx.BitmapButton(self.panel_1, -1, wx.NullBitmap) + self.toggleDimen = wx.BitmapButton(self.panel_1, -1, wx.NullBitmap) + self.buttonSave = wx.BitmapButton(self.panel_1, -1, wx.NullBitmap) + self.textEnterPointX = wx.TextCtrl(self.panel_1, -1, "") + self.textEnterPointY = wx.TextCtrl(self.panel_1, -1, "") + self.buttonEnterPoint = wx.Button(self.panel_1, wx.ID_OK, "OK") + self.chkbxShear = wx.CheckBox(self.panel_1, -1, "Lock aspect ratio") + self.map = wx.Panel(self, -1) + self.ref = wx.Panel(self, -1) self.__set_properties() self.__do_layout() @@ -149,13 +148,12 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_MENU, self.OnMenuClearImage, self.menuClearImage) self.Bind(wx.EVT_MENU, self.OnMenuHowTo, self.menuHowTo) self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnToggleVicon, self.toggleVicon) self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleAddPoint, self.toggleAddPoint) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) + self.Bind(wx.EVT_BUTTON, self.OnToggleAddPoint, self.toggleAddPoint) + self.Bind(wx.EVT_BUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) + self.Bind(wx.EVT_BUTTON, self.OnToggleDimen, self.toggleDimen) self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDimen, self.toggleDimen) - self.Bind(wx.EVT_BUTTON, self.OnButtonSave, self.buttonSave) # end wxGlade # Check that parent object was passed in correctly @@ -274,19 +272,26 @@ def __set_properties(self): # begin wxGlade: CalibrationFrame.__set_properties self.SetTitle("Map Calibration") self.SetBackgroundColour(wx.Colour(240, 240, 240)) - self.toggleVicon.SetMinSize((50, 50)) - self.buttonImage.SetMinSize((50, 50)) - self.toggleAddPoint.SetMinSize((50, 50)) - self.toggleDeletePoint.SetMinSize((50, 50)) + self.toggleVicon.SetMinSize((32, 32)) + self.toggleVicon.SetToolTipString("Stream markers") + self.buttonImage.SetMinSize((32, 32)) + self.buttonImage.SetToolTipString("Import image") + self.toggleAddPoint.SetMinSize((32, 32)) + self.toggleAddPoint.SetToolTipString("Add calibration point") + self.toggleDeletePoint.SetMinSize((32, 32)) + self.toggleDeletePoint.SetToolTipString("Delete calibration point") + self.toggleDimen.SetMinSize((32, 32)) + self.toggleDimen.SetToolTipString("Scale image") + self.buttonSave.SetMinSize((32, 32)) + self.buttonSave.SetToolTipString("Save and return") self.textEnterPointX.SetMinSize((40, 25)) self.textEnterPointX.SetToolTipString("x") + self.textEnterPointX.Enable(False) self.textEnterPointY.SetMinSize((40, 25)) self.textEnterPointY.SetToolTipString("y") + self.textEnterPointY.Enable(False) self.buttonEnterPoint.SetMinSize((25, 25)) - self.toggleDimen.SetMinSize((50, 50)) - self.buttonSave.SetMinSize((50, 50)) - self.chkbxShear.SetValue(1) - self.sidebar.SetMinSize((110, 268)) + self.buttonEnterPoint.SetToolTipString("Create calibration point") self.map.SetMinSize((600, 300)) self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) self.ref.SetMinSize((600, 300)) @@ -295,32 +300,24 @@ def __set_properties(self): def __do_layout(self): # begin wxGlade: CalibrationFrame.__do_layout - sizer_6 = wx.BoxSizer(wx.HORIZONTAL) - sizer_7 = wx.BoxSizer(wx.VERTICAL) - sizer_8 = wx.BoxSizer(wx.VERTICAL) - sizer_12 = wx.BoxSizer(wx.HORIZONTAL) - sizer_11 = wx.BoxSizer(wx.HORIZONTAL) - sizer_10 = wx.BoxSizer(wx.HORIZONTAL) - sizer_9 = wx.BoxSizer(wx.HORIZONTAL) - sizer_9.Add(self.toggleVicon, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_9.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_9, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_10.Add(self.toggleAddPoint, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_10.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_10, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_11.Add(self.textEnterPointX, 0, wx.ALIGN_CENTER_VERTICAL, 0) - sizer_11.Add(self.textEnterPointY, 0, wx.ALIGN_CENTER_VERTICAL, 0) - sizer_11.Add(self.buttonEnterPoint, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_11, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_12.Add(self.toggleDimen, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_12.Add(self.buttonSave, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_12, 1, wx.EXPAND, 0) - sizer_8.Add(self.chkbxShear, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - self.sidebar.SetSizer(sizer_8) - sizer_6.Add(self.sidebar, 0, 0, 0) - sizer_7.Add(self.map, 1, wx.BOTTOM | wx.EXPAND, 3) - sizer_7.Add(self.ref, 1, wx.TOP | wx.EXPAND, 3) - sizer_6.Add(sizer_7, 1, wx.EXPAND, 0) + sizer_6 = wx.BoxSizer(wx.VERTICAL) + sizer_7 = wx.BoxSizer(wx.HORIZONTAL) + sizer_8 = wx.BoxSizer(wx.HORIZONTAL) + sizer_7.Add(self.toggleVicon, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_7.Add(self.buttonImage, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_7.Add(self.toggleAddPoint, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_7.Add(self.toggleDeletePoint, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_7.Add(self.toggleDimen, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_7.Add(self.buttonSave, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_8.Add(self.textEnterPointX, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 2) + sizer_8.Add(self.textEnterPointY, 0, wx.LEFT | wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 2) + sizer_8.Add(self.buttonEnterPoint, 0, wx.LEFT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 2) + sizer_7.Add(sizer_8, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_7.Add(self.chkbxShear, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + self.panel_1.SetSizer(sizer_7) + sizer_6.Add(self.panel_1, 0, wx.EXPAND, 0) + sizer_6.Add(self.map, 1, wx.BOTTOM | wx.EXPAND, 3) + sizer_6.Add(self.ref, 1, wx.TOP | wx.EXPAND, 3) self.SetSizer(sizer_6) sizer_6.Fit(self) self.Layout() @@ -388,10 +385,10 @@ def OnMenuSave(self, event): # wxGlade: CalibrationFrame. self.parent.outputTransformationMatrix(T) # Quit calibration - self.OnClose(None) + self.Close() def OnMenuExit(self, event): # wxGlade: CalibrationFrame. - self.OnClose(None) + self.Close() def OnMenuUndo(self, event): # wxGlade: CalibrationFrame. print "Event handler `OnMenuUndo' not implemented!" diff --git a/src/regionEditor.py b/src/regionEditor.py index 5461c6e9..44bbb63f 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -54,14 +54,14 @@ def __init__(self, *args, **kwds): self.menuDrawing = wx.Menu() self.menuAutobound = wx.MenuItem(self.menuDrawing, wx.NewId(), "Autoboundary", "", wx.ITEM_NORMAL) self.menuDrawing.AppendItem(self.menuAutobound) - self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "Rectangle", "", wx.ITEM_NORMAL) + self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "Rectangle", "", wx.ITEM_CHECK) self.menuDrawing.AppendItem(self.menuRect) - self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_NORMAL) + self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_CHECK) self.menuDrawing.AppendItem(self.menuPoly) self.menuDrawing.AppendSeparator() - self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_NORMAL) + self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_CHECK) self.menuDrawing.AppendItem(self.menuAddPoint) - self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_NORMAL) + self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_CHECK) self.menuDrawing.AppendItem(self.menuRemPoint) self.RegionEditor_menubar.Append(self.menuDrawing, "Drawing") self.menuView = wx.Menu() @@ -87,15 +87,15 @@ def __init__(self, *args, **kwds): self.RegionEditor_menubar.Append(self.helpmenu, "Help") self.SetMenuBar(self.RegionEditor_menubar) # Menu Bar end - self.sidebar = wx.Panel(self, -1) - self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Markers") - self.buttonImage = wx.Button(self.sidebar, -1, "Image") - self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Rect.") - self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") - self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Length") - self.buttonAutobound = wx.Button(self.sidebar, -1, "Boundary") - self.toggleFeedback = wx.ToggleButton(self.sidebar, -1, "Feedback") - self.buttonCal = wx.Button(self.sidebar, -1, "Calibrate") + self.topbar = wx.Panel(self, -1) + self.toggleVicon = wx.BitmapButton(self.topbar, -1, wx.NullBitmap) + self.buttonImage = wx.BitmapButton(self.topbar, -1, wx.NullBitmap) + self.toggleSquare = wx.BitmapButton(self.topbar, -1, wx.NullBitmap) + self.togglePoly = wx.BitmapButton(self.topbar, -1, wx.NullBitmap) + self.toggleDim = wx.BitmapButton(self.topbar, -1, wx.NullBitmap) + self.buttonAutobound = wx.BitmapButton(self.topbar, -1, wx.NullBitmap) + self.toggleFeedback = wx.BitmapButton(self.topbar, -1, wx.NullBitmap) + self.buttonCal = wx.BitmapButton(self.topbar, -1, wx.NullBitmap) self.canvas = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) self.__set_properties() @@ -118,13 +118,13 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_MENU, self.OnMenuImageImport, self.menuImageImport) self.Bind(wx.EVT_MENU, self.OnMenuImageClear, self.menuImageClear) self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) + self.Bind(wx.EVT_BUTTON, self.OnToggleVicon, self.toggleVicon) self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) + self.Bind(wx.EVT_BUTTON, self.OnToggleSquare, self.toggleSquare) + self.Bind(wx.EVT_BUTTON, self.OnTogglePoly, self.togglePoly) + self.Bind(wx.EVT_BUTTON, self.OnToggleDim, self.toggleDim) self.Bind(wx.EVT_BUTTON, self.OnButtonAutobound, self.buttonAutobound) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFeedback, self.toggleFeedback) + self.Bind(wx.EVT_BUTTON, self.OnToggleFeedback, self.toggleFeedback) self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) # end wxGlade @@ -149,6 +149,49 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) self.canvas.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.canvas) + # Keep track of which buttons are toggled + # Since we are using bitmap buttons and they can't toggle + # Also load all buttons' bitmaps and set appropriate ones + self.toggleStates = {'vicon': False, + 'square': False, + 'poly': False, + 'dim': False, + 'feedback': False} + self.buttonBitmaps = {'vicon': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\streamMarkersIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'viconSel': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\streamMarkersIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'image': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\importImageIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'square': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\rectIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'squareSel': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\rectIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'poly': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\polyIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'polySel': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\polyIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'dim': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\dimensionIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'dimSel': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\dimensionIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'autobound': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\autoboundaryIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'feedback': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\audioFeedbackIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'feedbackSel': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\audioFeedbackIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'cal': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\calibPointIcon.bmp"), wx.BITMAP_TYPE_ANY)} + self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) + self.buttonImage.SetBitmapLabel(self.buttonBitmaps['image']) + self.toggleSquare.SetBitmapLabel(self.buttonBitmaps['square']) + self.togglePoly.SetBitmapLabel(self.buttonBitmaps['poly']) + self.toggleDim.SetBitmapLabel(self.buttonBitmaps['dim']) + self.buttonAutobound.SetBitmapLabel(self.buttonBitmaps['autobound']) + self.toggleFeedback.SetBitmapLabel(self.buttonBitmaps['feedback']) + self.buttonCal.SetBitmapLabel(self.buttonBitmaps['cal']) + # Determine mapping of the canvas panel to the field canvasLen = self.canvas.GetSize() # Initial size of canvas (pixels) fieldRange = [(-3.0, 9.0), (-3.0, 3.0)] # Initial range of field (m) @@ -206,6 +249,9 @@ def __init__(self, *args, **kwds): self.undoActions = collections.deque() self.redoActions = collections.deque() + # Track whether map is accurate to file + self.isSaved = True + # Add paint event handler to draw on the canvas # TODO: Fix problems here #self.canvas.Bind(wx.EVT_PAINT, self.OnCanvasPaint) @@ -224,38 +270,45 @@ def __init__(self, *args, **kwds): if self.fileName: self.ReadFile(self.fileName) self.Show() - self.DrawGrid() + self.RedrawCanvas() def __set_properties(self): # begin wxGlade: regionEditor.__set_properties self.SetTitle("Region Editor") - self.toggleVicon.SetMinSize((50, 50)) - self.buttonImage.SetMinSize((50, 50)) - self.toggleSquare.SetMinSize((50, 50)) - self.togglePoly.SetMinSize((50, 50)) - self.toggleDim.SetMinSize((50, 50)) - self.buttonAutobound.SetMinSize((50, 50)) - self.toggleFeedback.SetMinSize((50, 50)) - self.buttonCal.SetMinSize((50, 50)) - self.sidebar.SetMinSize((120, 400)) + self.toggleVicon.SetMinSize((32, 32)) + self.toggleVicon.SetToolTipString("Stream markers") + self.buttonImage.SetMinSize((32, 32)) + self.buttonImage.SetToolTipString("Import image") + self.toggleSquare.SetMinSize((32, 32)) + self.toggleSquare.SetToolTipString("Rectangle") + self.togglePoly.SetMinSize((32, 32)) + self.togglePoly.SetToolTipString("Polygon") + self.toggleDim.SetMinSize((32, 32)) + self.toggleDim.SetToolTipString("Set length or scale image") + self.buttonAutobound.SetMinSize((32, 32)) + self.buttonAutobound.SetToolTipString("Autoboundary") + self.toggleFeedback.SetMinSize((32, 32)) + self.toggleFeedback.SetToolTipString("Audio feedback") + self.buttonCal.SetMinSize((32, 32)) + self.buttonCal.SetToolTipString("Calibrate") self.canvas.SetMinSize((800, 400)) self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255)) # end wxGlade def __do_layout(self): # begin wxGlade: regionEditor.__do_layout - sizer_1 = wx.BoxSizer(wx.HORIZONTAL) - grid_sizer_1 = wx.GridSizer(4, 2, 5, 5) - grid_sizer_1.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonImage, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonAutobound, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleFeedback, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonCal, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - self.sidebar.SetSizer(grid_sizer_1) - sizer_1.Add(self.sidebar, 0, wx.EXPAND, 0) + sizer_1 = wx.BoxSizer(wx.VERTICAL) + sizer_13 = wx.BoxSizer(wx.HORIZONTAL) + sizer_13.Add(self.toggleVicon, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_13.Add(self.buttonImage, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_13.Add(self.toggleSquare, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_13.Add(self.togglePoly, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_13.Add(self.toggleDim, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_13.Add(self.buttonAutobound, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_13.Add(self.toggleFeedback, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + sizer_13.Add(self.buttonCal, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) + self.topbar.SetSizer(sizer_13) + sizer_1.Add(self.topbar, 0, wx.EXPAND, 0) sizer_1.Add(self.canvas, 1, wx.EXPAND, 0) self.SetSizer(sizer_1) sizer_1.Fit(self) @@ -264,15 +317,17 @@ def __do_layout(self): def OnClose(self, event): """Perform cleanup tasks and close the application.""" - # Check if the closure can even be canceled - # TODO: Check if map is unsaved and ask if they want to save before closing - if not event or event.CanVeto(): + # Check if the closure can even be canceled and + # if map is unsaved and ask if they want to save before closing + if not event or event.CanVeto() and not self.isSaved: dlg = wx.MessageDialog(self, - "Do you really want to close this application?", - "Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION) + "Do you want to save changes before closing?", + "Confirm Exit", wx.YES|wx.NO|wx.CANCEL|wx.ICON_QUESTION) result = dlg.ShowModal() dlg.Destroy() - if result == wx.ID_OK: + if result == wx.ID_YES: + self.OnMenuSave(None) + if result != wx.ID_CANCEL: self.viconListener.stop() # TODO: Check if vicon is indeed running, and put wait-notify # in to close port before closing GUI @@ -282,14 +337,21 @@ def OnClose(self, event): self.Destroy() def OnToggleVicon(self, event): # wxGlade: regionEditor. + # Change control values + self.toggleStates['vicon'] = not self.toggleStates['vicon'] + self.menuMarkers.Check(self.toggleStates['vicon']) + # Switch Vicon streaming on or off based on state of toggle button - if self.toggleVicon.GetValue(): + # Also switch button bitmap + if self.toggleStates['vicon']: + self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['viconSel']) self.viconListener.start() # TODO: Add while loop to wait for data to come in # If it times out print message # If data comes in, zoom out to ensure all markers seen else: + self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) self.viconListener.stop() # Reinitialize thread to enable restarting it self.viconListener = vicon.ViconMarkerListener(self) @@ -298,13 +360,30 @@ def OnButtonImage(self, event): # wxGlade: regionEditor. self.OnMenuImageImport(None) def OnToggleSquare(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleSquare) + self.toggleStates['square'] = not self.toggleStates['square'] + self.menuRect.Check(self.toggleStates['square']) + if self.toggleStates['square']: + self.toggleSquare.SetBitmapLabel(self.buttonBitmaps['squareSel']) + else: + self.toggleSquare.SetBitmapLabel(self.buttonBitmaps['square']) + self.ResetMapToggles('square') def OnTogglePoly(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.togglePoly) + self.toggleStates['poly'] = not self.toggleStates['poly'] + self.menuPoly.Check(self.toggleStates['poly']) + if self.toggleStates['poly']: + self.togglePoly.SetBitmapLabel(self.buttonBitmaps['polySel']) + else: + self.togglePoly.SetBitmapLabel(self.buttonBitmaps['poly']) + self.ResetMapToggles('poly') def OnToggleDim(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleDim) + self.toggleStates['dim'] = not self.toggleStates['dim'] + if self.toggleStates['dim']: + self.toggleDim.SetBitmapLabel(self.buttonBitmaps['dimSel']) + else: + self.toggleDim.SetBitmapLabel(self.buttonBitmaps['dim']) + self.ResetMapToggles('dim') def OnButtonAutobound(self, event): # wxGlade: regionEditor. self.AddToUndo() @@ -312,11 +391,15 @@ def OnButtonAutobound(self, event): # wxGlade: regionEditor. self.RedrawCanvas() def OnToggleFeedback(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleFeedback) - if self.toggleFeedback.GetValue(): + self.toggleStates['feedback'] = not self.toggleStates['feedback'] + self.ResetMapToggles('feedback') + if self.toggleStates['feedback']: + self.toggleFeedback.SetBitmapLabel( \ + self.buttonBitmaps['feedbackSel']) self.dlgFeedback = FeedbackDialog(self) self.dlgFeedback.ShowModal() elif self.dlgFeedback: + self.toggleFeedback.SetBitmapLabel(self.buttonBitmaps['feedback']) self.dlgFeedback.OnClose(None) def OnButtonCal(self, event): # wxGlade: regionEditor. @@ -437,7 +520,7 @@ def OnMenuSaveAs(self, event): # wxGlade: regionEditor. dialogSave.Destroy() def OnMenuExit(self, event): # wxGlade: regionEditor. - self.OnClose(None) + self.Close() def OnMenuUndo(self, event): # wxGlade: regionEditor. """Revert the most recent undoable change.""" @@ -482,11 +565,9 @@ def OnMenuAutobound(self, event): # wxGlade: regionEditor. self.RedrawCanvas() def OnMenuRect(self, event): # wxGlade: regionEditor. - self.toggleSquare.SetValue(True) self.OnToggleSquare(None) def OnMenuPoly(self, event): # wxGlade: regionEditor. - self.togglePoly.SetValue(True) self.OnTogglePoly(None) def OnMenuAddPoint(self, event): # wxGlade: regionEditor. @@ -498,12 +579,11 @@ def OnMenuRemPoint(self, event): # wxGlade: regionEditor. event.Skip() def OnMenuMarkers(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuMarkers' not implemented" - event.Skip() + self.OnToggleVicon(None) def OnMenuMarkersClear(self, event): # wxGlade: regionEditor. self.markerPoses = [] - self.RedrawCanvas() + self.RedrawVicon() def OnMenuImageImport(self, event): # wxGlade: regionEditor. # Start up open dialog @@ -552,7 +632,7 @@ def OnMouseLeftUp(self, event): self.justDoubleClicked = False # Reset flag # Creating a rectangular region - elif self.toggleSquare.GetValue(): + elif self.toggleStates['square']: # Making the second corner of rectangle if self.polyVerts and pt.Dist(self.polyVerts[0]) > self.tolerance: pt1 = Point(self.polyVerts[0].x, pt.y) @@ -569,7 +649,7 @@ def OnMouseLeftUp(self, event): self.polyVerts.append(pt) # Creating a polygonal region - elif self.togglePoly.GetValue(): + elif self.toggleStates['poly']: # Closing the polygon to create a region if self.polyVerts and len(self.polyVerts) > 2 and \ pt == self.polyVerts[0]: @@ -586,7 +666,7 @@ def OnMouseLeftUp(self, event): dc.DrawLine(x1pix, y1pix, x2pix, y2pix) # Dimensioning region edge or setting background image scale - elif self.toggleDim.GetValue(): + elif self.toggleStates['dim']: # First point on region to be clicked if (not self.polyVerts or isinstance(self.polyVerts, Point)) \ and iReg != -1 and iPt != -1: @@ -738,7 +818,7 @@ def OnMouseLeftUp(self, event): # Clear all region selections else: self.selectedRegions = [] - self.RedrawCanvas() + self.RedrawVicon() def OnMouseLeftDClick(self, event): """Perform action based on current mode of operation.""" @@ -747,15 +827,15 @@ def OnMouseLeftDClick(self, event): self.justDoubleClicked = True # Creating a polygonal region - if self.togglePoly.GetValue() and self.polyVerts and \ + if self.toggleStates['poly'] and self.polyVerts and \ len(self.polyVerts) > 2: self.AddToUndo() self.CreateRegion() # Editing a region - if self.selectedRegions and not self.toggleSquare.GetValue() and \ - not self.togglePoly.GetValue() and \ - not self.toggleDim.GetValue(): + if self.selectedRegions and not self.toggleStates['square'] and \ + not self.toggleStates['poly'] and \ + not self.toggleStates['dim']: # Unset double-click flag since event does not propagate here self.justDoubleClicked = False @@ -772,8 +852,8 @@ def OnMouseRightDown(self, event): def OnMouseRightUp(self, event): # Check if in region creation or dimensioning mode - if self.toggleSquare.GetValue() or self.togglePoly.GetValue() or \ - self.toggleDim.GetValue(): + if self.toggleStates['square'] or self.toggleStates['poly'] or \ + self.toggleStates['dim']: self.ResetMapToggles() # TODO: else: open some kind of right-click menu at right-click point @@ -799,8 +879,8 @@ def OnMouseMotion(self, event): # Set mouse cursor display and position as appropriate # Snapping to something - if self.toggleSquare.GetValue() or self.togglePoly.GetValue() or \ - self.toggleDim.GetValue(): + if self.toggleStates['square'] or self.toggleStates['poly'] or \ + self.toggleStates['dim']: if snapped: self.canvas.SetCursor(wx.StockCursor(wx.CURSOR_BULLSEYE)) else: @@ -819,7 +899,7 @@ def OnMouseMotion(self, event): # Draw lines to or around the mouse if necessary # Drawing rectangle - if self.toggleSquare.GetValue() and self.polyVerts: + if self.toggleStates['square'] and self.polyVerts: self.RedrawVicon() ptPix0 = self.Map2Pix(self.polyVerts[-1]) dc.DrawLine(ptPix0[0], ptPix0[1], ptPix[0], ptPix0[1]) @@ -828,19 +908,24 @@ def OnMouseMotion(self, event): dc.DrawLine(ptPix0[0], ptPix[1], ptPix0[0], ptPix0[1]) # Drawing a polygon - elif self.togglePoly.GetValue() and self.polyVerts: + elif self.toggleStates['poly'] and self.polyVerts: self.RedrawVicon() ptPix0 = self.Map2Pix(self.polyVerts[-1]) dc.DrawLine(ptPix0[0], ptPix0[1], ptPix[0], ptPix[1]) - # Dimensioning an image - elif self.toggleDim.GetValue() and self.polyVerts: + # Dimensioning region or image + elif self.toggleStates['dim'] and self.polyVerts: self.RedrawVicon() - ptPix0 = self.Map2Pix(self.regions[self.polyVerts[0]].pointArray[ \ - self.polyVerts[1]]) + # Dimensioning region + if isinstance(self.polyVerts, tuple): + ptPix0 = self.Map2Pix(self.regions[ \ + self.polyVerts[0]].pointArray[self.polyVerts[1]]) + # Dimensioning background image + else: + ptPix0 = self.Map2Pix(self.polyVerts) dc.DrawLine(ptPix0[0], ptPix0[1], ptPix[0], ptPix[1]) - # Dragging regions(s) or background image + # Dragging region point, or region(s) and/or background image elif event.LeftIsDown() and self.selectedRegions: self.leftClickPt, iReg, iPt, iEd, snapped = \ self.SnapRegions(self.leftClickPt) @@ -892,8 +977,8 @@ def OnKeyDown(self, event): # Backspace/Delete - Deletes selected regions if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ - self.selectedRegions and not self.togglePoly.GetValue() and \ - not self.toggleSquare.GetValue(): + self.selectedRegions and not self.toggleStates['poly'] and \ + not self.toggleStates['square']: self.AddToUndo() self.selectedRegions.sort() while self.selectedRegions: @@ -902,15 +987,15 @@ def OnKeyDown(self, event): # Backspace/Delete - Removes last set point during region creation elif (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ self.polyVerts: - if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): + if self.toggleStates['square'] or self.toggleStates['poly']: self.polyVerts.pop() self.RedrawCanvas() - elif self.toggleDim.GetValue(): + elif self.toggleStates['dim']: self.polyVerts = [] # Escape - Stops region/dimension creation - elif keycode == wx.WXK_ESCAPE and (self.toggleSquare.GetValue() or \ - self.togglePoly.GetValue() or self.toggleDim.GetValue()): + elif keycode == wx.WXK_ESCAPE and (self.toggleStates['square'] or \ + self.toggleStates['poly'] or self.toggleStates['dim']): self.ResetMapToggles() # Ctrl+n - New @@ -949,7 +1034,7 @@ def OnKeyDown(self, event): def OnEnterWindow(self, event): """Set the focus to the canvas to enable zooming.""" self.canvas.SetFocus() - self.RedrawCanvas() + self.RedrawVicon() def OnLeaveWindow(self, event): """Unset the focus from the canvas to disable zooming.""" @@ -1001,6 +1086,8 @@ def RedrawCanvas(self, dc=None): dc.SelectObject(wx.NullBitmap) + # Draw the canvas bitmap with overlayed "temporary" drawings + # such as markers, selection handles, partial regions self.RedrawVicon() def RedrawVicon(self): @@ -1025,7 +1112,7 @@ def RedrawVicon(self): self.DrawSelectionHandle(iReg, dc=dc) # Redraw partial region - if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): + if self.toggleStates['square'] or self.toggleStates['poly']: for iVert in range(len(self.polyVerts) - 1): ptPix1 = self.Map2Pix(self.polyVerts[iVert]) ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) @@ -1383,24 +1470,24 @@ def ResetMapToggles(self, toggleStay=None): """Clear all the other map-feature toggle buttons. Also resets region creation. - toggleStay - Toggle button object to retain state. + toggleStay - String indicating toggle button to retain state. + This must be a valid key to the dictionary toggleStates. """ # Reset region creation and clear temporary lines self.polyVerts = [] - self.RedrawCanvas() + self.RedrawVicon() - # Turn off all toggles and revert specified one - if toggleStay: - state = toggleStay.GetValue() - self.toggleSquare.SetValue(False) - self.togglePoly.SetValue(False) - self.toggleDim.SetValue(False) - if toggleStay: - toggleStay.SetValue(state) + # Turn off all map-building toggles except specified one + if self.toggleStates['square'] and toggleStay != 'square': + self.OnToggleSquare(None) + if self.toggleStates['poly'] and toggleStay != 'poly': + self.OnTogglePoly(None) + if self.toggleStates['dim'] and toggleStay != 'dim': + self.OnToggleDim(None) def CreateRegion(self): """Instantiate and create a region, perform cleanup actions. - Use polyVerts and polyAdjEdges to make the region and find transitions. + Use polyVerts to make the region and find transitions. """ # Create region rName = 'r' + str(len(self.regions)) @@ -1416,7 +1503,6 @@ def CreateRegion(self): # Cleanup and draw self.polyVerts = [] - self.polyAdjEdges = [] self.RedrawCanvas() def DeleteRegion(self, iReg): @@ -1669,6 +1755,7 @@ def AddToUndo(self): while len(self.undoActions) > self.unredoBufLen: self.undoActions.popleft() self.redoActions.clear() + self.isSaved = False # TODO: enable self.menuUndo def SnapPoint(self, pt): @@ -1949,7 +2036,6 @@ def __init__(self, *args, **kwds): kwds["style"] = wx.DEFAULT_DIALOG_STYLE wx.Dialog.__init__(self, *args, **kwds) self.buttonPrev = wx.Button(self, -1, "Previous") - self.buttonPick = wx.Button(self, -1, "Select") self.buttonNext = wx.Button(self, -1, "Next") self.chkbxIterate = wx.CheckBox(self, -1, "Automatically iterate points when marker is in position") self.radioboxOption = wx.RadioBox(self, -1, "Feedback Method", choices=["Speech", "Beeping"], majorDimension=1, style=wx.RA_SPECIFY_ROWS) @@ -1959,7 +2045,6 @@ def __init__(self, *args, **kwds): self.__do_layout() self.Bind(wx.EVT_BUTTON, self.OnButtonPrev, self.buttonPrev) - self.Bind(wx.EVT_BUTTON, self.OnButtonPick, self.buttonPick) self.Bind(wx.EVT_BUTTON, self.OnButtonNext, self.buttonNext) # end wxGlade @@ -1987,7 +2072,6 @@ def __set_properties(self): # begin wxGlade: FeedbackDialog.__set_properties self.SetTitle("Marker Placement") self.buttonPrev.SetMinSize((50, 50)) - self.buttonPick.SetMinSize((50, 50)) self.buttonNext.SetMinSize((50, 50)) self.chkbxIterate.SetValue(1) self.radioboxOption.SetSelection(0) @@ -1999,7 +2083,6 @@ def __do_layout(self): sizerOptions = wx.BoxSizer(wx.VERTICAL) sizerButtons = wx.BoxSizer(wx.HORIZONTAL) sizerButtons.Add(self.buttonPrev, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerButtons.Add(self.buttonPick, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) sizerButtons.Add(self.buttonNext, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) sizerOuter.Add(sizerButtons, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) sizerOptions.Add(self.chkbxIterate, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) @@ -2014,7 +2097,8 @@ def __do_layout(self): def OnClose(self, event): """Perform cleanup tasks and close the feedback dialog.""" self.feedbackThread.stop() - self.parent.toggleFeedback.SetValue(False) + if self.parent.toggleStates['feedback']: + self.parent.OnToggleFeedback(None) # TODO: Add wait/notify to make sure thread ended self.Destroy() @@ -2128,13 +2212,13 @@ def __init__(self, feedbackDialog, regEditor): # Keep track of Vicon settings before opening this hadMarkers = len(self.regEd.markerPoses) > 0 - wasStreaming = self.regEd.toggleVicon.GetValue() + wasStreaming = self.regEd.toggleStates['vicon'] wasTracking = self.regEd.viconListener.trackMarkers self.oldSettings = (hadMarkers, wasStreaming, wasTracking) # Start Vicon streaming if necessary - if not self.regEd.toggleVicon.GetValue(): - self.regEd.toggleVicon.SetValue(True) + if not self.regEd.toggleStates['vicon']: + self.regEd.OnToggleVicon(None) # TODO: Also check menu item self.regEd.viconListener.start() @@ -2258,7 +2342,7 @@ def stop(self): hadMarkers, wasStreaming, wasTracking = self.oldSettings self.regEd.viconListener.trackMarkers = wasTracking if not wasStreaming: - self.regEd.toggleVicon.SetValue(False) + self.regEd.OnToggleVicon(None) # TODO: Change checkbox too self.regEd.viconListener.stop() if not hadMarkers: From ce644ee2b10dd931151074c9ad62378d6ce238d3 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Mon, 7 May 2012 14:11:08 -0400 Subject: [PATCH 18/26] Fixed absolute file paths for getting images for buttons. --- src/lib/calibrate.py | 79 ++++++++++++++++++++++++++++++-------------- src/regionEditor.py | 12 +++++-- 2 files changed, 63 insertions(+), 28 deletions(-) diff --git a/src/lib/calibrate.py b/src/lib/calibrate.py index 6a786451..c66380d7 100755 --- a/src/lib/calibrate.py +++ b/src/lib/calibrate.py @@ -202,6 +202,37 @@ def __init__(self, *args, **kwds): # Add close event handler to cleanup before closing self.Bind(wx.EVT_CLOSE, self.OnClose) + # Keep track of which buttons are toggled + # Since we are using bitmap buttons and they can't toggle + # Also load all buttons' bitmaps and set appropriate ones + self.toggleStates = {'vicon': False, + 'addPoint': False, + 'deletePoint': False, + 'dimen': False} + self.buttonBitmaps = {'vicon': wx.Bitmap(os.path.join(os.getcwd(), \ + "..\\images\\streamMarkersIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'viconSel': wx.Bitmap(os.path.join(os.getcwd(), \ + "..\\images\\streamMarkersIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'image': wx.Bitmap(os.path.join(os.getcwd(), \ + "..\\images\\importImageIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'addPoint': wx.Bitmap(os.path.join(os.getcwd(), \ + "..\\images\\addCalibPointIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'addPointSel': wx.Bitmap(os.path.join(os.getcwd(), \ + "..\\images\\addCalibPointIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'deletePoint': wx.Bitmap(os.path.join(os.getcwd(), \ + "..\\images\\delCalibPointIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'deletePointSel': wx.Bitmap(os.path.join(os.getcwd(), \ + "..\\images\\delCalibPointIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'dimen': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\dimensionIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'dimSel': wx.Bitmap(os.path.join(os.getcwd(), \ + "images\\dimensionIconSel.bmp"), wx.BITMAP_TYPE_ANY)} + self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) + self.buttonImage.SetBitmapLabel(self.buttonBitmaps['image']) + self.toggleAddPoint.SetBitmapLabel(self.buttonBitmaps['addPoint']) + self.toggleDeletePoint.SetBitmapLabel(self.buttonBitmaps['deletePoint']) + self.toggleDimen.SetBitmapLabel(self.buttonBitmaps['dimen']) + # Determine mapping of the map panel to the field # Avoid difficulties by having same scale for x and y mapLen = self.map.GetSize() # Initial size of map panel (pixels) @@ -407,20 +438,11 @@ def OnMenuClearAll(self, event): # wxGlade: CalibrationFrame. event.Skip() def OnMenuShowMarkers(self, event): # wxGlade: CalibrationFrame. - # Switch Vicon streaming on or off based on state of menu checkbox - if self.menuShowMarkers.IsChecked(): - self.toggleVicon.SetValue(True) - self.viconListener.start() - else: - self.viconListener.stop() - # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) - self.toggleVicon.SetValue(False) + self.OnToggleVicon(None) def OnMenuClearMarkers(self, event): # wxGlade: CalibrationFrame. - if self.menuShowMarkers.IsChecked(): - self.toggleVicon.SetValue(False) - self.menuShowMarkers.Check(False) + if self.toggleStates['vicon']: + self.OnToggleVicon(None) self.viconListener.stop() self.viconListener = ViconMarkerListener(self) time.sleep(0.1) @@ -443,8 +465,7 @@ def OnMenuLoadImage(self, event): # wxGlade: CalibrationFrame. self.LoadBackgroundImage(filePath) def OnMenuDimen(self, event): # wxGlade: CalibrationFrame. - print "OnMenuDimen" - event.Skip() + self.OnToggleDimen(None) def OnMenuClearImage(self, event): # wxGlade: CalibrationFrame. self.backgroundImage = None @@ -461,25 +482,27 @@ def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. event.Skip() def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. + # Change control values + self.toggleStates['vicon'] = not self.toggleStates['vicon'] + self.menuMarkers.Check(self.toggleStates['vicon']) + # Switch Vicon streaming on or off based on state of toggle button - if self.toggleVicon.GetValue(): - self.menuShowMarkers.Check(True) + if self.toggleStates['vicon']: self.viconListener.start() else: self.viconListener.stop() # Reinitialize thread to enable restarting it self.viconListener = ViconMarkerListener(self) - self.menuShowMarkers.Check(False) def OnButtonImage(self, event): # wxGlade: CalibrationFrame. self.OnMenuLoadImage(None) def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. - self.ResetToggles(toggleKeep=self.toggleAddPoint) + self.ResetToggles(toggleKeep='addPoint') # TODO: When menu items are added for add point, flip on here def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. - self.ResetToggles(toggleKeep=self.toggleDeletePoint) + self.ResetToggles(toggleKeep='deletePoint') # TODO: When menu items are added for delete point, flip on here def OnButtonEnterPoint(self, event): # wxGlade: CalibrationFrame. @@ -487,7 +510,7 @@ def OnButtonEnterPoint(self, event): # wxGlade: CalibrationFrame. - self.ResetToggles(toggleKeep=self.toggleDimen) + self.ResetToggles(toggleKeep='dimen') def OnButtonSave(self, event): # wxGlade: CalibrationFrame. self.OnMenuSave(None) @@ -903,11 +926,17 @@ def ResetToggles(self, toggleKeep=None): toggleKeep - Toggle button to retain the value of """ # Reset toggles - valueKeep = toggleKeep.GetValue() - self.toggleAddPoint.SetValue(False) - self.toggleDeletePoint.SetValue(False) - self.toggleDimen.SetValue(False) - toggleKeep.SetValue(valueKeep) + if self.toggleStates['addPoint'] and toggleStay != 'addPoint': + self.toggleStates['addPoint'] = False + self.toggleAddPoint.SetBitmapLabel(self.buttonBitmaps['addPoint']) + if self.toggleStates['deletePoint'] and toggleStay != 'deletePoint': + self.toggleStates['deletePoint'] = False + self.toggleDeletePoint.SetBitmapLabel( \ + self.buttonBitmaps['deletePoint']) + if self.toggleStates['dimen'] and toggleStay != 'dimen': + self.toggleStates['dimen'] = False + self.menuShowMarkers.Check(False) + self.toggleDim.SetBitmapLabel(self.buttonBitmaps['dimen']) # Reset partial calibration point creation self.newCalibPt = [None, None] diff --git a/src/regionEditor.py b/src/regionEditor.py index 44bbb63f..f9009b8b 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -1479,11 +1479,17 @@ def ResetMapToggles(self, toggleStay=None): # Turn off all map-building toggles except specified one if self.toggleStates['square'] and toggleStay != 'square': - self.OnToggleSquare(None) + self.toggleStates['square'] = False + self.menuRect.Check(False) + self.toggleSquare.SetBitmapLabel(self.buttonBitmaps['square']) if self.toggleStates['poly'] and toggleStay != 'poly': - self.OnTogglePoly(None) + self.toggleStates['poly'] = False + self.menuPoly.Check(False) + self.togglePoly.SetBitmapLabel(self.buttonBitmaps['poly']) if self.toggleStates['dim'] and toggleStay != 'dim': - self.OnToggleDim(None) + self.toggleStates['dim'] = False + self.menuMarkers.Check(False) + self.toggleDim.SetBitmapLabel(self.buttonBitmaps['dim']) def CreateRegion(self): """Instantiate and create a region, perform cleanup actions. From 54ff16bc1a8c4819682aa876ef8192d532373dd0 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Mon, 7 May 2012 14:13:59 -0400 Subject: [PATCH 19/26] Forgot a couple images on last two commits. --- src/images/dimensionIcon.bmp | Bin 0 -> 3126 bytes src/images/dimensionIconSel.bmp | Bin 0 -> 3126 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/images/dimensionIcon.bmp create mode 100644 src/images/dimensionIconSel.bmp diff --git a/src/images/dimensionIcon.bmp b/src/images/dimensionIcon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a4955da9931bd226ecc721ea3259bea6aafa7c3f GIT binary patch literal 3126 zcmchZ%?-jZ428>`0XQL!Owa+ivlF8s77I@pS(by-`X^X&>Kfy?dvTkx=i@-O*hSawi*Phs&TCnKTw5-aPl#7;i6ViNoLF$otxAmQbE zB?5exM2tU{;4cBMh542Q!%-ypy@Z69@COpuLS*Jc1gy$7Ij7wjeAY#g=PUCPp68F@ fwS48A9+UH7|3Be*{}z_}(m#Gd%Y*rR(iz1YgtUu< literal 0 HcmV?d00001 diff --git a/src/images/dimensionIconSel.bmp b/src/images/dimensionIconSel.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ae57c52d57d307d943fb81d2626af2b5247f2588 GIT binary patch literal 3126 zcmchZ!41MN3`NVG0XQL!Owa+iGgDSWECyc~S(by-<~zZXBiE_k|8aWg?YTX>$| fhL7bt=kl1GkNW=!&-;(C+PD7k3pyk8jPr^&_7IBG literal 0 HcmV?d00001 From 9758e70e2cc4bf2f272601c1972ef1977aa5a29f Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Mon, 7 May 2012 14:18:32 -0400 Subject: [PATCH 20/26] Fixed error with saving "none-type" background image. --- src/regionEditor.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/regionEditor.py b/src/regionEditor.py index f9009b8b..2543cfa4 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -494,12 +494,14 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. obstacleRegions = [r.name for r in self.regions if r.isObstacle] - backgroundData = [self.backgroundFile] + self.backgroundPosition - - data = {"Background": backgroundData, - "Regions": regionData, + data = {"Regions": regionData, "Transitions": transitionData, "Obstacles": obstacleRegions} + + if self.backgroundFile: + backgroundData = [self.backgroundFile] + \ + self.backgroundPosition + data['Background'] = backgroundData fileMethods.writeToFile(self.fileName, data, comments) self.isSaved = True From 607f91469eda3d6fe0b4ecc022b975d46e4ba484 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Mon, 7 May 2012 16:55:36 -0400 Subject: [PATCH 21/26] Fixed issues with files being read into specEditor with negative positions of regions. --- src/lib/calibrate.py | 86 ++++++++++++++++++++++++++++++++------------ src/lib/regions.py | 10 ++++-- src/regionEditor.py | 55 ++++++++++++++++++---------- 3 files changed, 107 insertions(+), 44 deletions(-) diff --git a/src/lib/calibrate.py b/src/lib/calibrate.py index c66380d7..75b45a42 100755 --- a/src/lib/calibrate.py +++ b/src/lib/calibrate.py @@ -205,27 +205,30 @@ def __init__(self, *args, **kwds): # Keep track of which buttons are toggled # Since we are using bitmap buttons and they can't toggle # Also load all buttons' bitmaps and set appropriate ones + ltlmopRoot = self.GetLtlmopRoot(sys.argv[0]) + if not ltlmopRoot: + print "Cannot find LTLMoP root directory. Exiting..." self.toggleStates = {'vicon': False, 'addPoint': False, 'deletePoint': False, 'dimen': False} - self.buttonBitmaps = {'vicon': wx.Bitmap(os.path.join(os.getcwd(), \ - "..\\images\\streamMarkersIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'viconSel': wx.Bitmap(os.path.join(os.getcwd(), \ - "..\\images\\streamMarkersIconSel.bmp"), wx.BITMAP_TYPE_ANY), - 'image': wx.Bitmap(os.path.join(os.getcwd(), \ - "..\\images\\importImageIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'addPoint': wx.Bitmap(os.path.join(os.getcwd(), \ - "..\\images\\addCalibPointIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'addPointSel': wx.Bitmap(os.path.join(os.getcwd(), \ - "..\\images\\addCalibPointIconSel.bmp"), wx.BITMAP_TYPE_ANY), - 'deletePoint': wx.Bitmap(os.path.join(os.getcwd(), \ - "..\\images\\delCalibPointIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'deletePointSel': wx.Bitmap(os.path.join(os.getcwd(), \ - "..\\images\\delCalibPointIconSel.bmp"), wx.BITMAP_TYPE_ANY), - 'dimen': wx.Bitmap(os.path.join(os.getcwd(), \ + self.buttonBitmaps = {'vicon': wx.Bitmap(os.path.join(ltlmopRoot, \ + "images\\streamMarkersIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'viconSel': wx.Bitmap(os.path.join(ltlmopRoot, \ + "images\\streamMarkersIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'image': wx.Bitmap(os.path.join(ltlmopRoot, \ + "images\\importImageIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'addPoint': wx.Bitmap(os.path.join(ltlmopRoot, \ + "images\\addCalibPointIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'addPointSel': wx.Bitmap(os.path.join(ltlmopRoot, \ + "images\\addCalibPointIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'deletePoint': wx.Bitmap(os.path.join(ltlmopRoot, \ + "images\\delCalibPointIcon.bmp"), wx.BITMAP_TYPE_ANY), + 'deletePointSel': wx.Bitmap(os.path.join(ltlmopRoot, \ + "images\\delCalibPointIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'dimen': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\dimensionIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'dimSel': wx.Bitmap(os.path.join(os.getcwd(), \ + 'dimSel': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\dimensionIconSel.bmp"), wx.BITMAP_TYPE_ANY)} self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) self.buttonImage.SetBitmapLabel(self.buttonBitmaps['image']) @@ -488,8 +491,10 @@ def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. # Switch Vicon streaming on or off based on state of toggle button if self.toggleStates['vicon']: + self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) self.viconListener.start() else: + self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) self.viconListener.stop() # Reinitialize thread to enable restarting it self.viconListener = ViconMarkerListener(self) @@ -498,10 +503,23 @@ def OnButtonImage(self, event): # wxGlade: CalibrationFrame. self.OnMenuLoadImage(None) def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. + self.toggleStates['addPoint'] = not self.toggleStates['addPoint'] + if self.toggleStates['addPoint']: + self.toggleAddPoint.SetBitmapLabel( \ + self.buttonBitmaps['addPointSel']) + else: + self.toggleAddPoint.SetBitmapLabel(self.buttonBitmaps['addPoint']) self.ResetToggles(toggleKeep='addPoint') # TODO: When menu items are added for add point, flip on here def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. + self.toggleStates['deletePoint'] = not self.toggleStates['deletePoint'] + if self.toggleStates['deletePoint']: + self.toggleDeletePoint.SetBitmapLabel( \ + self.buttonBitmaps['deletePointSel']) + else: + self.toggleDeletePoint.SetBitmapLabel( \ + self.buttonBitmaps['deletePoint']) self.ResetToggles(toggleKeep='deletePoint') # TODO: When menu items are added for delete point, flip on here @@ -510,6 +528,12 @@ def OnButtonEnterPoint(self, event): # wxGlade: CalibrationFrame. + self.toggleStates['dimen'] = not self.toggleStates['dimen'] + self.menuDimen.Check(self.toggleStates['dimen']) + if self.toggleStates['dimen']: + self.toggleDimen.SetBitmapLabel(self.buttonBitmaps['dimen']) + else: + self.toggleDimen.SetBitmapLabel(self.buttonBitmaps['dimen']) self.ResetToggles(toggleKeep='dimen') def OnButtonSave(self, event): # wxGlade: CalibrationFrame. @@ -527,7 +551,7 @@ def OnMapMouseLeftUp(self, event): self.SnapPointMap(self.MapPix2M(ptPix)) # Creating a calibration point - if self.toggleAddPoint.GetValue() and iCalibPt == -1: + if self.toggleStates['addPoint'] and iCalibPt == -1: # First point clicked for adding new point if not self.newCalibPt[1]: self.newCalibPt[0] = pt @@ -540,7 +564,7 @@ def OnMapMouseLeftUp(self, event): self.Redraw() # Removing a calibration point - elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: + elif self.toggleStates['deletePoint'] and iCalibPt != -1: self.calibPoints.pop(iCalibPt) self.Redraw() @@ -588,7 +612,7 @@ def OnRefMouseLeftUp(self, event): self.SnapPointRef(self.RefPix2M(ptPix)) # Creating a calibration point - if self.toggleAddPoint.GetValue() and iCalibPt == -1: + if self.toggleStates['addPoint'] and iCalibPt == -1: # First point clicked for adding new point if not self.newCalibPt[0]: self.newCalibPt[1] = pt @@ -601,12 +625,12 @@ def OnRefMouseLeftUp(self, event): self.Redraw() # Removing a calibration point - elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: + elif self.toggleStates['deletePoint'] and iCalibPt != -1: self.calibPoints.pop(iCalibPt) self.Redraw() # Setting scale on background image - elif self.toggleDimen.GetValue() and self.InsideBackgroundImage(pt): + elif self.toggleStates['dimen'] and self.InsideBackgroundImage(pt): # First point on background image if not self.dimenPoint: self.dimenPoint = pt @@ -651,8 +675,9 @@ def OnRefMouseLeftUp(self, event): self.RedrawRef() # Check if selecting or deselecting the background image - elif not self.toggleAddPoint.GetValue() and \ - not self.toggleDeletePoint.GetValue(): + elif not self.toggleStates['addPoint'] and \ + not self.toggleStates['deletePoint'] and \ + not self.toggleStates['dimen']: isInImage = self.InsideBackgroundImage(pt) # Selecting background image if (not event.CmdDown() or not self.backgroundIsSelected) and \ @@ -1223,6 +1248,21 @@ def ProjPtOnLine(self, pt, p0, p1): v = pt - p0 # Vector to point to project u = (v.Dot(s) / s.Dot(s)) * s # Projected vector return p0 + u # Map back to global coordinates + + def GetLtlmopRoot(self, thisFile): + """Return a string of the absolute path to the project root directory. + + thisFile - String with the path to this file, should be found using + sys.argv[0] + """ + p = os.path.abspath(thisFile) + t = "" + while t != "src": + (p, t) = os.path.split(p) + if p == "": + return None + + return os.path.join(p, "src") # end of class CalibrationFrame diff --git a/src/lib/regions.py b/src/lib/regions.py index e608017d..d227f983 100755 --- a/src/lib/regions.py +++ b/src/lib/regions.py @@ -319,7 +319,9 @@ def recalcAdjacency(self): def getBoundingBox(self): if self.regions == []: return None - + + p = self.regions[0] + leftMargin = min([pt.x for region in self.regions for pt in region.getPoints()]) topMargin = min([pt.y for region in self.regions for pt in region.getPoints()]) rightExtent = max([pt.x for region in self.regions for pt in region.getPoints()]) - leftMargin @@ -455,8 +457,8 @@ def readFile(self, filename): for i in range(2, len(transData), 2): ip1 = int(transData[i]) ip2 = int(transData[i % len(self.regions[region1].pointArray)]) - p1 = self.regions[region1].pointArray(ip1) - p2 = self.regions[region1].pointArray(ip2) + p1 = self.regions[region1].pointArray[ip1] + p2 = self.regions[region1].pointArray[ip2] faces.append(tuple(sorted((p1, p2)))) # Don't assume bidirectional transitions @@ -531,6 +533,8 @@ def convertRegionDataNewToOld(self, rd, offsets): rdnew['points'] = points rdnew['holeList'] = holeList xOff, yOff = offsets + xOff = int(xOff * 1000) + yOff = int(yOff * 1000) rdnew['position'] = (leftMargin + xOff, topMargin + yOff) rdnew['size'] = (rightExtent, downExtent) diff --git a/src/regionEditor.py b/src/regionEditor.py index 2543cfa4..ff588892 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -152,36 +152,39 @@ def __init__(self, *args, **kwds): # Keep track of which buttons are toggled # Since we are using bitmap buttons and they can't toggle # Also load all buttons' bitmaps and set appropriate ones + ltlmopRoot = self.GetLtlmopRoot(sys.argv[0]) + if not ltlmopRoot: + print "Cannot find LTLMoP root directory. Exiting..." self.toggleStates = {'vicon': False, 'square': False, 'poly': False, 'dim': False, 'feedback': False} - self.buttonBitmaps = {'vicon': wx.Bitmap(os.path.join(os.getcwd(), \ + self.buttonBitmaps = {'vicon': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\streamMarkersIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'viconSel': wx.Bitmap(os.path.join(os.getcwd(), \ + 'viconSel': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\streamMarkersIconSel.bmp"), wx.BITMAP_TYPE_ANY), - 'image': wx.Bitmap(os.path.join(os.getcwd(), \ + 'image': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\importImageIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'square': wx.Bitmap(os.path.join(os.getcwd(), \ + 'square': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\rectIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'squareSel': wx.Bitmap(os.path.join(os.getcwd(), \ + 'squareSel': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\rectIconSel.bmp"), wx.BITMAP_TYPE_ANY), - 'poly': wx.Bitmap(os.path.join(os.getcwd(), \ + 'poly': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\polyIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'polySel': wx.Bitmap(os.path.join(os.getcwd(), \ + 'polySel': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\polyIconSel.bmp"), wx.BITMAP_TYPE_ANY), - 'dim': wx.Bitmap(os.path.join(os.getcwd(), \ + 'dim': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\dimensionIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'dimSel': wx.Bitmap(os.path.join(os.getcwd(), \ + 'dimSel': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\dimensionIconSel.bmp"), wx.BITMAP_TYPE_ANY), - 'autobound': wx.Bitmap(os.path.join(os.getcwd(), \ + 'autobound': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\autoboundaryIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'feedback': wx.Bitmap(os.path.join(os.getcwd(), \ + 'feedback': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\audioFeedbackIcon.bmp"), wx.BITMAP_TYPE_ANY), - 'feedbackSel': wx.Bitmap(os.path.join(os.getcwd(), \ + 'feedbackSel': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\audioFeedbackIconSel.bmp"), wx.BITMAP_TYPE_ANY), - 'cal': wx.Bitmap(os.path.join(os.getcwd(), \ + 'cal': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\calibPointIcon.bmp"), wx.BITMAP_TYPE_ANY)} self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) self.buttonImage.SetBitmapLabel(self.buttonBitmaps['image']) @@ -267,7 +270,7 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_CLOSE, self.OnClose) # Display the GUI window and set up the map canvas - if self.fileName: + if self.fileName and os.path.exists(self.fileName): self.ReadFile(self.fileName) self.Show() self.RedrawCanvas() @@ -490,6 +493,7 @@ def OnMenuSave(self, event): # wxGlade: regionEditor. for face in faces: singleTrans += "(" + str(face[0]) + "\t" + \ str(face[1]) + ")" + singleTrans += "]" transitionData.append(singleTrans) obstacleRegions = [r.name for r in self.regions if r.isObstacle] @@ -1452,10 +1456,10 @@ def ReadFile(self, filePath): for tData in data["Transitions"]: tData = re.sub('[\[\]\(\)]', '', tData) tData = tData.split(); # Separate on any whitespace - iReg1 = self.indexOfRegionWithName(tData[0]) - iReg2 = self.indexOfRegionWithName(tData[1]) + iReg1 = self.IndexOfRegionWithName(tData[0]) + iReg2 = self.IndexOfRegionWithName(tData[1]) # All transitions between regions - for i in range(2, len(transData), 2): + for i in range(2, len(tData), 2): iFaceReg1 = int(tData[i]) iFaceReg2 = int(tData[i+1]) self.adjacent[iReg1][iReg2].append((iFaceReg1, iFaceReg2)) @@ -2035,7 +2039,22 @@ def ProjPtOnLine(self, pt, p0, p1): v = pt - p0 # Vector to point to project u = (v.Dot(s) / s.Dot(s)) * s # Projected vector return p0 + u # Map back to global coordinates -# end of class RegionEditor + + def GetLtlmopRoot(self, thisFile): + """Return a string of the absolute path to the project root directory. + + thisFile - String with the path to this file, should be found using + sys.argv[0] + """ + p = os.path.abspath(thisFile) + t = "" + while t != "src": + (p, t) = os.path.split(p) + if p == "": + return None + + return os.path.join(p, "src") + # end of class RegionEditor class FeedbackDialog(wx.Dialog): From 9b5fae530cb7f6ce8162f2229c4241cd2ab4a1dd Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Mon, 7 May 2012 17:15:15 -0400 Subject: [PATCH 22/26] Fixed bug with list indeces out of range when dealing with boundary. --- src/regionEditor.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/regionEditor.py b/src/regionEditor.py index ff588892..67328bd4 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -1594,9 +1594,18 @@ def EditRegion(self, iReg): regEdDia.textName.GetValue() not in \ [r.name for r in self.regions]: self.AddToUndo() + oldName = reg.name reg.name = regEdDia.textName.GetValue() reg.color = regEdDia.colorPicker.GetColour() reg.isObstacle = regEdDia.chkbxObst.GetValue() + # Boundary region should have no adjacencies + if reg.name.lower() == "boundary": + for iOthReg in range(len(self.regions)): + self.adjacent[iReg][iOthReg] = [] + self.adjacent[iOthReg][iReg] = [] + # Recheck adjacencies if changed back from boundary + elif oldName.lower() == "boundary": + self.RecalcAdjacency(iReg) regEdDia.Destroy() done = True # Non-unique name - needs to re-edit @@ -1627,7 +1636,7 @@ def RecalcAdjacency(self, iReg, iRegStart=0): region. iReg - Index of region of interest - iRegStart - Specifies to check reg against self.regions[iRegStart:] + iRegStart - Specifies to check iReg against self.regions[iRegStart:] """ # Reset adjacency related to this region for iOthReg in range(len(self.regions)): @@ -1673,8 +1682,9 @@ def RecalcAdjacency(self, iReg, iRegStart=0): snapResults = self.SnapRegions(pt, checkAll=True) # Process the "nearness" information for othPt, iOthReg, iOthPt, iOthEd in snapResults: - # Ignore same region - if iOthReg == iReg: + # Ignore same region and boundary + if iOthReg == iReg or \ + self.regions[iOthReg].name.lower() == "boundary": continue # Change region point location @@ -1727,10 +1737,17 @@ def Autoboundary(self): """Automatically create region representing the boundary of the map.""" if self.regions: minx, maxx, miny, maxy = self.GetMapBoundaries() + # Create region points = [Point(minx, maxy), Point(maxx, maxy), \ Point(maxx, miny), Point(minx, miny)] self.regions.append(Region(points, 'boundary')) + + # Add row and column to list of lists of lists that is adjacency + # even though boundary won't use it + self.adjacent.append([[] for col in xrange(len(self.adjacent))]) + for row in self.adjacent: + row.append([]) else: print "No regions defined, so no boundary created." From eb90df082b94a04c599601a98e9618057f097c6c Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Tue, 8 May 2012 01:40:27 -0400 Subject: [PATCH 23/26] Added add/remove points functionality to regionEditor. Fixed a couple other little bugs. --- .../NewRegionEditor/CalibrationFrame.wxg | 5 +- src/lib/calibrate.py | 17 ++- src/regionEditor.py | 137 +++++++++++++----- 3 files changed, 112 insertions(+), 47 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg b/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg index 5cba2d3a..cbbf5cf6 100644 --- a/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg +++ b/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg @@ -1,5 +1,5 @@ - + @@ -176,6 +176,9 @@ Save and return + + OnButtonSave + 32, 32 diff --git a/src/lib/calibrate.py b/src/lib/calibrate.py index 75b45a42..c41eb298 100755 --- a/src/lib/calibrate.py +++ b/src/lib/calibrate.py @@ -153,6 +153,7 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_BUTTON, self.OnToggleAddPoint, self.toggleAddPoint) self.Bind(wx.EVT_BUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) self.Bind(wx.EVT_BUTTON, self.OnToggleDimen, self.toggleDimen) + self.Bind(wx.EVT_BUTTON, self.OnButtonSave, self.buttonSave) self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) # end wxGlade @@ -167,6 +168,7 @@ def __init__(self, *args, **kwds): else: print "No regions defined. Exiting calibration." self.Destroy() + return elif len(args) > 0 and args[0].__class__.__name__ == 'CalibrateHelper': self.parent = args[0] self.isCalibHelper = True @@ -176,11 +178,11 @@ def __init__(self, *args, **kwds): else: print "No regions defined. Exiting calibration." self.Destroy() + return else: print "No or invalid parent object passed in. Exiting calibration." - self.parent = None - self.regions = [] self.Destroy() + return # Bind mouse events self.map.Bind(wx.EVT_LEFT_DOWN, self.OnMapMouseLeftDown, self.map) @@ -229,12 +231,15 @@ def __init__(self, *args, **kwds): 'dimen': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\dimensionIcon.bmp"), wx.BITMAP_TYPE_ANY), 'dimSel': wx.Bitmap(os.path.join(ltlmopRoot, \ - "images\\dimensionIconSel.bmp"), wx.BITMAP_TYPE_ANY)} + "images\\dimensionIconSel.bmp"), wx.BITMAP_TYPE_ANY), + 'save': wx.Bitmap(os.path.join(ltlmopRoot, \ + "images\\saveIcon.bmp"), wx.BITMAP_TYPE_ANY)} self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) self.buttonImage.SetBitmapLabel(self.buttonBitmaps['image']) self.toggleAddPoint.SetBitmapLabel(self.buttonBitmaps['addPoint']) self.toggleDeletePoint.SetBitmapLabel(self.buttonBitmaps['deletePoint']) self.toggleDimen.SetBitmapLabel(self.buttonBitmaps['dimen']) + self.buttonSave.SetBitmapLabel(self.buttonBitmaps['save']) # Determine mapping of the map panel to the field # Avoid difficulties by having same scale for x and y @@ -951,14 +956,14 @@ def ResetToggles(self, toggleKeep=None): toggleKeep - Toggle button to retain the value of """ # Reset toggles - if self.toggleStates['addPoint'] and toggleStay != 'addPoint': + if self.toggleStates['addPoint'] and toggleKeep != 'addPoint': self.toggleStates['addPoint'] = False self.toggleAddPoint.SetBitmapLabel(self.buttonBitmaps['addPoint']) - if self.toggleStates['deletePoint'] and toggleStay != 'deletePoint': + if self.toggleStates['deletePoint'] and toggleKeep != 'deletePoint': self.toggleStates['deletePoint'] = False self.toggleDeletePoint.SetBitmapLabel( \ self.buttonBitmaps['deletePoint']) - if self.toggleStates['dimen'] and toggleStay != 'dimen': + if self.toggleStates['dimen'] and toggleKeep != 'dimen': self.toggleStates['dimen'] = False self.menuShowMarkers.Check(False) self.toggleDim.SetBitmapLabel(self.buttonBitmaps['dimen']) diff --git a/src/regionEditor.py b/src/regionEditor.py index 67328bd4..349767bc 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -159,7 +159,9 @@ def __init__(self, *args, **kwds): 'square': False, 'poly': False, 'dim': False, - 'feedback': False} + 'feedback': False, + 'addPoint': False, + 'remPoint': False} self.buttonBitmaps = {'vicon': wx.Bitmap(os.path.join(ltlmopRoot, \ "images\\streamMarkersIcon.bmp"), wx.BITMAP_TYPE_ANY), 'viconSel': wx.Bitmap(os.path.join(ltlmopRoot, \ @@ -401,9 +403,10 @@ def OnToggleFeedback(self, event): # wxGlade: regionEditor. self.buttonBitmaps['feedbackSel']) self.dlgFeedback = FeedbackDialog(self) self.dlgFeedback.ShowModal() - elif self.dlgFeedback: + else: self.toggleFeedback.SetBitmapLabel(self.buttonBitmaps['feedback']) - self.dlgFeedback.OnClose(None) + if self.dlgFeedback: + self.dlgFeedback.OnClose(None) def OnButtonCal(self, event): # wxGlade: regionEditor. self.ResetMapToggles() @@ -577,12 +580,12 @@ def OnMenuPoly(self, event): # wxGlade: regionEditor. self.OnTogglePoly(None) def OnMenuAddPoint(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuAddPoint' not implemented" - event.Skip() + self.toggleStates['addPoint'] = not self.toggleStates['addPoint'] + self.ResetMapToggles('addPoint') def OnMenuRemPoint(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuRemPoint' not implemented" - event.Skip() + self.toggleStates['remPoint'] = not self.toggleStates['remPoint'] + self.ResetMapToggles('remPoint') def OnMenuMarkers(self, event): # wxGlade: regionEditor. self.OnToggleVicon(None) @@ -754,6 +757,18 @@ def OnMouseLeftUp(self, event): self.RedrawCanvas() self.polyVerts = [] + # Adding a point to a region + elif self.toggleStates['addPoint']: + # Check that valid region edge is selected + if iReg != -1 and iEd != -1: + self.AddPointToRegion(pt, iReg, iEd) + + # Removing a point from a region + elif self.toggleStates['remPoint']: + # Check that valid region point is selected + if iReg != -1 and iPt != -1: + self.DeletePointFromRegion(iReg, iPt) + # Dragging region(s) or image or vertices or panning map view elif pt.Dist(self.leftClickPt) > self.tolerance: self.leftClickPt, iReg, iPt, iEd, snapped = \ @@ -841,7 +856,9 @@ def OnMouseLeftDClick(self, event): # Editing a region if self.selectedRegions and not self.toggleStates['square'] and \ not self.toggleStates['poly'] and \ - not self.toggleStates['dim']: + not self.toggleStates['dim'] and \ + not self.toggleStates['addPoint'] and \ + not self.toggleStates['remPoint']: # Unset double-click flag since event does not propagate here self.justDoubleClicked = False @@ -859,7 +876,8 @@ def OnMouseRightDown(self, event): def OnMouseRightUp(self, event): # Check if in region creation or dimensioning mode if self.toggleStates['square'] or self.toggleStates['poly'] or \ - self.toggleStates['dim']: + self.toggleStates['dim'] or self.toggleStates['addPoint'] or \ + self.toggleStates['remPoint']: self.ResetMapToggles() # TODO: else: open some kind of right-click menu at right-click point @@ -886,7 +904,8 @@ def OnMouseMotion(self, event): # Set mouse cursor display and position as appropriate # Snapping to something if self.toggleStates['square'] or self.toggleStates['poly'] or \ - self.toggleStates['dim']: + self.toggleStates['dim'] or self.toggleStates['addPoint'] or \ + self.toggleStates['remPoint']: if snapped: self.canvas.SetCursor(wx.StockCursor(wx.CURSOR_BULLSEYE)) else: @@ -942,9 +961,9 @@ def OnMouseMotion(self, event): # Draw walls that would connect to the new position nPts = len(self.regions[iReg].pointArray) ptPix0 = self.Map2Pix( \ - self.regions[iReg].pointArray[iPt - 1 % nPts]) + self.regions[iReg].pointArray[(iPt - 1) % nPts]) ptPix1 = self.Map2Pix( \ - self.regions[iReg].pointArray[iPt + 1 % nPts]) + self.regions[iReg].pointArray[(iPt + 1) % nPts]) dc.DrawLine(ptPix0[0], ptPix0[1], ptPix[0], ptPix[1]) dc.DrawLine(ptPix1[0], ptPix1[1], ptPix[0], ptPix[1]) @@ -1067,8 +1086,10 @@ def RedrawCanvas(self, dc=None): # Create bitmap to draw to width, height = self.canvas.GetSize() self.canvasBitmap = wx.EmptyBitmap(width, height) + #self.canvasBitmap.UseAlpha() dc = wx.MemoryDC() dc.SelectObject(self.canvasBitmap) + dc.BeginDrawing() border = [(0, 0), (width, 0), (width, height), (0, height)] dc.SetBrush(wx.Brush(wx.WHITE, wx.SOLID)) dc.SetPen(wx.Pen(wx.WHITE, 1, wx.SOLID)) @@ -1090,6 +1111,7 @@ def RedrawCanvas(self, dc=None): for iReg in range(1, len(self.adjacent)): self.DrawAdjacencies(iReg, dc=dc) + dc.EndDrawing() dc.SelectObject(wx.NullBitmap) # Draw the canvas bitmap with overlayed "temporary" drawings @@ -1496,6 +1518,12 @@ def ResetMapToggles(self, toggleStay=None): self.toggleStates['dim'] = False self.menuMarkers.Check(False) self.toggleDim.SetBitmapLabel(self.buttonBitmaps['dim']) + if self.toggleStates['addPoint'] and toggleStay != 'addPoint': + self.toggleStates['addPoint'] = False + self.menuAddPoint.Check(False) + if self.toggleStates['remPoint'] and toggleStay != 'remPoint': + self.toggleStates['remPoint'] = False + self.menuRemPoint.Check(False) def CreateRegion(self): """Instantiate and create a region, perform cleanup actions. @@ -1565,6 +1593,31 @@ def AddPointToRegion(self, pt, iReg, iEdge): elif thisRegFace == iEdge: self.adjacent[jReg][iReg].\ append((otherRegFace, thisRegFace + 1)) + + # Only need to redraw Vicon since the only visible difference + # should be if the region is currently selected (selection handle) + self.RedrawVicon() + + def DeletePointFromRegion(self, iReg, iPt): + """Remove a vertex from the region. + + iRegion - Int, index of region to modify + iPt - Int, index of the point to remove + """ + # Check if removal is possible + if len(self.regions[iReg].pointArray) <= 3: + print "WARNING: Cannot have fewer than 3 points in a region." + print " Point removal canceled." + return + + # Remove point + self.regions[iReg].pointArray.pop(iPt) + + # Update adjacencies + self.RecalcAdjacency(iReg) + + # Redraw regions + self.RedrawCanvas() def EditRegion(self, iReg): """Show the edit region dialog. @@ -2096,12 +2149,25 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_CLOSE, self.OnClose) # Save reference to RegionEditor GUI - if len(args) > 0: + if len(args) > 0 and isinstance(args[0], regionEditor): self.parent = args[0] + if not self.parent.regions: + print "ERROR: No regions defined prior to requesting feedback." + if self.parent.toggleStates['feedback']: + self.parent.OnToggleFeedback(None) + self.Destroy() + return else: - print "Warning: FeedbackDialog will not work without " + \ + print "ERROR: FeedbackDialog will not work without " + \ "reference to RegionEditor GUI as first parameter." - self.parent = None + self.Destroy() + return + + # Keep track of Vicon settings before opening this + hadMarkers = len(self.parent.markerPoses) > 0 + wasStreaming = self.parent.toggleStates['vicon'] + wasTracking = self.parent.viconListener.trackMarkers + self.oldSettings = (hadMarkers, wasStreaming, wasTracking) # Track current point self.chkbxIterate.SetValue(True) @@ -2109,8 +2175,9 @@ def __init__(self, *args, **kwds): self.currPt = 0 # Start audio feedback thread - self.feedbackThread = AudioFeedbackThread(self, self.parent) - self.feedbackThread.start() + if self.parent: + self.feedbackThread = AudioFeedbackThread(self, self.parent) + self.feedbackThread.start() def __set_properties(self): # begin wxGlade: FeedbackDialog.__set_properties @@ -2144,6 +2211,18 @@ def OnClose(self, event): if self.parent.toggleStates['feedback']: self.parent.OnToggleFeedback(None) # TODO: Add wait/notify to make sure thread ended + + # Reset to old settings + hadMarkers, wasStreaming, wasTracking = self.oldSettings + self.parent.viconListener.trackMarkers = wasTracking + if not wasStreaming and self.parent.toggleStates['vicon']: + self.parent.OnToggleVicon(None) + # TODO: Change checkbox too + if not hadMarkers: + time.sleep(1) # Wait for Vicon listener to close + self.parent.markerPoses = [] + self.parent.RedrawVicon() + self.Destroy() def OnButtonPrev(self, event): # wxGlade: FeedbackDialog. @@ -2161,10 +2240,6 @@ def OnButtonPrev(self, event): # wxGlade: FeedbackDialog. self.currReg = len(self.parent.regions) - 1 self.currPt = len(self.parent.regions[self.currReg].pointArray) - 1 - def OnButtonPick(self, event): # wxGlade: FeedbackDialog. - #self.parent.Raise() - print "Select not yet implemented." - def OnButtonNext(self, event): # wxGlade: FeedbackDialog. """Move on to next point.""" # Not last point in region @@ -2254,17 +2329,10 @@ def __init__(self, feedbackDialog, regEditor): self.fbDia = feedbackDialog self.regEd = regEditor - # Keep track of Vicon settings before opening this - hadMarkers = len(self.regEd.markerPoses) > 0 - wasStreaming = self.regEd.toggleStates['vicon'] - wasTracking = self.regEd.viconListener.trackMarkers - self.oldSettings = (hadMarkers, wasStreaming, wasTracking) - # Start Vicon streaming if necessary if not self.regEd.toggleStates['vicon']: self.regEd.OnToggleVicon(None) # TODO: Also check menu item - self.regEd.viconListener.start() # Tell marker listener to track the moving markers self.regEd.viconListener.trackMarkers = True @@ -2298,7 +2366,7 @@ def run(self): self.close.clear() while not self.close.isSet(): soundOption = self.fbDia.radioboxOption.GetSelection() - if not self.fbDia.chkbxMute.GetValue(): + if self.regEd.regions and not self.fbDia.chkbxMute.GetValue(): # Get distance from closest marker to point of interest intPt = self.regEd.regions[self.fbDia.currReg].\ pointArray[self.fbDia.currPt] @@ -2382,17 +2450,6 @@ def stop(self): self.engine.stop() self.close.set() - # Reset to old settings - hadMarkers, wasStreaming, wasTracking = self.oldSettings - self.regEd.viconListener.trackMarkers = wasTracking - if not wasStreaming: - self.regEd.OnToggleVicon(None) - # TODO: Change checkbox too - self.regEd.viconListener.stop() - if not hadMarkers: - time.sleep(1) # Wait for Vicon listener to close - self.regEd.markerPoses = [] - # Clear poses for drawing self.regEd.feedbackPoses = [] From 5aadc4f4bafd160dcf4e87ff688b640862ed19a7 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Tue, 8 May 2012 06:00:11 -0400 Subject: [PATCH 24/26] Made calibrate work with specEditor better (still not setting matrix though). Also added keyboard shortcuts for more menu and button items in regionEditor, and noted them in the menus and tooltips. --- .../NewRegionEditor/RegionEditor.wxg | 71 +++++++---- src/lib/calibrate.py | 95 ++++++++------ src/regionEditor.py | 120 +++++++++++++----- 3 files changed, 183 insertions(+), 103 deletions(-) diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg index f7717da4..303044f9 100644 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg +++ b/src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg @@ -1,5 +1,5 @@ - + @@ -9,24 +9,24 @@ wx.Frame - + - + menuNew OnMenuNew - + menuOpen OnMenuOpen - + menuSave OnMenuSave - + menuSaveAs OnMenuSaveAs @@ -36,37 +36,52 @@ --- - + menuExit OnMenuExit - + - + menuUndo OnMenuUndo - + menuRedo OnMenuRedo + + + menuSelectAll + OnMenuSelectAll + + + + menuEditRegion + OnMenuEditRegion + + + + menuDeleteRegion + OnMenuDeleteRegion + - + - + menuAutobound OnMenuAutobound - + menuRect 1 OnMenuRect - + menuPoly 1 OnMenuPoly @@ -77,27 +92,27 @@ --- - + menuAddPoint 1 OnMenuAddPoint - + menuRemPoint 1 OnMenuRemPoint - + - + menuMarkers 1 OnMenuMarkers - + menuMarkersClear OnMenuMarkersClear @@ -107,12 +122,12 @@ --- - + menuImageImport OnMenuImageImport - + menuImageClear OnMenuImageClear @@ -122,7 +137,7 @@ --- - + menuFeedback 1 @@ -132,13 +147,13 @@ --- - + menuCalibrate - + - + menuAbout OnMenuAbout @@ -172,7 +187,7 @@ 5 - Import image + Import image (CTRL+I) OnButtonImage @@ -184,7 +199,7 @@ 5 - Rectangle + Rectangle (R) OnToggleSquare @@ -196,7 +211,7 @@ 5 - Polygon + Polygon (P) OnTogglePoly diff --git a/src/lib/calibrate.py b/src/lib/calibrate.py index c41eb298..c0458eeb 100755 --- a/src/lib/calibrate.py +++ b/src/lib/calibrate.py @@ -47,13 +47,17 @@ def __init__(self, *args, **kwds): if self.proj.currentConfig.name != "calibrate": print "(ERROR) Calibration can only be run on a specfication file with a calibration configuration.\nPlease use ConfigEditor to calibrate a configuration." sys.exit(3) - - self.calibrationWizard = self.doCalibration() def doCalibration(self): # Run the calibration GUI # It will call outputTransformationMatrix when calibration is saved - calibGUI = CalibrationFrame(self) + app = wx.PySimpleApp(0) + wx.InitAllImageHandlers() + calibGUI = CalibrationFrame(None, -1, "") + calibGUI.Initialize(parent=self) + app.SetTopWindow(calibGUI) + app.MainLoop() + def outputTransformationMatrix(self, T): """ @@ -157,33 +161,6 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) # end wxGlade - # Check that parent object was passed in correctly - print args[0].__class__.__name__ - if len(args) > 0 and args[0].__class__.__name__ == 'regionEditor': - self.parent = args[0] - self.isCalibHelper = False - print "CalibrationFrame opening in regionEditor mode." - if self.parent.regions: - self.regions = self.parent.regions - else: - print "No regions defined. Exiting calibration." - self.Destroy() - return - elif len(args) > 0 and args[0].__class__.__name__ == 'CalibrateHelper': - self.parent = args[0] - self.isCalibHelper = True - print "CalibrationFrame opening in specEditor mode." - if self.parent.proj.rfi.regions: - self.regions - else: - print "No regions defined. Exiting calibration." - self.Destroy() - return - else: - print "No or invalid parent object passed in. Exiting calibration." - self.Destroy() - return - # Bind mouse events self.map.Bind(wx.EVT_LEFT_DOWN, self.OnMapMouseLeftDown, self.map) self.map.Bind(wx.EVT_LEFT_UP, self.OnMapMouseLeftUp, self.map) @@ -204,6 +181,46 @@ def __init__(self, *args, **kwds): # Add close event handler to cleanup before closing self.Bind(wx.EVT_CLOSE, self.OnClose) + def Initialize(self, parent=None): + """Perform the initialization part that requires use of either + specEditor or regionEditor modes to be set, and access to parent. + + parent - Calling object, must be either CalibrateHelper or regionEditor + """ + # Check that parent object was passed in correctly + if parent.__class__.__name__ == 'regionEditor': + self.parent = parent + self.isCalibHelper = False + print "CalibrationFrame opening in regionEditor mode." + if self.parent.regions: + self.regions = self.parent.regions + else: + print "ERROR: No regions defined. Exiting calibration." + self.Destroy() + return + elif parent.__class__.__name__ == 'CalibrateHelper': + self.parent = parent + self.isCalibHelper = True + print "CalibrationFrame opening in specEditor mode." + if self.parent.proj.rfi.regions: + self.regions = [] + for reg in self.parent.proj.rfi.regions: + verts = [] + for pt in reg.getPoints(): + verts.append(Point(float(pt.x), float(pt.y))) + self.regions.append(Region(points=verts, name=reg.name, \ + holes=reg.holeList, rgb=reg.color, \ + obst=reg.isObstacle)) + else: + print "ERROR: No regions defined. Exiting calibration." + self.Destroy() + return + else: + print "ERROR: None or invalid parent object passed in to " + \ + "CalibrationFrame. Exiting calibration." + self.Destroy() + return + # Keep track of which buttons are toggled # Since we are using bitmap buttons and they can't toggle # Also load all buttons' bitmaps and set appropriate ones @@ -244,8 +261,7 @@ def __init__(self, *args, **kwds): # Determine mapping of the map panel to the field # Avoid difficulties by having same scale for x and y mapLen = self.map.GetSize() # Initial size of map panel (pixels) - # Initial range of field (xmin, xmax, ymin, ymax) - xmin, xmax, ymin, ymax = self.GetBoundingBox() + xmin, xmax, ymin, ymax = self.GetBoundingBox() # Initial range of map # pose = pixPose * scale + offset # Note: y-pixels and y-pose have opposite directions xScale = (xmax - xmin) / float(mapLen[0]) @@ -256,8 +272,11 @@ def __init__(self, *args, **kwds): self.mapScale = Point(maxScale, -maxScale) self.mapOffset = Point(xOffset, yOffset) # Determine initial mapping of the reference panel to the field - # Initially defines a 1:1 mapping (at least scale/offset-wise) to map + # Initially chooses to view whole field as opposed to 1:1 ratio to map + # since when called from specEditor the map regions are defined with + # pixels (so coordinates are in the hundreds) refLen = self.ref.GetSize() # Initial size of reference panel (pixels) + xmin, xmax, ymin, ymax = (-3.0, 9.0, -3.0, 3.0) # Initial range of ref xScale = (xmax - xmin) / float(refLen[0]) yScale = (ymax - ymin) / float(refLen[1]) maxScale = max(xScale, yScale) @@ -1272,11 +1291,5 @@ def GetLtlmopRoot(self, thisFile): if __name__ == "__main__": - app = wx.PySimpleApp(0) - wx.InitAllImageHandlers() - if len(sys.argv) > 1: - calib = CalibrationFrame(None, -1, sys.argv[1]) - else: - calib = CalibrationFrame(None, -1) - app.SetTopWindow(calib) - app.MainLoop() \ No newline at end of file + calib = CalibrateHelper() + calib.doCalibration() \ No newline at end of file diff --git a/src/regionEditor.py b/src/regionEditor.py index 349767bc..c635580c 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -33,58 +33,64 @@ def __init__(self, *args, **kwds): # Menu Bar self.RegionEditor_menubar = wx.MenuBar() self.filemenu = wx.Menu() - self.menuNew = wx.MenuItem(self.filemenu, wx.NewId(), "New", "", wx.ITEM_NORMAL) + self.menuNew = wx.MenuItem(self.filemenu, wx.NewId(), "&New\tCTRL-N", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuNew) - self.menuOpen = wx.MenuItem(self.filemenu, wx.NewId(), "Open", "", wx.ITEM_NORMAL) + self.menuOpen = wx.MenuItem(self.filemenu, wx.NewId(), "&Open\tCTRL-O", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuOpen) - self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) + self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "&Save\tCTRL-S", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuSave) - self.menuSaveAs = wx.MenuItem(self.filemenu, wx.NewId(), "Save As", "", wx.ITEM_NORMAL) + self.menuSaveAs = wx.MenuItem(self.filemenu, wx.NewId(), "Save &As", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuSaveAs) self.filemenu.AppendSeparator() - self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) + self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "&Quit\tCTRL-Q", "", wx.ITEM_NORMAL) self.filemenu.AppendItem(self.menuExit) - self.RegionEditor_menubar.Append(self.filemenu, "File") + self.RegionEditor_menubar.Append(self.filemenu, "&File") self.menuEdit = wx.Menu() - self.menuUndo = wx.MenuItem(self.menuEdit, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) + self.menuUndo = wx.MenuItem(self.menuEdit, wx.NewId(), "&Undo\tCTRL-Z", "", wx.ITEM_NORMAL) self.menuEdit.AppendItem(self.menuUndo) - self.menuRedo = wx.MenuItem(self.menuEdit, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) + self.menuRedo = wx.MenuItem(self.menuEdit, wx.NewId(), "&Redo\tCTRL-Y", "", wx.ITEM_NORMAL) self.menuEdit.AppendItem(self.menuRedo) - self.RegionEditor_menubar.Append(self.menuEdit, "Edit") + self.menuSelectAll = wx.MenuItem(self.menuEdit, wx.NewId(), "Select &All\tCTRL-A", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuSelectAll) + self.menuEditRegion = wx.MenuItem(self.menuEdit, wx.NewId(), "&Edit Region\tCTRL-E", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuEditRegion) + self.menuDeleteRegion = wx.MenuItem(self.menuEdit, wx.NewId(), "D&elete Region\tDEL", "", wx.ITEM_NORMAL) + self.menuEdit.AppendItem(self.menuDeleteRegion) + self.RegionEditor_menubar.Append(self.menuEdit, "&Edit") self.menuDrawing = wx.Menu() - self.menuAutobound = wx.MenuItem(self.menuDrawing, wx.NewId(), "Autoboundary", "", wx.ITEM_NORMAL) + self.menuAutobound = wx.MenuItem(self.menuDrawing, wx.NewId(), "&Autoboundary", "", wx.ITEM_NORMAL) self.menuDrawing.AppendItem(self.menuAutobound) - self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "Rectangle", "", wx.ITEM_CHECK) + self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "&Rectangle\tR", "", wx.ITEM_CHECK) self.menuDrawing.AppendItem(self.menuRect) - self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_CHECK) + self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "&Polygon\tP", "", wx.ITEM_CHECK) self.menuDrawing.AppendItem(self.menuPoly) self.menuDrawing.AppendSeparator() - self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_CHECK) + self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "&Create Point\tC", "", wx.ITEM_CHECK) self.menuDrawing.AppendItem(self.menuAddPoint) - self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_CHECK) + self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "&Delete Point\tD", "", wx.ITEM_CHECK) self.menuDrawing.AppendItem(self.menuRemPoint) - self.RegionEditor_menubar.Append(self.menuDrawing, "Drawing") + self.RegionEditor_menubar.Append(self.menuDrawing, "&Drawing") self.menuView = wx.Menu() - self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "Stream Markers", "", wx.ITEM_CHECK) + self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "&Stream Markers", "", wx.ITEM_CHECK) self.menuView.AppendItem(self.menuMarkers) - self.menuMarkersClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) + self.menuMarkersClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear &Markers", "", wx.ITEM_NORMAL) self.menuView.AppendItem(self.menuMarkersClear) self.menuView.AppendSeparator() - self.menuImageImport = wx.MenuItem(self.menuView, wx.NewId(), "Import Background Image", "", wx.ITEM_NORMAL) + self.menuImageImport = wx.MenuItem(self.menuView, wx.NewId(), "&Import Background Image", "", wx.ITEM_NORMAL) self.menuView.AppendItem(self.menuImageImport) - self.menuImageClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Background Image", "", wx.ITEM_NORMAL) + self.menuImageClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear &Background Image", "", wx.ITEM_NORMAL) self.menuView.AppendItem(self.menuImageClear) self.menuView.AppendSeparator() - self.menuFeedback = wx.MenuItem(self.menuView, wx.NewId(), "Audio Feedback", "", wx.ITEM_CHECK) + self.menuFeedback = wx.MenuItem(self.menuView, wx.NewId(), "Audio &Feedback", "", wx.ITEM_CHECK) self.menuView.AppendItem(self.menuFeedback) self.menuView.AppendSeparator() - self.menuCalibrate = wx.MenuItem(self.menuView, wx.NewId(), "Calibrate", "", wx.ITEM_NORMAL) + self.menuCalibrate = wx.MenuItem(self.menuView, wx.NewId(), "&Calibrate", "", wx.ITEM_NORMAL) self.menuView.AppendItem(self.menuCalibrate) - self.RegionEditor_menubar.Append(self.menuView, "Tools") + self.RegionEditor_menubar.Append(self.menuView, "&Tools") self.helpmenu = wx.Menu() - self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) + self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "&About", "", wx.ITEM_NORMAL) self.helpmenu.AppendItem(self.menuAbout) - self.RegionEditor_menubar.Append(self.helpmenu, "Help") + self.RegionEditor_menubar.Append(self.helpmenu, "&Help") self.SetMenuBar(self.RegionEditor_menubar) # Menu Bar end self.topbar = wx.Panel(self, -1) @@ -108,6 +114,9 @@ def __init__(self, *args, **kwds): self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) + self.Bind(wx.EVT_MENU, self.OnMenuSelectAll, self.menuSelectAll) + self.Bind(wx.EVT_MENU, self.OnMenuEditRegion, self.menuEditRegion) + self.Bind(wx.EVT_MENU, self.OnMenuDeleteRegion, self.menuDeleteRegion) self.Bind(wx.EVT_MENU, self.OnMenuAutobound, self.menuAutobound) self.Bind(wx.EVT_MENU, self.OnMenuRect, self.menuRect) self.Bind(wx.EVT_MENU, self.OnMenuPoly, self.menuPoly) @@ -283,11 +292,11 @@ def __set_properties(self): self.toggleVicon.SetMinSize((32, 32)) self.toggleVicon.SetToolTipString("Stream markers") self.buttonImage.SetMinSize((32, 32)) - self.buttonImage.SetToolTipString("Import image") + self.buttonImage.SetToolTipString("Import image (CTRL+I)") self.toggleSquare.SetMinSize((32, 32)) - self.toggleSquare.SetToolTipString("Rectangle") + self.toggleSquare.SetToolTipString("Rectangle (R)") self.togglePoly.SetMinSize((32, 32)) - self.togglePoly.SetToolTipString("Polygon") + self.togglePoly.SetToolTipString("Polygon (P)") self.toggleDim.SetMinSize((32, 32)) self.toggleDim.SetToolTipString("Set length or scale image") self.buttonAutobound.SetMinSize((32, 32)) @@ -567,7 +576,24 @@ def OnMenuRedo(self, event): # wxGlade: regionEditor. # TODO: if not self.redoActions: disable self.menuRedo # TODO: enable self.menuUndo self.RedrawCanvas() + + def OnMenuSelectAll(self, event): # wxGlade: regionEditor. + self.selectedRegions = range(len(self.regions)) + self.RedrawVicon() + + def OnMenuEditRegion(self, event): # wxGlade: regionEditor. + # Edit most recently selected region + if self.selectedRegions: + iReg = self.selectedRegions.pop() + self.selectedRegions = [iReg] + self.EditRegion(iReg) + def OnMenuDeleteRegion(self, event): # wxGlade: regionEditor. + self.AddToUndo() + self.selectedRegions.sort() + while self.selectedRegions: + self.DeleteRegion(self.selectedRegions.pop()) + def OnMenuAutobound(self, event): # wxGlade: regionEditor. self.AddToUndo() self.Autoboundary() @@ -1004,17 +1030,14 @@ def OnKeyDown(self, event): if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ self.selectedRegions and not self.toggleStates['poly'] and \ not self.toggleStates['square']: - self.AddToUndo() - self.selectedRegions.sort() - while self.selectedRegions: - self.DeleteRegion(self.selectedRegions.pop()) + self.OnMenuDeleteRegion(None) # Backspace/Delete - Removes last set point during region creation elif (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ self.polyVerts: if self.toggleStates['square'] or self.toggleStates['poly']: self.polyVerts.pop() - self.RedrawCanvas() + self.RedrawVicon() elif self.toggleStates['dim']: self.polyVerts = [] @@ -1049,8 +1072,37 @@ def OnKeyDown(self, event): # Ctrl+a - Select All elif event.CmdDown() and keycode == 65: - self.selectedRegions = range(len(self.regions)) - self.RedrawCanvas() + self.OnMenuSelectAll(None) + + # Ctrl+i - Import Background Image + elif event.CmdDown() and keycode == 73: + self.OnMenuImageImport(None) + + # Ctrl+e - Edit Region + elif event.CmdDown() and keycode == 69: + self.OnMenuEditRegion(None) + + # r - Rectangle Creation Mode + elif keycode == 82: + if not self.toggleStates['square']: + self.OnToggleSquare(None) + + # p - Polygon Creation Mode + elif keycode == 80: + if not self.toggleStates['poly']: + self.OnTogglePoly(None) + + # c - Create Point Mode + elif keycode == 67: + if not self.toggleStates['addPoint']: + self.menuAddPoint.Check(True) + self.OnMenuAddPoint(None) + + # d - Delete Point Mode + elif keycode == 68: + if not self.toggleStates['remPoint']: + self.menuRemPoint.Check(True) + self.OnMenuRemPoint(None) # Pass event on so other key combinations still work else: From ea28571b78234dd1050c4ab1503cff7649302ef3 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Tue, 8 May 2012 17:40:17 -0400 Subject: [PATCH 25/26] Several miscellaneous bug fixes. This is Demo-Day version. --- src/lib/calibrate.py | 40 +++++++++++++++++++++++++--------------- src/lib/execute.py | 2 ++ src/regionEditor.py | 6 +++++- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/lib/calibrate.py b/src/lib/calibrate.py index c0458eeb..82228a91 100755 --- a/src/lib/calibrate.py +++ b/src/lib/calibrate.py @@ -25,6 +25,7 @@ import _transformations import vicon from regionsPoints import Region, Point +import time class CalibrateHelper: def __init__(self, *args, **kwds): @@ -70,7 +71,7 @@ def outputTransformationMatrix(self, T): else: UDPSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) UDPSock.sendto(output, self.configEditorPort) - yield + return True class CalibrationFrame(wx.Frame): @@ -268,8 +269,12 @@ def Initialize(self, parent=None): yScale = (ymax - ymin) / float(mapLen[1]) maxScale = max(xScale, yScale) xOffset = xmin - yOffset = ymax - self.mapScale = Point(maxScale, -maxScale) + if self.isCalibHelper: + self.mapScale = Point(maxScale, maxScale) + yOffset = ymin + else: + self.mapScale = Point(maxScale, -maxScale) + yOffset = ymax self.mapOffset = Point(xOffset, yOffset) # Determine initial mapping of the reference panel to the field # Initially chooses to view whole field as opposed to 1:1 ratio to map @@ -324,7 +329,7 @@ def Initialize(self, parent=None): # Display the GUI window and set up the map canvas self.Show() - self.RedrawMap() + self.Redraw() def __set_properties(self): # begin wxGlade: CalibrationFrame.__set_properties @@ -422,13 +427,13 @@ def OnMenuSave(self, event): # wxGlade: CalibrationFrame. # if the points chosen are not perfect allowShear = not self.chkbxShear.IsChecked() - # Get tranformation matrix such that - # regPt = T * mapPt - T = _transformations.affine_matrix_from_points(mapPts, regPts, \ - shear=allowShear) - # If being used by regionEditor if not self.isCalibHelper: + # Get tranformation matrix such that + # regPt = T * mapPt + T = _transformations.affine_matrix_from_points(mapPts, regPts, \ + shear=allowShear) + # Apply transformation to all region points self.parent.AddToUndo() for reg in self.parent.regions: @@ -440,7 +445,12 @@ def OnMenuSave(self, event): # wxGlade: CalibrationFrame. # If being used by CalibrateHelper else: - self.parent.outputTransformationMatrix(T) + # Get tranformation matrix such that + # regPt = T * mapPt + T = _transformations.affine_matrix_from_points(regPts, mapPts, \ + shear=allowShear) + + success = self.parent.outputTransformationMatrix(T) # Quit calibration self.Close() @@ -511,7 +521,7 @@ def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. # Change control values self.toggleStates['vicon'] = not self.toggleStates['vicon'] - self.menuMarkers.Check(self.toggleStates['vicon']) + self.menuShowMarkers.Check(self.toggleStates['vicon']) # Switch Vicon streaming on or off based on state of toggle button if self.toggleStates['vicon']: @@ -521,7 +531,7 @@ def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. self.toggleVicon.SetBitmapLabel(self.buttonBitmaps['vicon']) self.viconListener.stop() # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) + self.viconListener = vicon.ViconMarkerListener(self) def OnButtonImage(self, event): # wxGlade: CalibrationFrame. self.OnMenuLoadImage(None) @@ -626,8 +636,8 @@ def OnMapLeaveWindow(self, event): def OnRefMouseLeftDown(self, event): """Save downclick point on reference panel for future use.""" - self.refLeftClickPt, iCalibPt, iReg = \ - self.SnapPointMap(self.RefPix2M(event.GetPosition())) + self.refLeftClickPt, iCalibPt = \ + self.SnapPointRef(self.RefPix2M(event.GetPosition())) def OnRefMouseLeftUp(self, event): """React to the finalization of the left click on the map.""" @@ -640,7 +650,7 @@ def OnRefMouseLeftUp(self, event): # First point clicked for adding new point if not self.newCalibPt[0]: self.newCalibPt[1] = pt - self.RedrawMap() + self.RedrawRef() # Finalizing calibration point (second point clicked) else: diff --git a/src/lib/execute.py b/src/lib/execute.py index f9505d33..bbc2b3a6 100755 --- a/src/lib/execute.py +++ b/src/lib/execute.py @@ -141,6 +141,7 @@ def main(argv): proj.loadProject(spec_file) proj.rfiold = proj.rfi proj.rfi = proj.loadRegionFile(decomposed=True) + print proj.rfi ########################## # Initialize each module # @@ -198,6 +199,7 @@ def main(argv): FSA = fsa.Automaton(proj) + success = FSA.loadFile(aut_file, proj.enabled_sensors, proj.enabled_actuators, proj.all_customs) if not success: return diff --git a/src/regionEditor.py b/src/regionEditor.py index c635580c..e5ad3de5 100755 --- a/src/regionEditor.py +++ b/src/regionEditor.py @@ -420,7 +420,8 @@ def OnToggleFeedback(self, event): # wxGlade: regionEditor. def OnButtonCal(self, event): # wxGlade: regionEditor. self.ResetMapToggles() self.AddToUndo() - calibGUI = calibrate.CalibrationFrame(self) + calibGUI = calibrate.CalibrationFrame(None, -1, "") + calibGUI.Initialize(parent=self) def OnMenuNew(self, event): # wxGlade: regionEditor. self.AddToUndo() @@ -559,6 +560,7 @@ def OnMenuUndo(self, event): # wxGlade: regionEditor. self.adjacent = action.stateAdjacent # TODO: if not self.undoActions: disable self.menuUndo # TODO: enable self.menuRedo + self.selectedRegions = [] self.RedrawCanvas() def OnMenuRedo(self, event): # wxGlade: regionEditor. @@ -645,6 +647,8 @@ def OnMenuImageClear(self, event): # wxGlade: regionEditor. self.backgroundImage = None self.backgroundFile = "" self.backgroundPosition = None + if -1 in self.selectedRegions: + self.selectedRegions.remove(-1) self.RedrawCanvas() def OnMenuAbout(self, event): # wxGlade: regionEditor. From fbb85267f9425b927f802c3668504ebdbb75bde7 Mon Sep 17 00:00:00 2001 From: Cam Salzberger Date: Mon, 21 May 2012 10:25:04 -0400 Subject: [PATCH 26/26] Final update including all touch-ups to the new RegionEditor and cleanup of the folder. ViconMarkerBroadcaster added for streaming vicon markers. wxglade files added for new regionEditor and calibration GUIs. --- ...ion Editor and Calibration User Guide.docx | Bin 0 -> 48220 bytes ...gion Editor and Calibration User Guide.pdf | Bin 0 -> 408729 bytes .../NewRegionEditor/CalibrationFrame.wxg | 260 -- .../NewRegionFileFormat.regions | 20 - .../NewRegionEditor/RegionEditorV3.wxg | 739 ---- .../NewRegionEditor/RegionEditorV3.wxg.bak | 320 -- .../NewRegionEditor/Test.regions | 24 - .../ViconMarkerBroadcaster.exe | Bin 7680 -> 0 bytes .../ViconMarkerBroadcaster.exe.config | 8 - .../NewRegionEditor/regionEditor.py | 3080 ----------------- .../NewRegionEditor/regionEditor.py.bak | 1700 --------- .../NewRegionEditor/regionEditorV2.py | 287 -- .../ViconDataStreamSDK_CPP.dll | Bin 397312 -> 0 bytes .../ViconDataStreamSDK_DotNET.dll | Bin 184320 -> 0 bytes .../viconmarkerbroadcaster}/MarkerStream.cs | 0 .../Properties/AssemblyInfo.cs | 0 .../ViconDataStreamSDK_CPP.dll | Bin .../ViconDataStreamSDK_DotNET.dll | Bin .../ViconMarkerBroadcaster.csproj | 0 .../ViconMarkerListener.py | 0 .../viconmarkerbroadcaster}/app.config | 0 .../viconmarkerbroadcaster}/readme.txt | 8 +- src/etc/wxglade/calibration.wxg | 307 +- .../wxglade/regionEditor.wxg} | 0 24 files changed, 246 insertions(+), 6507 deletions(-) create mode 100644 doc/Region Editor and Calibration User Guide.docx create mode 100644 doc/Region Editor and Calibration User Guide.pdf delete mode 100644 src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg delete mode 100644 src/RegionEditorFiles/NewRegionEditor/NewRegionFileFormat.regions delete mode 100644 src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg delete mode 100644 src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg.bak delete mode 100644 src/RegionEditorFiles/NewRegionEditor/Test.regions delete mode 100644 src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe delete mode 100644 src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe.config delete mode 100644 src/RegionEditorFiles/NewRegionEditor/regionEditor.py delete mode 100644 src/RegionEditorFiles/NewRegionEditor/regionEditor.py.bak delete mode 100644 src/RegionEditorFiles/NewRegionEditor/regionEditorV2.py delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconDataStreamSDK_CPP.dll delete mode 100644 src/RegionEditorFiles/ViconMarkerBroadcaster/ViconDataStreamSDK_DotNET.dll rename src/{RegionEditorFiles/ViconMarkerBroadcaster => etc/viconmarkerbroadcaster}/MarkerStream.cs (100%) rename src/{RegionEditorFiles/ViconMarkerBroadcaster => etc/viconmarkerbroadcaster}/Properties/AssemblyInfo.cs (100%) rename src/{RegionEditorFiles/NewRegionEditor => etc/viconmarkerbroadcaster}/ViconDataStreamSDK_CPP.dll (100%) rename src/{RegionEditorFiles/NewRegionEditor => etc/viconmarkerbroadcaster}/ViconDataStreamSDK_DotNET.dll (100%) rename src/{RegionEditorFiles/ViconMarkerBroadcaster => etc/viconmarkerbroadcaster}/ViconMarkerBroadcaster.csproj (100%) rename src/{RegionEditorFiles/ViconMarkerBroadcaster => etc/viconmarkerbroadcaster}/ViconMarkerListener.py (100%) rename src/{RegionEditorFiles/ViconMarkerBroadcaster => etc/viconmarkerbroadcaster}/app.config (100%) rename src/{RegionEditorFiles/ViconMarkerBroadcaster => etc/viconmarkerbroadcaster}/readme.txt (68%) rename src/{RegionEditorFiles/NewRegionEditor/RegionEditor.wxg => etc/wxglade/regionEditor.wxg} (100%) diff --git a/doc/Region Editor and Calibration User Guide.docx b/doc/Region Editor and Calibration User Guide.docx new file mode 100644 index 0000000000000000000000000000000000000000..b5c126615989717b043f4206e948405593ed250d GIT binary patch literal 48220 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

    PFNfd`yYps`W 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

    $)%=H_pua!(M_; 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 I@|)xT179-g&;S4c literal 0 HcmV?d00001 diff --git a/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg b/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg deleted file mode 100644 index cbbf5cf6..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/CalibrationFrame.wxg +++ /dev/null @@ -1,260 +0,0 @@ - - - - - - - Map Calibration - 1 - #f0f0f0 - - - - - - menuReset - OnMenuReset - - - - menuSave - OnMenuSave - - - - menuExit - OnMenuExit - - - - - - menuUndo - OnMenuUndo - - - - menuRedo - OnMenuRedo - - - - --- - --- - - - - menuSelectAll - OnMenuSelectAll - - - - menuClearAll - OnMenuClearAll - - - - - - menuShowMarkers - 1 - OnMenuShowMarkers - - - - menuClearMarkers - OnMenuClearMarkers - - - - --- - --- - - - - menuLoadImage - OnMenuLoadImage - - - - menuDimen - OnMenuDimen - - - - menuClearImage - OnMenuClearImage - - - - - - menuHowTo - OnMenuHowTo - - - - menuAbout - OnMenuAbout - - - - - - wxVERTICAL - - wxEXPAND - 0 - - - - - wxHORIZONTAL - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - Stream markers - - OnToggleVicon - - 32, 32 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - Import image - - OnButtonImage - - 32, 32 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - Add calibration point - - OnToggleAddPoint - - 32, 32 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - Delete calibration point - - OnToggleDeletePoint - - 32, 32 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - Scale image - - OnToggleDimen - - 32, 32 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - Save and return - - OnButtonSave - - 32, 32 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - wxHORIZONTAL - - wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 2 - - - x - 1 - 40, 25 - - - - wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 2 - - - y - 1 - 40, 25 - - - - wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 2 - - - - Create calibration point - wx.ID_OK - - OnButtonEnterPoint - - 25, 25 - - - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - - - - - - wxBOTTOM|wxEXPAND - 3 - - - - #ffffff - 600, 300 - - - - wxTOP|wxEXPAND - 3 - - - - #ffffff - 600, 300 - - - - - diff --git a/src/RegionEditorFiles/NewRegionEditor/NewRegionFileFormat.regions b/src/RegionEditorFiles/NewRegionEditor/NewRegionFileFormat.regions deleted file mode 100644 index a9d77490..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/NewRegionFileFormat.regions +++ /dev/null @@ -1,20 +0,0 @@ -# This is a region definition file for the LTLMoP toolkit. -# Format details are described at the beginning of each section below. -# Note that all values are separated by *tabs*. - -Background: # Relative path of background image file -None - -Obstacles: # Indices of regions to treat as obstacles - -Regions: # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] -boundary {0 255 0} [(0.0 2.0) (4.0 2.0) (4.0 -2.0) (0.0 -2.0)] -rA {255 0 0} [(1.0 1.0) (2.0 0.0) (1.0 -1.0)] -rB {0 0 255} [(1.0 1.0) (1.0 -1.0) (0.2 0.0)] - -Thumbnail: # Relative path of image file that has region shapes overlayed on background image -NewRegionFileFormat.png - -Transitions: # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] -1 2 [(2 0)] -2 1 [(0 2)] \ No newline at end of file diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg deleted file mode 100644 index d13fb271..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg +++ /dev/null @@ -1,739 +0,0 @@ - - - - - - - Region Editor - 1 - wx.Frame - - - - - - menuNew - OnMenuNew - - - - menuOpen - OnMenuOpen - - - - menuSave - OnMenuSave - - - - menuSaveAs - OnMenuSaveAs - - - - --- - --- - - - - menuExit - OnMenuExit - - - - - - menuUndo - OnMenuUndo - - - - menuRedo - OnMenuRedo - - - - - - menuAutobound - OnMenuAutobound - - - - menuRect - OnMenuRect - - - - menuPoly - OnMenuPoly - - - - --- - --- - - - - menuAddPoint - OnMenuAddPoint - - - - menuRemPoint - OnMenuRemPoint - - - - - - menuMarkers - 1 - OnMenuMarkers - - - - menuMarkersClear - OnMenuMarkersClear - - - - --- - --- - - - - menuImageImport - OnMenuImageImport - - - - menuImageClear - OnMenuImageClear - - - - --- - --- - - - - menuFeedback - 1 - - - - --- - --- - - - - menuCalibrate - - - - - - menuAbout - OnMenuAbout - - - - - - wxHORIZONTAL - - wxEXPAND - 0 - - - - 120, 400 - - 5 - 4 - 2 - 5 - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleVicon - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnButtonImage - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleSquare - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnTogglePoly - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleDim - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnButtonAutobound - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleFeedback - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnButtonCal - - 50, 50 - - - - - - - wxEXPAND - 0 - - - - #ffffff - 800, 400 - - - - - - - Marker Placement - - wxVERTICAL - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - wxHORIZONTAL - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnButtonPrev - - 50, 50 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnButtonPick - - 50, 50 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnButtonNext - - 50, 50 - - - - - - wxEXPAND - 0 - - - wxVERTICAL - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - 1 - - - - - wxALL|wxEXPAND - 5 - - - - 0 - 1 - - - Speech - Beeping - - - - - wxALL - 5 - - - - - - - - - - - - Edit Region - - wxVERTICAL - - wxEXPAND - 0 - - - wxHORIZONTAL - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - 1 - - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - - - - wxEXPAND - 0 - - - wxHORIZONTAL - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - 1 - - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - $parent - $id - - 40, 40 - - - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - - - wxEXPAND - 0 - - - wxHORIZONTAL - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - wx.ID_OK - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 8 - - - - wx.ID_CANCEL - - - - - - - - - Map Calibration - 1 - #f0f0f0 - - - - - - menuReset - OnMenuReset - - - - menuSave - OnMenuSave - - - - menuExit - OnMenuExit - - - - - - menuUndo - OnMenuUndo - - - - menuRedo - OnMenuRedo - - - - --- - --- - - - - menuSelectAll - OnMenuSelectAll - - - - menuClearAll - OnMenuClearAll - - - - - - menuShowMarkers - 1 - OnMenuShowMarkers - - - - menuClearMarkers - OnMenuClearMarkers - - - - --- - --- - - - - menuLoadImage - OnMenuLoadImage - - - - menuDimen - OnMenuDimen - - - - menuClearImage - OnMenuClearImage - - - - - - menuHowTo - OnMenuHowTo - - - - menuAbout - OnMenuAbout - - - - - - wxHORIZONTAL - - 0 - - - - 110, 268 - - wxVERTICAL - - wxTOP|wxBOTTOM|wxEXPAND - 5 - - - wxHORIZONTAL - - wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnToggleVicon - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnButtonImage - - 50, 50 - - - - - - wxTOP|wxBOTTOM|wxEXPAND - 5 - - - wxHORIZONTAL - - wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnToggleAddPoint - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleDeletePoint - - 50, 50 - - - - - - wxTOP|wxBOTTOM|wxEXPAND - 5 - - - wxHORIZONTAL - - wxALIGN_CENTER_VERTICAL - 0 - - - x - 40, 25 - - - - wxALIGN_CENTER_VERTICAL - 0 - - - y - 40, 25 - - - - wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL - 0 - - - - wx.ID_OK - - OnButtonEnterPoint - - 25, 25 - - - - - - wxEXPAND - 0 - - - wxHORIZONTAL - - wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnToggleDimen - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnButtonSave - - 50, 50 - - - - - - wxTOP|wxBOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - 1 - - - - - - - - wxEXPAND - 0 - - - wxVERTICAL - - wxBOTTOM|wxEXPAND - 3 - - - - #ffffff - 600, 300 - - - - wxTOP|wxEXPAND - 3 - - - - #ffffff - 600, 300 - - - - - - - diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg.bak b/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg.bak deleted file mode 100644 index f98dcde5..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/RegionEditorV3.wxg.bak +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - Region Editor - 1 - wx.Frame - - - - - - menuNew - OnMenuNew - - - - menuOpen - OnMenuOpen - - - - menuSave - OnMenuSave - - - - menuSaveAs - OnMenuSaveAs - - - - menuExit - OnMenuExit - - - - - - menuUndo - OnMenuUndo - - - - menuRedo - OnMenuRedo - - - - - - menuAutobound - OnMenuAutobound - - - - menuRect - OnMenuRect - - - - menuPoly - OnMenuPoly - - - - menuAddPoint - OnMenuAddPoint - - - - menuRemPoint - OnMenuRemPoint - - - - - - menuMarkers - 1 - OnMenuMarkers - - - - menuMarkersClear - OnMenuMarkersClear - - - - menuCamera - OnMenuCamera - - - - menuImageImport - OnMenuImageImport - - - - menuImageClear - OnMenuImageClear - - - - - - menuAbout - OnMenuAbout - - - - - - wxHORIZONTAL - - wxEXPAND - 0 - - - - 150, 400 - - 5 - 4 - 2 - 5 - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleVicon - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnButtonCamera - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleSquare - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnTogglePoly - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleDim - - 50, 50 - - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnToggleFeedback - - 50, 50 - - - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - - - OnButtonCal - - 50, 50 - - - - - - - wxEXPAND - 0 - - - - #ffffff - 800, 400 - - - - - - - Marker Placement - - wxVERTICAL - - wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 0 - - - wxHORIZONTAL - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnButtonPrev - - 50, 50 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnButtonPick - - 50, 50 - - - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - - - OnButtonNext - - 50, 50 - - - - - - wxEXPAND - 0 - - - wxVERTICAL - - wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL - 5 - - - 1 - - - - - wxALL|wxEXPAND - 5 - - - - 0 - 1 - - - Speech - Beeping - - - - - wxALL - 5 - - - - - - - - - - diff --git a/src/RegionEditorFiles/NewRegionEditor/Test.regions b/src/RegionEditorFiles/NewRegionEditor/Test.regions deleted file mode 100644 index 44917e82..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/Test.regions +++ /dev/null @@ -1,24 +0,0 @@ -# This is a region definition file for the LTLMoP toolkit. -# Format details are described at the beginning of each section below. -# Note that all values are separated by *tabs*. - -Background: # Relative path of background image file -None - -Obstacles: # Indices of regions to treat as obstacles - - -Regions: # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] -R0 {000 000 000} [(-2.010 2.430) (-2.010 1.455) (-0.975 1.455) (-0.975 2.430)] -R0 {000 000 000} [(2.055 2.370) (0.930 1.140) (3.195 1.005)] -R0 {000 000 000} [(2.055 2.370) (3.195 1.005) (4.095 2.175)] -R0 {000 000 000} [(0.600 -0.390) (0.930 1.140) (3.195 1.005) (3.075 -0.345) (1.005 -1.260)] - -Thumbnail: # Relative path of image file that has region shapes overlayed on background image -None - -Transitions: # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] -1 2 [(2 0)] -1 3 [(1 1)] -2 1 [(0 2)] -3 1 [(1 1)] diff --git a/src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe b/src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe deleted file mode 100644 index fbae10a1dbaf4361df9431b4c7ccb4023f55a955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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 diff --git a/src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe.config b/src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe.config deleted file mode 100644 index 108d3a0e..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/ViconMarkerBroadcaster.exe.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py deleted file mode 100644 index b67cfe2a..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py +++ /dev/null @@ -1,3080 +0,0 @@ -#!/usr/bin/env python -# -*- coding: iso-8859-15 -*- -# generated by wxGlade 0.6.5 (standalone edition) on Mon Feb 13 13:09:57 2012 - -import os -import sys -import collections -import time -import math -import numpy -import wx -import threading -import socket -import struct -import copy -import random -import re -import winsound -import pyttsx -import lib.fileMethods as fileMethods -import lib._transformations as _transformations - -# begin wxGlade: extracode -# end wxGlade - -class regionEditor(wx.Frame): - def __init__(self, *args, **kwds): - # begin wxGlade: regionEditor.__init__ - kwds["style"] = wx.DEFAULT_FRAME_STYLE - wx.Frame.__init__(self, *args, **kwds) - - # Menu Bar - self.RegionEditor_menubar = wx.MenuBar() - self.filemenu = wx.Menu() - self.menuNew = wx.MenuItem(self.filemenu, wx.NewId(), "New", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuNew) - self.menuOpen = wx.MenuItem(self.filemenu, wx.NewId(), "Open", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuOpen) - self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuSave) - self.menuSaveAs = wx.MenuItem(self.filemenu, wx.NewId(), "Save As", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuSaveAs) - self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuExit) - self.RegionEditor_menubar.Append(self.filemenu, "File") - self.menuEdit = wx.Menu() - self.menuUndo = wx.MenuItem(self.menuEdit, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) - self.menuEdit.AppendItem(self.menuUndo) - self.menuRedo = wx.MenuItem(self.menuEdit, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) - self.menuEdit.AppendItem(self.menuRedo) - self.RegionEditor_menubar.Append(self.menuEdit, "Edit") - self.menuDrawing = wx.Menu() - self.menuAutobound = wx.MenuItem(self.menuDrawing, wx.NewId(), "Autoboundary", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuAutobound) - self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "Rectangle", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuRect) - self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuPoly) - self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuAddPoint) - self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuRemPoint) - self.RegionEditor_menubar.Append(self.menuDrawing, "Drawing") - self.menuView = wx.Menu() - self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "Markers", "", wx.ITEM_CHECK) - self.menuView.AppendItem(self.menuMarkers) - self.menuMarkersClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuMarkersClear) - self.menuCamera = wx.MenuItem(self.menuView, wx.NewId(), "Camera Capture", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuCamera) - self.menuImageImport = wx.MenuItem(self.menuView, wx.NewId(), "Import Background Image", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuImageImport) - self.menuImageClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Background Image", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuImageClear) - self.RegionEditor_menubar.Append(self.menuView, "View") - self.helpmenu = wx.Menu() - self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) - self.helpmenu.AppendItem(self.menuAbout) - self.RegionEditor_menubar.Append(self.helpmenu, "Help") - self.SetMenuBar(self.RegionEditor_menubar) - # Menu Bar end - self.sidebar = wx.Panel(self, -1) - self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Vicon") - self.buttonCamera = wx.Button(self.sidebar, -1, "Camera") - self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Rect.") - self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") - self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Length") - self.buttonAutobound = wx.Button(self.sidebar, -1, "Boundary") - self.toggleFeedback = wx.ToggleButton(self.sidebar, -1, "Feedback") - self.buttonCal = wx.Button(self.sidebar, -1, "Calibrate") - self.canvas = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - - self.__set_properties() - self.__do_layout() - - self.Bind(wx.EVT_MENU, self.OnMenuNew, self.menuNew) - self.Bind(wx.EVT_MENU, self.OnMenuOpen, self.menuOpen) - self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) - self.Bind(wx.EVT_MENU, self.OnMenuSaveAs, self.menuSaveAs) - self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) - self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) - self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) - self.Bind(wx.EVT_MENU, self.OnMenuAutobound, self.menuAutobound) - self.Bind(wx.EVT_MENU, self.OnMenuRect, self.menuRect) - self.Bind(wx.EVT_MENU, self.OnMenuPoly, self.menuPoly) - self.Bind(wx.EVT_MENU, self.OnMenuAddPoint, self.menuAddPoint) - self.Bind(wx.EVT_MENU, self.OnMenuRemPoint, self.menuRemPoint) - self.Bind(wx.EVT_MENU, self.OnMenuMarkers, self.menuMarkers) - self.Bind(wx.EVT_MENU, self.OnMenuMarkersClear, self.menuMarkersClear) - self.Bind(wx.EVT_MENU, self.OnMenuCamera, self.menuCamera) - self.Bind(wx.EVT_MENU, self.OnMenuImageImport, self.menuImageImport) - self.Bind(wx.EVT_MENU, self.OnMenuImageClear, self.menuImageClear) - self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) - self.Bind(wx.EVT_BUTTON, self.OnButtonCamera, self.buttonCamera) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) - self.Bind(wx.EVT_BUTTON, self.OnButtonAutobound, self.buttonAutobound) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFeedback, self.toggleFeedback) - self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) - # end wxGlade - - # Handle input - if len(args) > 2 and isinstance(args[2], str): - self.fileName = os.path.join(os.getcwd(), args[2]) - else: - self.fileName = "" - - # Bind mouse events - self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown, self.canvas) - self.canvas.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp, self.canvas) - self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) - self.canvas.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown, self.canvas) - self.canvas.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp, self.canvas) - self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel, self.canvas) - self.canvas.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow, self.canvas) - self.canvas.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow, self.canvas) - - # Bind keyboard events - self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) - self.canvas.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.canvas) - - # Determine mapping of the canvas panel to the field - canvasLen = self.canvas.GetSize() # Initial size of canvas (pixels) - fieldRange = [(-3.0, 9.0), (-3.0, 3.0)] # Initial range of field (m) - # [(xmin, xmax), (ymin, ymax)] - # pose = pixPose * scale + offset - # Note: y-pixels and y-pose have opposite directions - xScale = (fieldRange[0][1] - fieldRange[0][0]) / float(canvasLen[0]) - xOffset = fieldRange[0][0] - yScale = -(fieldRange[1][1] - fieldRange[1][0]) / float(canvasLen[1]) - yOffset = -fieldRange[1][0] - self.canvasScale = Point(xScale, yScale) - self.canvasOffset = Point(xOffset, yOffset) - - # Region-related parameters - self.regions = [] # List of regions in the map - self.adjacent = [] # List of lists holding transition - # edges between regions. - # adjacent[i][j] contains a list of - # indices of edges in region i that - # connect to edges in region j. - # adjacent[j][i] should contain a - # list of the same length, but edge - # indices are for region j. - # adjacent[i][i] will be empty. - self.polyVerts = [] # Keeps points for region creation - # and dimensioning - # Region creation: [Point(x0,y0), ...] - # Dimensioning: (idxRegion, idxVert) - self.polySnaps = [] # Keeps snap information for each - # new region creation point - # [(idxReg, idxPt, idxEdge), ...] - self.boundary = None # Region representing the map bound - # TODO: When changing the name of a region, check if it is called boundary - - # Mouse-related parameters - self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick - self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick - self.justDoubleClicked = False # Indicating double-click event - self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) - # TODO: Make tolerance a parameter on pixels only - # Calculate "same point" with scale later - self.selectedRegions = [] # List of currently selected regions - - # Set up for undo/redo capabilities - # TODO: Disable self.menuUndo and self.menuRedo - self.unredoBufLen = 50 - self.undoActions = collections.deque() - self.redoActions = collections.deque() - - # Add paint event handler to draw on the canvas - # TODO: Fix problems here - #self.canvas.Bind(wx.EVT_PAINT, self.OnCanvasPaint) - - # Create Vicon listener - self.markerPoses = [] # Marker positions to be drawn - self.viconListener = ViconMarkerListener(self) - self.dlgFeedback = None - - # Add close event handler to cleanup and possibly save before closing - self.Bind(wx.EVT_CLOSE, self.OnClose) - - # Display the GUI window and set up the map canvas - self.Show() - self.DrawGrid() - - def __set_properties(self): - # begin wxGlade: regionEditor.__set_properties - self.SetTitle("Region Editor") - self.toggleVicon.SetMinSize((50, 50)) - self.buttonCamera.SetMinSize((50, 50)) - self.toggleSquare.SetMinSize((50, 50)) - self.togglePoly.SetMinSize((50, 50)) - self.toggleDim.SetMinSize((50, 50)) - self.buttonAutobound.SetMinSize((50, 50)) - self.toggleFeedback.SetMinSize((50, 50)) - self.buttonCal.SetMinSize((50, 50)) - self.sidebar.SetMinSize((120, 400)) - self.canvas.SetMinSize((800, 400)) - self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255)) - # end wxGlade - - def __do_layout(self): - # begin wxGlade: regionEditor.__do_layout - sizer_1 = wx.BoxSizer(wx.HORIZONTAL) - grid_sizer_1 = wx.GridSizer(4, 2, 5, 5) - grid_sizer_1.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonCamera, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonAutobound, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleFeedback, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonCal, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - self.sidebar.SetSizer(grid_sizer_1) - sizer_1.Add(self.sidebar, 0, wx.EXPAND, 0) - sizer_1.Add(self.canvas, 1, wx.EXPAND, 0) - self.SetSizer(sizer_1) - sizer_1.Fit(self) - self.Layout() - # end wxGlade - - def OnClose(self, event): - """Perform cleanup tasks and close the application.""" - # Check if the closure can even be canceled - # TODO: Check if map is unsaved and ask if they want to save before closing - if not event or event.CanVeto(): - dlg = wx.MessageDialog(self, - "Do you really want to close this application?", - "Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION) - result = dlg.ShowModal() - dlg.Destroy() - if result == wx.ID_OK: - self.viconListener.stop() - # TODO: Check if vicon is indeed running, and put wait-notify - # in to close port before closing GUI - self.Destroy() - else: - self.viconListener.stop() - self.Destroy() - - def OnToggleVicon(self, event): # wxGlade: regionEditor. - # Switch Vicon streaming on or off based on state of toggle button - if self.toggleVicon.GetValue(): - self.viconListener.start() - - # TODO: Add while loop to wait for data to come in - # If it times out print message - # If data comes in, zoom out to ensure all markers seen - else: - self.viconListener.stop() - # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) - - def OnButtonCamera(self, event): # wxGlade: regionEditor. - print "Camera not yet implemented" - # TODO - event.Skip() - - def OnToggleSquare(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleSquare) - - def OnTogglePoly(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.togglePoly) - - def OnToggleDim(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleDim) - - def OnToggleFeedback(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleFeedback) - if self.toggleFeedback.GetValue(): - self.dlgFeedback = FeedbackDialog(self) - self.dlgFeedback.ShowModal() - elif self.dlgFeedback: - self.dlgFeedback.OnClose(None) - - def OnButtonCal(self, event): # wxGlade: regionEditor. - self.ResetMapToggles() - calibGUI = CalibrationFrame(self) - - def OnMenuNew(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuNew' not implemented" - event.Skip() - - def OnMenuOpen(self, event): # wxGlade: regionEditor. - # Start up save dialog - dialogOpen = wx.FileDialog(self, message="Open File", \ - defaultDir=sys.path[0], \ - defaultFile=self.fileName.split('\\').pop(), \ - wildcard="*.regions", style=wx.FD_OPEN) - - # Hit Open - if dialogOpen.ShowModal() == wx.ID_OK: - filePath = dialogOpen.GetPath() - if not os.path.exists(filePath) or not ('.regions' in filePath): - return - - # Pull all data from file into dictionary for parsing - data = fileMethods.readFromFile(filePath) - - if data is None: - return - - # Clear all current information - self.regions = [] - self.adjacent = [] - # self.bkgndImage = None - - # TODO: Uncomment when background image is included - #try: - # self.bkgndImage = data["Background"][0] - #except KeyError: - # self.bkgndImage = None - - # Set all region information from lines in file - # Each region line format is this: - # Name {ColorR ColorG ColorB} [(x1 y1) (x2 y2) ...] - for rData in data["Regions"]: - rData = re.sub('[\[\]\(\)\{\}]', '', rData) - rData = rData.split() # Separates on any whitespace - rName = rData[0] - rRGB = [] - for i in range(1, 4): # Convert colors to integers - rRGB.append(int(rData[i])) - rVerts = [] - for i in range(4, len(rData), 2): - x = float(rData[i]) - y = float(rData[i+1]) - rVerts.append(Point(x, y)) - region = Region(rVerts, rName, rgb=rRGB) - self.regions.append(region) - - # Make an empty adjacency matrix of size (nRegions) x (nRegions) - self.adjacent = [[[] for j in range(len(self.regions))] \ - for i in range(len(self.regions))] - - # Assign region transitions - # Each transition line format is this: - # Region1Idx Region2Idx [(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) ...] - for tData in data["Transitions"]: - tData = re.sub('[\[\]\(\)]', '', tData) - tData = tData.split(); # Separate on any whitespace - iReg1 = int(tData[0]) - iReg2 = int(tData[1]) - faces = [] - # All transitions between regions - for i in range(2, len(transData), 2): - iFaceReg1 = int(tData[i]) - iFaceReg2 = int(tData[i+1]) - self.adjacent[iReg1][iReg2].append((iFaceReg1, iFaceReg2)) - # Note that region file specifies transitions in both directions - # So mirroring here is unnecessary - - # Set "obstacleness" of regions - if "Obstacles" in data: - for iReg in data["Obstacles"]: - self.regions[iReg].isObstacle = True - - # Store the filename for saving - self.fileName = filePath - - # TODO: Rescale/pan map to bring full map into view - self.RedrawCanvas() - - dialogOpen.Destroy() - - def OnMenuSave(self, event): # wxGlade: regionEditor. - """Save to file that has already been used.""" - if self.fileName: - f = open(self.fileName, 'w') - f.write("# This is a region definition file for the LTLMoP " + \ - "toolkit.\n# Format details are described at the " + \ - "beginning of each section below.\n# Note that all values " + \ - "are separated by *whitespace*.\n\nBackground: # Relative " + \ - "path of background image file\n") - f.write("None\n\n") # TODO: Support for background images - f.write("Obstacles: # Indices of regions to treat as obstacles\n") - f.write("\n\n") # TODO: Support for obstacles - f.write("Regions: # Name {ColorR ColorG ColorB} " + \ - "[(x1 y1) (x2 y2) ...]\n") - if not self.boundary: - self.Autoboundary() - if self.boundary: # Check in case there were no regions - f.write(str(self.boundary) + "\n") - for reg in self.regions: - f.write(str(reg) + "\n") - f.write("\n") - f.write("Transitions: # Region1Idx Region2Idx " + \ - "[(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) " + \ - "...]\n") - for iAdj in range(len(self.adjacent)): - for jAdj, adjList in enumerate(self.adjacent[iAdj]): - if iAdj != jAdj and adjList: - line = "%d\t%d\t[" % (iAdj, jAdj) - for kAdj, adj in enumerate(adjList): - line += "(%d\t%d)" % adj - if kAdj < len(adjList) - 1: - line += "\t" - line += "]\n" - f.write(line) - f.close() - else: - self.OnMenuSaveAs(None) - - def OnMenuSaveAs(self, event): # wxGlade: regionEditor. - dialogSave = wx.FileDialog(self, message="Save File As", \ - defaultDir=sys.path[0], \ - defaultFile=self.fileName.split('\\').pop(), \ - wildcard="*.regions", style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT) - # Hit Save and confirmed overwrite if necessary - if dialogSave.ShowModal() == wx.ID_OK: - self.fileName = dialogSave.GetPath() - self.OnMenuSave(None) - dialogSave.Destroy() - - def OnMenuExit(self, event): # wxGlade: regionEditor. - self.OnClose(None) - - def OnMenuUndo(self, event): # wxGlade: regionEditor. - """Revert the most recent undoable change.""" - # Currently drawing polygon - # Note that this is not a redoable action by design - if self.polyVerts: - self.polyVerts = [] - self.polySnaps = [] - self.RedrawCanvas() - # Other undoable changes exist - elif self.undoActions: - action = self.undoActions.pop() - # Creation action - if not action.oldState: - # Single region creation - if isinstance(action.newState, Region): - self.regions.remove(action.newState) - # Map load from blank canvas - if isinstance(action.newState, list): - self.regions = [] - # TODO: Background image load from blank - # Deletion action - if not action.newState: - # Single region deletion - if isinstance(action.oldState, Region): - self.regions.append(action.oldState) - # Multiple region deletion or map clear - if isinstance(action.oldState, list): - self.regions.extend(action.oldState) - # TODO: Background image clear - # Modification action - else: - # Single region modification - if isinstance(action.oldState, Region): - idx = self.regions.index(action.newState) - self.regions[idx] = action.oldState - # Map load from non-blank canvas - if isinstance(action.oldState, list): - self.regions = action.oldState - # TODO: Background image load from other image - self.redoActions.append(action) - # TODO: if not self.undoActions: disable self.menuUndo - # TODO: enable self.menuRedo - self.RedrawCanvas() - - def OnMenuRedo(self, event): # wxGlade: regionEditor. - """Reapply most recently undone action.""" - # Redoable actions exist - if self.redoActions: - action = self.redoActions.pop() - # Creation action - if not action.oldState: - # Single region creation - if isinstance(action.newState, Region): - self.regions.append(action.newState) - # Map load from blank canvas - if isinstance(action.newState, list): - self.regions = action.newState - # TODO: Background image load from blank - # Deletion action - if not action.newState: - # Single region deletion - if isinstance(action.oldState, Region): - self.regions.remove(action.oldState) - # Multiple region deletion or map clear - if isinstance(action.oldState, list): - for reg in action.oldState: - self.regions.remove(reg) - # TODO: Background image clear - # Modification action - else: - # Single region modification - if isinstance(action.oldState, Region): - idx = self.regions.index(action.oldState) - self.regions[idx] = action.newState - # Map load from non-blank canvas - if isinstance(action.oldState, list): - self.regions = action.newState - # TODO: Background image load from other image - self.undoActions.append(action) - # TODO: if not self.redoActions: disable self.menuRedo - # TODO: enable self.menuUndo - self.RedrawCanvas() - - def OnMenuAutobound(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuAutobound' not implemented" - event.Skip() - - def OnMenuRect(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuRect' not implemented" - event.Skip() - - def OnMenuPoly(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuPoly' not implemented" - event.Skip() - - def OnMenuAddPoint(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuAddPoint' not implemented" - event.Skip() - - def OnMenuRemPoint(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuRemPoint' not implemented" - event.Skip() - - def OnMenuMarkers(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuMarkers' not implemented" - event.Skip() - - def OnMenuMarkersClear(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuMarkersClear' not implemented" - event.Skip() - - def OnMenuCamera(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuCamera' not implemented" - event.Skip() - - def OnMenuImageImport(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuImageImport' not implemented" - event.Skip() - - def OnMenuImageClear(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuImageClear' not implemented" - event.Skip() - - def OnMenuAbout(self, event): # wxGlade: regionEditor. - print "About not yet implemented" - event.Skip() - - def OnMouseLeftDown(self, event): - """Save the left click point so it can be used later.""" - self.leftClickPt, iReg, iPt, iEd = \ - self.SnapPoint(self.Pix2Map(event.GetPosition())) - - def OnMouseLeftUp(self, event): - """Perform appropriate action based on current mode of operation.""" - # Get click position - ptPix = event.GetPosition() - pt, iReg, iPt, iEd = self.SnapPoint(self.Pix2Map(ptPix)) - - # Has been handled by double-click event handler - if self.justDoubleClicked: - self.justDoubleClicked = False # Reset flag - - # Creating a rectangular region - elif self.toggleSquare.GetValue(): - # Making the second corner of rectangle - if self.polyVerts and pt.Dist(self.polyVerts[0]) > self.tolerance: - # Snap vertices to regions as necessary, not to Vicon - # This may result in a non-square region, but may be preferable - x0 = self.polyVerts[0].x - y0 = self.polyVerts[0].y - pt1, iReg1, iPt1, iEd1, snapped1 = \ - self.SnapRegions(Point(x0, pt.y)) - pt3, iReg3, iPt3, iEd3, snapped3 = \ - self.SnapRegions(Point(pt.x, y0)) - # Move clicked points if other vertices snap and they don't - if snapped1: - if iReg == -1: - pt = Point(pt.x, pt1.y) - if self.polySnaps[0][0] == -1: - self.polyVerts[0] = Point(pt1.x, self.polyVerts[0].y) - if snapped3: - if iReg == -1: - pt = Point(pt3.x, pt.y) - if self.polySnaps[0][0] == -1: - self.polyVerts[0] = Point(self.polyVerts[0].x, pt3.y) - self.polyVerts.append(pt1) - self.polyVerts.append(pt) - self.polyVerts.append(pt3) - self.polySnaps.append((iReg1, iPt1, iEd1)) - self.polySnaps.append((iReg, iPt, iEd)) - self.polySnaps.append((iReg3, iPt3, iEd3)) - # Create a square between previous click and new click - self.CreateRegion() - # Making the first corner of rectangle - else: - # Save point as first corner of square - self.polyVerts.append(pt) - self.polySnaps.append((iReg, iPt, iEd)) - - # Creating a polygonal region - elif self.togglePoly.GetValue(): - # Closing the polygon to create a region - if self.polyVerts and len(self.polyVerts) > 2 and \ - pt == self.polyVerts[0]: - self.CreateRegion() - # New point distinct from others - elif not pt in self.polyVerts: - self.polyVerts.append(pt) - self.polySnaps.append((iReg, iPt, iEd)) - # Plot line between last two points - if len(self.polyVerts) > 1: - x1pix, y1pix = self.Map2Pix(self.polyVerts[-2]) - x2pix, y2pix = self.Map2Pix(pt) - dc = wx.WindowDC(self.canvas) - dc.DrawLine(x1pix, y1pix, x2pix, y2pix) - - # Dimensioning region edge - elif self.toggleDim.GetValue(): - # First point on region to be clicked - if not self.polyVerts and iReg != -1 and iPt != -1: - # Store region and point indeces - self.polyVerts = (iReg, iPt) - # Second unique point to be clicked - elif iReg != -1 and iPt != -1 and (iReg, iPt) != self.polyVerts: - # Request dimension - currDist = self.regions[iReg].verts[iPt].Dist(self.regions[\ - self.polyVerts[0]].verts[self.polyVerts[1]]) - dimDlg = wx.TextEntryDialog(self, \ - "Current Length: %.3f" % currDist, caption='Dimension') - if dimDlg.ShowModal() == wx.ID_OK: - # Check for valid dimension (allow negative values) - try: - dim = float(dimDlg.GetValue()) - except ValueError: - dimDlg.Destroy() - return - dimDlg.Destroy() - - # Move second point along same line to specified distance - oldRegion = copy.deepcopy(self.regions[iReg]) - pt0 = self.regions[self.polyVerts[0]].verts[self.polyVerts[1]] - signx = 1.0 - signy = 1.0 - # Vertical line case - if pt0.x == pt.x: - if pt0.y > pt.y: - signy = -1.0 - dx = 0.0 - dy = signy * (dim - pt.Dist(pt0)) - # Horizontal and normal line cases - else: - if pt0.x > pt.x: - signx = -1.0 - if pt0.y > pt.y: - signy = -1.0 - slope = (pt.y - pt0.y) / (pt.x - pt0.x) - dx = signx * (dim - pt.Dist(pt0)) / \ - math.sqrt(1 + slope ** 2) - dy = slope * dx - self.regions[iReg].verts[iPt] = \ - self.regions[iReg].verts[iPt] + Point(dx, dy) - self.AddToUndo(Action(oldRegion, self.regions[iReg])) - self.polyVerts = [] - self.RecalcAdjacency(iReg) - self.RedrawCanvas() - - # Dragging region(s) or vertices - elif self.selectedRegions and \ - pt.Dist(self.leftClickPt) > self.tolerance: - self.leftClickPt, iReg, iPt, iEd, snapped = \ - self.SnapRegions(self.leftClickPt) - iRegInner = self.InsideRegions(self.leftClickPt) - - # Dragging point(s) - if iReg in self.selectedRegions and iPt != -1: - # Change point position and check adjacencies - self.regions[iReg].verts[iPt].Set(pt.x, pt.y) - self.RecalcAdjacency(iReg) - self.RedrawCanvas() - - # Dragging region(s) - elif iReg in self.selectedRegions or \ - iRegInner in self.selectedRegions: - # Change region(s) position and check adjacencies - delta = pt - self.leftClickPt - for iRegSel in self.selectedRegions: - for iPt in range(len(self.regions[iRegSel].verts)): - self.regions[iRegSel].verts[iPt] += delta - for iRegSel in self.selectedRegions: - self.RecalcAdjacency(iRegSel) - self.RedrawCanvas() - - # Panning the map view - elif pt.Dist(self.leftClickPt) > self.tolerance: - downClickPix = self.Map2Pix(self.leftClickPt) - self.canvasOffset = Point(self.canvasScale.x * \ - (downClickPix[0] - ptPix[0]) + self.canvasOffset.x, \ - self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ - self.canvasOffset.y) - self.RedrawCanvas() - - # Check if selecting or deselecting a region - else: - if iReg != -1: - iRegInner = iReg - else: - iRegInner = self.InsideRegions(pt) - - # Do something about that region selection - if iRegInner != -1: - # Selecting single region - if not event.CmdDown(): - self.selectedRegions = [] - self.selectedRegions.append(iRegInner) - - # Deselecting a region - elif iRegInner in self.selectedRegions: - self.selectedRegions.remove(iRegInner) - - # Adding a region to the selection - else: - self.selectedRegions.append(iRegInner) - - # Clear all region selections - else: - self.selectedRegions = [] - self.RedrawCanvas() - - def OnMouseLeftDClick(self, event): - """Perform action based on current mode of operation.""" - - # Set double-click flag so that next mouse-up is ignored - self.justDoubleClicked = True - - # Creating a polygonal region - if self.togglePoly.GetValue() and self.polyVerts and \ - len(self.polyVerts) > 2: - self.CreateRegion() - - # Editing a region - if self.selectedRegions and not self.toggleSquare.GetValue() and \ - not self.togglePoly.GetValue() and \ - not self.toggleDim.GetValue(): - # Unset double-click flag since event does not propagate here - self.justDoubleClicked = False - - # Edit the latest selected region - iReg = self.selectedRegions.pop() - self.selectedRegions = [] - self.selectedRegions.append(iReg) - self.EditRegion(iReg) - - - def OnMouseRightDown(self, event): - """Save the right click point so it can be used later.""" - self.rightClickPt, iReg, iPt, iEd = \ - self.SnapPoint(self.Pix2Map(event.GetPosition())) - - def OnMouseRightUp(self, event): - # Check if in region creation or dimensioning mode - if self.toggleSquare.GetValue() or self.togglePoly.GetValue() or \ - self.toggleDim.GetValue(): - self.ResetMapToggles() - # TODO: else: open some kind of right-click menu at right-click point - - def OnMouseWheel(self, event): - """Zoom on the map canvas.""" - ptPix = event.GetPosition() - rot = event.GetWheelRotation() # Usually +/- multiple of 120 - scaler = 0.75 ** (rot / 120) # Zoom in to 75% - # Keep mouse on the same point after zooming - # pt = ptPix * scale + offset - # pt = ptPix * scaleNew + offsetNew - self.canvasOffset = Point(float(ptPix[0]) * self.canvasScale.x * \ - (1 - scaler) + self.canvasOffset.x, float(ptPix[1]) * \ - self.canvasScale.y * (1 - scaler) + self.canvasOffset.y) - self.canvasScale = self.canvasScale * scaler - self.RedrawCanvas() - - def OnKeyDown(self, event): - keycode = event.GetKeyCode() - - # Backspace/Delete - Deletes selected regions - if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ - self.selectedRegions and not self.togglePoly.GetValue() and \ - not self.toggleSquare.GetValue(): - self.selectedRegions.sort() - while self.selectedRegions: - self.DeleteRegion(self.selectedRegions.pop()) - - # Backspace/Delete - Removes last set point during region creation - elif (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ - self.polyVerts: - if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): - self.polyVerts.pop() - self.polySnaps.pop() - self.RedrawCanvas() - elif self.toggleDim.GetValue(): - self.polyVerts = [] - - # Escape - Stops region/dimension creation - elif keycode == wx.WXK_ESCAPE and (self.toggleSquare.GetValue() or \ - self.togglePoly.GetValue() or self.toggleDim.GetValue()): - self.ResetMapToggles() - - # Ctrl+n - New - elif event.CmdDown() and keycode == 78: - self.OnMenuNew(None) - - # Ctrl+o - Open - elif event.CmdDown() and keycode == 79: - self.OnMenuOpen(None) - - # Ctrl+s - Save - elif event.CmdDown() and keycode == 83: - self.OnMenuSave(None) - - # Ctrl+q - Quit - elif event.CmdDown() and keycode == 81: - self.OnMenuExit(None) - - # Ctrl+z - Undo - elif event.CmdDown() and keycode == 90: - self.OnMenuUndo(None) - - # Ctrl+y - Redo - elif event.CmdDown() and keycode == 89: - self.OnMenuRedo(None) - - # Ctrl+a - Select All - elif event.CmdDown() and keycode == 65: - self.selectedRegions = range(len(self.regions)) - self.RedrawCanvas() - - # Pass event on so other key combinations still work - else: - event.Skip() - - def OnEnterWindow(self, event): - """Set the focus to the canvas to enable zooming.""" - self.canvas.SetFocus() - self.RedrawCanvas() - - def OnLeaveWindow(self, event): - """Unset the focus from the canvas to disable zooming.""" - self.SetFocus() - - def OnCanvasPaint(self, event): - """Redraw the contents of the canvas panel.""" - # Set up to draw - dc = wx.PaintDC(self.canvas) - - # Redraw - self.RedrawCanvas(dc) - event.Skip() - - def RedrawCanvas(self, dc=None): - """Redraw the contents of the canvas panel. - Callable from outside or inside EVT_PAINT handler. - - dc - Device context object for drawing to canvas. - """ - # Clear canvas - self.canvas.ClearBackground() - - # Create device context if not created - if not dc: - dc = wx.WindowDC(self.canvas) - dc = wx.GCDC(dc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() - - # Draw grid background - self.DrawGrid(dc) - - # Redraw boundary region - if self.boundary: - self.DrawRegion(self.boundary, dc, boundary=True) - - # Redraw all regions - for region in self.regions: - self.DrawRegion(region, dc=dc) - - # Redraw all transition face indicators - # Lower triangular matrix only - for iReg in range(1, len(self.adjacent)): - self.DrawAdjacencies(iReg, dc=dc) - - # Redraw all markers - self.DrawMarkers(self.markerPoses, dc=dc) - - # Redraw selection handles - for iReg in self.selectedRegions: - self.DrawSelectionHandle(iReg, dc=dc) - - # Redraw partial region - if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): - for iVert in range(len(self.polyVerts) - 1): - ptPix1 = self.Map2Pix(self.polyVerts[iVert]) - ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) - dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) - - dc.EndDrawing() - - def RedrawVicon(self): - """Redraw the contents of the canvas panel quickly, only worrying about - updating the marker positions and currently being created regions. - """ - # TODO: Save and use image of map to increase speed - self.RedrawCanvas() - - def DrawGrid(self, dc=None): - """Draw the axes and grid on the map canvas. - - dc - Device context used for drawing on the canvas panel. - """ - # Create device context if not created - isNewDC = False - if not dc: - isNewDC = True - windc = wx.WindowDC(self.canvas) - dc = wx.GCDC(windc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() - - # Draw axes - xOff = self.canvasOffset.x - yOff = self.canvasOffset.y - xPixOff = int(-xOff / self.canvasScale.x) - yPixOff = int(-yOff / self.canvasScale.y) - colLim, rowLim = self.canvas.GetSize() - dc.DrawLine(0, yPixOff, colLim, yPixOff) - dc.DrawLine(xPixOff, 0, xPixOff, rowLim) - - # TODO: Draw grid/ticks - - if isNewDC: - dc.EndDrawing() - - def DrawMarkers(self, poses, dc=None): - """Draw markers at specified global positions. - - poses - List of tuples containing positions of markers in meters - [(x, y), ...] - dc - Device context used for drawing on the canvas panel. - """ - # Create device context if not created - isNewDC = False - if not dc: - isNewDC = True - windc = wx.WindowDC(self.canvas) - dc = wx.GCDC(windc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() - - # Set up brush - #dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) - - # Draw each marker - for pose in poses: - posePix = self.Map2Pix(pose) - dc.DrawCircle(posePix[0], posePix[1], 4) - - if isNewDC: - dc.EndDrawing() - - def DrawSelectionHandle(self, iReg, dc=None): - """Draw markers indicating region(s) that have been selected by mouse. - - iReg - Index of region selected - dc - Device context used for drawing on the canvas panel - """ - # Create device context if not created - isNewDC = False - if not dc: - isNewDC = True - windc = wx.WindowDC(self.canvas) - dc = wx.GCDC(windc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() - - for pt in self.regions[iReg].verts: - ptPix = self.Map2Pix(pt) - dc.DrawCircle(ptPix[0], ptPix[1], 5) - - if isNewDC: - dc.EndDrawing() - - def DrawRegion(self, region, dc=None, isBoundary=False): - """Draw a single region. - - region - Instance of Region class, contains information about the region. - dc - Device context used for drawing on the canvas panel. - isBoundary - Boolean, true if drawing the boundary region. - """ - # Create device context if not created - isNewDC = False - if not dc: - isNewDC = True - windc = wx.WindowDC(self.canvas) - dc = wx.GCDC(windc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() - - # Set brush to region color - # Set brush to region color - if isBoundary: - dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) - elif region.isObstacle: - obstColor = wx.Colour(region.color.Red() / 10, \ - region.color.Green() / 10, region.color.Blue() / 10, 128) - dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) - else: - innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ - region.color.Blue(), 128) - dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) - dc.SetTextForeground(wx.BLACK) - dc.SetBackgroundMode(wx.TRANSPARENT) - dc.SetFont(wx.Font(12, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) - - # Set up label - if region.isObstacle: - labelText = "(%s)" % region.name - else: - labelText = region.name - labelWidth, labelHeight = dc.GetTextExtent(labelText) - - # Draw region - vertsPix = [] - xLabelPix = 0 - yLabelPix = 0 - for vert in region.verts: - vertPix = self.Map2Pix(vert) - vertsPix.append(vertPix) - if not isBoundary: # Put label in center - xLabelPix += vertPix[0] - yLabelPix += vertPix[1] - else: # Put label in lower right corner - xLabelPix = max(xLabelPix, vertPix[0]) - yLabelPix = max(yLabelPix, vertPix[1]) - dc.DrawPolygon(vertsPix) - if isBoundary: - xLabelPix = xLabelPix / len(region.verts) - labelWidth - yLabelPix = yLabelPix / len(region.verts) - labelHeight - else: - xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 - yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 - - # Draw label - dc.SetBrush(wx.Brush(region.color, wx.SOLID)) - dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ - labelWidth + 10, labelHeight + 6, 3) - dc.DrawText(labelText, xLabelPix, yLabelPix) - - if isNewDC: - dc.EndDrawing() - - def DrawAdjacencies(self, iReg, dc=None): - """Draw lines to show adjacent region faces for one region. - Uses self.regions and self.adjacent. - - iReg - Int, index of region of interest in self.regions. - dc - Device context used for drawing on the canvas panel. - """ - # Create device context if not created - if not dc: - windc = wx.WindowDC(self.canvas) - dc = wx.GCDC(windc) - self.canvas.PrepareDC(dc) - dc.BeginDrawing() - dc.SetPen(wx.Pen(wx.Colour(255, 0, 0), 3, wx.SHORT_DASH)) - - # Iterate adjacency matrix looking for shared faces for one region - # Only need to iterate through lower triangle (not counting diagonal) - # since the matrix is "symmetric" and diagonal is just region to itself - for jReg in range(iReg): - for iREdge1, iREdge2 in self.adjacent[iReg][jReg]: - # Not last edge in region - pt1 = self.regions[iReg].verts[iREdge1] - if iREdge1 < len(self.regions[iReg].verts) - 1: - pt2 = self.regions[iReg].verts[iREdge1 + 1] - # Last edge in region - else: - pt2 = self.regions[iReg].verts[0] - pt1Pix = self.Map2Pix(pt1) - pt2Pix = self.Map2Pix(pt2) - dc.DrawLine(pt1Pix[0], pt1Pix[1], pt2Pix[0], pt2Pix[1]) - - def ResetMapToggles(self, toggleStay=None): - """Clear all the other map-feature toggle buttons. - Also resets region creation. - - toggleStay - Toggle button object to retain state. - """ - # Reset region creation and clear temporary lines - self.polyVerts = [] - self.polySnaps = [] - self.RedrawCanvas() - - # Turn off all toggles and revert specified one - if toggleStay: - state = toggleStay.GetValue() - self.toggleSquare.SetValue(False) - self.togglePoly.SetValue(False) - self.toggleDim.SetValue(False) - if toggleStay: - toggleStay.SetValue(state) - - def CreateRegion(self): - """Instantiate and create a region, perform cleanup actions. - Use polyVerts and polyAdjEdges to make the region and find transitions. - """ - # Create region - rName = 'r' + str(len(self.regions)) - region = Region(self.polyVerts, rName) - self.regions.append(region) - idxNewReg = len(self.regions) - 1 - # Add row and column to list of lists of lists representing adjacency - self.adjacent.append([[] for col in xrange(len(self.adjacent))]) - for row in self.adjacent: - row.append([]) - self.AddToUndo(Action(None, region)) - # TODO: Change Undo setup so that adjacency matrix can be added with - # regions in one undo step - - self.RecalcAdjacency(idxNewReg) - - # Cleanup and draw - self.polyVerts = [] - self.polySnaps = [] - self.polyAdjEdges = [] - self.DrawRegion(region) - self.DrawAdjacencies(idxNewReg) - - def DeleteRegion(self, iReg): - """Removes region from regions list and adjacency list. - - iReg - Index of region to remove - """ - # Remove region from tracking lists - self.regions.pop(iReg) - self.adjacent.pop(iReg) - for jReg in range(len(self.regions)): - self.adjacent[jReg].pop(iReg) - - # Redraw regions - self.RedrawCanvas() - - # TODO: Add to undo - - def AddPointToRegion(self, pt, iReg, iEdge): - """Add a vertex to the region. - - pt - Point object, location of new vertex in map coordinates - Unless this is a new Point object, it is recommended that this be - a copy of the previous Point object - AddPointToRegion(copy.copy(pt), iReg, iEdge) - iRegion - Int, index of region to modify - iEdge - Int, index of the edge to replace with edges to and from pt - """ - # Add point to other region - self.regions[iReg].verts.insert(iEdge + 1, pt) - # Update all transition edges - # Loop through all regions - for jReg in range(len(self.adjacent[iReg])): - # All transitioning faces from region to others - for kPair in range(len(self.adjacent[iReg][jReg])): - thisRegFace, otherRegFace = self.adjacent[iReg][jReg][kPair] - # Transition face has index greater than affected edge - if thisRegFace > iEdge: - self.adjacent[iReg][jReg][kPair] = \ - (thisRegFace + 1, otherRegFace) - # Transition face is the affected edge - elif thisRegFace == iEdge: - self.adjacent[iReg][jReg].\ - append((thisRegFace + 1, otherRegFace)) - # All transitioning faces from other regions to this one - for kPair in range(len(self.adjacent[jReg][iReg])): - otherRegFace, thisRegFace = self.adjacent[jReg][iReg][kPair] - # Transition face has index greater than affected edge - if thisRegFace > iEdge: - self.adjacent[jReg][iReg][kPair] = \ - (otherRegFace, thisRegFace + 1) - # Transition face is the affected edge - elif thisRegFace == iEdge: - self.adjacent[jReg][iReg].\ - append((otherRegFace, thisRegFace + 1)) - - def EditRegion(self, iReg): - """Show the edit region dialog. - Allow user to change name, color, and obstacleness of a region. - - iReg - Index of region to edit - """ - # Create dialog - regEdDia = RegionEditDialog(self, wx.ID_ANY, "Edit Region Information") - - # Set appropriate control values - reg = self.regions[iReg] - regEdDia.textName.SetValue(reg.name) - regEdDia.colorPicker.SetColour(reg.color) - regEdDia.chkbxObst.SetValue(reg.isObstacle) - - # Wait for user to close the dialog - done = False - while not done: - answer = regEdDia.ShowModal() - # User canceled - if answer == wx.ID_CANCEL: - regEdDia.Destroy() - done = True - # Same name or unique new name - elif regEdDia.textName.GetValue() == reg.name or \ - regEdDia.textName.GetValue() not in \ - [r.name for r in self.regions]: - reg.name = regEdDia.textName.GetValue() - reg.color = regEdDia.colorPicker.GetColour() - reg.isObstacle = regEdDia.chkbxObst.GetValue() - regEdDia.Destroy() - done = True - # Non-unique name - needs to re-edit - else: - wx.MessageBox("Region with name \"%s\" already exists." % \ - (regEdDia.textName.GetValue()), "Error", \ - style = wx.OK | wx.ICON_ERROR) - - # Check for boundary - if reg.name.lower() == 'boundary': - self.boundary = reg - self.DeleteRegion(iReg) - - # Redraw the regions to ensure correct name/color - self.RedrawCanvas() - # TODO: Add to undo - - def RecalcAdjacency(self, iReg, iRegStart=0): - """Recalculate the adjacent walls between the specified region and - other regions. If walls or points are "close enough" to being colinear - or colocated, they will be moved so that they overlap. The saved - adjacency matrix will be updated accordingly. - - Can specify which region to start checking with so that the input - region will not check against all regions. This is useful if entire map - needs to be rechecked, it can be done so with: - - for iReg, reg in enumerate(self.regions): - self.RecalcAdjacency(iReg, iRegStart=iReg) - - This will avoid redundant checking of regions. Note that the function - will avoid checking against itself, so there is no reason to avoid - calling it on itself. - - iReg - Index of region of interest - iRegStart - Specifies to check reg against self.regions[iRegStart:] - """ - # Reset adjacency related to this region - for iOthReg in range(len(self.regions)): - self.adjacent[iReg][iOthReg] = [] - self.adjacent[iOthReg][iReg] = [] - - # Pull region for easy access - reg = self.regions[iReg] - - # Keeps track of the colocation of vertices of this region with points - # of other regions - # List of lists of tuples - # Outer list - len(vertColloc) == len(reg.verts) - # Inner list - Contains collocation information for each region vertex - # Tuple - Contains collocation information from vertex on this region - # to vertex on another region in the format: - # (iReg, iPt) - vertsColloc = [[] for iPt in xrange(len(reg.verts))] - - # Check all other regions against this region - for iOthReg in range(len(self.regions[iRegStart:])): - # No need to check against self - if iOthReg == iReg: - continue - - for iOthPt, othPt in enumerate(self.regions[iOthReg].verts): - pt, iPt, iEd, snapped = self.Snap1Region(reg, othPt) - # Other region vertex snapped to wall of new region - if iEd != -1: - # Add point to new region and update old transitions - self.AddPointToRegion(copy.copy(pt), iReg, iEd) - vertsColloc.append([]) - # Don't bother tracking point connectivity here - # Recheck it in next loop so we can look at all regions - - # Check this region against others and create new vertices as necessary - for iPt, pt in enumerate(reg.verts): - snapResults = self.SnapRegions(pt, checkAll=True) - # Process the "nearness" information - for othPt, iOthReg, iOthPt, iOthEd in snapResults: - # Ignore same region - if iOthReg == iReg: - continue - - # Change region point location - pt.Set(othPt.x, othPt.y) - - # Snapped to a point in the other region - if iOthPt != -1: - vertsColloc[iPt].append((iOthReg, iOthPt)) - # Snapped to an edge of the other region - elif iOthEd != -1: - self.AddPointToRegion(copy.copy(pt), iOthReg, iOthEd) - vertsColloc[iPt].append((iOthReg, iOthEd + 1)) - - # Now look for adjacent edges and update transition matrix accordingly - for iPt in range(len(reg.verts)): # Start point of edge - jPt = (iPt + 1) % len(reg.verts) # End point of edge - for iOthReg, iOthPt in vertsColloc[iPt]: - jOthPt1 = (iOthPt - 1) % len(self.regions[iOthReg].verts) - jOthPt2 = (iOthPt + 1) % len(self.regions[iOthReg].verts) - # Check edge on other region prior to point - if (iOthReg, jOthPt1) in vertsColloc[jPt]: - # Indicate transition from this region to other region - # from current this region side to other region side - # and reverse transition as well - self.adjacent[iReg][iOthReg].append((iPt, jOthPt1)) - self.adjacent[iOthReg][iReg].append((jOthPt1, iPt)) - # Check edge on other region after point - elif (iOthReg, jOthPt2) in vertsColloc[jPt]: - self.adjacent[iReg][iOthReg].append((iPt, iOthPt)) - self.adjacent[iOthReg][iReg].append((iOthPt, iPt)) - - def Autoboundary(self): - """Automatically create region representing the boundary of the map.""" - if self.regions: - minx, maxx, miny, maxy = self.GetMapBoundaries() - # Create region - points = [Point(minx, maxy), Point(maxx, maxy), \ - Point(maxx, miny), Point(minx, miny)] - self.boundary = Region(points, 'boundary') - else: - print "No regions defined, so no boundary created." - - def GetMapBoundaries(self): - """Find the minimum and maximum coordinates of all regions on map. - - returns None if no regions defined - returns (minX, maxX, minY, maxY) otherwise - """ - # Check that there are regions first - if self.regions: - # Find extrema of map - minx = float('inf') - maxx = float('-inf') - miny = float('inf') - maxy = float('-inf') - for reg in self.regions: - for pt in reg.verts: - minx = min(minx, pt.x) - maxx = max(maxx, pt.x) - miny = min(miny, pt.y) - maxy = max(maxy, pt.y) - - return minx, maxx, miny, maxy - else: - return None - - def AddToUndo(self, action): - """Add specified action to the undo queue. - - action - Action object to be added - """ - # Note that this is only called when doing a new action, - # not when redoing since this clears the redo buffer - self.undoActions.append(action) - while len(self.undoActions) > self.unredoBufLen: - self.undoActions.popleft() - self.redoActions.clear() - # TODO: enable self.menuUndo - - def SnapPoint(self, pt): - """Snap the point to any nearby Vicon or region point. - - pt - Point object, map coordinates of point - returns - (snappedPt, idxRegion, idxRPoint, idxREdge) - snappedPt - Point object, point after snapping - idxRegion - int, index of region if snapped to region point/edge - if not snapped to region it will be -1 - idxRPoint - int, index of point in region.verts if snapped to point - if not snapped to point it will be -1 - idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] - if not snapped to edge it will be -1 - """ - # TODO: Make menubar checkbox to disable/enable snapto - # Check through all region points and edges first - # (since Vicon points may be moving around) - snapped = False - pt, idxRegion, idxRPoint, idxREdge, snapped = \ - self.SnapRegions(pt, snapped=snapped) - - # Check points in current region creation - # Only snap to vertices - # Don't count this for iRegion or iRPoint - pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped=snapped) - - # Check all Vicon points - pt, idxMarker, snapped = self.SnapVicon(pt, snapped) - - # Only return region indices, since they are usually all that matter - return pt, idxRegion, idxRPoint, idxREdge - - def SnapRegions(self, pt, checkAll=False, snapped=False): - """Snap the point to any sufficiently "nearby" region vertex or wall. - - pt - Point object, map coordinates of point - checkAll - Boolean, true if this function should check the point - against all regions, even if it has already snapped to one - snapped - Boolean, true if point has snapped already, false if not - If point is already snapped, this function will just return - returns - - If checkAll is true, then the return will be a list containing - tuples in the format (snappedPt, idxRegion, idxRPoint, idxREdge), - where each entry is as described below. If there is no snapping - then the list will be empty. - If checkAll is false, then a single tuple will be returned: - (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) - snappedPt - Point object, point after snapping - idxRegion - int, index of region if snapped to region point/edge - if not snapped to region it will be -1 - idxRPoint - int, index of point in region.verts if snapped to point - if not snapped to point it will be -1 - idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] - if not snapped to edge it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a region point or edge - """ - # Initialize output - if not checkAll: - idxRegion = -1 - idxRPoint = -1 - idxREdge = -1 - else: - output = [] - - # Check through regions - i = len(self.regions) - 1 # Region decrementer - while (checkAll or not snapped) and i >= 0: - pt, idxRPoint, idxREdge, snapped = \ - self.Snap1Region(self.regions[i], pt, \ - snapped=(not checkAll and snapped)) - if idxRPoint != -1 or idxREdge != -1: - idxRegion = i - if checkAll: - output.append((pt, idxRegion, idxRPoint, idxREdge)) - i -= 1 - - if not checkAll: - return pt, idxRegion, idxRPoint, idxREdge, snapped - else: - return output - - def Snap1Region(self, region, pt, snapped=False): - """Snap the point to any sufficiently "nearby" region vertex or wall - in the specified region. - - region - Region object, region of interest - pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not - If point is already snapped, this function will just return - returns - (snappedPt, idxRPoint, idxREdge, snapped) - snappedPt - Point object, point after snapping - idxRPoint - int, index of point in region.verts if snapped to point - if not snapped to point it will be -1 - idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] - if not snapped to edge it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a region point or edge - """ - idxRPoint = -1 - idxREdge = -1 - # Check first point - chkPt = region.verts[0] - if (not snapped) and pt.Dist(chkPt) < self.tolerance: - pt = chkPt - snapped = True - idxRPoint = 0 - j = 1 # Region point incrementer - while (not snapped) and j < len(region.verts): - # Check next point - chkPt = region.verts[j] - if pt.Dist(chkPt) < self.tolerance: - pt = chkPt - snapped = True - idxRPoint = j - # Check edge between previous and just-checked point - else: - p0 = region.verts[j - 1] - p1 = chkPt - chkPt = self.ProjPtOnLine(pt, p0, p1) - # Check that projected point is on finite line and close - if pt.Dist(chkPt) < self.tolerance and \ - chkPt.x <= max(p0.x, p1.x) and \ - chkPt.x >= min(p0.x, p1.x) and \ - chkPt.y <= max(p0.y, p1.y) and \ - chkPt.y >= min(p0.y, p1.y): - pt = chkPt - snapped = True - idxREdge = j - 1 - j += 1 - # Check last edge - if not snapped: - p0 = region.verts[j - 1] - p1 = region.verts[0] - chkPt = self.ProjPtOnLine(pt, p0, p1) - if pt.Dist(chkPt) < self.tolerance and \ - chkPt.x <= max(p0.x, p1.x) and \ - chkPt.x >= min(p0.x, p1.x) and \ - chkPt.y <= max(p0.y, p1.y) and \ - chkPt.y >= min(p0.y, p1.y): - pt = chkPt - snapped = True - idxREdge = j - 1 - - return pt, idxRPoint, idxREdge, snapped - - def SnapPoly(self, pt, snapped=False): - """Snap the point to any vertex in the currently being created region - if it is sufficiently "nearby". - - pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not - If point is already snapped, this function will just return - returns - (snappedPt, idxPoint, snapped) - snappedPt - Point object, point after snapping - idxPoint - int, index of point in self.polyVerts if snapped to it - if not snapped to point it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a polygon point - """ - idxPoint = -1 - i = 0 # Misc point incrementer - while (not snapped) and i < len(self.polyVerts): - chkPt = self.polyVerts[i] - if pt.Dist(chkPt) < self.tolerance: - pt = chkPt - idxPoint = i - snapped = True - i += 1 - - return pt, idxPoint, snapped - - def SnapVicon(self, pt, snapped): - """Snap the point to any saved Vicon marker position if it is - sufficiently "nearby". - - pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not - If point is already snapped, this function will just return - returns - (snappedPt, idxMarker, snapped) - snappedPt - Point object, point after snapping - idxMarker - int, index of point in self.markerPoses if snapped - if not snapped to point it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a Vicon point - """ - idxMarker = -1 - i = 0 # Vicon point incrementer - while (not snapped) and i < len(self.markerPoses): - chkPt = self.markerPoses[i] - if pt.Dist(chkPt) < self.tolerance: - pt = chkPt - idxMarker = i - snapped = True - i += 1 - - return pt, idxMarker, snapped - - def InsideRegions(self, pt): - """Find region containing point. Looks through regions on top first - (those that were created later). - - pt - Point, point of interest - returns - int, index of containing region, or -1 if none - """ - iReg = -1 - i = len(self.regions) - 1 - while iReg == -1 and i >= 0: - if self.regions[i].PtInRegion(pt): - iReg = i - i -= 1 - - return iReg - - def Map2Pix(self, pose): - """Convert from map coordinates to pixel coordinates. - - pose - Point, map coordinates of point - returns - Tuple, pixel coordinates in canvas panel (col, row) - """ - col = int((pose.x - self.canvasOffset.x) / self.canvasScale.x) - row = int((pose.y - self.canvasOffset.y) / self.canvasScale.y) - return (col, row) - - def Pix2Map(self, pixPose): - """Convert from pixel coordinates to map coordinates. - - pixPose - Tuple, pixel coordinates in canvas panel (col, row) - returns - Point, map coordinates of point - """ - x = float(pixPose[0]) * self.canvasScale.x + self.canvasOffset.x - y = float(pixPose[1]) * self.canvasScale.y + self.canvasOffset.y - return Point(x, y) - - def ProjPtOnLine(self, pt, p0, p1): - """Find the projection of a point on an infinite line. - - pt - Point object, point to be projected. - p1 - Point object, one endpoint of line. - p2 - Point object, other endpoint of line. - returns - Point object, projected point on line. - """ - s = p1 - p0 # Vector to project on (p0 is origin) - v = pt - p0 # Vector to point to project - u = (v.Dot(s) / s.Dot(s)) * s # Projected vector - return p0 + u # Map back to global coordinates - def OnButtonAutobound(self, event): # wxGlade: regionEditor. - print "Event handler `OnButtonAutobound' not implemented" - event.Skip() - -# end of class RegionEditor - - -class FeedbackDialog(wx.Dialog): - def __init__(self, *args, **kwds): - # begin wxGlade: FeedbackDialog.__init__ - kwds["style"] = wx.DEFAULT_DIALOG_STYLE - wx.Dialog.__init__(self, *args, **kwds) - self.buttonPrev = wx.Button(self, -1, "Previous") - self.buttonPick = wx.Button(self, -1, "Select") - self.buttonNext = wx.Button(self, -1, "Next") - self.chkbxIterate = wx.CheckBox(self, -1, "Automatically iterate points when marker is in position") - self.radioboxOption = wx.RadioBox(self, -1, "Feedback Method", choices=["Speech", "Beeping"], majorDimension=1, style=wx.RA_SPECIFY_ROWS) - self.chkbxMute = wx.CheckBox(self, -1, "Mute") - - self.__set_properties() - self.__do_layout() - - self.Bind(wx.EVT_BUTTON, self.OnButtonPrev, self.buttonPrev) - self.Bind(wx.EVT_BUTTON, self.OnButtonPick, self.buttonPick) - self.Bind(wx.EVT_BUTTON, self.OnButtonNext, self.buttonNext) - # end wxGlade - - # Add close event handler to cleanup before closing - self.Bind(wx.EVT_CLOSE, self.OnClose) - - # Save reference to RegionEditor GUI - if len(args) > 0: - self.parent = args[0] - else: - print "Warning: FeedbackDialog will not work without " + \ - "reference to RegionEditor GUI as first parameter." - self.parent = None - - # Track current point - self.chkbxIterate.SetValue(True) - self.currReg = 0 - self.currPt = 0 - - # Start audio feedback thread - self.feedbackThread = AudioFeedbackThread(self, self.parent) - self.feedbackThread.start() - - def __set_properties(self): - # begin wxGlade: FeedbackDialog.__set_properties - self.SetTitle("Marker Placement") - self.buttonPrev.SetMinSize((50, 50)) - self.buttonPick.SetMinSize((50, 50)) - self.buttonNext.SetMinSize((50, 50)) - self.chkbxIterate.SetValue(1) - self.radioboxOption.SetSelection(0) - # end wxGlade - - def __do_layout(self): - # begin wxGlade: FeedbackDialog.__do_layout - sizerOuter = wx.BoxSizer(wx.VERTICAL) - sizerOptions = wx.BoxSizer(wx.VERTICAL) - sizerButtons = wx.BoxSizer(wx.HORIZONTAL) - sizerButtons.Add(self.buttonPrev, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerButtons.Add(self.buttonPick, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerButtons.Add(self.buttonNext, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerOuter.Add(sizerButtons, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizerOptions.Add(self.chkbxIterate, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerOptions.Add(self.radioboxOption, 0, wx.ALL | wx.EXPAND, 5) - sizerOptions.Add(self.chkbxMute, 0, wx.ALL, 5) - sizerOuter.Add(sizerOptions, 1, wx.EXPAND, 0) - self.SetSizer(sizerOuter) - sizerOuter.Fit(self) - self.Layout() - # end wxGlade - - def OnClose(self, event): - """Perform cleanup tasks and close the feedback dialog.""" - self.feedbackThread.stop() - self.parent.toggleFeedback.SetValue(False) - # TODO: Add wait/notify to make sure thread ended - self.Destroy() - - def OnButtonPrev(self, event): # wxGlade: FeedbackDialog. - """Move back to previous point.""" - # Not first point in region - if self.currPt > 0: - self.currPt -= 1 - # First point in region - else: - # Not first region - if self.currReg > 0: - self.currReg -= 1 - # First region - else: - self.currReg = len(self.parent.regions) - 1 - self.currPt = len(self.parent.regions[self.currReg].verts) - 1 - - def OnButtonPick(self, event): # wxGlade: FeedbackDialog. - #self.parent.Raise() - print "Select not yet implemented." - - def OnButtonNext(self, event): # wxGlade: FeedbackDialog. - """Move on to next point.""" - # Not last point in region - if self.currPt < len(self.parent.regions[self.currReg].verts) - 1: - self.currPt += 1 - # Last point in region - else: - # Not last region - if self.currReg < len(self.parent.regions) - 1: - self.currReg += 1 - # Last region - else: - self.currReg = 0 - self.currPt = 0 -# end of class FeedbackDialog - -class RegionEditDialog(wx.Dialog): - def __init__(self, *args, **kwds): - # begin wxGlade: RegionEditDialog.__init__ - kwds["style"] = wx.DEFAULT_DIALOG_STYLE - wx.Dialog.__init__(self, *args, **kwds) - self.label_1 = wx.StaticText(self, -1, "Name: ") - self.textName = wx.TextCtrl(self, -1, "") - self.label_2 = wx.StaticText(self, -1, "Color: ") - self.colorPicker = wx.ColourPickerCtrl(self, -1) - self.chkbxObst = wx.CheckBox(self, -1, "Treat as obstacle") - self.buttonOk = wx.Button(self, wx.ID_OK, "OK") - self.buttonCancel = wx.Button(self, wx.ID_CANCEL, "Cancel") - - self.__set_properties() - self.__do_layout() - # end wxGlade - - def __set_properties(self): - # begin wxGlade: RegionEditDialog.__set_properties - self.SetTitle("Edit Region") - self.colorPicker.SetMinSize((40, 40)) - # end wxGlade - - def __do_layout(self): - # begin wxGlade: RegionEditDialog.__do_layout - sizer_2 = wx.BoxSizer(wx.VERTICAL) - sizer_5 = wx.BoxSizer(wx.HORIZONTAL) - sizer_4 = wx.BoxSizer(wx.HORIZONTAL) - sizer_3 = wx.BoxSizer(wx.HORIZONTAL) - sizer_3.Add(self.label_1, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_3.Add(self.textName, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_2.Add(sizer_3, 1, wx.EXPAND, 0) - sizer_4.Add(self.label_2, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_4.Add(self.colorPicker, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_2.Add(sizer_4, 1, wx.EXPAND, 0) - sizer_2.Add(self.chkbxObst, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_5.Add(self.buttonOk, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_5.Add(self.buttonCancel, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 8) - sizer_2.Add(sizer_5, 1, wx.EXPAND, 0) - self.SetSizer(sizer_2) - sizer_2.Fit(self) - self.Layout() - # end wxGlade -# end of class RegionEditDialog - -class CalibrationFrame(wx.Frame): - def __init__(self, *args, **kwds): - # begin wxGlade: CalibrationFrame.__init__ - kwds["style"] = wx.DEFAULT_FRAME_STYLE - wx.Frame.__init__(self, *args, **kwds) - - # Menu Bar - self.calibFrame_menubar = wx.MenuBar() - self.filemenu = wx.Menu() - self.menuReset = wx.MenuItem(self.filemenu, wx.NewId(), "Reset", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuReset) - self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuSave) - self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuExit) - self.calibFrame_menubar.Append(self.filemenu, "File") - self.editmenu = wx.Menu() - self.menuUndo = wx.MenuItem(self.editmenu, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) - self.editmenu.AppendItem(self.menuUndo) - self.menuRedo = wx.MenuItem(self.editmenu, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) - self.editmenu.AppendItem(self.menuRedo) - self.editmenu.AppendSeparator() - self.menuSelectAll = wx.MenuItem(self.editmenu, wx.NewId(), "Select All", "", wx.ITEM_NORMAL) - self.editmenu.AppendItem(self.menuSelectAll) - self.menuClearAll = wx.MenuItem(self.editmenu, wx.NewId(), "Clear All Points", "", wx.ITEM_NORMAL) - self.editmenu.AppendItem(self.menuClearAll) - self.calibFrame_menubar.Append(self.editmenu, "Edit") - self.toolsmenu = wx.Menu() - self.menuShowMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Show Markers", "", wx.ITEM_CHECK) - self.toolsmenu.AppendItem(self.menuShowMarkers) - self.menuClearMarkers = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) - self.toolsmenu.AppendItem(self.menuClearMarkers) - self.toolsmenu.AppendSeparator() - self.menuLoadImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Load Image", "", wx.ITEM_NORMAL) - self.toolsmenu.AppendItem(self.menuLoadImage) - self.menuDimen = wx.MenuItem(self.toolsmenu, wx.NewId(), "Dimension Image", "", wx.ITEM_NORMAL) - self.toolsmenu.AppendItem(self.menuDimen) - self.menuClearImage = wx.MenuItem(self.toolsmenu, wx.NewId(), "Clear Image", "", wx.ITEM_NORMAL) - self.toolsmenu.AppendItem(self.menuClearImage) - self.calibFrame_menubar.Append(self.toolsmenu, "Tools") - self.helpmenu = wx.Menu() - self.menuHowTo = wx.MenuItem(self.helpmenu, wx.NewId(), "How To Use", "", wx.ITEM_NORMAL) - self.helpmenu.AppendItem(self.menuHowTo) - self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) - self.helpmenu.AppendItem(self.menuAbout) - self.calibFrame_menubar.Append(self.helpmenu, "Help") - self.SetMenuBar(self.calibFrame_menubar) - # Menu Bar end - self.sidebar = wx.Panel(self, -1) - self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Markers") - self.buttonImage = wx.Button(self.sidebar, -1, "Image") - self.toggleAddPoint = wx.ToggleButton(self.sidebar, -1, "Point +") - self.toggleDeletePoint = wx.ToggleButton(self.sidebar, -1, "Point -") - self.textEnterPointX = wx.TextCtrl(self.sidebar, -1, "") - self.textEnterPointY = wx.TextCtrl(self.sidebar, -1, "") - self.buttonEnterPoint = wx.Button(self.sidebar, wx.ID_OK, "OK") - self.toggleDimen = wx.ToggleButton(self.sidebar, -1, "Dimen.") - self.map = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - self.ref = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - - self.__set_properties() - self.__do_layout() - - self.Bind(wx.EVT_MENU, self.OnMenuReset, self.menuReset) - self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) - self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) - self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) - self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) - self.Bind(wx.EVT_MENU, self.OnMenuSelectAll, self.menuSelectAll) - self.Bind(wx.EVT_MENU, self.OnMenuClearAll, self.menuClearAll) - self.Bind(wx.EVT_MENU, self.OnMenuShowMarkers, self.menuShowMarkers) - self.Bind(wx.EVT_MENU, self.OnMenuClearMarkers, self.menuClearMarkers) - self.Bind(wx.EVT_MENU, self.OnMenuLoadImage, self.menuLoadImage) - self.Bind(wx.EVT_MENU, self.OnMenuDimen, self.menuDimen) - self.Bind(wx.EVT_MENU, self.OnMenuClearImage, self.menuClearImage) - self.Bind(wx.EVT_MENU, self.OnMenuHowTo, self.menuHowTo) - self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) - self.Bind(wx.EVT_BUTTON, self.OnButtonImage, self.buttonImage) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleAddPoint, self.toggleAddPoint) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDeletePoint, self.toggleDeletePoint) - self.Bind(wx.EVT_BUTTON, self.OnButtonEnterPoint, id=wx.ID_OK) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDimen, self.toggleDimen) - # end wxGlade - - # Check that regionEditor object was passed in correctly - if len(args) > 0 and isinstance(args[0], regionEditor): - self.parent = args[0] - if not self.parent.regions: - print "No regions defined. Exiting calibration." - self.Destroy() - else: - print "No regionEditor object passed in. Exiting calibration." - self.Destroy() - - # Bind mouse events - self.map.Bind(wx.EVT_LEFT_DOWN, self.OnMapMouseLeftDown, self.map) - self.map.Bind(wx.EVT_LEFT_UP, self.OnMapMouseLeftUp, self.map) - self.map.Bind(wx.EVT_MOUSEWHEEL, self.OnMapMouseWheel, self.map) - self.map.Bind(wx.EVT_ENTER_WINDOW, self.OnMapEnterWindow, self.map) - self.map.Bind(wx.EVT_LEAVE_WINDOW, self.OnMapLeaveWindow, self.map) - self.ref.Bind(wx.EVT_LEFT_DOWN, self.OnRefMouseLeftDown, self.ref) - self.ref.Bind(wx.EVT_LEFT_UP, self.OnRefMouseLeftUp, self.ref) - self.ref.Bind(wx.EVT_MOUSEWHEEL, self.OnRefMouseWheel, self.ref) - self.ref.Bind(wx.EVT_ENTER_WINDOW, self.OnRefEnterWindow, self.ref) - self.ref.Bind(wx.EVT_LEAVE_WINDOW, self.OnRefLeaveWindow, self.ref) - - # Bind keyboard events - self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) - self.map.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.map) - self.ref.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.ref) - - # Add close event handler to cleanup before closing - self.Bind(wx.EVT_CLOSE, self.OnClose) - - # Determine mapping of the map panel to the field - # Avoid difficulties by having same scale for x and y - mapLen = self.map.GetSize() # Initial size of map panel (pixels) - # Initial range of field (xmin, xmax, ymin, ymax) - xmin, xmax, ymin, ymax = self.parent.GetMapBoundaries() - # pose = pixPose * scale + offset - # Note: y-pixels and y-pose have opposite directions - xScale = (xmax - xmin) / float(mapLen[0]) - yScale = (ymax - ymin) / float(mapLen[1]) - maxScale = max(xScale, yScale) - xOffset = xmin+(float(mapLen[0]) * maxScale - (xmax - xmin)) / 2 - yOffset = ymax+(float(mapLen[1]) * maxScale - (ymax - ymin)) / 2 - self.mapScale = Point(maxScale, -maxScale) - self.mapOffset = Point(xOffset, yOffset) - # Determine initial mapping of the reference panel to the field - # Initially defines a 1:1 mapping (at least scale/offset-wise) to map - refLen = self.ref.GetSize() # Initial size of reference panel (pixels) - xScale = (xmax - xmin) / float(refLen[0]) - yScale = (ymax - ymin) / float(refLen[1]) - maxScale = max(xScale, yScale) - xOffset = xmin+(float(refLen[0]) * maxScale - (xmax - xmin)) / 2 - yOffset = ymax+(float(refLen[1]) * maxScale - (ymax - ymin)) / 2 - self.refScale = Point(maxScale, -maxScale) - self.refOffset = Point(xOffset, yOffset) - - # Calibration-related parameters - self.calibPoints = [] # List of lists of Points - # matching map to reference positions - # [[mapPt1, refPt1], [mapPt2, refPt2], ...] - self.newCalibPt = [None, None] # List of two points - # for creating new calibration points - # [mapNewPt, refNewPt] - - # Mouse-related parameters - self.mapLeftClickPt = Point(0.0, 0.0) - self.refLeftClickPt = Point(0.0, 0.0) - self.selectedPoints = [] # Points that have been selected by mouse - tolerance = 5.0 # Pixel tolerance to consider "same point" - self.mapTolerance = tolerance * self.mapScale.x - self.refTolerance = tolerance * self.refScale.x - - # Set up for undo/redo capabilities - # TODO: Disable self.menuUndo and self.menuRedo - self.unredoBufLen = 50 - self.undoActions = collections.deque() - self.redoActions = collections.deque() - - # Create Vicon listener - self.markerPoses = [] # Marker positions to be drawn - self.viconListener = ViconMarkerListener(self) - - # Display the GUI window and set up the map canvas - self.Show() - self.RedrawMap() - - - def __set_properties(self): - # begin wxGlade: CalibrationFrame.__set_properties - self.SetTitle("Map Calibration") - self.SetBackgroundColour(wx.Colour(240, 240, 240)) - self.toggleVicon.SetMinSize((50, 50)) - self.buttonImage.SetMinSize((50, 50)) - self.toggleAddPoint.SetMinSize((50, 50)) - self.toggleDeletePoint.SetMinSize((50, 50)) - self.textEnterPointX.SetMinSize((40, 25)) - self.textEnterPointX.SetToolTipString("x") - self.textEnterPointY.SetMinSize((40, 25)) - self.textEnterPointY.SetToolTipString("y") - self.buttonEnterPoint.SetMinSize((25, 25)) - self.toggleDimen.SetMinSize((50, 50)) - self.sidebar.SetMinSize((110, 245)) - self.map.SetMinSize((600, 300)) - self.map.SetBackgroundColour(wx.Colour(255, 255, 255)) - self.ref.SetMinSize((600, 300)) - self.ref.SetBackgroundColour(wx.Colour(255, 255, 255)) - # end wxGlade - - def __do_layout(self): - # begin wxGlade: CalibrationFrame.__do_layout - sizer_6 = wx.BoxSizer(wx.HORIZONTAL) - sizer_7 = wx.BoxSizer(wx.VERTICAL) - sizer_8 = wx.BoxSizer(wx.VERTICAL) - sizer_11 = wx.BoxSizer(wx.HORIZONTAL) - sizer_10 = wx.BoxSizer(wx.HORIZONTAL) - sizer_9 = wx.BoxSizer(wx.HORIZONTAL) - sizer_9.Add(self.toggleVicon, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_9.Add(self.buttonImage, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_9, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_10.Add(self.toggleAddPoint, 0, wx.RIGHT | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizer_10.Add(self.toggleDeletePoint, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_10, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_11.Add(self.textEnterPointX, 0, wx.ALIGN_CENTER_VERTICAL, 0) - sizer_11.Add(self.textEnterPointY, 0, wx.ALIGN_CENTER_VERTICAL, 0) - sizer_11.Add(self.buttonEnterPoint, 0, wx.ALIGN_RIGHT | wx.ALIGN_CENTER_VERTICAL, 0) - sizer_8.Add(sizer_11, 1, wx.TOP | wx.BOTTOM | wx.EXPAND, 5) - sizer_8.Add(self.toggleDimen, 0, wx.TOP | wx.BOTTOM | wx.ALIGN_CENTER_VERTICAL, 5) - self.sidebar.SetSizer(sizer_8) - sizer_6.Add(self.sidebar, 0, 0, 0) - sizer_7.Add(self.map, 1, wx.BOTTOM | wx.EXPAND, 3) - sizer_7.Add(self.ref, 1, wx.TOP | wx.EXPAND, 3) - sizer_6.Add(sizer_7, 1, wx.EXPAND, 0) - self.SetSizer(sizer_6) - sizer_6.Fit(self) - self.Layout() - # end wxGlade - - def OnClose(self, event): - """Perform cleanup tasks and close the application.""" - self.viconListener.stop() - self.Destroy() - - def OnMenuReset(self, event): # wxGlade: CalibrationFrame. - """Clear all calibration points, background images, and markers.""" - self.OnMenuClearMarkers(None) - self.OnMenuClearImage(None) - self.OnMenuClearAll(None) - - def OnMenuSave(self, event): # wxGlade: CalibrationFrame. - """Performs calibration on regions using calibration points to - calculate a transformation matrix that includes rotation. Moves all the - region points as appropriate, then close this GUI.""" - # Check that sufficient number of calibration points have been defined - if len(self.calibPoints) < 3: - msg = "Calibration requires that at least 3 calibration " + \ - "points are defined. Please define more points." - notifyDialog = wx.MessageDialog(self, msg, \ - style=wx.OK|wx.ICON_EXCLAMATION|wx.STAY_ON_TOP) - notifyDialog.ShowModal() - notifyDialog.Destroy() - return - - # Put calibration points into desired format - mapPts = numpy.mat([self.calibPoints[0][0].x, \ - self.calibPoints[0][0].y]).T - regPts = numpy.mat([self.calibPoints[0][1].x, \ - self.calibPoints[0][1].y]).T - for ptPair in self.calibPoints: - mapPts = numpy.hstack([mapPts, \ - numpy.mat([ptPair[0].x, ptPair[0].y]).T]) - regPts = numpy.hstack([regPts, \ - numpy.mat([ptPair[1].x, ptPair[1].y]).T]) - - # Get tranformation matrix such that - # regPt = T * mapPt - T = _transformations.affine_matrix_from_points(mapPts, regPts) - - # Apply transformation to all region points - # TODO: Add this to undo in regionEditor somehow - for reg in self.parent.regions: - for pt in reg.verts: - ptMat = numpy.mat([pt.x, pt.y, 1.0]).T - newPtMat = T * ptMat - pt.Set(float(newPtMat[0]), float(newPtMat[1])) - if self.parent.boundary: - for pt in self.parent.boundary.verts: - ptMat = numpy.mat([pt.x, pt.y, 1.0]).T - newPtMat = T * ptMat - pt.Set(float(newPtMat[0]), float(newPtMat[1])) - self.parent.RedrawCanvas() - - # Quit calibration - self.OnClose(None) - - def OnMenuExit(self, event): # wxGlade: CalibrationFrame. - self.OnClose(None) - - def OnMenuUndo(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuUndo' not implemented!" - event.Skip() - - def OnMenuRedo(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuRedo' not implemented!" - event.Skip() - - def OnMenuSelectAll(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuSelectAll' not implemented!" - event.Skip() - - def OnMenuClearAll(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuClearAll' not implemented!" - event.Skip() - - def OnMenuShowMarkers(self, event): # wxGlade: CalibrationFrame. - # Switch Vicon streaming on or off based on state of menu checkbox - if self.menuShowMarkers.IsChecked(): - self.toggleVicon.SetValue(True) - self.viconListener.start() - else: - self.viconListener.stop() - # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) - self.toggleVicon.SetValue(False) - - def OnMenuClearMarkers(self, event): # wxGlade: CalibrationFrame. - if self.menuShowMarkers.IsChecked(): - self.toggleVicon.SetValue(False) - self.menuShowMarkers.Check(False) - self.viconListener.stop() - self.viconListener = ViconMarkerListener(self) - time.sleep(0.1) - self.markerPoses = [] - self.RedrawVicon() - - def OnMenuLoadImage(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuLoadImage' not implemented!" - event.Skip() - - def OnMenuDimen(self, event): # wxGlade: CalibrationFrame. - print "OnMenuDimen" - event.Skip() - - def OnMenuClearImage(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuClearImage' not implemented!" - event.Skip() - - def OnMenuHowTo(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuHowTo' not implemented!" - event.Skip() - - def OnMenuAbout(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnMenuAbout' not implemented!" - event.Skip() - - def OnToggleVicon(self, event): # wxGlade: CalibrationFrame. - # Switch Vicon streaming on or off based on state of toggle button - if self.toggleVicon.GetValue(): - self.menuShowMarkers.Check(True) - self.viconListener.start() - else: - self.viconListener.stop() - # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) - self.menuShowMarkers.Check(False) - - def OnButtonImage(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnButtonImage' not implemented!" - event.Skip() - - def OnToggleAddPoint(self, event): # wxGlade: CalibrationFrame. - self.ResetToggles(toggleKeep=self.toggleAddPoint) - # TODO: When menu items are added for add point, flip on here - - def OnToggleDeletePoint(self, event): # wxGlade: CalibrationFrame. - self.ResetToggles(toggleKeep=self.toggleDeletePoint) - # TODO: When menu items are added for delete point, flip on here - - def OnButtonEnterPoint(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnButtonEnterPoint' not implemented" - event.Skip() - - def OnToggleDimen(self, event): # wxGlade: CalibrationFrame. - print "Event handler `OnToggleDimen' not implemented" - event.Skip() - - def OnMapMouseLeftDown(self, event): - """Save downclick point on map for future use.""" - self.mapLeftClickPt, iCalibPt, iReg = \ - self.SnapPointMap(self.MapPix2M(event.GetPosition())) - - def OnMapMouseLeftUp(self, event): - """React to the finalization of the left click on the map.""" - ptPix = event.GetPosition() - pt, iCalibPt, iReg = \ - self.SnapPointMap(self.MapPix2M(ptPix)) - - # Creating a calibration point - if self.toggleAddPoint.GetValue() and iCalibPt == -1: - # First point clicked for adding new point - if not self.newCalibPt[1]: - self.newCalibPt[0] = pt - self.RedrawMap() - - # Finalizing calibration point (second point clicked) - else: - self.calibPoints.append([pt, self.newCalibPt[1]]) - self.newCalibPt = [None, None] - self.Redraw() - - # Removing a calibration point - elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: - self.calibPoints.pop(iCalibPt) - self.Redraw() - - # Panning the map view - elif pt.Dist(self.mapLeftClickPt) > self.mapTolerance: - downClickPix = self.MapM2Pix(self.mapLeftClickPt) - self.mapOffset = Point(self.mapScale.x * \ - (downClickPix[0] - ptPix[0]) + self.mapOffset.x, \ - self.mapScale.y * (downClickPix[1] - ptPix[1]) + \ - self.mapOffset.y) - self.RedrawMap() - - def OnMapMouseWheel(self, event): - """Zoom on the map.""" - ptPix = event.GetPosition() - rot = event.GetWheelRotation() # Usually +/- multiple of 120 - scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll - # Keep mouse on the same point after zooming - # pt = ptPix * scale + offset - # pt = ptPix * scaleNew + offsetNew - self.mapOffset = Point(float(ptPix[0]) * self.mapScale.x * \ - (1 - scaler) + self.mapOffset.x, float(ptPix[1]) * \ - self.mapScale.y * (1 - scaler) + self.mapOffset.y) - self.mapScale = self.mapScale * scaler - self.RedrawMap() - - def OnMapEnterWindow(self, event): - """Set focus on map to enable zooming.""" - self.map.SetFocus() - self.RedrawMap() - - def OnMapLeaveWindow(self, event): - """Return focus to main GUI.""" - self.SetFocus() - - def OnRefMouseLeftDown(self, event): - """Save downclick point on reference panel for future use.""" - self.refLeftClickPt, iCalibPt, iReg = \ - self.SnapPointMap(self.RefPix2M(event.GetPosition())) - - def OnRefMouseLeftUp(self, event): - """React to the finalization of the left click on the map.""" - ptPix = event.GetPosition() - pt, iCalibPt = \ - self.SnapPointRef(self.RefPix2M(ptPix)) - - # Creating a calibration point - if self.toggleAddPoint.GetValue() and iCalibPt == -1: - # First point clicked for adding new point - if not self.newCalibPt[0]: - self.newCalibPt[1] = pt - self.RedrawMap() - - # Finalizing calibration point (second point clicked) - else: - self.calibPoints.append([self.newCalibPt[0], pt]) - self.newCalibPt = [None, None] - self.Redraw() - - # Removing a calibration point - elif self.toggleDeletePoint.GetValue() and iCalibPt != -1: - self.calibPoints.pop(iCalibPt) - self.Redraw() - - # Panning the reference view - elif pt.Dist(self.refLeftClickPt) > self.refTolerance: - downClickPix = self.RefM2Pix(self.refLeftClickPt) - self.refOffset = Point(self.refScale.x * \ - (downClickPix[0] - ptPix[0]) + self.refOffset.x, \ - self.refScale.y * (downClickPix[1] - ptPix[1]) + \ - self.refOffset.y) - self.RedrawRef() - - def OnRefMouseWheel(self, event): - """Zoom on the reference panel.""" - ptPix = event.GetPosition() - rot = event.GetWheelRotation() # Usually +/- multiple of 120 - scaler = 0.75 ** (rot / 120) # Zoom in to 75% per scroll - # Keep mouse on the same point after zooming - # pt = ptPix * scale + offset - # pt = ptPix * scaleNew + offsetNew - self.refOffset = Point(float(ptPix[0]) * self.refScale.x * \ - (1 - scaler) + self.refOffset.x, float(ptPix[1]) * \ - self.refScale.y * (1 - scaler) + self.refOffset.y) - self.refScale = self.refScale * scaler - self.RedrawRef() - - def OnRefEnterWindow(self, event): - """Set focus on reference panel to enable zooming.""" - self.ref.SetFocus() - self.RedrawRef() - - def OnRefLeaveWindow(self, event): - """Return focus to main GUI.""" - self.SetFocus() - - def OnKeyDown(self, event): - print "OnKeyDown" - event.Skip() - - def Redraw(self): - """Redraw map and reference panels.""" - self.RedrawMap() - self.RedrawRef() - - def RedrawMap(self): - """Redraw the map panel.""" - # Clear map - self.map.ClearBackground() - - # Create device context - windc = wx.WindowDC(self.map) - dc = wx.GCDC(windc) - self.map.PrepareDC(dc) - dc.BeginDrawing() - - # Redraw boundary region - if self.parent.boundary: - self.DrawRegion(self.boundary, dc=dc, boundary=True) - - # Redraw all regions - for region in self.parent.regions: - self.DrawRegion(region, dc=dc) - - # Draw calibration points - for iPtPair, ptPair in enumerate(self.calibPoints): - self.DrawCalibPoint(self.MapM2Pix(ptPair[0]), str(iPtPair), dc) - - # Draw single point from currently being made calibration point - if self.newCalibPt[0]: - self.DrawCalibPoint(self.MapM2Pix(self.newCalibPt[0]), "", dc) - - dc.EndDrawing() - - def RedrawRef(self): - """Redraw the reference panel.""" - # Clear ref - self.ref.ClearBackground() - - # Create device context - windc = wx.WindowDC(self.ref) - dc = wx.GCDC(windc) - self.ref.PrepareDC(dc) - dc.BeginDrawing() - - # TODO: Draw background image - - # Draw calibration points - for iPtPair, ptPair in enumerate(self.calibPoints): - self.DrawCalibPoint(self.RefM2Pix(ptPair[1]), str(iPtPair), dc) - - # Draw single point from currently being made calibration point - if self.newCalibPt[1]: - self.DrawCalibPoint(self.RefM2Pix(self.newCalibPt[1]), "", dc) - - # Draw markers - dc.SetBrush(wx.Brush(wx.Colour(255, 255, 255, 128), wx.SOLID)) - dc.SetPen(wx.Pen(wx.Colour(0, 0, 0, 125), 1, wx.SOLID)) - for pt in self.markerPoses: - ptPix = self.RefM2Pix(pt) - dc.DrawCircle(ptPix[0], ptPix[1], 4) - - dc.EndDrawing() - - def RedrawVicon(self): - # TODO: Redraw saved image of background since it is faster and - # vicon needs to be redrawn at a high frequency - self.RedrawRef() - - def DrawRegion(self, region, dc, isBoundary=False): - """Draw a single region. - - region - Instance of Region class, contains information about the region. - dc - Device context used for drawing on the panel. - isBoundary - Boolean, true if drawing the boundary region. - """ - # Set brush to region color - if isBoundary: - dc.SetBrush(wx.Brush(region.color, wx.TRANSPARENT)) - elif region.isObstacle: - obstColor = wx.Colour(region.color.Red() / 10, \ - region.color.Green() / 10, region.color.Blue() / 10, 128) - dc.SetBrush(wx.Brush(obstColor, wx.SOLID)) - else: - innerColor = wx.Colour(region.color.Red(), region.color.Green(), \ - region.color.Blue(), 128) - dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - dc.SetPen(wx.Pen(region.color, 1, wx.SOLID)) - dc.SetTextForeground(wx.BLACK) - dc.SetBackgroundMode(wx.TRANSPARENT) - dc.SetFont(wx.Font(10, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) - - # Set up label - if region.isObstacle: - labelText = "(%s)" % region.name - else: - labelText = region.name - labelWidth, labelHeight = dc.GetTextExtent(labelText) - - # Draw region - vertsPix = [] - xLabelPix = 0 - yLabelPix = 0 - for vert in region.verts: - vertPix = self.MapM2Pix(vert) - vertsPix.append(vertPix) - if not isBoundary: # Put label in center - xLabelPix += vertPix[0] - yLabelPix += vertPix[1] - else: # Put label in lower right corner - xLabelPix = max(xLabelPix, vertPix[0]) - yLabelPix = max(yLabelPix, vertPix[1]) - dc.DrawPolygon(vertsPix) - if isBoundary: - xLabelPix = xLabelPix / len(region.verts) - labelWidth - yLabelPix = yLabelPix / len(region.verts) - labelHeight - else: - xLabelPix = xLabelPix / len(region.verts) - labelWidth / 2 - yLabelPix = yLabelPix / len(region.verts) - labelHeight / 2 - - # Draw label - dc.SetBrush(wx.Brush(region.color, wx.SOLID)) - dc.DrawRoundedRectangle(xLabelPix - 5, yLabelPix - 3, \ - labelWidth + 10, labelHeight + 6, 3) - dc.DrawText(labelText, xLabelPix, yLabelPix) - - def DrawCalibPoint(self, ptPix, label, dc): - """Draw a single calibration point. - - ptPix - Point to draw with coordinates in pixels - label - String to label point with - usually point index - If label is empty, point will be drawn in a differnt color - dc - Device context that allows for drawing - """ - # Draw circle - radius = 5 - if label: - innerColor = wx.RED - else: - innerColor = wx.GREEN - dc.SetBrush(wx.Brush(innerColor, wx.SOLID)) - dc.SetPen(wx.Pen(wx.BLACK, 1, wx.SOLID)) - dc.DrawCircle(ptPix[0], ptPix[1], radius) - - # Draw label - if label: - dc.SetTextForeground(wx.BLACK) - dc.SetBackgroundMode(wx.TRANSPARENT) - dc.SetFont(wx.Font(8, wx.FONTFAMILY_SWISS, wx.NORMAL, wx.BOLD, False)) - labelWidth, labelHeight = dc.GetTextExtent(label) - xLabelPix = ptPix[0] - radius - yLabelPix = ptPix[1] - radius - dc.DrawText(label, xLabelPix, yLabelPix) - - def ResetToggles(self, toggleKeep=None): - """Unpress toggle buttons except that specified. Reset calibration - point creation. Redraw the panels. - - toggleKeep - Toggle button to retain the value of - """ - # Reset toggles - valueKeep = toggleKeep.GetValue() - self.toggleAddPoint.SetValue(False) - self.toggleDeletePoint.SetValue(False) - self.toggleDimen.SetValue(False) - toggleKeep.SetValue(valueKeep) - - # Reset partial calibration point creation - self.newCalibPt = [None, None] - - # Redraw the map and reference panels - self.Redraw() - - def SnapPointMap(self, pt): - """Snap the point to the closest calibration point, region vertex, or - region edge from the map panel. - - pt - Point to snap in absolute coordinates - returns - (snappedPt, idxCalibPt, idxReg) - snappedPt - Point after snapping, in absolute coordinates - idxCalibPt - Index of snapped-to calibration point - (-1 if not snapped to calibration point) - idxReg - Index of region snapped-to (-1 if not snapped to region) - """ - # Check calibration points first - snapped = False - pt, idxCalibPt, snapped = \ - self.SnapCalibPoints(pt, 0, snapped=snapped) - - # Check regions next - pt, idxReg, idxRPoint, idxREdge, snapped = \ - self.parent.SnapRegions(pt, snapped=snapped) - - return pt, idxCalibPt, idxReg - - def SnapPointRef(self, pt): - """Snap the point to the closest calibration point or marker from the - reference panel. - - pt - Point to snap in absolute coordinates - returns - (snappedPt, iCalibPt, iReg) - snappedPt - Point after snapping, in absolute coordinates - idxCalibPt - Index of snapped-to calibration point - (-1 if not snapped to calibration point) - """ - # Check calibration points first - snapped = False - pt, idxCalibPt, snapped = \ - self.SnapCalibPoints(pt, 1, snapped=snapped) - - # Check marker points next - pt, snapped = self.SnapVicon(pt, snapped=snapped) - - return pt, idxCalibPt - - def SnapCalibPoints(self, pt, idxPanel, snapped=False): - """Snap the point to the first sufficiently close calibration point in - the specified panel. - - pt - Point to be snapped in absolute coordinates - idxPanel - 0 indicating map panel, 1 indicating reference panel - snapped - Boolean, whether point has been snapped already - If snapped was true in input, then function will immediately - return, setting the same value to the output snapped - returns - (snappedPt, idxCalibPt, snapped) - snappedPt - Point after snapping, in absolute coordinates - idxCalibPt - Index of snapped-to calibration point - (-1 if not snapped to calibration point) - snapped - Boolean indicating if the point has ever been snapped - """ - # Set tolerance in absolute coordinates - if idxPanel == 0: - tol = self.mapTolerance - else: - tol = self.refTolerance - - # Check through all calibration points until snapping - idxCalibPt = -1 - iCPt = len(self.calibPoints) - 1 - while not snapped and iCPt > -1: - if pt.Dist(self.calibPoints[iCPt][idxPanel]) < tol: - pt = self.calibPoints[iCPt][idxPanel] - idxCalibPt = iCPt - snapped = True - iCPt -= 1 - - return pt, idxCalibPt, snapped - - def SnapVicon(self, pt, snapped=False): - """Snap the given point to any sufficiently close marker point. - - pt - Point to be snapped, in absolute coordinates - snapped - Boolean, indicates if point has already been snapped - If snapped was true in input, then function will immediately - return, setting the same value to the output snapped - returns - (snappedPt, snapped) - snappedPt - Point after snapping - snapped - Boolean, indicates if point has ever been snapped - """ - # Check all points until snapped - iVPt = 0 - while not snapped and iVPt < len(self.markerPoses): - if pt.Dist(self.markerPoses[iVPt]) < self.refTolerance: - pt = self.markerPoses[iVPt] - snapped = True - iVPt += 1 - - return pt, snapped - - def MapM2Pix(self, pose): - """Convert from absolute (meter) coordinates to pixel coordinates for - the map panel. - - pose - Point, absolute coordinates of point - returns - Tuple, pixel coordinates in canvas panel (col, row) - """ - col = int((pose.x - self.mapOffset.x) / self.mapScale.x) - row = int((pose.y - self.mapOffset.y) / self.mapScale.y) - return (col, row) - - def MapPix2M(self, pixPose): - """Convert from pixel coordinates to absolute (meter) coordinates for - the map panel. - - pixPose - Tuple, pixel coordinates in canvas panel (col, row) - returns - Point, absolute coordinates of point - """ - x = float(pixPose[0]) * self.mapScale.x + self.mapOffset.x - y = float(pixPose[1]) * self.mapScale.y + self.mapOffset.y - return Point(x, y) - - def RefM2Pix(self, pose): - """Convert from absolute (meter) coordinates to pixel coordinates for - the reference panel. - - pose - Point, absolute coordinates of point - returns - Tuple, pixel coordinates in canvas panel (col, row) - """ - col = int((pose.x - self.refOffset.x) / self.refScale.x) - row = int((pose.y - self.refOffset.y) / self.refScale.y) - return (col, row) - - def RefPix2M(self, pixPose): - """Convert from pixel coordinates to absolute (meter) coordinates for - the reference panel. - - pixPose - Tuple, pixel coordinates in canvas panel (col, row) - returns - Point, absolute coordinates of point - """ - x = float(pixPose[0]) * self.refScale.x + self.refOffset.x - y = float(pixPose[1]) * self.refScale.y + self.refOffset.y - return Point(x, y) -# end of class CalibrationFrame - -class Region: - def __init__(self, points, name, rgb=None): - """Create an object to represent a region. - - points - List of Points containing vertex information - [Point(x1, y1), Point(x2, y2), ...] - name - String defining region name - rgb - List of integers defining color - [red, green, blue], each with value in range [0 255] - """ - # TODO: Add convex/concave - self.verts = points - self.name = name - if not rgb: - rgb = [random.randint(0, 255), random.randint(0, 255), \ - random.randint(0,255)] - self.color = wx.Colour(rgb[0], rgb[1], rgb[2]) - self.isObstacle = False - - def __str__(self): - """Representation of object.""" - s = "%s\t{%03d\t%03d\t%03d}\t[" % (self.name, self.color.Red(), \ - self.color.Green(), self.color.Blue()) - for iPt, pt in enumerate(self.verts): - s += str(pt) - if iPt < len(self.verts) - 1: - s += "\t" - s += "]" - return s - - def PtInRegion(self, pt): - """Check if a point is inside of the region. - Algorithm taken from C# version of Solution 1 from - http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ - - pt - Point to check - returns - Boolean, True if the point is inside of the region - """ - result = False - n = len(self.verts) - for i in range(n): - j = (i + 1) % n - if ((self.verts[j].y <= pt.y and pt.y < self.verts[i].y) or \ - (self.verts[i].y <= pt.y and pt.y < self.verts[j].y)) and \ - pt.x < (self.verts[i].x - self.verts[j].x) * \ - (pt.y - self.verts[j].y) / \ - (self.verts[i].y - self.verts[j].y) + self.verts[j].x: - result = not result - return result -# end of class Region - - -class Action: - def __init__(self, oldState, newState): - """Create an object that represents an (un/re)doable action. - - oldState - Previous state of the affected object(s) - newState - Changed state of the affected object(s) - - These arguments will usually be one or more regions that were changed. - An argument of "None" indicates either creation or deletion. - """ - self.oldState = oldState - self.newState = newState -# end of class Action - - -class Point: - def __init__(self, x, y): - """Create an object that allows floating point vector operations. - - x - Float, first coordinate of point - y - Float, second coordinate of point - """ - if isinstance(x, float) and isinstance(y, float): - self.x = x - self.y = y - else: - raise TypeError('\'Point\' creation takes only \'float\' values') - - def __str__(self): - """Representation of object.""" - return '(%.3f\t%.3f)' % (self.x, self.y) - - def __hash__(self): - """Hashtable representation of object.""" - tup = (self.x, self.y) - return tup.__hash__() - - def __eq__(self, other): - """Checks equality (self == other).""" - return isinstance(other, Point) and self.x == other.x and self.y == other.y - - def __ne__(self, other): - """Checks non-equality (self != other).""" - return not self.__eq__(other) - - def __add__(self, other): - """Addition operator (self + other).""" - if isinstance(other, Point): - return Point(self.x + other.x, self.y + other.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(self.x + other[0], self.y + other[1]) - else: - raise TypeError('cannot add \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __radd__(self, other): - """Right addition operator (other + self).""" - return self.__add__(other) - - def __sub__(self, other): - """Subtraction operator (self - other).""" - if isinstance(other, Point): - return Point(self.x - other.x, self.y - other.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(self.x - other[0], self.y - other[1]) - else: - raise TypeError('cannot subtract \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __rsub__(self, other): - """Right subtraction operator (other - self).""" - if isinstance(other, Point): - return Point(other.x - self.x, other.y - self.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(other[0] - self.x, other[1] - self.y) - else: - raise TypeError('cannot subtract \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __mul__(self, other): - """Multiplication operator (self * other).""" - if isinstance(other, float): - return Point(self.x * other, self.y * other) - else: - raise TypeError('cannot multiply \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __rmul__(self, other): - """Right multiplication operator (other * self).""" - return self.__mul__(other) - - def __div__(self, other): - """Division operator (self / other).""" - if isinstance(other, float): - return Point(self.x / other, self.y / other) - else: - raise TypeError('cannot divide \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __truediv__(self, other): - """True division operator.""" - return self.__div__(other) - - def Set(self, x, y): - """Change the value of the point.""" - self.x = x - self.y = y - - def Dot(self, other): - """Dot product.""" - if isinstance(other, Point): - return self.x * other.x + self.y * other.y - elif isinstance(other, tuple) and len(other) == 2: - return self.x * other[0] + self.y * other[1] - else: - raise TypeError('cannot compute dot product of \'Point\' and \'' + \ - other.__class__.__name__ + '\' object') - - def Dist(self, other): - """Euclidean distance from this point to the other.""" - if isinstance(other, Point): - return math.sqrt((self.x - other.x) ** 2 + \ - (self.y - other.y) ** 2) - elif isinstance(other, tuple) and len(other) == 2: - return math.sqrt((self.x - other[0]) ** 2 + \ - (self.y - other[1]) ** 2) - else: - raise TypeError('cannot compute distance from \'Point\' to \'' + \ - other.__class__.__name__ + '\' object') - - def Norm(self): - """Length of the vector.""" - return math.sqrt(self.x ** 2 + self.y ** 2) -# end of class Point - - -class ViconMarkerListener(threading.Thread): - def __init__(self, parent): - """Create the a socket to receive Vicon data.""" - super(ViconMarkerListener, self).__init__() - - # Communication parameters - self.parent = parent # regionEditor or CalibrationFrame - self.addr = ("0.0.0.0", 7500) - self.bufsize = 65536 - self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - self.lock = threading.Lock() - self.close = threading.Event() - self.updateFreq = 20 # Hz - - # Tracking parameters - # TODO: Set all paremeters in configuration of GUI - self.minDist = 0.01 # Distance to move to qualify as movement - self.maxDist = 0.1 # Qualified as new point - self.movMaxTime = 15 * self.updateFreq # (sec)*(Hz) - # Iterations during which marker is not moving - # before stopping tracking - self.invMaxTime = 1 * self.updateFreq # (sec)*(Hz) - # Iterations during which marker is not found - # before stopping tracking - - # Tracking containers - self.oldPoses = [] # Previous marker positions - self.movingPoses = [] # Markers that are moving - self.movingTimeout = [] # Iterations left before movement timeout - self.invisTimeout = [] # Iteractions left before not-found timeout - - def run(self): - """Open the socket to start communication. Process messages.""" - # Open socket for communication - self.udpSock.bind(self.addr) - - # Receive communication until stopped - self.close.clear() - delay = 1 / self.updateFreq - while not self.close.isSet(): - self.lock.acquire() - data = self.udpSock.recv(self.bufsize) - self.lock.release() - self.ProcessData(data) - time.sleep(delay) - - # Close socket - self.udpSock.close() - self.oldPoses = [] - self.movingPoses = [] - self.movingTimeout = [] - self.invisTimeout = [] - - def stop(self): - """Close the socket to end UDP communication.""" - self.close.set() - - # Deserialize and save data - def ProcessData(self, data): - """Extract marker positions and pass them on to be mapped. - - data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] - """ - # Check for valid data (not null or incomplete) - if data and len(data)%16 == 0: - poses = [] - for i in range(0, len(data), 16): - x, y = struct.unpack('dd', data[i:i+16]) - poses.append(Point(x, y)) - # Save and plot marker positions - # Both regionEditor GUI and CalibrationFrame GUI have - # markerPoses field and RedrawVicon method - self.parent.markerPoses = poses - self.UpdateMovingMarkers(poses) - self.parent.RedrawVicon() # Force map redraw - - def UpdateMovingMarkers(self, poses): - """Note which markers are newly moving and update position of old - moving markers based on change in position from previous list. - - poses - List of Points, marker positions. - """ - # Not first time through - if self.oldPoses: - # Check all currently tracked markers first - for iMarker, markerPose in enumerate(self.movingPoses): - closestIdx = self.FindClosest(poses, markerPose) - closestDist = markerPose.Dist(poses[closestIdx]) - # Same marker - if closestDist < self.maxDist: - self.invisTimeout[iMarker] = self.invMaxTime - # Is moving - if closestDist > self.minDist: - self.movingTimeout[iMarker] = self.movMaxTime + 1 - self.movingPoses[iMarker] = poses[closestIdx] - # Marker not seen - else: - self.invisTimeout[iMarker] -= 1 - self.movingTimeout[iMarker] -= 1 - # Marker has stopped moving or not been seen for some time - if self.invisTimeout[iMarker] == 0 or \ - self.movingTimeout[iMarker] == 0: - self.invisTimeout.pop(iMarker) - self.movingTimeout.pop(iMarker) - self.movingPoses.pop(iMarker) - # Check through all new markers next - for markerPose in poses: - closestIdx = self.FindClosest(self.oldPoses, markerPose) - closestDist = markerPose.Dist(self.oldPoses[closestIdx]) - # Point is moving - if closestDist < self.maxDist and closestDist > self.minDist: - self.movingPoses.append(markerPose) - self.movingTimeout.append(self.movMaxTime) - self.invisTimeout.append(self.invMaxTime) - self.oldPoses = poses - - def FindClosest(self, points, target): - """Find the closest point to the target. - - points - List of Points, marker positions. - target - Point, point to find marker closest to. - returns - Integer, index of closest point in points. - """ - # Iterate through all points - minDist = float('inf') - minIdx = 0 - for i, pt in enumerate(points): - dist = target.Dist(pt) - if dist < minDist: - minIdx = i - minDist = dist - return minIdx -# end of class ViconMarkerListener - - -class AudioFeedbackThread(threading.Thread): - def __init__(self, feedbackDialog, regEditor): - """Create audio feedback for marker placement. - - fbDia - Dialog box that specifies the point of interest. - regEd - RegionEditor GUI that gets Vicon information. - """ - super(AudioFeedbackThread, self).__init__() - - # Save other objects - self.fbDia = feedbackDialog - self.regEd = regEditor - - # Non-audio parameters - self.close = threading.Event() - self.tolerance = 0.10 # Close-enough distance (m) - self.maxDist = 2.5 # Points must be within this to react (m) - - # Audio parameters for beeping - # Chosen for audibility at distance - # TODO: Make modifiable by configuration file - minFreq = 600 # Lowest frequency played (Hz) - maxFreq = 7000 # Highest frequency played (Hz) - updateFreq = 2.0 # Frequency of possible sound change (Hz) - self.duration = int(1000.0 / updateFreq) - - # Audio parameters for text-to-speech - self.engine = pyttsx.init() - self.engine.setProperty('rate', 120) - self.engine.setProperty('volume', 1.0) - self.speechFormat = "X %.1f, Y %.1f" - self.speechPause = 1.0 # Pause between voice commands - - # Calculate the line representing the distance-frequency mapping - self.freqSlope = (minFreq - maxFreq) / (self.maxDist - self.tolerance) - self.freqIntercept = maxFreq - self.tolerance * self.freqSlope - - def run(self): - """Play sound based on distance of moving marker to goal point.""" - self.close.clear() - while not self.close.isSet(): - soundOption = self.fbDia.radioboxOption.GetSelection() - if not self.fbDia.chkbxMute.GetValue(): - # Get distance from closest marker to point of interest - intPt = self.regEd.regions[self.fbDia.currReg].\ - verts[self.fbDia.currPt] - minStatDistToPt = 2.0 * self.maxDist - for statPt in self.regEd.markerPoses: - if not statPt in self.regEd.viconListener.movingPoses: - minStatDistToPt = min(minStatDistToPt, intPt.Dist(statPt)) - - # Get distance from closest moving point to point of interest - minDistToPt = 2.0 * self.maxDist - minPtIdx = -1 - for iPt, movPt in \ - enumerate(self.regEd.viconListener.movingPoses): - dist = intPt.Dist(movPt) - if dist < minDistToPt: - minDistToPt = dist - minPtIdx = iPt - - # Plot moving point and goal point - dc = wx.WindowDC(self.regEd.canvas) - dc.SetBrush(wx.Brush(wx.Colour(255, 0, 0, 100), wx.SOLID)) - posePix = self.regEd.Map2Pix(intPt) - dc.DrawCircle(posePix[0], posePix[1], 8) - if minPtIdx > -1 and minPtIdx < \ - len(self.regEd.viconListener.movingPoses): - posePix = self.regEd.Map2Pix(\ - self.regEd.viconListener.movingPoses[minPtIdx]) - dc.DrawCircle(posePix[0], posePix[1], 8) - - # Close-enough - if minDistToPt < self.tolerance or \ - minStatDistToPt < self.tolerance: - # Marker is settled - if minStatDistToPt < self.tolerance or self.regEd.\ - viconListener.movingTimeout[minPtIdx] < \ - self.regEd.viconListener.movMaxTime: - # Play "success" sound to indicate done with point - if soundOption: - time.sleep(0.2) - winsound.Beep(600, 200) - winsound.Beep(1200, 200) - winsound.Beep(1800, 200) - time.sleep(0.2) - else: - self.engine.say("Success, next") - self.engine.runAndWait() - time.sleep(self.speechPause) - # Switch to next point of interest if checked - if self.fbDia.chkbxIterate.GetValue(): - self.fbDia.OnButtonNext(None) - # TODO: Check if all points are in correct spots - # and stop if done - - # Marker not yet settled - else: - # Play "good" sound to signal "stop moving marker" - if soundOption: - time.sleep(0.2) - winsound.Beep(1200, 200) - winsound.Beep(1200, 200) - time.sleep(0.2) - else: - self.engine.say("Stop there") - self.engine.runAndWait() - time.sleep(self.speechPause) - - # Still within distance of effect - elif minDistToPt < self.maxDist: - if soundOption: - freq = int(self.freqIntercept + self.freqSlope * \ - minDistToPt) - winsound.Beep(freq, self.duration) - else: - diffPt = intPt - self.regEd.viconListener.\ - movingPoses[minPtIdx] - self.engine.say(self.speechFormat % \ - (diffPt.x, diffPt.y)) - self.engine.runAndWait() - time.sleep(self.speechPause) - - def stop(self): - """Signal for the thread to end.""" - self.engine.stop() - self.close.set() - - -if __name__ == "__main__": - app = wx.PySimpleApp(0) - wx.InitAllImageHandlers() - if len(sys.argv) > 1: - regEd = regionEditor(None, -1, sys.argv[1]) - else: - regEd = regionEditor(None, -1) - app.SetTopWindow(regEd) - app.MainLoop() diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py.bak b/src/RegionEditorFiles/NewRegionEditor/regionEditor.py.bak deleted file mode 100644 index 3bd75d59..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditor.py.bak +++ /dev/null @@ -1,1700 +0,0 @@ -#!/usr/bin/env python -# -*- coding: iso-8859-15 -*- -# generated by wxGlade 0.6.5 (standalone edition) on Mon Feb 13 13:09:57 2012 - -import os -import sys -import collections -import time -import math -import wx -import threading -import socket -import struct -import copy -import winsound -import pyttsx - -# begin wxGlade: extracode -# end wxGlade - -class regionEditor(wx.Frame): - def __init__(self, *args, **kwds): - # begin wxGlade: regionEditor.__init__ - kwds["style"] = wx.DEFAULT_FRAME_STYLE - wx.Frame.__init__(self, *args, **kwds) - - # Menu Bar - self.RegionEditor_menubar = wx.MenuBar() - self.filemenu = wx.Menu() - self.menuNew = wx.MenuItem(self.filemenu, wx.NewId(), "New", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuNew) - self.menuOpen = wx.MenuItem(self.filemenu, wx.NewId(), "Open", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuOpen) - self.menuSave = wx.MenuItem(self.filemenu, wx.NewId(), "Save", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuSave) - self.menuSaveAs = wx.MenuItem(self.filemenu, wx.NewId(), "Save As", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuSaveAs) - self.menuExit = wx.MenuItem(self.filemenu, wx.NewId(), "Exit", "", wx.ITEM_NORMAL) - self.filemenu.AppendItem(self.menuExit) - self.RegionEditor_menubar.Append(self.filemenu, "File") - self.menuEdit = wx.Menu() - self.menuUndo = wx.MenuItem(self.menuEdit, wx.NewId(), "Undo", "", wx.ITEM_NORMAL) - self.menuEdit.AppendItem(self.menuUndo) - self.menuRedo = wx.MenuItem(self.menuEdit, wx.NewId(), "Redo", "", wx.ITEM_NORMAL) - self.menuEdit.AppendItem(self.menuRedo) - self.RegionEditor_menubar.Append(self.menuEdit, "Edit") - self.menuDrawing = wx.Menu() - self.menuAutobound = wx.MenuItem(self.menuDrawing, wx.NewId(), "Autoboundary", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuAutobound) - self.menuRect = wx.MenuItem(self.menuDrawing, wx.NewId(), "Rectangle", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuRect) - self.menuPoly = wx.MenuItem(self.menuDrawing, wx.NewId(), "Polygon", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuPoly) - self.menuAddPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Add Point", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuAddPoint) - self.menuRemPoint = wx.MenuItem(self.menuDrawing, wx.NewId(), "Remove Point", "", wx.ITEM_NORMAL) - self.menuDrawing.AppendItem(self.menuRemPoint) - self.RegionEditor_menubar.Append(self.menuDrawing, "Drawing") - self.menuView = wx.Menu() - self.menuMarkers = wx.MenuItem(self.menuView, wx.NewId(), "Markers", "", wx.ITEM_CHECK) - self.menuView.AppendItem(self.menuMarkers) - self.menuMarkersClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Markers", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuMarkersClear) - self.menuCamera = wx.MenuItem(self.menuView, wx.NewId(), "Camera Capture", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuCamera) - self.menuImageImport = wx.MenuItem(self.menuView, wx.NewId(), "Import Background Image", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuImageImport) - self.menuImageClear = wx.MenuItem(self.menuView, wx.NewId(), "Clear Background Image", "", wx.ITEM_NORMAL) - self.menuView.AppendItem(self.menuImageClear) - self.RegionEditor_menubar.Append(self.menuView, "View") - self.helpmenu = wx.Menu() - self.menuAbout = wx.MenuItem(self.helpmenu, wx.NewId(), "About", "", wx.ITEM_NORMAL) - self.helpmenu.AppendItem(self.menuAbout) - self.RegionEditor_menubar.Append(self.helpmenu, "Help") - self.SetMenuBar(self.RegionEditor_menubar) - # Menu Bar end - self.sidebar = wx.Panel(self, -1) - self.toggleVicon = wx.ToggleButton(self.sidebar, -1, "Vicon") - self.buttonCamera = wx.Button(self.sidebar, -1, "Camera") - self.toggleSquare = wx.ToggleButton(self.sidebar, -1, "Square") - self.togglePoly = wx.ToggleButton(self.sidebar, -1, "Polygon") - self.toggleDim = wx.ToggleButton(self.sidebar, -1, "Dimen.") - self.toggleFeedback = wx.ToggleButton(self.sidebar, -1, "Feedback") - self.buttonCal = wx.Button(self.sidebar, -1, "Calibrate") - self.canvas = wx.Panel(self, -1, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL) - - self.__set_properties() - self.__do_layout() - - self.Bind(wx.EVT_MENU, self.OnMenuNew, self.menuNew) - self.Bind(wx.EVT_MENU, self.OnMenuOpen, self.menuOpen) - self.Bind(wx.EVT_MENU, self.OnMenuSave, self.menuSave) - self.Bind(wx.EVT_MENU, self.OnMenuSaveAs, self.menuSaveAs) - self.Bind(wx.EVT_MENU, self.OnMenuExit, self.menuExit) - self.Bind(wx.EVT_MENU, self.OnMenuUndo, self.menuUndo) - self.Bind(wx.EVT_MENU, self.OnMenuRedo, self.menuRedo) - self.Bind(wx.EVT_MENU, self.OnMenuAutobound, self.menuAutobound) - self.Bind(wx.EVT_MENU, self.OnMenuRect, self.menuRect) - self.Bind(wx.EVT_MENU, self.OnMenuPoly, self.menuPoly) - self.Bind(wx.EVT_MENU, self.OnMenuAddPoint, self.menuAddPoint) - self.Bind(wx.EVT_MENU, self.OnMenuRemPoint, self.menuRemPoint) - self.Bind(wx.EVT_MENU, self.OnMenuMarkers, self.menuMarkers) - self.Bind(wx.EVT_MENU, self.OnMenuMarkersClear, self.menuMarkersClear) - self.Bind(wx.EVT_MENU, self.OnMenuCamera, self.menuCamera) - self.Bind(wx.EVT_MENU, self.OnMenuImageImport, self.menuImageImport) - self.Bind(wx.EVT_MENU, self.OnMenuImageClear, self.menuImageClear) - self.Bind(wx.EVT_MENU, self.OnMenuAbout, self.menuAbout) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) - self.Bind(wx.EVT_BUTTON, self.OnButtonCamera, self.buttonCamera) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePoly, self.togglePoly) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleDim, self.toggleDim) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleFeedback, self.toggleFeedback) - self.Bind(wx.EVT_BUTTON, self.OnButtonCal, self.buttonCal) - # end wxGlade - - # Handle input - if len(args) > 2 and isinstance(args[2], str): - self.fileName = os.path.join(os.getcwd(), args[2]) - else: - self.fileName = "" - - # Bind mouse events - self.canvas.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown, self.canvas) - self.canvas.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp, self.canvas) - #self.canvas.Bind(wx.EVT_LEFT_DCLICK, self.OnMouseLeftDClick, self.canvas) - self.canvas.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown, self.canvas) - self.canvas.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp, self.canvas) - self.canvas.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel, self.canvas) - self.canvas.Bind(wx.EVT_ENTER_WINDOW, self.OnEnterWindow, self.canvas) - self.canvas.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow, self.canvas) - - # Bind keyboard events - self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self) - self.canvas.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self.canvas) - - # Determine mapping of the canvas panel to the field - canvasLen = self.canvas.GetSize() # Initial size of canvas (pixels) - fieldRange = [(-3.0, 9.0), (-3.0, 3.0)] # Initial range of field (m) - # [(xmin, xmax), (ymin, ymax)] - # pose = pixPose * scale + offset - # Note: y-pixels and y-pose have opposite directions - xScale = (fieldRange[0][1] - fieldRange[0][0]) / float(canvasLen[0]) - xOffset = fieldRange[0][0] - yScale = -(fieldRange[1][1] - fieldRange[1][0]) / float(canvasLen[1]) - yOffset = -fieldRange[1][0] - self.canvasScale = Point(xScale, yScale) - self.canvasOffset = Point(xOffset, yOffset) - - # Set up for region creation - self.regions = [] # List of regions in the map - self.adjacent = [] # List of lists holding transition - # edges between regions. - # adjacent[i][j] contains a list of - # indices of edges in region i that - # connect to edges in region j. - # adjacent[j][i] should contain a - # list of the same length, but edge - # indices are for region j. - # adjacent[i][i] will be empty. - self.leftClickPt = Point(0.0, 0.0) # Location of last left downclick - self.rightClickPt = Point(0.0, 0.0) # Location of last right downclick - self.tolerance = 5.0 * xScale # Distance to consider as "same point" (m) - self.polyVerts = [] # Keeps points for region creation - # and dimensioning - # Region creation: [Point(x0,y0), ...] - # Dimensioning: (idxRegion, idxVert) - self.polySnaps = [] # Keeps snap information for each - # new region creation point - # [(idxReg, idxPt, idxEdge), ...] - - # Set up for undo/redo capabilities - # TODO: Disable self.menuUndo and self.menuRedo - self.unredoBufLen = 50 - self.undoActions = collections.deque() - self.redoActions = collections.deque() - - # Add paint event handler to draw on the canvas - self.Bind(wx.EVT_PAINT, self.OnCanvasPaint, self.canvas) - - # Create Vicon listener - self.markerPoses = [] # Marker positions to be drawn - self.viconListener = ViconMarkerListener(self) - self.dlgFeedback = None - - # Add close event handler to cleanup and possibly save before closing - self.Bind(wx.EVT_CLOSE, self.OnClose) - - # Display the GUI window and set up the map canvas - self.Show() - self.DrawGrid() - - def __set_properties(self): - # begin wxGlade: regionEditor.__set_properties - self.SetTitle("Region Editor") - self.toggleVicon.SetMinSize((50, 50)) - self.buttonCamera.SetMinSize((50, 50)) - self.toggleSquare.SetMinSize((50, 50)) - self.togglePoly.SetMinSize((50, 50)) - self.toggleDim.SetMinSize((50, 50)) - self.toggleFeedback.SetMinSize((50, 50)) - self.buttonCal.SetMinSize((50, 50)) - self.sidebar.SetMinSize((150, 400)) - self.canvas.SetMinSize((800, 400)) - self.canvas.SetBackgroundColour(wx.Colour(255, 255, 255)) - # end wxGlade - - def __do_layout(self): - # begin wxGlade: regionEditor.__do_layout - sizer_1 = wx.BoxSizer(wx.HORIZONTAL) - grid_sizer_1 = wx.GridSizer(4, 2, 5, 5) - grid_sizer_1.Add(self.toggleVicon, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonCamera, 1, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleSquare, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.togglePoly, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleDim, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.toggleFeedback, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - grid_sizer_1.Add(self.buttonCal, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - self.sidebar.SetSizer(grid_sizer_1) - sizer_1.Add(self.sidebar, 0, wx.EXPAND, 0) - sizer_1.Add(self.canvas, 1, wx.EXPAND, 0) - self.SetSizer(sizer_1) - sizer_1.Fit(self) - self.Layout() - # end wxGlade - - def OnClose(self, event): - """Perform cleanup tasks and close the application.""" - # Check if the closure can even be canceled - # TODO: Check if map is unsaved and ask if they want to save before closing - if not event or event.CanVeto(): - dlg = wx.MessageDialog(self, - "Do you really want to close this application?", - "Confirm Exit", wx.OK|wx.CANCEL|wx.ICON_QUESTION) - result = dlg.ShowModal() - dlg.Destroy() - if result == wx.ID_OK: - self.viconListener.stop() - # TODO: Check if vicon is indeed running, and put wait-notify - # in to close port before closing GUI - self.Destroy() - else: - self.viconListener.stop() - self.Destroy() - - def OnToggleVicon(self, event): # wxGlade: regionEditor. - # Switch Vicon streaming on or off based on state of toggle button - if self.toggleVicon.GetValue(): - self.viconListener.start() - else: - self.viconListener.stop() - # Reinitialize thread to enable restarting it - self.viconListener = ViconMarkerListener(self) - - def OnButtonCamera(self, event): # wxGlade: regionEditor. - print "Camera not yet implemented" - # TODO - event.Skip() - - def OnToggleSquare(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleSquare) - - def OnTogglePoly(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.togglePoly) - - def OnToggleDim(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleDim) - - def OnToggleFeedback(self, event): # wxGlade: regionEditor. - self.ResetMapToggles(self.toggleFeedback) - if self.toggleFeedback.GetValue(): - self.dlgFeedback = FeedbackDialog(self) - self.dlgFeedback.ShowModal() - elif self.dlgFeedback: - self.dlgFeedback.OnClose(None) - - def OnButtonCal(self, event): # wxGlade: regionEditor. - # TODO - print "Calibration not yet implemented" - self.ResetMapToggles() - - def OnMenuNew(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuNew' not implemented" - event.Skip() - - def OnMenuOpen(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuOpen' not implemented" - event.Skip() - - def OnMenuSave(self, event): # wxGlade: regionEditor. - """Save to file that has already been used.""" - if self.fileName: - f = open(self.fileName, 'w') - f.write("# This is a region definition file for the LTLMoP " + \ - "toolkit.\n# Format details are described at the " + \ - "beginning of each section below.\n# Note that all values " + \ - "are separated by *tabs*.\n\nBackground: # Relative path " + \ - "of background image file\n") - f.write("None\n\n") # TODO: Support for background images - f.write("Obstacles: # Indices of regions to treat as obstacles\n") - f.write("\n\n") # TODO: Support for obstacles - f.write("Regions: # Name {ColorR ColorG ColorB} " + \ - "[(x1 y1) (x2 y2) ...]\n") - for reg in self.regions: - f.write(str(reg) + "\n") - f.write("\n") - f.write("Thumbnail: # Relative path of image file that has " + \ - "region shapes overlayed on background image\n") - f.write("None\n\n") # TODO: Save png thumbnail - f.write("Transitions: # Region1Idx Region2Idx " + \ - "[(Reg1FaceIdx1 Reg2FaceIdx1) (Reg1FaceIdx2 Reg2FaceIdx2) " + \ - "...]\n") - for iAdj in range(len(self.adjacent)): - for jAdj, adjList in enumerate(self.adjacent[iAdj]): - if iAdj != jAdj and adjList: - line = "%d\t%d\t[" % (iAdj, jAdj) - for kAdj, adj in enumerate(adjList): - line += "(%d\t%d)" % adj - if kAdj < len(adjList) - 1: - line += "\t" - line += "]\n" - f.write(line) - f.close() - else: - self.OnMenuSaveAs(None) - - def OnMenuSaveAs(self, event): # wxGlade: regionEditor. - dialogSave = wx.FileDialog(self, message="Save File As", \ - defaultDir=sys.path[0], \ - defaultFile=self.fileName.split('\\').pop(), \ - wildcard="*.regions", style=wx.FD_SAVE|wx.FD_OVERWRITE_PROMPT) - # Hit Save and confirmed overwrite if necessary - if dialogSave.ShowModal() == wx.ID_OK: - self.fileName = dialogSave.GetPath() - self.OnMenuSave(None) - dialogSave.Destroy() - - def OnMenuExit(self, event): # wxGlade: regionEditor. - self.OnClose(None) - - def OnMenuUndo(self, event): # wxGlade: regionEditor. - """Revert the most recent undoable change.""" - # Currently drawing polygon - # Note that this is not a redoable action by design - if self.polyVerts: - self.polyVerts = [] - self.polySnaps = [] - self.RedrawCanvas() - # Other undoable changes exist - elif self.undoActions: - action = self.undoActions.pop() - # Creation action - if not action.oldState: - # Single region creation - if isinstance(action.newState, Region): - self.regions.remove(action.newState) - # Map load from blank canvas - if isinstance(action.newState, list): - self.regions = [] - # TODO: Background image load from blank - # Deletion action - if not action.newState: - # Single region deletion - if isinstance(action.oldState, Region): - self.regions.append(action.oldState) - # Multiple region deletion or map clear - if isinstance(action.oldState, list): - self.regions.extend(action.oldState) - # TODO: Background image clear - # Modification action - else: - # Single region modification - if isinstance(action.oldState, Region): - idx = self.regions.index(action.newState) - self.regions[idx] = action.oldState - # Map load from non-blank canvas - if isinstance(action.oldState, list): - self.regions = action.oldState - # TODO: Background image load from other image - self.redoActions.append(action) - # TODO: if not self.undoActions: disable self.menuUndo - # TODO: enable self.menuRedo - self.RedrawCanvas() - - def OnMenuRedo(self, event): # wxGlade: regionEditor. - """Reapply most recently undone action.""" - # Redoable actions exist - if self.redoActions: - action = self.redoActions.pop() - # Creation action - if not action.oldState: - # Single region creation - if isinstance(action.newState, Region): - self.regions.append(action.newState) - # Map load from blank canvas - if isinstance(action.newState, list): - self.regions = action.newState - # TODO: Background image load from blank - # Deletion action - if not action.newState: - # Single region deletion - if isinstance(action.oldState, Region): - self.regions.remove(action.oldState) - # Multiple region deletion or map clear - if isinstance(action.oldState, list): - for reg in action.oldState: - self.regions.remove(reg) - # TODO: Background image clear - # Modification action - else: - # Single region modification - if isinstance(action.oldState, Region): - idx = self.regions.index(action.oldState) - self.regions[idx] = action.newState - # Map load from non-blank canvas - if isinstance(action.oldState, list): - self.regions = action.newState - # TODO: Background image load from other image - self.undoActions.append(action) - # TODO: if not self.redoActions: disable self.menuRedo - # TODO: enable self.menuUndo - self.RedrawCanvas() - - def OnMenuAutobound(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuAutobound' not implemented" - event.Skip() - - def OnMenuRect(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuRect' not implemented" - event.Skip() - - def OnMenuPoly(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuPoly' not implemented" - event.Skip() - - def OnMenuAddPoint(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuAddPoint' not implemented" - event.Skip() - - def OnMenuRemPoint(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuRemPoint' not implemented" - event.Skip() - - def OnMenuMarkers(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuMarkers' not implemented" - event.Skip() - - def OnMenuMarkersClear(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuMarkersClear' not implemented" - event.Skip() - - def OnMenuCamera(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuCamera' not implemented" - event.Skip() - - def OnMenuImageImport(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuImageImport' not implemented" - event.Skip() - - def OnMenuImageClear(self, event): # wxGlade: regionEditor. - print "Event handler `OnMenuImageClear' not implemented" - event.Skip() - - def OnMenuAbout(self, event): # wxGlade: regionEditor. - print "About not yet implemented" - event.Skip() - - def OnMouseLeftDown(self, event): - """Save the left click point so it can be used later.""" - self.leftClickPt, iReg, iPt, iEd = \ - self.SnapPoint(self.Pix2Map(event.GetPosition())) - - def OnMouseLeftUp(self, event): - """Perform appropriate action based on current mode of operation.""" - # Get click position - ptPix = event.GetPosition() - pt, iReg, iPt, iEd = self.SnapPoint(self.Pix2Map(ptPix)) - - # Creating a rectangular region - if self.toggleSquare.GetValue(): - # Making the second corner of rectangle - if self.polyVerts: - # Snap vertices to regions as necessary, not to Vicon - # This may result in a non-square region, but may be preferable - x0 = self.polyVerts[0].x - y0 = self.polyVerts[0].y - pt1, iReg1, iPt1, iEd1, snapped1 = \ - self.SnapRegions(Point(x0, pt.y), False) - pt3, iReg3, iPt3, iEd3, snapped3 = \ - self.SnapRegions(Point(pt.x, y0), False) - # Move clicked points if other vertices snap and they don't - if snapped1: - if iReg == -1: - pt = Point(pt.x, pt1.y) - if self.polySnaps[0][0] == -1: - self.polyVerts[0] = Point(pt1.x, self.polyVerts[0].y) - if snapped3: - if iReg == -1: - pt = Point(pt3.x, pt.y) - if self.polySnaps[0][0] == -1: - self.polyVerts[0] = Point(self.polyVerts[0].x, pt3.y) - self.polyVerts.append(pt1) - self.polyVerts.append(pt) - self.polyVerts.append(pt3) - self.polySnaps.append((iReg1, iPt1, iEd1)) - self.polySnaps.append((iReg, iPt, iEd)) - self.polySnaps.append((iReg3, iPt3, iEd3)) - # Create a square between previous click and new click - self.CreateRegion() - # Making the first corner of rectangle - else: - # Save point as first corner of square - self.polyVerts.append(pt) - self.polySnaps.append((iReg, iPt, iEd)) - - # Creating a polygonal region - elif self.togglePoly.GetValue(): - # Closing the polygon to create a region - if self.polyVerts and len(self.polyVerts) > 2 and \ - pt == self.polyVerts[0]: - self.CreateRegion() - # New point distinct from others - elif not pt in self.polyVerts: - self.polyVerts.append(pt) - self.polySnaps.append((iReg, iPt, iEd)) - # Plot line between last two points - if len(self.polyVerts) > 1: - x1pix, y1pix = self.Map2Pix(self.polyVerts[-2]) - x2pix, y2pix = self.Map2Pix(pt) - dc = wx.WindowDC(self.canvas) - dc.DrawLine(x1pix, y1pix, x2pix, y2pix) - - # Dimensioning region edge - elif self.toggleDim.GetValue(): - # First point on region to be clicked - if not self.polyVerts and iReg != -1 and iPt != -1: - # Store region and point indeces - self.polyVerts = (iReg, iPt) - # Second unique point to be clicked - elif iReg != -1 and iPt != -1 and (iReg, iPt) != self.polyVerts: - # Request dimension - currDist = self.regions[iReg].verts[iPt].Dist(self.regions[\ - self.polyVerts[0]].verts[self.polyVerts[1]]) - dimDlg = wx.TextEntryDialog(self, \ - "Current Length: %.3f" % currDist, caption='Dimension') - if dimDlg.ShowModal() == wx.ID_OK: - # Check for valid dimension (allow negative values) - try: - dim = float(dimDlg.GetValue()) - except ValueError: - dimDlg.Destroy() - return - dimDlg.Destroy() - - # Move second point along same line to specified distance - oldRegion = copy.deepcopy(self.regions[iReg]) - pt0 = self.regions[self.polyVerts[0]].verts[self.polyVerts[1]] - signx = 1.0 - signy = 1.0 - # Vertical line case - if pt0.x == pt.x: - if pt0.y > pt.y: - signy = -1.0 - dx = 0.0 - dy = signy * (dim - pt.Dist(pt0)) - # Horizontal and normal line cases - else: - if pt0.x > pt.x: - signx = -1.0 - if pt0.y > pt.y: - signy = -1.0 - slope = (pt.y - pt0.y) / (pt.x - pt0.x) - dx = signx * (dim - pt.Dist(pt0)) / \ - math.sqrt(1 + slope ** 2) - dy = slope * dx - self.regions[iReg].verts[iPt] = \ - self.regions[iReg].verts[iPt] + Point(dx, dy) - self.AddToUndo(Action(oldRegion, self.regions[iReg])) - self.polyVerts = [] - self.RedrawCanvas() - - # Panning the map view - elif pt.Dist(self.leftClickPt) > self.tolerance: - downClickPix = self.Map2Pix(self.leftClickPt) - self.canvasOffset = Point(self.canvasScale.x * \ - (downClickPix[0] - ptPix[0]) + self.canvasOffset.x, \ - self.canvasScale.y * (downClickPix[1] - ptPix[1]) + \ - self.canvasOffset.y) - self.RedrawCanvas() - - # TODO: May need to handle all mouse events in one huge window - # to avoid having the double click interfere with regular clicking - """ - def OnMouseLeftDClick(self, event): - """Perform action based on current mode of operation.""" - # Creating a polygonal region - if self.togglePoly.GetValue() and self.polyVerts and \ - len(self.polyVerts) > 2: - self.CreateRegion() - """ - - def OnMouseRightDown(self, event): - """Save the right click point so it can be used later.""" - self.rightClickPt, iReg, iPt, iEd = \ - self.SnapPoint(self.Pix2Map(event.GetPosition())) - - def OnMouseRightUp(self, event): - # Check if in region creation or dimensioning mode - if self.toggleSquare.GetValue() or self.togglePoly.GetValue() or \ - self.toggleDim.GetValue(): - self.ResetMapToggles() - # TODO: else: open some kind of right-click menu at right-click point - - def OnMouseWheel(self, event): - """Zoom on the map canvas.""" - ptPix = event.GetPosition() - rot = event.GetWheelRotation() # Usually +/- multiple of 120 - scaler = 0.75 ** (rot / 120) # Zoom in to 75% - # Keep mouse on the same point after zooming - # pt = ptPix * scale + offset - # pt = ptPix * scaleNew + offsetNew - self.canvasOffset = Point(float(ptPix[0]) * self.canvasScale.x * \ - (1 - scaler) + self.canvasOffset.x, float(ptPix[1]) * \ - self.canvasScale.y * (1 - scaler) + self.canvasOffset.y) - self.canvasScale = self.canvasScale * scaler - self.RedrawCanvas() - - def OnKeyDown(self, event): - keycode = event.GetKeyCode() - - # Backspace/Delete - Removes last set point during region creation - if (keycode == wx.WXK_BACK or keycode == wx.WXK_DELETE) and \ - self.polyVerts: - if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): - self.polyVerts.pop() - self.polySnaps.pop() - self.RedrawCanvas() - elif self.toggleDim.GetValue(): - self.polyVerts = [] - - # Escape - Stops region/dimension creation - elif keycode == wx.WXK_ESCAPE and (self.toggleSquare.GetValue() or \ - self.togglePoly.GetValue() or self.toggleDim.GetValue()): - self.ResetMapToggles() - - # Ctrl+n - New - if event.CmdDown() and keycode == 78: - self.OnMenuNew(None) - - # Ctrl+o - Open - if event.CmdDown() and keycode == 79: - self.OnMenuOpen(None) - - # Ctrl+s - Save - if event.CmdDown() and keycode == 83: - self.OnMenuSave(None) - - # Ctrl+q - Quit - if event.CmdDown() and keycode == 81: - self.OnMenuExit(None) - - # Ctrl+z - Undo - elif event.CmdDown() and keycode == 90: - self.OnMenuUndo(None) - - # Ctrl+y - Redo - elif event.CmdDown() and keycode == 89: - self.OnMenuRedo(None) - - # Pass event on so other key combinations still work - else: - event.Skip() - - def OnEnterWindow(self, event): - """Set the focus to the canvas to enable zooming.""" - self.canvas.SetFocus() - - def OnLeaveWindow(self, event): - """Unset the focus from the canvas to disable zooming.""" - self.SetFocus() - - def OnCanvasPaint(self, event): - """Redraw the contents of the canvas panel.""" - # Set up to draw - dc = wx.PaintDC(self.canvas) - self.RedrawCanvas(dc) - - def RedrawCanvas(self, dc=None): - """Redraw the contents of the canvas panel. - Callable from outside or inside EVT_PAINT handler. - - dc - Device context object for drawing to canvas. - """ - # Clear canvas - self.canvas.ClearBackground() - - # Create device context if calling from outside EVT_PAINT handler - if not dc: - dc = wx.WindowDC(self.canvas) - - # Redraw all markers - self.DrawGrid(dc) - self.DrawMarkers(self.markerPoses, dc) - - # Redraw all regions - for region in self.regions: - self.DrawRegion(region, dc) - - # Redraw all transition face indicators - # Lower triangular matrix only - for iReg in range(1, len(self.adjacent)): - self.DrawAdjacencies(iReg, dc) - - # Redraw partial region - if self.toggleSquare.GetValue() or self.togglePoly.GetValue(): - for iVert in range(len(self.polyVerts) - 1): - ptPix1 = self.Map2Pix(self.polyVerts[iVert]) - ptPix2 = self.Map2Pix(self.polyVerts[iVert + 1]) - dc.DrawLine(ptPix1[0], ptPix1[1], ptPix2[0], ptPix2[1]) - - def DrawGrid(self, dc=None): - """Draw the axes and grid on the map canvas. - - dc - Device context used for drawing on the canvas panel. - """ - # Create device context if calling from outside EVT_PAINT handler - if not dc: - dc = wx.WindowDC(self.canvas) - - # Draw axes - xOff = self.canvasOffset.x - yOff = self.canvasOffset.y - xPixOff = int(-xOff / self.canvasScale.x) - yPixOff = int(-yOff / self.canvasScale.y) - colLim, rowLim = self.canvas.GetSize() - dc.DrawLine(0, yPixOff, colLim, yPixOff) - dc.DrawLine(xPixOff, 0, xPixOff, rowLim) - - # TODO: Draw grid/ticks - - def DrawMarkers(self, poses, dc=None): - """Draw markers at specified global positions. - - poses - List of tuples containing positions of markers in meters [(x, y), ...] - dc - Device context used for drawing on the canvas panel. - """ - # Create device context if calling from outside EVT_PAINT handler - if not dc: - dc = wx.WindowDC(self.canvas) - - # Draw each marker - for pose in poses: - posePix = self.Map2Pix(pose) - dc.DrawCircle(posePix[0], posePix[1], 5) - - def DrawRegion(self, region, dc=None): - """Draw a single region. - - region - Instance of Region class, contains information about the region. - dc - Device context used for drawing on the canvas panel. - """ - # Create device context if calling from outside EVT_PAINT handler - if not dc: - dc = wx.WindowDC(self.canvas) - - # Draw region - vertsPix = [] - for vert in region.verts: - vertsPix.append(self.Map2Pix(vert)) - dc.DrawPolygon(vertsPix) - - def DrawAdjacencies(self, iReg, dc=None): - """Draw lines to show adjacent region faces for one region. - Uses self.regions and self.adjacent. - - iReg - Int, index of region of interest in self.regions. - dc - Device context used for drawing on the canvas panel. - """ - # Create device context if calling from outside other drawing methods - if not dc: - dc = wx.WindowDC(self.canvas) - oldPen = dc.GetPen() - dc.SetPen(wx.Pen(wx.Colour(255, 0, 0, 100), 3, wx.SHORT_DASH)) - - # Iterate adjacency matrix looking for shared faces for one region - # Only need to iterate through lower triangle (not counting diagonal) - # since the matrix is "symmetric" and diagonal is just region to itself - for jReg in range(iReg): - for iREdge1, iREdge2 in self.adjacent[iReg][jReg]: - # Not last edge in region - pt1 = self.regions[iReg].verts[iREdge1] - if iREdge1 < len(self.regions[iReg].verts) - 1: - pt2 = self.regions[iReg].verts[iREdge1 + 1] - # Last edge in region - else: - pt2 = self.regions[iReg].verts[0] - pt1Pix = self.Map2Pix(pt1) - pt2Pix = self.Map2Pix(pt2) - dc.DrawLine(pt1Pix[0], pt1Pix[1], pt2Pix[0], pt2Pix[1]) - dc.SetPen(oldPen) # TODO: Maybe can remove if everything sets own pen - - def ResetMapToggles(self, toggleStay=None): - """Clear all the other map-feature toggle buttons. - Also resets region creation. - - toggleStay - Toggle button object to retain state. - """ - # Reset region creation and clear temporary lines - self.polyVerts = [] - self.polySnaps = [] - self.RedrawCanvas() - - # Turn off all toggles and revert specified one - if toggleStay: - state = toggleStay.GetValue() - self.toggleSquare.SetValue(False) - self.togglePoly.SetValue(False) - self.toggleDim.SetValue(False) - if toggleStay: - toggleStay.SetValue(state) - - def CreateRegion(self): - """Instantiate and create a region from, perform cleanup actions. - Use polyVerts and polyAdjEdges to make the region and find transitions. - """ - # Create region - region = Region(self.polyVerts) # TODO: Add name and color to regions - self.regions.append(region) - idxNewReg = len(self.regions) - 1 - # Add row and column to list of lists of lists representing adjacency - self.adjacent.append([[] for col in xrange(len(self.adjacent))]) - for row in self.adjacent: - row.append([]) - self.AddToUndo(Action(None, region)) - # TODO: Change Undo setup so that adjacency matrix can be added with - # regions in one undo step - - # Look for adjacent edges to other regions - # First add vertices in walls where another region vertex is - # Check new region against other regions - for iPt, (iReg, iRPoint, iREdge) in enumerate(self.polySnaps): - # Point snapped to the edge of another region - if iREdge != -1: - # Add point to other region and update old transitions - self.AddPointToRegion(self.polyVerts[iPt], iReg, iREdge) - # Track which point it is connected to - self.polySnaps[iPt] = (iReg, iREdge + 1, -1) - # Check other regions against new region - for iReg, otherReg in enumerate(self.regions): - for iPt, pt in enumerate(otherReg.verts): - pt, iRPoint, iREdge, snapped = \ - self.Snap1Region(region, pt, False) - # Other region vertex snapped to wall of new region - if iREdge != -1: - # Add point to new region and update old transitions - self.AddPointToRegion(pt, idxNewReg, iREdge) - # Track which point it is connected to - self.polySnaps.insert(iREdge + 1, (iReg, iPt, -1)) - - # Next look for adjacent edges and update transition matrix accordingly - for iSide in range(len(self.polySnaps)): - iReg1, iRPoint1, iREdge1 = self.polySnaps[iSide] - if iSide < len(self.polySnaps) - 1: - iReg2, iRPoint2, iREdge2 = self.polySnaps[iSide + 1] - else: - iReg2, iRPoint2, iREdge2 = self.polySnaps[0] - # Same region and adjacent points - if iReg1 != -1 and iReg1 == iReg2: - # TODO: Could be same point that is already shared by two or - # more regions. Need to check for this. - # Not last side in other region - if abs(iRPoint1 - iRPoint2) == 1: - iOtherRegSide = min(iRPoint1, iRPoint2) - self.adjacent[idxNewReg][iReg1].\ - append((iSide, iOtherRegSide)) - self.adjacent[iReg1][idxNewReg].\ - append((iOtherRegSide, iSide)) - # Last side in other region - elif (iRPoint1 == 0 and iRPoint2 == \ - len(self.regions[iReg2].verts) - 1) or \ - (iRPoint2 == 0 and iRPoint1 == \ - len(self.regions[iReg1].verts) - 1): - iOtherRegSide = len(self.regions[iReg1].verts) - 1 - self.adjacent[idxNewReg][iReg1].\ - append((iSide, iOtherRegSide)) - self.adjacent[iReg1][idxNewReg].\ - append((iOtherRegSide, iSide)) - - # Cleanup and draw - self.polyVerts = [] - self.polySnaps = [] - self.polyAdjEdges = [] - self.DrawRegion(region) - self.DrawAdjacencies(idxNewReg) - - def AddPointToRegion(self, pt, iReg, iEdge): - """Add a vertex to the region. - - pt - Point object, location of new vertex in map coordinates - iRegion - Int, index of region to modify - iEdge - Int, index of the edge to replace with edges to and from pt - """ - # Add point to other region - self.regions[iReg].verts.insert(iEdge + 1, pt) - # Update all transition edges - # Loop through all regions - for jReg in range(len(self.adjacent[iReg])): - # All transitioning faces from region to others - for kPair in range(len(self.adjacent[iReg][jReg])): - thisRegFace, otherRegFace = self.adjacent[iReg][jReg][kPair] - # Transition face has index greater than affected edge - if thisRegFace > iEdge: - self.adjacent[iReg][jReg][kPair] = \ - (thisRegFace + 1, otherRegFace) - # Transition face is the affected edge - elif thisRegFace == iEdge: - self.adjacent[iReg][jReg].\ - append((thisRegFace + 1, otherRegFace)) - # All transitioning faces from other regions to this one - for kPair in range(len(self.adjacent[jReg][iReg])): - otherRegFace, thisRegFace = self.adjacent[jReg][iReg][kPair] - # Transition face has index greater than affected edge - if thisRegFace > iEdge: - self.adjacent[jReg][iReg][kPair] = \ - (otherRegFace, thisRegFace + 1) - # Transition face is the affected edge - elif thisRegFace == iEdge: - self.adjacent[jReg][iReg].\ - append((otherRegFace, thisRegFace + 1)) - - def AddToUndo(self, action): - """Add specified action to the undo queue. - - action - Action object to be added - """ - # Note that this is only called when doing a new action, - # not when redoing since this clears the redo buffer - self.undoActions.append(action) - while len(self.undoActions) > self.unredoBufLen: - self.undoActions.popleft() - self.redoActions.clear() - # TODO: enable self.menuUndo - - def SnapPoint(self, pt): - """Snap the point to any nearby Vicon or region point. - - pt - Point object, map coordinates of point - returns - (snappedPt, idxRegion, idxRPoint, idxREdge) - snappedPt - Point object, point after snapping - idxRegion - int, index of region if snapped to region point/edge - if not snapped to region it will be -1 - idxRPoint - int, index of point in region.verts if snapped to point - if not snapped to point it will be -1 - idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] - if not snapped to edge it will be -1 - """ - # TODO: Make menubar checkbox to disable/enable snapto - # Check through all region points and edges first - # (since Vicon points may be moving around) - snapped = False - pt, idxRegion, idxRPoint, idxREdge, snapped = \ - self.SnapRegions(pt, snapped) - - # Check points in current region creation - # Only snap to vertices - # Don't count this for iRegion or iRPoint - pt, idxPolyPoint, snapped = self.SnapPoly(pt, snapped) - - # Check all Vicon points - pt, idxMarker, snapped = self.SnapVicon(pt, snapped) - - # Only return region indices, since they are usually all that matter - return pt, idxRegion, idxRPoint, idxREdge - - def SnapRegions(self, pt, snapped): - """Snap the point to any sufficiently "nearby" region vertex or wall. - - pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not - If point is already snapped, this function will just return - returns - (snappedPt, idxRegion, idxRPoint, idxREdge, snapped) - snappedPt - Point object, point after snapping - idxRegion - int, index of region if snapped to region point/edge - if not snapped to region it will be -1 - idxRPoint - int, index of point in region.verts if snapped to point - if not snapped to point it will be -1 - idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] - if not snapped to edge it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a region point or edge - """ - idxRegion = -1 - idxRPoint = -1 - idxREdge = -1 - i = 0 # Region incrementer - while (not snapped) and i < len(self.regions): - pt, idxRPoint, idxREdge, snapped = \ - self.Snap1Region(self.regions[i], pt, snapped) - if snapped: - idxRegion = i - i += 1 - - return pt, idxRegion, idxRPoint, idxREdge, snapped - - def Snap1Region(self, region, pt, snapped): - """Snap the point to any sufficiently "nearby" region vertex or wall - in the specified region. - - region - Region object, region of interest - pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not - If point is already snapped, this function will just return - returns - (snappedPt, idxRPoint, idxREdge, snapped) - snappedPt - Point object, point after snapping - idxRPoint - int, index of point in region.verts if snapped to point - if not snapped to point it will be -1 - idxREdge - int, index of side in region if snapped to edge - edge j is defined by region.verts[j:j+1] - if not snapped to edge it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a region point or edge - """ - idxRPoint = -1 - idxREdge = -1 - # Check first point - chkPt = region.verts[0] - if (not snapped) and pt.Dist(chkPt) < self.tolerance: - pt = chkPt - snapped = True - idxRPoint = 0 - j = 1 # Region point incrementer - while (not snapped) and j < len(region.verts): - # Check next point - chkPt = region.verts[j] - if pt.Dist(chkPt) < self.tolerance: - pt = chkPt - snapped = True - idxRPoint = j - # Check edge between previous and just-checked point - else: - p0 = region.verts[j - 1] - p1 = chkPt - chkPt = self.ProjPtOnLine(pt, p0, p1) - # Check that projected point is on finite line and close - if pt.Dist(chkPt) < self.tolerance and \ - chkPt.x <= max(p0.x, p1.x) and \ - chkPt.x >= min(p0.x, p1.x) and \ - chkPt.y <= max(p0.y, p1.y) and \ - chkPt.y >= min(p0.y, p1.y): - pt = chkPt - snapped = True - idxREdge = j - 1 - j += 1 - # Check last edge - if not snapped: - p0 = region.verts[j - 1] - p1 = region.verts[0] - chkPt = self.ProjPtOnLine(pt, p0, p1) - if pt.Dist(chkPt) < self.tolerance and \ - chkPt.x <= max(p0.x, p1.x) and \ - chkPt.x >= min(p0.x, p1.x) and \ - chkPt.y <= max(p0.y, p1.y) and \ - chkPt.y >= min(p0.y, p1.y): - pt = chkPt - snapped = True - idxREdge = j - 1 - - return pt, idxRPoint, idxREdge, snapped - - def SnapPoly(self, pt, snapped): - """Snap the point to any vertex in the currently being created region - if it is sufficiently "nearby". - - pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not - If point is already snapped, this function will just return - returns - (snappedPt, idxPoint, snapped) - snappedPt - Point object, point after snapping - idxPoint - int, index of point in self.polyVerts if snapped to it - if not snapped to point it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a polygon point - """ - idxPoint = -1 - i = 0 # Misc point incrementer - while (not snapped) and i < len(self.polyVerts): - chkPt = self.polyVerts[i] - if pt.Dist(chkPt) < self.tolerance: - pt = chkPt - idxPoint = i - snapped = True - i += 1 - - return pt, idxPoint, snapped - - def SnapVicon(self, pt, snapped): - """Snap the point to any saved Vicon marker position if it is - sufficiently "nearby". - - pt - Point object, map coordinates of point - snapped - Boolean, true is point has snapped already, false if not - If point is already snapped, this function will just return - returns - (snappedPt, idxMarker, snapped) - snappedPt - Point object, point after snapping - idxMarker - int, index of point in self.markerPoses if snapped - if not snapped to point it will be -1 - snapped - Boolean, true if point has been snapped, false if not - Note that if input snapped is true, output will be true - even if the point did not snap to a Vicon point - """ - idxMarker = -1 - i = 0 # Vicon point incrementer - while (not snapped) and i < len(self.markerPoses): - chkPt = self.markerPoses[i] - if pt.Dist(chkPt) < self.tolerance: - pt = chkPt - idxMarker = i - snapped = True - i += 1 - - return pt, idxMarker, snapped - - def Map2Pix(self, pose): - """Convert from map coordinates to pixel coordinates. - - pose - Point, map coordinates of point - returns - Tuple, pixel coordinates in canvas panel (col, row) - """ - col = int((pose.x - self.canvasOffset.x) / self.canvasScale.x) - row = int((pose.y - self.canvasOffset.y) / self.canvasScale.y) - return (col, row) - - def Pix2Map(self, pixPose): - """Convert from pixel coordinates to map coordinates. - - pixPose - Tuple, pixel coordinates in canvas panel (col, row) - returns - Point, map coordinates of point - """ - x = float(pixPose[0]) * self.canvasScale.x + self.canvasOffset.x - y = float(pixPose[1]) * self.canvasScale.y + self.canvasOffset.y - return Point(x, y) - - def ProjPtOnLine(self, pt, p0, p1): - """Find the projection of a point on an infinite line. - - pt - Point object, point to be projected. - p1 - Point object, one endpoint of line. - p2 - Point object, other endpoint of line. - returns - Point object, projected point on line. - """ - s = p1 - p0 # Vector to project on (p0 is origin) - v = pt - p0 # Vector to point to project - u = (v.Dot(s) / s.Dot(s)) * s # Projected vector - return p0 + u # Map back to global coordinates -# end of class RegionEditor - - -class FeedbackDialog(wx.Dialog): - def __init__(self, *args, **kwds): - # begin wxGlade: FeedbackDialog.__init__ - kwds["style"] = wx.DEFAULT_DIALOG_STYLE - wx.Dialog.__init__(self, *args, **kwds) - self.buttonPrev = wx.Button(self, -1, "Previous") - self.buttonPick = wx.Button(self, -1, "Select") - self.buttonNext = wx.Button(self, -1, "Next") - self.chkbxIterate = wx.CheckBox(self, -1, "Automatically iterate points when marker is in position") - self.radioboxOption = wx.RadioBox(self, -1, "Feedback Method", choices=["Speech", "Beeping"], majorDimension=1, style=wx.RA_SPECIFY_ROWS) - self.chkbxMute = wx.CheckBox(self, -1, "Mute") - - self.__set_properties() - self.__do_layout() - - self.Bind(wx.EVT_BUTTON, self.OnButtonPrev, self.buttonPrev) - self.Bind(wx.EVT_BUTTON, self.OnButtonPick, self.buttonPick) - self.Bind(wx.EVT_BUTTON, self.OnButtonNext, self.buttonNext) - # end wxGlade - - # Add close event handler to cleanup before closing - self.Bind(wx.EVT_CLOSE, self.OnClose) - - # Save reference to RegionEditor GUI - if len(args) > 0: - self.parent = args[0] - else: - print "Warning: FeedbackDialog will not work without " + \ - "reference to RegionEditor GUI as first parameter." - self.parent = None - - # Track current point - self.chkbxIterate.SetValue(True) - self.currReg = 0 - self.currPt = 0 - - # Start audio feedback thread - self.feedbackThread = AudioFeedbackThread(self, self.parent) - self.feedbackThread.start() - - def __set_properties(self): - # begin wxGlade: FeedbackDialog.__set_properties - self.SetTitle("Marker Placement") - self.buttonPrev.SetMinSize((50, 50)) - self.buttonPick.SetMinSize((50, 50)) - self.buttonNext.SetMinSize((50, 50)) - self.chkbxIterate.SetValue(1) - self.radioboxOption.SetSelection(0) - # end wxGlade - - def __do_layout(self): - # begin wxGlade: FeedbackDialog.__do_layout - sizerOuter = wx.BoxSizer(wx.VERTICAL) - sizerOptions = wx.BoxSizer(wx.VERTICAL) - sizerButtons = wx.BoxSizer(wx.HORIZONTAL) - sizerButtons.Add(self.buttonPrev, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerButtons.Add(self.buttonPick, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerButtons.Add(self.buttonNext, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerOuter.Add(sizerButtons, 0, wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 0) - sizerOptions.Add(self.chkbxIterate, 0, wx.ALL | wx.ALIGN_CENTER_HORIZONTAL | wx.ALIGN_CENTER_VERTICAL, 5) - sizerOptions.Add(self.radioboxOption, 0, wx.ALL | wx.EXPAND, 5) - sizerOptions.Add(self.chkbxMute, 0, wx.ALL, 5) - sizerOuter.Add(sizerOptions, 1, wx.EXPAND, 0) - self.SetSizer(sizerOuter) - sizerOuter.Fit(self) - self.Layout() - # end wxGlade - - def OnClose(self, event): - """Perform cleanup tasks and close the feedback dialog.""" - self.feedbackThread.stop() - self.parent.toggleFeedback.SetValue(False) - # TODO: Add wait/notify to make sure thread ended - self.Destroy() - - def OnButtonPrev(self, event): # wxGlade: FeedbackDialog. - """Move back to previous point.""" - # Not first point in region - if self.currPt > 0: - self.currPt -= 1 - # First point in region - else: - # Not first region - if self.currReg > 0: - self.currReg -= 1 - # First region - else: - self.currReg = len(self.parent.regions) - 1 - self.currPt = len(self.parent.regions[self.currReg].verts) - 1 - - def OnButtonPick(self, event): # wxGlade: FeedbackDialog. - #self.parent.Raise() - print "Select not yet implemented." - - def OnButtonNext(self, event): # wxGlade: FeedbackDialog. - """Move on to next point.""" - # Not last point in region - if self.currPt < len(self.parent.regions[self.currReg].verts) - 1: - self.currPt += 1 - # Last point in region - else: - # Not last region - if self.currReg < len(self.parent.regions) - 1: - self.currReg += 1 - # Last region - else: - self.currReg = 0 - self.currPt = 0 -# end of class FeedbackDialog - - -class Region: - def __init__(self, points, name="R0", rgb=[0, 0, 0]): # TODO: random color/name - """Create an object to represent a region. - - points - List of tuples containing vertex information - [(x1, y1), (x2, y2), ...] - """ - # TODO: Add name, color, convex/concave, possibly adjoining edges - self.verts = points - self.name = name - self.color = rgb - - def __str__(self): - """Representation of object.""" - s = "%s\t{%03d\t%03d\t%03d}\t[" % \ - (self.name, self.color[0], self.color[1], self.color[2]) - for iPt, pt in enumerate(self.verts): - s += str(pt) - if iPt < len(self.verts) - 1: - s += "\t" - s += "]" - return s -# end of class Region - - -class Action: - def __init__(self, oldState, newState): - """Create an object that represents an (un/re)doable action. - - oldState - Previous state of the affected object(s) - newState - Changed state of the affected object(s) - - These arguments will usually be one or more regions that were changed. - An argument of "None" indicates either creation or deletion. - """ - self.oldState = oldState - self.newState = newState -# end of class Action - - -class Point: - def __init__(self, x, y): - """Create an object that allows floating point vector operations. - - x - Float, first coordinate of point - y - Float, second coordinate of point - """ - if isinstance(x, float) and isinstance(y, float): - self.x = x - self.y = y - else: - raise TypeError('\'Point\' creation takes only \'float\' values') - - def __str__(self): - """Representation of object.""" - return '(%.3f\t%.3f)' % (self.x, self.y) - - def __hash__(self): - """Hashtable representation of object.""" - tup = (self.x, self.y) - return tup.__hash__() - - def __eq__(self, other): - """Checks equality (self == other).""" - return isinstance(other, Point) and self.x == other.x and self.y == other.y - - def __ne__(self, other): - """Checks non-equality (self != other).""" - return not self.__eq__(other) - - def __add__(self, other): - """Addition operator (self + other).""" - if isinstance(other, Point): - return Point(self.x + other.x, self.y + other.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(self.x + other[0], self.y + other[1]) - else: - raise TypeError('cannot add \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __radd__(self, other): - """Right addition operator (other + self).""" - return self.__add__(other) - - def __sub__(self, other): - """Subtraction operator (self - other).""" - if isinstance(other, Point): - return Point(self.x - other.x, self.y - other.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(self.x - other[0], self.y - other[1]) - else: - raise TypeError('cannot subtract \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __rsub__(self, other): - """Right subtraction operator (other - self).""" - if isinstance(other, Point): - return Point(other.x - self.x, other.y - self.y) - elif isinstance(other, tuple) and len(other) == 2: - return Point(other[0] - self.x, other[1] - self.y) - else: - raise TypeError('cannot subtract \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __mul__(self, other): - """Multiplication operator (self * other).""" - if isinstance(other, float): - return Point(self.x * other, self.y * other) - else: - raise TypeError('cannot multiply \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __rmul__(self, other): - """Right multiplication operator (other * self).""" - return self.__mul__(other) - - def __div__(self, other): - """Division operator (self / other).""" - if isinstance(other, float): - return Point(self.x / other, self.y / other) - else: - raise TypeError('cannot divide \'Point\' and \'' + \ - other.__class__.__name__ + '\' objects') - - def __truediv__(self, other): - """True division operator.""" - return self.__div__(other) - - def Dot(self, other): - """Dot product.""" - if isinstance(other, Point): - return self.x * other.x + self.y * other.y - elif isinstance(other, tuple) and len(other) == 2: - return self.x * other[0] + self.y * other[1] - else: - raise TypeError('cannot compute dot product of \'Point\' and \'' + \ - other.__class__.__name__ + '\' object') - - def Dist(self, other): - """Euclidean distance from this point to the other.""" - if isinstance(other, Point): - return math.sqrt((self.x - other.x) ** 2 + \ - (self.y - other.y) ** 2) - elif isinstance(other, tuple) and len(other) == 2: - return math.sqrt((self.x - other[0]) ** 2 + \ - (self.y - other[1]) ** 2) - else: - raise TypeError('cannot compute distance from \'Point\' to \'' + \ - other.__class__.__name__ + '\' object') - - def Norm(self): - """Length of the vector.""" - return math.sqrt(self.x ** 2 + self.y ** 2) -# end of class Point - - -class ViconMarkerListener(threading.Thread): - def __init__(self, parent): - """Create the a socket to receive Vicon data.""" - super(ViconMarkerListener, self).__init__() - - # Communication parameters - self.parent = parent # RegionEditor GUI - self.addr = ("0.0.0.0", 7500) - self.bufsize = 65536 - self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - self.lock = threading.Lock() - self.close = threading.Event() - self.updateFreq = 20 # Hz - - # Tracking parameters - # TODO: Set all paremeters in configuration of GUI - self.minDist = 0.01 # Distance to move to qualify as movement - self.maxDist = 0.1 # Qualified as new point - self.movMaxTime = 15 * self.updateFreq # (sec)*(Hz) - # Iterations during which marker is not moving - # before stopping tracking - self.invMaxTime = 1 * self.updateFreq # (sec)*(Hz) - # Iterations during which marker is not found - # before stopping tracking - - # Tracking containers - self.oldPoses = [] # Previous marker positions - self.movingPoses = [] # Markers that are moving - self.movingTimeout = [] # Iterations left before movement timeout - self.invisTimeout = [] # Iteractions left before not-found timeout - - def run(self): - """Open the socket to start communication. Process messages.""" - # Open socket for communication - self.udpSock.bind(self.addr) - - # Receive communication until stopped - self.close.clear() - delay = 1 / self.updateFreq - while not self.close.isSet(): - self.lock.acquire() - data = self.udpSock.recv(self.bufsize) - self.lock.release() - self.ProcessData(data) - time.sleep(delay) - - # Close socket - self.udpSock.close() - self.oldPoses = [] - self.movingPoses = [] - self.movingTimeout = [] - self.invisTimeout = [] - - def stop(self): - """Close the socket to end UDP communication.""" - self.close.set() - - # Deserialize and save data - def ProcessData(self, data): - """Extract marker positions and pass them on to be mapped. - - data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] - """ - # Check for valid data (not null or incomplete) - if data and len(data)%16 == 0: - poses = [] - for i in range(0, len(data), 16): - x, y = struct.unpack('dd', data[i:i+16]) - poses.append(Point(x, y)) - # Save and plot marker positions - self.parent.markerPoses = poses - self.UpdateMovingMarkers(poses) - self.parent.RedrawCanvas() # Force map redraw - - def UpdateMovingMarkers(self, poses): - """Note which markers are newly moving and update position of old - moving markers based on change in position from previous list. - - poses - List of Points, marker positions. - """ - # Not first time through - if self.oldPoses: - # Check all currently tracked markers first - for iMarker, markerPose in enumerate(self.movingPoses): - closestIdx = self.FindClosest(poses, markerPose) - closestDist = markerPose.Dist(poses[closestIdx]) - # Same marker - if closestDist < self.maxDist: - self.invisTimeout[iMarker] = self.invMaxTime - # Is moving - if closestDist > self.minDist: - self.movingTimeout[iMarker] = self.movMaxTime + 1 - self.movingPoses[iMarker] = poses[closestIdx] - # Marker not seen - else: - self.invisTimeout[iMarker] -= 1 - self.movingTimeout[iMarker] -= 1 - # Marker has stopped moving or not been seen for some time - if self.invisTimeout[iMarker] == 0 or \ - self.movingTimeout[iMarker] == 0: - self.invisTimeout.pop(iMarker) - self.movingTimeout.pop(iMarker) - self.movingPoses.pop(iMarker) - # Check through all new markers next - for markerPose in poses: - closestIdx = self.FindClosest(self.oldPoses, markerPose) - closestDist = markerPose.Dist(self.oldPoses[closestIdx]) - # Point is moving - if closestDist < self.maxDist and closestDist > self.minDist: - self.movingPoses.append(markerPose) - self.movingTimeout.append(self.movMaxTime) - self.invisTimeout.append(self.invMaxTime) - self.oldPoses = poses - - def FindClosest(self, points, target): - """Find the closest point to the target. - - points - List of Points, marker positions. - target - Point, point to find marker closest to. - returns - Integer, index of closest point in points. - """ - # Iterate through all points - minDist = float('inf') - minIdx = 0 - for i, pt in enumerate(points): - dist = target.Dist(pt) - if dist < minDist: - minIdx = i - minDist = dist - return minIdx -# end of class ViconMarkerListener - - -class AudioFeedbackThread(threading.Thread): - def __init__(self, feedbackDialog, regEditor): - """Create audio feedback for marker placement. - - fbDia - Dialog box that specifies the point of interest. - regEd - RegionEditor GUI that gets Vicon information. - """ - super(AudioFeedbackThread, self).__init__() - - # Save other objects - self.fbDia = feedbackDialog - self.regEd = regEditor - - # Non-audio parameters - self.close = threading.Event() - self.tolerance = 0.10 # Close-enough distance (m) - self.maxDist = 2.5 # Points must be within this to react (m) - - # Audio parameters for beeping - # Chosen for audibility at distance - # TODO: Make modifiable by configuration file - minFreq = 600 # Lowest frequency played (Hz) - maxFreq = 7000 # Highest frequency played (Hz) - updateFreq = 2.0 # Frequency of possible sound change (Hz) - self.duration = int(1000.0 / updateFreq) - - # Audio parameters for text-to-speech - self.engine = pyttsx.init() - self.engine.setProperty('rate', 120) - self.engine.setProperty('volume', 1.0) - self.speechFormat = "X %.1f, Y %.1f" - self.speechPause = 1.0 # Pause between voice commands - - # Calculate the line representing the distance-frequency mapping - self.freqSlope = (minFreq - maxFreq) / (self.maxDist - self.tolerance) - self.freqIntercept = maxFreq - self.tolerance * self.freqSlope - - def run(self): - """Play sound based on distance of moving marker to goal point.""" - self.close.clear() - while not self.close.isSet(): - soundOption = self.fbDia.radioboxOption.GetSelection() - if not self.fbDia.chkbxMute.GetValue(): - # Get distance from closest marker to point of interest - intPt = self.regEd.regions[self.fbDia.currReg].\ - verts[self.fbDia.currPt] - minStatDistToPt = 2.0 * self.maxDist - for statPt in self.regEd.markerPoses: - if not statPt in self.regEd.viconListener.movingPoses: - minStatDistToPt = min(minStatDistToPt, intPt.Dist(statPt)) - - # Get distance from closest moving point to point of interest - minDistToPt = 2.0 * self.maxDist - minPtIdx = -1 - for iPt, movPt in \ - enumerate(self.regEd.viconListener.movingPoses): - dist = intPt.Dist(movPt) - if dist < minDistToPt: - minDistToPt = dist - minPtIdx = iPt - - # Plot moving point and goal point - dc = wx.WindowDC(self.regEd.canvas) - dc.SetBrush(wx.Brush(wx.Colour(255, 0, 0, 100), wx.SOLID)) - posePix = self.regEd.Map2Pix(intPt) - dc.DrawCircle(posePix[0], posePix[1], 8) - if minPtIdx > -1 and minPtIdx < \ - len(self.regEd.viconListener.movingPoses): - posePix = self.regEd.Map2Pix(\ - self.regEd.viconListener.movingPoses[minPtIdx]) - dc.DrawCircle(posePix[0], posePix[1], 8) - - # Close-enough - if minDistToPt < self.tolerance or \ - minStatDistToPt < self.tolerance: - # Marker is settled - if minStatDistToPt < self.tolerance or self.regEd.\ - viconListener.movingTimeout[minPtIdx] < \ - self.regEd.viconListener.movMaxTime: - # Play "success" sound to indicate done with point - if soundOption: - time.sleep(0.2) - winsound.Beep(600, 200) - winsound.Beep(1200, 200) - winsound.Beep(1800, 200) - time.sleep(0.2) - else: - self.engine.say("Success, next") - self.engine.runAndWait() - time.sleep(self.speechPause) - # Switch to next point of interest if checked - if self.fbDia.chkbxIterate.GetValue(): - self.fbDia.OnButtonNext(None) - # TODO: Check if all points are in correct spots - # and stop if done - - # Marker not yet settled - else: - # Play "good" sound to signal "stop moving marker" - if soundOption: - time.sleep(0.2) - winsound.Beep(1200, 200) - winsound.Beep(1200, 200) - time.sleep(0.2) - else: - self.engine.say("Stop there") - self.engine.runAndWait() - time.sleep(self.speechPause) - - # Still within distance of effect - elif minDistToPt < self.maxDist: - if soundOption: - freq = int(self.freqIntercept + self.freqSlope * \ - minDistToPt) - winsound.Beep(freq, self.duration) - else: - diffPt = intPt - self.regEd.viconListener.\ - movingPoses[minPtIdx] - self.engine.say(self.speechFormat % \ - (diffPt.x, diffPt.y)) - self.engine.runAndWait() - time.sleep(self.speechPause) - - def stop(self): - """Signal for the thread to end.""" - self.engine.stop() - self.close.set() - - -if __name__ == "__main__": - app = wx.PySimpleApp(0) - wx.InitAllImageHandlers() - if len(sys.argv) > 1: - regEd = regionEditor(None, -1, sys.argv[1]) - else: - regEd = regionEditor(None, -1) - app.SetTopWindow(regEd) - app.MainLoop() diff --git a/src/RegionEditorFiles/NewRegionEditor/regionEditorV2.py b/src/RegionEditorFiles/NewRegionEditor/regionEditorV2.py deleted file mode 100644 index c93488bb..00000000 --- a/src/RegionEditorFiles/NewRegionEditor/regionEditorV2.py +++ /dev/null @@ -1,287 +0,0 @@ -#!/usr/bin/env python -import time -import math -import wx -import wx.lib.plot as plot -import threading -import socket -import struct - -class RegionEditor(wx.Frame): - def __init__(self, parent): - """Create the main frame to hold the Region Editor functionality.""" - wx.Frame.__init__(self, parent, title="Region Editor") - - # Status bar - self.CreateStatusBar() - - # Menu bar - filemenu = wx.Menu() # Create "File" menu tab - menuSave = filemenu.Append(wx.ID_SAVE, "&Save", "Save the current map") - filemenu.AppendSeparator() - menuExit = filemenu.Append(wx.ID_EXIT, "E&xit", "Terminate the program") - editmenu = wx.Menu() # Create "Edit" menu tab - menuUndo = editmenu.Append(wx.ID_UNDO, "&Undo", "Revert the previous action") - menuRedo = editmenu.Append(wx.ID_REDO, "&Redo", "Revert the previously undone action") - helpmenu = wx.Menu() # Create "Help" menu tab - menuAbout = helpmenu.Append(wx.ID_ABOUT, "&About", "Information about the program") - self.Bind(wx.EVT_MENU, self.OnMenuSave, menuSave) # Make menu items call functions - self.Bind(wx.EVT_MENU, self.OnMenuExit, menuExit) - self.Bind(wx.EVT_MENU, self.OnMenuUndo, menuUndo) - self.Bind(wx.EVT_MENU, self.OnMenuRedo, menuRedo) - self.Bind(wx.EVT_MENU, self.OnMenuAbout, menuAbout) - menubar = wx.MenuBar() # Create menu bar with tabs - menubar.Append(filemenu, "&File") - menubar.Append(editmenu, "&Edit") - menubar.Append(helpmenu, "&Help") - self.SetMenuBar(menubar) - - # Create control sidebar and map drawing panels - sizer = wx.BoxSizer(wx.HORIZONTAL) - self.sidebar = ControlSidebar(self) - self.canvas = MapCanvas(self) - sizer.Add(self.sidebar, 0, wx.EXPAND) - sizer.Add(self.canvas, 1, wx.EXPAND) - self.SetSizerAndFit(sizer) - - self.Show(True) - - def OnMenuSave(self, event): - # TODO - pass - - def OnMenuExit(self, event): - # TODO: Check if map is saved, etc - self.Close(True) - - def OnMenuUndo(self, event): - # TODO - pass - - def OnMenuRedo(self, event): - # TODO - pass - - def OnMenuAbout(self, event): - # TODO - pass - - -class ControlSidebar(wx.Panel): - def __init__(self, parent): - """Create the sidebar that contains all control buttons.""" - wx.Panel.__init__(self, parent, size=(150, 400), style = wx.SUNKEN_BORDER) - self.parent = parent - - # Control buttons - rowSizer = wx.BoxSizer(wx.VERTICAL) # Top-level sizer - visSizer = wx.BoxSizer(wx.HORIZONTAL) # Vicon and camera display row - polySizer = wx.BoxSizer(wx.HORIZONTAL) # Region creation row - self.toggleVicon = wx.ToggleButton(self, label='V', size=(50, 50)) - self.buttonCamera = wx.Button(self, label='C', size=(50, 50)) - self.toggleSquare = wx.ToggleButton(self, label='S', size=(50, 50)) - self.togglePolygon = wx.ToggleButton(self, label='P', size=(50, 50)) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVicon, self.toggleVicon) - self.Bind(wx.EVT_BUTTON, self.OnButtonCamera, self.buttonCamera) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleSquare, self.toggleSquare) - self.Bind(wx.EVT_TOGGLEBUTTON, self.OnTogglePolygon, self.togglePolygon) - visSizer.Add(self.toggleVicon, proportion=0) - visSizer.Add(self.buttonCamera, proportion=0) - polySizer.Add(self.toggleSquare, proportion=0) - polySizer.Add(self.togglePolygon, proportion=0) - rowSizer.Add(visSizer, 1) - rowSizer.Add(polySizer, 1) - self.SetSizerAndFit(rowSizer) - - def OnToggleVicon(self, event): - # Switch Vicon streaming on or off based on state of toggle button - if self.toggleVicon.GetValue(): - self.parent.canvas.listener.start() - else: - self.parent.canvas.listener.stop() - - def OnButtonCamera(self, event): - # TODO - pass - - def OnToggleSquare(self, event): - self.clearMapToggles(self.toggleSquare) - - def OnTogglePolygon(self, event): - self.clearMapToggles(self.togglePolygon) - - def clearMapToggles(self, toggleOn): - """Clear all the other map-feature toggle buttons. - - toggleOn - Toggle button object to turn back on. - """ - self.toggleSquare.SetValue(False) - self.togglePolygon.SetValue(False) - toggleOn.SetValue(True) - - -class MapCanvas(plot.PlotCanvas): - def __init__(self, parent): - """Create the main map area for drawing regions.""" - - # Initialize member parameters - self.parent = parent - self.leftClickPt = (0.0, 0.0) # Location of last left downclick - self.rightClickPt = (0.0, 0.0) # Location of last right downclick - self.canvasSize = (800.0, 400.0) # (pixels) - self.mapBound = [(-3.0, 9.0), (-3.0, 3.0)] # Map boundaries [(xmin, xmax), (ymin, ymax)] (m) - self.tolerance = (5.0 / self.canvasSize[0]) * \ - (self.mapBound[0][1] - self.mapBound[0][0]) # Distance to consider as "same point" (m) - self.polyVerts = [] # Keeps points for region creation - - # Parent constructor - plot.PlotCanvas.__init__(self, parent, size=self.canvasSize, style = wx.SUNKEN_BORDER) - - # Set up canvas for plotting - self.SetBackgroundColour('WHITE') - self.SetInitialSize(size=self.canvasSize) - emptyMarkers = plot.PolyMarker([]) - gc = plot.PlotGraphics([emptyMarkers]) - self.Draw(gc, xAxis=self.mapBound[0], yAxis=self.mapBound[1]) - self.listener = ViconMarkerListener(self) - - # Subscribe to mouse events - self.Bind(wx.EVT_LEFT_DOWN, self.OnMouseLeftDown) - self.Bind(wx.EVT_LEFT_UP, self.OnMouseLeftUp) - self.Bind(wx.EVT_RIGHT_DOWN, self.OnMouseRightDown) - self.Bind(wx.EVT_RIGHT_UP, self.OnMouseRightUp) - self.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheel) - - def OnMouseLeftDown(self, event): - """Save the left click point so it can be used later.""" - self.leftClickPt = self.PositionScreenToUser(event.GetPosition()) - - def OnMouseLeftUp(self, event): - """Perform appropriate action based on current mode of operation.""" - # Get click position - pt = self.PositionScreenToUser(event.GetPosition()) - - # Creating a square region - if self.parent.sidebar.toggleSquare.GetValue(): - # Making the second corner of a square - if self.polyVerts: - # Create a square between previous click and new click - x1, y1 = self.polyVerts[0] - x2, y2 = pt - self.DrawRegion([(x1, y1), (x1, y2), (x2, y2), (x2, y1)]) - self.polyVerts = [] - # Single click on a spot - elif math.sqrt((pt[0] - self.leftClickPt[0]) ** 2 + \ - (pt[1] - self.leftClickPt[1]) ** 2) < self.tolerance: - # Save point as first corner of square - self.polyVerts.append(pt) - # Dragged from one spot to another - else: - # Create a square between the downclick and upclick - x1, y1 = self.leftClickPt - x2, y2 = pt - self.DrawRegion([(x1, y1), (x1, y2), (x2, y2), (x2, y1)]) - self.polyVerts = [] - - # Creating a polygonal region - elif self.parent.sidebar.togglePolygon.GetValue(): - pass - - def OnMouseRightDown(self, event): - """Save the right click point so it can be used later.""" - self.rightClickPt = self.PositionScreenToUser(event.GetPosition()) - # TODO: Possibly clear polyVerts - - def OnMouseRightUp(self, event): - # TODO - pass - - def OnMouseWheel(self, event): - # TODO - pass - - def DrawMarkers(self, pos): - """Draw markers at specified global positions. - - pos - list of tuples containing positions of markers in meters [(x, y), ...] - """ - marker = plot.PolyMarker(pos) - gc = plot.PlotGraphics([marker]) - self.Draw(gc, xAxis=(-3, 9), yAxis=(-3, 3)) - - def DrawRegion(self, verts): - """Draw a region contained by the specified points. - - verts - List of tuples containing points that enclose the region. - [(x1, y1), (x2, y2), ...] - The list shall not loop back to the first point. - """ - # Plot all lines - # TODO: Get fill, may need to changes from wx.lib.plot library - verts.append(verts[0]) - lines = plot.PolyLine(verts) - gc = plot.PlotGraphics([lines]) - self.Draw(gc, xAxis=(-3, 9), yAxis=(-3, 3)) - - # TODO: OnResize - # Change mapBoundaries and canvasSize - # Recalculate tolerance - # Redraw everything only once (not continuously) - - -class ViconMarkerListener(threading.Thread): - def __init__(self, parent): - """Create the a socket to receive Vicon data. - - parent - Panel containing the drawing canvas on which to plot markers - """ - super(ViconMarkerListener, self).__init__() - self.canvas = parent - self.addr = ("0.0.0.0", 7500) - self.bufsize = 65536 - self.udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - self.lock = threading.Lock() - self.close = threading.Event() - - def run(self): - """Open the socket to start communication. Process messages.""" - # Open socket for communication - self.udpSock.bind(self.addr) - - # Receive communication until stopped - while not self.close.isSet(): - self.lock.acquire() - data = self.udpSock.recv(self.bufsize) - self.ProcessData(data) - self.lock.release() - time.sleep(0.05) - - # Close socket - self.udpSock.close() - - def stop(self): - """Close the socket to end UDP communication.""" - self.close.set() - - # Deserialize and save data - def ProcessData(self, data): - """Extract marker positions and pass them on to be mapped. - - data - Byte array encoded from multiple pairs of doubles [x1 y1 ...] - """ - # Check for valid data (not null or incomplete) - print len(data) - if data and len(data)%16 == 0: - pos = [] - for i in range(0, len(data), 16): - x, y = struct.unpack('dd', data[i:i+16]) - pos.append((x, y)) - if i < 160: - print x,y - self.canvas.DrawMarkers(pos) # Plot Vicon markers - - -if __name__ == "__main__": - app = wx.App(False) - frame = RegionEditor(None) - app.MainLoop() \ No newline at end of file diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconDataStreamSDK_CPP.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/ViconDataStreamSDK_CPP.dll deleted file mode 100644 index c567dcc3db994932d175175b0a7b8e9c688cb9e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397312 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�^RaGT5d@FRX@Dm)lkq8vQQrfB8nQ@xBs$0D+a3>}IrG*O~tyV>JrT8K-5)^TPend5LeR z*53r~FYS3T;C)KKYka;Dd~E{!A_tRkKoz8I_`jW}E{u@H8=dQg!9Y-gR7e#ibRk2P zHlj|R=Tv4TsM5BpZy`}_SiRrI*UEg{6X0O#a8sz;@Pk}E8KUMT>KXD0YeQz7-ipcG z+c}8827xE)A67%6vD{Wn4;1qQlqzKZc_l;Gsyjf~G@gw&YsY zbY0qf*4o_{R)6CROv&HN%K<0cRCZmyr8c16PbB*!sH<0kf-1-%thg(Sa3dDP=6dJJ zNAsVpaOOX|3pZbMlQnuOM}B!puhnWw{pQ)(ZDNnSC7KLO)K$*`V5Wr zW!Iz?qcFDk>c7SCn9u^X^U^yO8_} zdQRvJcM3fxr?1eHe{dH$^7}@njttL%HhAPu;q4wnV9dyONZvrE{DSC!wdDv|9pVI+ z^YJ6$ASMJ>>KFzf&&q`&&W=_Rj<7>nN8X_H8Da(nVg}_{ePn%wE9O~xKP`C_D?UJ> z_-=O5oFi1CxYv{dh3JrNZwA}RD(W9MBD8PVt~wBwHqa?+gKj^G&qVBye&1>Onz%l) zv8PE31GyA2tsy$o#r17<*!rt%_01Crm(-xlc%i~T#`6EDgHXu;5|R9zYdK^{yKYp zfVLU^brRtEH~Q=7=aopd#-E}-XFC4$&R+rEI#@cGT)G`7XV@ssb�hh;zI~eB|rhfK-dg3 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 z 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

    }AaL#n*ay*Z9&V^bV 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�>yfq+ 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 - + - - + + - Calibration Tool - 898, 632 - + Map Calibration + 1 + #f0f0f0 + + + + + + menuReset + OnMenuReset + + + + menuSave + OnMenuSave + + + + menuExit + OnMenuExit + + + + + + menuUndo + OnMenuUndo + + + + menuRedo + OnMenuRedo + + + + --- + --- + + + + menuSelectAll + OnMenuSelectAll + + + + menuClearAll + OnMenuClearAll + + + + + + menuShowMarkers + 1 + OnMenuShowMarkers + + + + menuClearMarkers + OnMenuClearMarkers + + + + --- + --- + + + + menuLoadImage + OnMenuLoadImage + + + + menuDimen + OnMenuDimen + + + + menuClearImage + OnMenuClearImage + + + + + + menuHowTo + OnMenuHowTo + + + + menuAbout + OnMenuAbout + + + + + wxVERTICAL wxEXPAND - 0 - - - - - - 0 - - 15 - 20 - - - - wxEXPAND - 0 - - - wxHORIZONTAL - - 0 - - - 20 - 15 + + + + wxHORIZONTAL + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Stream markers + + OnToggleVicon + + 32, 32 + - - - 0 - - - 1 - - - 14 - default - - normal - 0 - Lucida Grande - + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Import image + + OnButtonImage + + 32, 32 + - - - - 0 - - - 1 - - - onButtonGo - + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Add calibration point + + OnToggleAddPoint + + 32, 32 + - - - 0 - - - 20 - 15 + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Delete calibration point + + OnToggleDeletePoint + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Scale image + + OnToggleDimen + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + Save and return + + OnButtonSave + + 32, 32 + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + wxHORIZONTAL + + wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 2 + + + x + 1 + 40, 25 + + + + wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 2 + + + y + 1 + 40, 25 + + + + wxLEFT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 2 + + + + Create calibration point + wx.ID_OK + + OnButtonEnterPoint + + 25, 25 + + + + + + wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL + 5 + + + + - 0 - - - 15 - 20 + wxBOTTOM|wxEXPAND + 3 + + + + #ffffff + 600, 300 + + + + wxTOP|wxEXPAND + 3 + + + + #ffffff + 600, 300 diff --git a/src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg b/src/etc/wxglade/regionEditor.wxg similarity index 100% rename from src/RegionEditorFiles/NewRegionEditor/RegionEditor.wxg rename to src/etc/wxglade/regionEditor.wxg

    c}_9GXk>Xgfhvw2enol#k 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 diff --git a/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.Platform.Windows.dll b/src/RegionEditorFiles/ViconMarkerBroadcaster/bin/Debug/Tao.Platform.Windows.dll deleted file mode 100644 index 53a83447b9383c94eb02ebf225f90078988ba65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86016 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�^RaGT5d@FRX@Dm)lkq8vQQrfB8nQ@xBs$0D+a3>}IrG*O~tyV>JrT8K-5)^TPend5LeR z*53r~FYS3T;C)KKYka;Dd~E{!A_tRkKoz8I_`jW}E{u@H8=dQg!9Y-gR7e#ibRk2P zHlj|R=Tv4TsM5BpZy`}_SiRrI*UEg{6X0O#a8sz;@Pk}E8KUMT>KXD0YeQz7-ipcG z+c}8827xE)A67%6vD{Wn4;1qQlqzKZc_l;Gsyjf~G@gw&YsY zbY0qf*4o_{R)6CROv&HN%K<0cRCZmyr8c16PbB*!sH<0kf-1-%thg(Sa3dDP=6dJJ zNAsVpaOOX|3pZbMlQnuOM}B!puhnWw{pQ)(ZDNnSC7KLO)K$*`V5Wr zW!Iz?qcFDk>c7SCn9u^X^U^yO8_} zdQRvJcM3fxr?1eHe{dH$^7}@njttL%HhAPu;q4wnV9dyONZvrE{DSC!wdDv|9pVI+ z^YJ6$ASMJ>>KFzf&&q`&&W=_Rj<7>nN8X_H8Da(nVg}_{ePn%wE9O~xKP`C_D?UJ> z_-=O5oFi1CxYv{dh3JrNZwA}RD(W9MBD8PVt~wBwHqa?+gKj^G&qVBye&1>Onz%l) zv8PE31GyA2tsy$o#r17<*!rt%_01Crm(-xlc%i~T#`6EDgHXu;5|R9zYdK^{yKYp zfVLU^brRtEH~Q=7=aopd#-E}-XFC4$&R+rEI#@cGT)G`7XV@ssb�hh;zI~eB|rhfK-dg3 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 z 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