{"id":365,"date":"2017-09-21T14:23:18","date_gmt":"2017-09-21T06:23:18","guid":{"rendered":"https:\/\/www.cognav.net\/?p=365"},"modified":"2017-09-21T14:27:33","modified_gmt":"2017-09-21T06:27:33","slug":"365","status":"publish","type":"post","link":"https:\/\/braininspirednavigation.com\/?p=365","title":{"rendered":"Some Tips When Run RatSLAM MATLAB Code"},"content":{"rendered":"<p style=\"text-align: center;\">\n\t<span style=\"font-size:16px;\"><strong>Some Tips When Run RatSLAM MATLAB Code<\/strong><\/span>\n<\/p>\n<p style=\"text-align: center;\">\n\t<span style=\"font-size:12px;\"><strong>Fangwen Yu<\/strong><\/span>\n<\/p>\n<p style=\"text-align: center;\">\n\t<span style=\"font-size:12px;\"><strong>Sep 21, 2017<\/strong><\/span>\n<\/p>\n<p>\n\t<span style=\"font-size:14px;\"><strong>0. RatSLAM MATLAB Code and Datasets<\/strong><\/span>\n<\/p>\n<p>\n\t<strong>Open source code: <\/strong>\n<\/p>\n<p>\n\t<a href=\"http:\/\/\u00a0https:\/\/wiki.qut.edu.au\/display\/cyphy\/RatSLAM+MATLAB\">&nbsp;https:\/\/wiki.qut.edu.au\/display\/cyphy\/RatSLAM+MATLAB<\/a>\n<\/p>\n<p>\n\t<strong>Datasets Links:<\/strong>\n<\/p>\n<p>\n\tHere is a link to the iRat&#39;s video:\n<\/p>\n<p>\n\t<a href=\"https:\/\/www.dropbox.com\/s\/4905nzbx4pnihr7\/log_irat_red.avi?dl=0\">https:\/\/www.dropbox.com\/s\/4905nzbx4pnihr7\/log_irat_red.avi?dl=0<\/a>\n<\/p>\n<p>\n\tThe iRat&#39;s odom in text form:\n<\/p>\n<p>\n\t<a href=\"https:\/\/www.dropbox.com\/s\/9ns3uknayad8y1t\/log_irat_red.txt?dl=0\">https:\/\/www.dropbox.com\/s\/9ns3uknayad8y1t\/log_irat_red.txt?dl=0<\/a>\n<\/p>\n<p>\n\tAnd the overhead video:\n<\/p>\n<p>\n\t<a href=\"https:\/\/www.dropbox.com\/s\/ffosfmmyzy9gfkq\/log_overhead.avi?dl=0\">https:\/\/www.dropbox.com\/s\/ffosfmmyzy9gfkq\/log_overhead.avi?dl=0<\/a>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t<span style=\"font-size:14px;\"><strong>1. Read video data<\/strong><\/span>\n<\/p>\n<p>\n\tFor latest vision MATLAB, the aviread function was been removed instead by VideoReader function.\n<\/p>\n<p>\n\tIn rs_main.m,\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n<\/p>\n<p>\n\t% specify the movie and the frames to read\n<\/p>\n<p>\n\tmovinfo = aviinfo(MOV_FILE);\n<\/p>\n<p>\n\tSTART_FRAME = 1;\n<\/p>\n<p>\n\tEND_FRAME = movinfo.NumFrames;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t% these are the raw image dimensions\n<\/p>\n<p>\n\t% the offset is the number of pixels from the centre of the image to the\n<\/p>\n<p>\n\t% true zero rotation direction\n<\/p>\n<p>\n\tIMAGE_Y_SIZE = movinfo.Height;\n<\/p>\n<p>\n\tIMAGE_X_SIZE = movinfo.Width;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t<span style=\"color:#FF0000;\">Can be replaced by follow code<\/span>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t% specify the movie and the frames to read\n<\/p>\n<p>\n\tmovinfo = VideoReader(MOV_FILE);\n<\/p>\n<p>\n\tSTART_FRAME = 1;\n<\/p>\n<p>\n\tEND_FRAME = movinfo.NumberOfFrames;\n<\/p>\n<p>\n\tFRAME_NUMBER = movinfo.NumberOfFrames;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t% these are the raw image dimensions\n<\/p>\n<p>\n\t% the offset is the number of pixels from the centre of the image to the\n<\/p>\n<p>\n\t% true zero rotation direction\n<\/p>\n<p>\n\tIMAGE_Y_SIZE = movinfo.Height;\n<\/p>\n<p>\n\tIMAGE_X_SIZE = movinfo.Width;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t\/\/\/\/\/\/\/\/\/\/\/\/\n<\/p>\n<p>\n\t% grab the video info and first block &#8230; send to the vision module\n<\/p>\n<p>\n\t% aviread\n<\/p>\n<p>\n\t% mov = aviread(MOV_FILE, START_FRAME:(BLOCK_READ+START_FRAME));\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t<span style=\"color:#FF0000;\">Can be replaced by follow code<\/span>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t% grab the video info and first block &#8230; send to the vision module\n<\/p>\n<p>\n\tmov_temp = read(movinfo, [START_FRAME (BLOCK_READ+START_FRAME)]);\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t% save the experience map information to the disk for later playback\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; % read the avi file in blocks and record the delta time\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; if (mod(frame, BLOCK_READ) == 0)\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; save(strcat(LOG_FILE, num2str(frame)), &#39;frame&#39;, &#39;exps&#39;, &#39;exp_history&#39;, &#39;vt_history&#39;);\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; time_delta_s = [time_delta_s; toc]; %#ok&lt;AGROW&gt;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov = aviread(MOV_FILE, (frame+START_FRAME):min([(frame+BLOCK_READ &#8211; 1)+START_FRAME, movinfo.NumFrames]));\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ODO_FILE ~= 0\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ododata = csvread(ODO_FILE, frame+START_FRAME, 0, [frame+START_FRAME 0 min([(frame+BLOCK_READ &#8211; 1)+START_FRAME, movinfo.NumFrames]) 1]);\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tic\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; end\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; % visual templates and visual odo uses intensity so convert to grayscale\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; im = rgb2gray(mov(mod(frame, BLOCK_READ) + 1).cdata);\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t<span style=\"color:#FF0000;\">Can be replaced by follow code<\/span>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; % save the experience map information to the disk for later playback\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; % read the avi file in blocks and record the delta time\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; if (mod(frame, BLOCK_READ) == 0)\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; save(strcat(LOG_FILE, num2str(frame)), &#39;frame&#39;, &#39;exps&#39;, &#39;exp_history&#39;, &#39;vt_history&#39;);\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; time_delta_s = [time_delta_s; toc]; %#ok&lt;AGROW&gt;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mov_temp = read(movinfo, [(frame+START_FRAME) min([(frame+BLOCK_READ &#8211; 1)+START_FRAME, FRAME_NUMBER])]);\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ODO_FILE ~= 0\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ododata = csvread(ODO_FILE, frame+START_FRAME, 0, [frame+START_FRAME 0 min([(frame+BLOCK_READ &#8211; 1)+START_FRAME, FRAME_NUMBER]) 1]);\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tic\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; end\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; % visual templates and visual odo uses intensity so convert to grayscale\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; % aviread\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; % im = rgb2gray(mov(mod(frame, BLOCK_READ) + 1).cdata);\n<\/p>\n<p>\n\t&nbsp;&nbsp;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; mov = immovie(mov_temp);\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; im = rgb2gray(mov(mod(frame, BLOCK_READ) + 1).cdata);\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t<span style=\"font-size:14px;\"><strong>2. Parameter <\/strong><\/span>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&#39;IMAGE_VT_Y_RANGE&#39;, (480\/2 &#8211; 80 &#8211; 40):(480\/2 + 30 &#8211; 40), &#8230;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; &#39;IMAGE_VT_X_RANGE&#39;, (640\/2 &#8211; 280 + 15):(640\/2 &#8211; 10 + 15), &#8230;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; &#39;IMAGE_VTRANS_Y_RANGE&#39;, 60:230, &#8230;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; &#39;IMAGE_VROT_Y_RANGE&#39;, 75:235, &#8230;\n<\/p>\n<p>\n\t&nbsp;&nbsp;&nbsp; &#39;IMAGE_ODO_X_RANGE&#39;, (180 + 15):(400 + 15), &#8230;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\tThe range can not exceed the video image size.\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t<strong><span style=\"font-size:14px;\">3. The Running Results<\/span><\/strong>\n<\/p>\n<p>\n\t&nbsp;<a class=\"boxer\" href=\"https:\/\/www.braininspirednavigation.com\/wp-content\/uploads\/2017\/09\/RatSLAM-MATLAB-Code-Running-Result.png\" rel=\"attachment wp-att-368\"><img loading=\"lazy\" decoding=\"async\" alt=\"RatSLAM MATLAB Code Running Result\" class=\"alignnone size-large wp-image-368\" height=\"596\" src=\"https:\/\/www.braininspirednavigation.com\/wp-content\/uploads\/2017\/09\/RatSLAM-MATLAB-Code-Running-Result-1024x623.png\" width=\"980\" srcset=\"https:\/\/braininspirednavigation.com\/wp-content\/uploads\/2017\/09\/RatSLAM-MATLAB-Code-Running-Result-1024x623.png 1024w, https:\/\/braininspirednavigation.com\/wp-content\/uploads\/2017\/09\/RatSLAM-MATLAB-Code-Running-Result-300x183.png 300w, https:\/\/braininspirednavigation.com\/wp-content\/uploads\/2017\/09\/RatSLAM-MATLAB-Code-Running-Result-768x467.png 768w, https:\/\/braininspirednavigation.com\/wp-content\/uploads\/2017\/09\/RatSLAM-MATLAB-Code-Running-Result.png 1456w\" sizes=\"(max-width: 980px) 100vw, 980px\" \/><\/a>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t<span style=\"font-size:14px;\"><strong>4. Useful links<\/strong><\/span>\n<\/p>\n<p>\n\tVideoReader\n<\/p>\n<p>\n\t<a href=\"http:\/\/au.mathworks.com\/help\/matlab\/ref\/videoreader.html?searchHighlight=VideoReader&amp;s_tid=doc_srchtitle\">http:\/\/au.mathworks.com\/help\/matlab\/ref\/videoreader.html?searchHighlight=VideoReader&amp;s_tid=doc_srchtitle<\/a>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\treadFrame&nbsp;&nbsp;\n<\/p>\n<p>\n\t<a href=\"http:\/\/au.mathworks.com\/help\/matlab\/ref\/videoreader.readframe.html?searchHighlight=video%20frame&amp;s_tid=doc_srchtitle\">http:\/\/au.mathworks.com\/help\/matlab\/ref\/videoreader.readframe.html?searchHighlight=video%20frame&amp;s_tid=doc_srchtitle<\/a>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\timmovie\n<\/p>\n<p>\n\t<a href=\"http:\/\/au.mathworks.com\/help\/images\/ref\/immovie.html?searchHighlight=movie%20structure%20array&amp;s_tid=doc_srchtitle\">http:\/\/au.mathworks.com\/help\/images\/ref\/immovie.html?searchHighlight=movie%20structure%20array&amp;s_tid=doc_srchtitle<\/a>\n<\/p>\n<p>\n\t&nbsp;\n<\/p>\n<p>\n\t&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Some Tips When Run RatSLAM MATLAB Code Fangwen Yu Sep 21, 2017 0. RatSLAM MATLAB Code and Datasets Open source code: &nbsp;https:\/\/wiki.qut.edu.au\/display\/cyphy\/RatSLAM+MATLAB Datasets Links: Here is a link to the iRat&#39;s video: https:\/\/www.dropbox.com\/s\/4905nzbx4pnihr7\/log_irat_red.avi?dl=0 The iRat&#39;s odom in text form: https:\/\/www.dropbox.com\/s\/9ns3uknayad8y1t\/log_irat_red.txt?dl=0 And the overhead video: https:\/\/www.dropbox.com\/s\/ffosfmmyzy9gfkq\/log_overhead.avi?dl=0 &nbsp; 1. Read video data For latest vision MATLAB, the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[114],"tags":[117,115,116],"_links":{"self":[{"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=\/wp\/v2\/posts\/365"}],"collection":[{"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=365"}],"version-history":[{"count":3,"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=\/wp\/v2\/posts\/365\/revisions"}],"predecessor-version":[{"id":370,"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=\/wp\/v2\/posts\/365\/revisions\/370"}],"wp:attachment":[{"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=365"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=365"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/braininspirednavigation.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=365"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}