Bull in the Ring
Work D
Work Done By- Pranav Ramkrishnan, Std.12th
Objective:
This is an extremely simplistic, yet interesting application using the i-Mach kit to make something that can do real and useful work. The basic aim of this task is to build and program an autonomous robot that can detect objects within its surrounding environment and having detected the object, the robot must push the object out of the arena. However the robot must at all times remain within the arena, just as a bull must remain within the bull fighting arena. Imagine if the bull left the ring, it would result in chaos!
This problem statement adapted in this task is one that has been used in several international robotic competitions and events at high school and college levels , however it has never been attempted with the i-Mach kit, hence giving us opportunity to explore the boundaries of this kit.
To make a robotic application, we shall be using metal cans, as objects and design an arena which is black and has a white boundary around it.
Description of the Robot:
The structure of this robot was made using the mechano parts provided in the i-Mach kit. It was important to design a framework which is both sturdy and compact. Before going into the explanation of the physical structure, here is a list of sensors used to make this particular version of the “Bull”:
· 3 Obstacle Sensor – used to detect the metal can (object), the arrangement of these sensors has been discussed below.
· 2 Line sensors – used to sense the edge of the arena (white) so that the robot does not go out of the arena.
Here is a picture of “Bull” and the design as been explained below:
Figure 1. “The Bull”
Explanation:
Obstacle Sensors:
Sensor2, Sensor3 and Sensor4 are all obstacle sensors, that are used to detect the presence of the object, in close proximity to the robot. In order to make sure that the robot is able to read an object from all angles, the sensors are placed, one facing forward – so that if an object(metal can) is in front, the robot will charge towards it and then push it out. Two more obstacle sensors were placed on the two sides of the robot (left and right) so that if the robot as no object in front of it, but one on either sides, it must be able to detect it, turn to the respective side and then charge forwards to push the can out of the arena.
Line Sensors:
Sensor6 and Sensor6 are line sensors.The placement of line sensors is fairly obvious. The sole purpose of the line sensors is to give a feedback (HIGH) when the sensor is over a white surface and a LOW feedback when the sensor is over a black surface. It is interesting to consider why only two line sensors were placed, one front and back and why no more line sensors were place on either sides of the robot. Well, the answer to this is that the robot will be only pushing the metal can from the front. So Sensor6 is the main line sensor that will be detecting the edge. Sensor5 is an extra sensor, which is used so that in case the robot reversing and moves towards the line, it detects the line so that the robot can move forward. So since the robot will not be moving sideways, there is no need to place anymore line sensors on the side, like we placed obstacle sensors on the side as well.
Now coming to the Physical design:
Figure 2:
In order to build a stable robot, one must keep the robot as low as possible, also since this has a specific function to push an object, the robot must have a grabbing mechanism. Shown in Figure 2, this particular robot can only hold a specific size of obstacle, although is the object is bigger then the robot could still push it forward (of course, provided the motors used can support the load!). While building this grabbing mechanism, one must also remember to protect the sensors from impact with the object. One can make the grabbing mechanism longer and wider, but if that is done, the robot is going to start leaning forward, and may not be as stable as before (centre of gravity will shift forward). Further, the robot will become a lot slower, and generally speaking bulls are fast animals!!
Figure 3: “The Bull” at work
Algorithm:
The algorithm logic used to program this robot is fairly easy to comprehend.
Points to keep in mind while reading this algorithm:
Ø Line sensor is ON over a white surface and OFF over a black surface
Ø Obstacle sensor is OFF when an object is in front of it and ON when there is no object in front of it.
So the algorithm logic is as follows:
1. Move forward.
2. If Sensor6 is ON, then go back, turn around and move forward (this is detecting a white line and then moving away from it)
3. While moving forward check if Sensor2 is OFF, if Sensor2 is OFF continue going forward, until line.
4. While moving forward check if Sensor3 is OFF, if Sensor3 is OFF, then stop and keep turning to the right until Sensor2 is OFF (this means the object is now in front of the robot). Then move forward with the metal can to the edge.
5. While moving forward check if Sensor4 is OFF, if Sensor4 is OFF, then stop and keep turning to the left until Sensor2 is OFF, then move forward.
6. If Sensor5 is ON, then move forward (white edge is behind the robot and it has to move forward).
PROGRAM:
BEGIN
{
FOREVER
{
IF(SENSOR6 IS ON) // Forward Line Sensor detecting a white edge.
{
RIGHTMOTOR(FORWARD,100); // Inspite of detecting the white edge the robot
continues forward for 250 milliseconds to ensure
LEFTMOTOR(FORWARD,100); // that the object has been completely pushed
out of the arena.
WAIT(250);
RIGHTMOTOR(0,0); // Stops for 500 milliseconds
LEFTMOTOR(0,0);
WAIT(500);
RIGHTMOTOR(BACKWARD,100); // then comes backward for 1 sec, to avoid
the line
LEFTMOTOR(BACKWARD,100);
WAIT(1000);
RIGHTMOTOR(FORWARD,100); // takes a differential right turn (turning on the
spot) for 1.5 seconds,
LEFTMOTOR(BACKWARD,100); // this is approximately 180 degree on full
batteries.
WAIT(1500);
}
IF(SENSOR6 IS OFF) // Case when the robot is in the arena, that is on a black
surface, the robot moves forward.
{
RIGHTMOTOR(FORWARD,100);
LEFTMOTOR(FORWARD,100);
IF(SENSOR2 IS OFF) // Conditions while moving forward
{
RIGHTMOTOR(FORWARD,100); // Case 1 – Object in front of the robot, the
robot continues forward, until the white
edge.
LEFTMOTOR(FORWARD,100);
}
IF(SENSOR4 IS OFF)
{ // Case 2 – Object on the left side.
RIGHTMOTOR(0,0);
LEFTMOTOR(0,0);
WAIT(500);
WHILE(SENSOR2 IS ON)
{
RIGHTMOTOR(FORWARD,100); // Turning differentially to the left while
Senso2 reads the object
LEFTMOTOR(BACKWARD,100);
}
RIGHTMOTOR(FORWARD,100); // Pushing the object out after turning.
LEFTMOTOR(FORWARD,100);
}
IF(SENSOR3 IS OFF)
{
RIGHTMOTOR(0,0); // Case 3 – Object on right side
LEFTMOTOR(0,0);
WAIT(500);
WHILE(SENSOR2 IS ON)
{
LEFTMOTOR(FORWARD,100); // Once again turning differentially until
Sensor2 reads the object
RIGHTMOTOR(BACKWARD,100);
}
RIGHTMOTOR(FORWARD,100); // Pushing the object out of the arena.
LEFTMOTOR(FORWARD,100);
}
}
IF(SENSOR5 IS ON) // Behind line sensor detects the white edge. The robot
moves forward to avoid edge. No pushing from the back.
{
RIGHTMOTOR(FORWARD,100);
LEFTMOTOR(FORWARD,100);
}
}
}
END
Here is the Video link to have a glimpse of what the bull in the ring is exactly upto:
http://www.youtube.com/watch?v=SSl5xa6xDNM
Further Development (Food for Thought):
Although this robot is successful in accomplishing its task, that is to push away the metal cans from the arena without leaving the arena, there are possibilities for development and enhancement:
Physical/ Structural:
1. One can think about making a lifting mechanism instead of a gripping mechanism, something like a crane or a forklift.
2. The Robot can be used as a arena cleaner if can be made faster and stronger, so that it can even clean bigger areas.
3. Design an arm such that the robot can lift objects of different dimensions.
Abilities:
1. One could program the robot to pick up an object, come to a particular spot and drop it.
2. Instead of picking up every single object from the arena, the robot can be programmed in such a way that it only selects a particular type of object.
3. This can be further expanded into thinking about sorting out random objects in an enclosed arena into sorted groups.
2 Comments on “Bull in the Ring”
На мой взгляд тема весьма интересна. Давайте с Вами пообщаемся в PM….
Work D Work Done By- Pranav Ramkrishnan, Std…..
Конечно. Я согласен с Вами….
Work D Work Done By- Pranav Ramkrishnan, Std…..