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