From 6c18af309e3d02fe55c257e5f36c32491b7c1719 Mon Sep 17 00:00:00 2001 From: Duy-Nguyen Ta Date: Sat, 9 Jun 2012 04:01:37 +0000 Subject: [PATCH] VisualISAMExample in MATLAB with all options enabled. --- matlab/examples/VisualISAMExample.m | 30 ++- matlab/examples/VisualISAMGenerateData.m | 1 - matlab/examples/VisualISAMInitOptions.m | 22 --- matlab/examples/VisualISAMPlot.m | 8 +- matlab/examples/VisualISAM_gui.fig | Bin 9614 -> 9781 bytes matlab/examples/VisualISAM_gui.m | 224 +++++++++++------------ 6 files changed, 141 insertions(+), 144 deletions(-) delete mode 100644 matlab/examples/VisualISAMInitOptions.m diff --git a/matlab/examples/VisualISAMExample.m b/matlab/examples/VisualISAMExample.m index 9bbe8b9f2..633c20cb5 100644 --- a/matlab/examples/VisualISAMExample.m +++ b/matlab/examples/VisualISAMExample.m @@ -11,11 +11,37 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear -figure(1); -VisualISAMInitOptions +%% Global variables used in VisualISAMExample +VisualISAMGlobalVars + +%% Setting data options +TRIANGLE = true; +NCAMERAS = 20; +SHOW_IMAGES = false; + +%% iSAM Options +HARD_CONSTRAINT = false; +POINT_PRIORS = false; +BATCH_INIT = true; +REORDER_INTERVAL = 10; +ALWAYS_RELINEARIZE = false; + +%% Display Options +SAVE_GRAPH = false; +PRINT_STATS = true; +DRAW_INTERVAL = 4; +CAMERA_INTERVAL = 1; +DRAW_TRUE_POSES = false; +SAVE_FIGURES = false; +SAVE_GRAPHS = false; + +%% Generate data and initialize iSAM with the first pose and points VisualISAMGenerateData VisualISAMInitialize +figure; VisualISAMPlot + +%% Main loop for iSAM: stepping through all poses for frame_i=2:NCAMERAS VisualISAMStep if mod(frame_i,DRAW_INTERVAL)==0 diff --git a/matlab/examples/VisualISAMGenerateData.m b/matlab/examples/VisualISAMGenerateData.m index 7ab135168..fd87c5434 100644 --- a/matlab/examples/VisualISAMGenerateData.m +++ b/matlab/examples/VisualISAMGenerateData.m @@ -1,5 +1,4 @@ VisualISAMGlobalVars -sprintf('vData...') %% Generate simulated data points = {}; diff --git a/matlab/examples/VisualISAMInitOptions.m b/matlab/examples/VisualISAMInitOptions.m deleted file mode 100644 index a9ef09bb5..000000000 --- a/matlab/examples/VisualISAMInitOptions.m +++ /dev/null @@ -1,22 +0,0 @@ -VisualISAMGlobalVars - -%% Data Options -TRIANGLE = true; -NCAMERAS = 20; -SHOW_IMAGES = false; - -%% iSAM Options -HARD_CONSTRAINT = false; -POINT_PRIORS = false; -BATCH_INIT = true; -REORDER_INTERVAL=10; -ALWAYS_RELINEARIZE = false; - -%% Display Options -SAVE_GRAPH = false; -PRINT_STATS = true; -DRAW_INTERVAL = 4; -CAMERA_INTERVAL = 1; -DRAW_TRUE_POSES = false; -SAVE_FIGURES = false; -SAVE_GRAPHS = false; \ No newline at end of file diff --git a/matlab/examples/VisualISAMPlot.m b/matlab/examples/VisualISAMPlot.m index 59d4014a3..d7f5c55b0 100644 --- a/matlab/examples/VisualISAMPlot.m +++ b/matlab/examples/VisualISAMPlot.m @@ -37,9 +37,13 @@ sprintf('Done!') t=toc; % if DRAW_INTERVAL~=NCAMERAS, plot(frame_i,t,'b.'); end if SAVE_FIGURES - print(h,'-dpng',sprintf('VisualiSAM%03d.png',frame_i)); + fig2 = figure('visible','off'); + newax = copyobj(h,fig2); + colormap(fig2,'hot'); + set(newax, 'units', 'normalized', 'position', [0.13 0.11 0.775 0.815]); + print(fig2,'-dpng',sprintf('VisualiSAM%03d.png',frame_i)); end -if SAVE_GRAPHS +if SAVE_GRAPHS && (frame_i>1) isam.saveGraph(sprintf('VisualiSAM%03d.dot',frame_i)); end diff --git a/matlab/examples/VisualISAM_gui.fig b/matlab/examples/VisualISAM_gui.fig index 0597b776a14d7d85fb38bf043ab03dca6e68d91c..07d1b793d90768cdf86718f3c85800a930e7b52a 100644 GIT binary patch delta 9326 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 delta 9158 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 Lv(*H0x8VODxWA2J diff --git a/matlab/examples/VisualISAM_gui.m b/matlab/examples/VisualISAM_gui.m index 890ecd009..ab48a4cc1 100644 --- a/matlab/examples/VisualISAM_gui.m +++ b/matlab/examples/VisualISAM_gui.m @@ -22,7 +22,7 @@ function varargout = VisualISAM_gui(varargin) % Edit the above text to modify the response to help VisualISAM_gui -% Last Modified by GUIDE v2.5 08-Jun-2012 16:03:16 +% Last Modified by GUIDE v2.5 08-Jun-2012 23:53:47 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; @@ -53,8 +53,8 @@ function VisualISAM_gui_OpeningFcn(hObject, eventdata, handles, varargin) % varargin command line arguments to VisualISAM_gui (see VARARGIN) % Choose default command line output for VisualISAM_gui +initOptions(handles) handles.output = hObject; -VisualISAMInitOptions % Update handles structure guidata(hObject, handles); @@ -62,11 +62,51 @@ guidata(hObject, handles); % UIWAIT makes VisualISAM_gui wait for user response (see UIRESUME) % uiwait(handles.figure1); - function showFramei(hObject, handles) VisualISAMGlobalVars set(handles.frameStatus, 'String', sprintf('Frame: %d',frame_i)); + drawnow guidata(hObject, handles); + +function showWaiting(handles, status) + set(handles.waitingStatus,'String', status); + drawnow + guidata(handles.waitingStatus, handles); + +function triangle = chooseDataset(handles) + str = cellstr(get(handles.dataset,'String')); + sel = get(handles.dataset,'Value'); + switch str{sel} + case 'triangle' + triangle = true; + case 'cube' + triangle = false; + end + +function initOptions(handles) + VisualISAMGlobalVars + %% Setting data options + TRIANGLE = chooseDataset(handles) + NCAMERAS = str2num(get(handles.numCamEdit,'String')) + SHOW_IMAGES = get(handles.showImagesCB,'Value') + + %% iSAM Options + HARD_CONSTRAINT = get(handles.hardConstraintCB,'Value') + POINT_PRIORS = get(handles.pointPriorsCB,'Value') + set(handles.batchInitCB,'Value',1); + drawnow + BATCH_INIT = get(handles.batchInitCB,'Value') + REORDER_INTERVAL = str2num(get(handles.numCamEdit,'String')) + ALWAYS_RELINEARIZE = get(handles.alwaysRelinearizeCB,'Value') + + %% Display Options + SAVE_GRAPH = get(handles.saveGraphCB,'Value') + PRINT_STATS = get(handles.printStatsCB,'Value') + DRAW_INTERVAL = str2num(get(handles.drawInterval,'String')) + CAMERA_INTERVAL = str2num(get(handles.cameraIntervalEdit,'String')) + DRAW_TRUE_POSES = get(handles.drawTruePosesCB,'Value') + SAVE_FIGURES = get(handles.saveFiguresCB,'Value') + SAVE_GRAPHS = get(handles.saveGraphsCB,'Value') % --- Outputs from this function are returned to the command line. function varargout = VisualISAM_gui_OutputFcn(hObject, eventdata, handles) @@ -84,13 +124,13 @@ function intializeButton_Callback(hObject, eventdata, handles) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) VisualISAMGlobalVars - DRAW_INTERVAL = str2num(get(handles.drawInterval,'String')) ; - NCAMERAS = str2num(get(handles.numCamEdit,'String')) ; + initOptions(handles) VisualISAMGenerateData VisualISAMInitialize VisualISAMPlot showFramei(hObject, handles) + % --- Executes on button press in stepButton. function stepButton_Callback(hObject, eventdata, handles) % hObject handle to stepButton (see GCBO) @@ -102,32 +142,25 @@ function stepButton_Callback(hObject, eventdata, handles) showFramei(hObject, handles) VisualISAMStep if mod(frame_i,DRAW_INTERVAL)==0 + showWaiting(handles, 'Computing marginals...'); VisualISAMPlot + showWaiting(handles, ''); end end -% --- Executes on selection change in popupmenu1. -function popupmenu1_Callback(hObject, eventdata, handles) -% hObject handle to popupmenu1 (see GCBO) +% --- Executes on selection change in dataset. +function dataset_Callback(hObject, eventdata, handles) +% hObject handle to dataset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) -% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array -% contents{get(hObject,'Value')} returns selected item from popupmenu1 - global TRIANGLE - str = cellstr(get(hObject,'String')); - sel = get(hObject,'Value'); - switch str{sel} - case 'triangle' - TRIANGLE = true - case 'cube' - TRIANGLE = false - end +% Hints: contents = cellstr(get(hObject,'String')) returns dataset contents as cell array +% contents{get(hObject,'Value')} returns selected item from dataset % --- Executes during object creation, after setting all properties. -function popupmenu1_CreateFcn(hObject, eventdata, handles) -% hObject handle to popupmenu1 (see GCBO) +function dataset_CreateFcn(hObject, eventdata, handles) +% hObject handle to dataset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called @@ -143,16 +176,17 @@ function runButton_Callback(hObject, eventdata, handles) % hObject handle to runButton (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) - sprintf('Not yet implemented') - - -% --- Executes on button press in stopButton. -function stopButton_Callback(hObject, eventdata, handles) -% hObject handle to stopButton (see GCBO) -% eventdata reserved - to be defined in a future version of MATLAB -% handles structure with handles and user data (see GUIDATA) - sprintf('Not yet implemented') - + VisualISAMGlobalVars + while (frame_i