collectScansSolution

Context and Summary

This is a sample solution for moving the Neato around to various points in the Gauntlet and collecting scan data.

Source Code Listing

download source
sub = rossubscriber('/scan');

% place Neato at the origin pointing in the ihat_G direction
placeNeato(0,0,1,0)

% wait a while for the Neato to fall into place
pause(2);

% Collect data at the room origin
scan_message = receive(sub);
r_1 = scan_message.Ranges(1:end-1);
theta_1 = deg2rad([0:359]');

% place Neato at origin of G with ihat_N at a 30-degree angle relative to ihat_G
placeNeato(0,0,cos(pi/6),sin(pi/6))

% wait a while for the Neato to fall into place
pause(2);

% Then collect data for the second location
scan_message = receive(sub);
r_2 = scan_message.Ranges(1:end-1);
theta_2 = deg2rad([0:359]');

% place Neato at a new position (1,0)_G with ihat_N oriented parallel to ihat_G
placeNeato(1,0,1,0)

% wait a while for the Neato to fall into place
pause(2);

scan_message = receive(sub);
r_3 = scan_message.Ranges(1:end-1);
theta_3 = deg2rad([0:359]');

% place Neato at (0,-2)_G with ihat_N at a 60-degree angle relative to ihat_G
placeNeato(0,-2,cos(pi/3),sin(pi/3))

% wait a while for the Neato to fall into place
pause(2);

scan_message = receive(sub);
r_4 = scan_message.Ranges(1:end-1);
theta_4 = deg2rad([0:359]');

% Shove everything into a matrix (you can use the matrix or the
% individual r_x and theta_x variables
r_all = [r_1 r_2 r_3 r_4];
theta_all = [theta_1 theta_2 theta_3 theta_4];

% I decided to store the collected data in a .mat file so I could iterate
% on my solution without being connected to the simulator.
save('mydata.mat','r_all','theta_all')