Above is the code we programmed into Boe-Bot. The goal of the code was to program Boe-Bot to follow something that is moving. We used a loop to make sure the robot continually moves. If the distance is less than 5 cm, then the robot looks in a different direction (GOSUB Ping_Around) because it is either moving faster than the moving object or the object the robot was moving towards was not actually moving. Either way, the robot would eventually hit the object and we want to avoid that from happening. If the distance from the object is greater than 60 cm, the robot moves forward (GOSUB Forward_Pulse) because it is close enough to register there is an object it could be following. If the robot does not register an object in the direction it is facing, it switches directions (GOSUB Ping_Around) and repeats the loop. This loop repeats constantly so that the robot is always moving and can actually follow an object.
Boe-Bot Searching for an Object
To the right is an example of Boe-Bot looking for an object. Although the video does not exactly show it, there were no objects within 60 cm of Boe-Bot. Thus, it ended up moving in circles while trying to find an object.
|
|
Boe-Bot Following a Hand
To the right is an example of Boe-Bot following something. The hand was greater than 5 cm but less than 60 cm away, so Boe-Bot's sensors registered it and moved toward it. When the hand was moved away, it no longer had something to follow and started looking around for a different object. When a different hand was placed in front of Boe-Bot, it did not register it because its sensors are limited and sometimes have trouble properly detecting an object.
|
|
Boe-Bot Improvments
Boe-Bot is not a robot with machine learning capabilities. However, we thought that some machine learning algorithms could be used to make Boe-Bot a more effective robot. We theorized that incorporating algorithms under the reinforcement and transductive categories could be the best learning algorithms for Boe-Bot. Reinforcement would allow it to interact with its environment, and transduction would allow it to use inductive bias to create a new path if there are obstacles. The learning would be semi-supervised, as it would be given much of the input and output. It would be shown the initial path, but not all the input, as some obstacles might be unexplained in the examples it was initially given.