The Matlab toolbox used for this project can be found here.
The iRobot Create Open Interface Manual can be found here.
The iterative learning process code is found below, in Matlab:
clear;
clc;
[serPort] = RoombaInit(4);
robostates = 0;
rightWheel = .2;
leftWheel = .2;
sequence = [];
while 1
switch robostates
case 0
[~] = DistanceSensorRoomba(serPort);
[BR, BL, WR, WL, WC,BF] = BumpsWheelDropsSensorsRoomba(serPort);
while BR~=1 && BL~=1 && BF~=1
setDriveWheelsCreate(serPort, rightWheel, leftWheel);
[BR, BL, WR, WL, WC,BF] = BumpsWheelDropsSensorsRoomba(serPort);
end
setDriveWheelsCreate(serPort,0,0);
newdistance = DistanceSensorRoomba(serPort);
if newdistance <= 0.06
sequence(end)=90;
else
sequence = [sequence (newdistance-.05) -90];
end
robostates = 2;
case 1
for ind = 1:length(sequence)
if abs(sequence(ind))==90
turnAngle(serPort, .05, sequence(ind));
else
travelDist(serPort, 0.2, sequence(ind));
end
end
robostates = 0;
case 2
[bA bP] = ButtonsSensorRoomba(serPort);
while 1
if(bP==1)
break;
end
[bA bP] = ButtonsSensorRoomba(serPort) ;
end
robostates = 1;
end
end