Drive Until Bump then Run Away for 5 seconds
Context and Summary
This node drives forward until it smashes into an object (e.g., John’s Leg), and then drives in reverse for 5 seconds.
Source Code Listing
download source% This node drives forward until it smashes into an object (e.g., John's
% Leg), and then drives in reverse
sub = rossubscriber('/bump')
pub = rospublisher('/raw_vel')
message = rosmessage(pub);
message.Data = [0.3, 0.3];
send(pub, message);
while 1
bumpMessage = receive(sub);
% check if any of the bump sensors are set to 1 (meaning triggered)
if any(bumpMessage.Data)
break;
end
end
% Note that we could leverage driveforward by replacing the rest of this program with
% driveforward(-1.5, -0.3)
% send robot backwards
message.Data = [-0.3, -0.3];
reverseStart = rostime('now');
send(pub, message);
% loop until 5 seconds have elapsed
while 1
current = rostime('now');
% calculate the delta t from when we started moving
elapsed = current - reverseStart;
if elapsed.seconds > 5
message.Data = [0,0]; % set wheel velocities to zero if we have reached the desire distance
send(pubvel, message); % send new wheel velocities
break;
end
end