Saturday, July 11, 2009

Get a head start on simple robotics

I'm back to posting something almost after a month. Still I'm lazy enough to post the same thing which i've wriiten for CSAU's(Computer Society of Anna University) next edition of cursor magazine. Its about simple robotics and here it goes... 

check out this moving butterfly robot
Elegant Aliform Monarch Moving Butterfly
‘Robotics’ is a very common word among the guys and girls of CEG. Many people misinterpret this term as something big and hi-fi. Yeah, even for me the first thing that comes to my mind when I hear the word ‘robot’ is ASIMO! In reality, the bots we actually make at college level are quite simple and fascinating. In fact, making robots will make a great hobby. I was fortunate enough to have seniors who helped me a lot in gaining some insight into this field. In this article, I’ll discuss some theoretical aspects for building a manual radio-controlled bot.
Invariably, all the bots that we make at college move on wheels (on belts or chains too) and DC motors drive them. As Wikipedia defines a robot as an Electro-Mechanical entity, we have to primarily design a robot on Electronic and Mechanical point of view.
The mechanical design includes the chassis design, drive system and the mechanism to complete its objective. The chassis design is simple. You just have to decide where to place the motors (2 or 4 according to the bot’s objective), battery and the circuit boards. Make sure that the centre of gravity of the robot is as low as possible for greater stability. For the drive system, there are two major types
· Steering drive
· Differential drive
The steering drive is the drive system used in cars. A rack and pinion arrangement is used to steer the front wheels. This type of drive can be used in building bots for which speed is of great importance as the bot can be driven forward as well as be steered to any one direction simultaneously. But the great disadvantage is that building a precise steering mechanism is highly complicated. So, we practically don’t use this system for most projects.
Differential drive is used in almost all simple robots. In this system, a left or right turn is achieved by the differential motion of the left and right wheels. The turns can be achieved in more than one way.
Left turn – 1) Right wheels rotating in forward direction while the left ones aren’t moving (Arc turn)
2) Right wheels rotating in forward direction and the left wheels in the reverse (Spot turn)
3) Right wheels rotating faster than the left wheels. (This type is not in practice)
The right turn can be achieved in a similar way. The great advantage of this system is that it is very easy to build the electronic control. However, the bot has to stop moving forward every time it needs to turn.
There is another type of drive – the pivoted drive. This method is used for making precise turns. This is fit for use only in autonomous robots and hence I am not discussing that now.
Additional mechanisms are based on the bot’s mission. It may be a hand to pick objects, a wedge in front for sumo bots or event rack and pinion arrangements to lift objects. These things can be designed according to your choices. Often simple ingenious designs work better than complex mechanisms as greater the complexity, greater the chances for failure.
Electrical design
For a radio controlled bot, we require a transmitter and receiver module. We need not design these components. The transmitter and receiver module can be hacked from a RC toy car. I’ve given a layout of the electrical design below
The Receiver module operates at 5V whereas the motors we usually use are rated at 12V. So, in simple words, the motor driver converts the 5V output signals from the receiver to 12V and gives them to the various motors used. This driver circuit is the only circuit that we make originally for a simple bot. A typical transmitter-receiver module handles 4 signals. I’ll write on how to hack a receiver module from a toy car and how to use those four signals to effectively operate the bot in the next post.

Tuesday, June 9, 2009

The power of Composites

Can a sheet of aluminium withstand an impact of a 2kg bird at 700 kmph? No! It can't. Can the same impact be withstood by a sheet of fibre glass? I'm not sure or may be not. But a sheet of Aluminium reinforced with glass fibres? Yeah, it can. And thats the material used for making the body of the Airbus A380.

Lets see how it works. There are two essential properties that most engineering materials are expected to possess. One is that it should not deform considerably and the other is that the material should not fail or fracture. Now, for the body of the aircraft, a strong material that isn't heavy is required. Naturally we go for aluminium based alloys for this purpose. But is that strong enough to survive a a bird's impact at a relative velocity of about 700 kmph? Obviously not! So, there is need for reinforcement of the alloy with some stronger material. Surprisingly, the engineers have chosen glass! Glass is a highly brittle material and the possible failure of this material is through a brittle fracture. The mechanism of brittle fracture is given by Griffith's theory.

According to this theory, there are microscopic flaws(cracks) which propagate to form bigger cracks on the application of excessive stress. A part of the energy from the load is used to create the new surfaces as the new cracks are formed. When these cracks propagate to the surface, fracture occurs and the material fails. This is the mechanism by which glass fractures. When glass is heated and drawn into a fibre, these microscopic cracks are eliminated. Thus, when glass is in the form of fibres, fracture is prevented to a greater extent. These glass fibres are used to reinforce the Aluminum alloys and this composite is used to build the body of the A380.

A typical fiberglass sheet.

Monday, May 18, 2009

I feel the need for some research!

Well, its been a habit of mine to write exactly what I understood. In my previous posts, I've just given some (vague) ideas of how certain things work and nothing more. Blogging for more than a couple of years now, I feel that its time for me to take my writing to the next level. Yeah, from now my posts would have not just simple understandings of various phenomena or gadgets, but also some theory supporting it!

And yeah, as I promised, my next post will be about the composite used in the construction of the Airbus A380.

Thursday, May 14, 2009

Landing Gear of the Airbus A380


Before writing this article, I just want to say - "I'M BACK!"

I switched to the National Geographic channel at 10.30 AM and found that the program was to end at 11 AM. The program was about the making of the world's largest airliner- The Airbus A380. At that time of the program, the material used for making its body was being shown. It was actually a composite - Glass and Aluminium together. I'll post a separate article about this. For now I just want to write about what impressed me the most - the landing gear!

The landing gear is one of the most important components of an aircraft. For an aircraft like the A380, it should be strong enough to bear the immense weight ( The Airbus A380 weighs about 276.8 tonnes when empty) as well as absorb the shock off landing. For such a massive component, the people at Airbus came up with a very simple yet effective design for the shock absorber. Its the 'cycle pump' concept. The concept is simple- the shock absorber is a piston that moves inside a cylinder just similar to a cycle pump. As the air inside the cylinder is compressed, the shock is absorbed. In the A380's landing gear, instead of just air, oil is used As greater energy is required to compress the highly viscous oil into a chamber, greater shock is absorbed and the landing is smoother. In the NGC program, the engineer who designed the shock absorber demonstrated its capabilities using ordinary cycle pumps filled with water. It was amazing to see how those pumps absorbed the shock when a big piano was dropped(the array of pumps were fitted under the piano) and kept it intact!

And they even showed a footage of a Korean Airlines' Boeing plane landing safely in a crosswind with ONLY ONE wheel touching down first. That very well described how strong they ought to be! Hail engineering! :-)

Friday, April 24, 2009

Crunch time!

Well, I'm back to post about something after quite a long time! I can tell you what I want to tell using a simple equation.

" Practical examinations + End-Semester exams + IPL = No time for blogging "

With exams around, I dont think I'll find time to post anything in the coming fortnight. Hoping to get back with a bang from May 12th(Yeah, thats when the exams get over).

Saturday, April 11, 2009

SAE Baja 2010


As soon as I saw a poster in my class's notice board inviting second year students for an open interview for recruiting second year members for CEG's SAE(Society of Automotive Engineers) Baja 2010 team, I remembered the baja vehicle that was displayed during Kurukshetra '08. Building an ATV(All Terrain Vehicle) during the second year of your Engineering course sounds great! I badly wanted to be a part of that team. I attended the interview with a strong resume backing me. After the 15-minute interview(quite long for this kind), I came out confident of getting selected. As I expected, my name was present in the selection list.

Now that the team is finalised and registered for Baja 2010, its time to wonder about what exactly we're gonna do - build an ATV from scratch? Probably yes! Baja tests every aspect of your vehicle - the design, stability, power, speed and aesthetics too! The venue for baja 2010 is the same as that of 2009 - Pithampur, Madhya Pradesh. As we'd be starting our work soon, I guess there are exciting times ahead!

This is the SAE baja's website...

Sunday, March 29, 2009

AI Programming

From the time I entered college, I was fascinated about game programming. Once my senior told me, when the API of the game is already in you hands, the coding part can be as easy and fun as it can ever get. Yet it took me almost two years to get the determination to code for a game programming event. It was for Abacus '09, the National level symposium organised by the Department of computer science in our college. The game scenario was simple. Its similar to the snake game that everyone invariably must have played on a nokia mobile. The difference was there will be two snakes on the arena and food will be randomly generated at four points on the play area. Also, the snakes will have an energy associated with them which will decrease by a unit for every move and increase by some units for each food particle consumed. The organisers provided the API and all we had to do is to code a function that returns one of the four characters - U, D, R, L as output corresponding to the up, down, right and left movement of the snake. We are provided with the snake's position i.e., row and column number of each of the element of the snake's body, opponents position, our energy and opponents energy. Each coordinate of the play area is assigned a character where 'E' corresponds to empty, 'F'-food, 'X'-boundary, 'A'-snake A's body, 'B'-snake B's body. With so much information available at hand, the coding becomes really easy. but still, I'm a beginner! :)

I started coding and tested the game by using the same code for both the snakes(during the event, one snake will use your code and the other will use your opponent's code). After a couple of days, I thought I've done whatever I could do and submitted the code. As I'm not a great programmer, I didnt plan the algorithm at the beginning. I kept changing the structure as I kept testing the game. during submission, I could easily see that my code was divided into 4 parts.

1) Locating all the 4 food particles
2) Locating the food particle that is nearest to the snake's position
3) An initial instruction for navigation towards the food(avoiding the boundary)
4) Checking whether the initial instruction is a valid move(bumping into yourself or the opponent means you are out of the game!) and giving a valid and safe instruction.

This code works efficiently until the randomly generated food makes you move in such a way that you make a trap for yourself!

In the above picture you can see the snakes moving towards the nearest food.

In this picture, snake a bumped onto itself and lost the game!

As, many of the participants(except one) coded in a similar way, it was obvious that the random generation of the food will be the factor determining the winner. The better your luck, the greater your chances of winning. My luck was so good that my code won the second position!! Only later I heard from the organisers that the guy's code which won the first place was far more superior than the rest. That code was such that the snake wont trap itself often and also it'll try to blog the opponent and trap it!! How about that?!?!

A rewarding blog, atlast!

This year's Kriya at PSG Tech introduced an online blogging event. I've been blogging for more than two years(though spent much less time on updating blogs). So I wanted to try my luck in the event. i named the blog "Techster" and started blogging. The Kriya team used MU-Wordpress on their server to host the blogs. i enjoyed working with wordpress after a long time. As usual, I wrote some technical articles and few general ones, altogether 7 of them. With just seven posts on the blog, I never expected to wi the event and was surprised and elated after the results were announced. When i was there at PSG Tech to collect my prize, the event coordinator told me that my blog was selected for the originality of posts. A reward for original work! :)

Monday, March 9, 2009

Swing of a Cricket ball

Its time to write about something which I love the most - Cricket! When we [members of CEG cricket team] were sitting at the sidelines while our batsmen were doing the job against IIT Madras 'B' Team, one of my team mates told me that my bowling is quite effective as I deliver the ball with an upright seam which eventually aids swing. But how does it swing???

The Physics

The fundamental elements involved in the physics of swing of a cricket ball are turbulent and laminar flow of air around the ball. The swing caused is NOT BECAUSE OF MAGNUS EFFECT as the movement is along the axis of rotation of the ball and not perpendicular to it.
Inswing and Outswing

For conventional swing, the ball will move towards the rougher side. When the seam is held such that it points towards the slip and the ball is held with the rougher side on the left side, the flow of air around the ball will be turbulent on the left side and laminar on the right side. This happens when the ball is bowled at about 120 kmph or less. As the pressure on the turbulent side is lesser, in accordance with Bernoulli’s principle, the ball swings towards the left(outswinger). Inswinger occurs in a similar way when the rougher side is on the right.
Reverse swing
When the ball becomes old and if the bowler is able to generate pace higher that 120 kmph, the swing characteristics differ. The ball begins to swing in the direction of the polished side and hence reverse swing. Incase of reverse swing, the magnitude of the ball’s movement is stronger than conventional swing. It also occurs late after the ball is delivered. At higher speeds of the ball, the flow is turbulent on both sides, but the separation of airflow from the ball occurs earlier on the rougher side. So the smoother side will have constant turbulent flow and hence have a low pressure. Thus the ball moves towards the shiny side. The raised seam aids separation of airflow(also for conventional swing).
Well, as we all know Zaheer and Ishant are capable of getting reverse swing consistently(remember Ishant’s 8 over spell against Ponting?). Hope India wins the series against New Zealand :-)

Saturday, February 14, 2009

Add an icon to the page title!

For long I wanted to change the "B" icon thats displayed alogside the title of every blogger blog and have a unique icon for this blog. As usual, i approached Google for help and found one too! Now let me write how I changed the usual icon and used this "T" (For Techster, ofcourse!) icon. The works involved in this are

(i) Create an icon
(ii) Uploaded it to any web server
(iii) Use that for your blogger blog

Instead of going for any web server, I preffered to use blogger for storing my image. Since blogger doesn't allow you to upload a ".ico" file, I used the 'KIconEdit(Using KDE 3.5.4-10.fc6 Fedora-Core)' application in our college's browsing centre to create a simple icon and saved it as a png file. Then I created a new post(not for publishing) and uploaded this png image there. I copied the location of this image. Finally I added the following code inside the head section of the html code (Goto Layout ---> Edit html) of my blog page.

Save the edits and view your blog. You'l be getting your new icon for the title! :)

(i) You can directly use a jpeg picture. Just upload the pic, copy its lopcation and add the given line of code
(ii) I've used a picture of the code here since blogger will take it as a html tag if I type it directly.

Thursday, February 12, 2009

Satellites collide!

I was bored to the core and wanted to read something interesting. It was then I found a truly interesting article on the home page of Wikipedia. It was something about the "collision of satellites" - something that I have never heard of before! On February 10 this year, two satellites in orbit - Iridium 33 and Kosmos-2251 collided with each other directly while orbiting the earth. This direct collision was so severe that both were completely destroyed and more than 500 pieces of debris were tracked by U.S. Space Surveillance Network.

The Iridium 33 was launched on September 14, 1997 and was operational till the collision. The Kosmos-2251 was launched on June 16, 1993 and was retired before several years.

Hope that the debris produced by this collision won't pose a threat to the other spacecrafts and upcoming launches.
An artist's depiction!

Wednesday, February 4, 2009

The K! Project

Well, I'm back to take care of my log after quite a long period! Yeah, its not easy even to have proper meals when you are a part of the Project team of K '09. So, now that I'm back, without much bla bla bla, I'll directly jump into what I wanted to do all these days - post about our Kurukshetra Mega project.

This year's Mega project for Kurukshetra was A Strategic All-Terrain Robotic Platform. I was a part of the Mechanical Team comprising two - myself and Arun seashatri for the project. Santhosh, Vijayakumar and Karthikeyan took care of the electronics and programming part.

The objective
Our objective was to build a small robust unit that could navigate in rugged terrain and tackle small obstacles and most importantly do a surveillance work.

The Construction
We had certain things to keep in mind before starting the construction..

1) The most important thing - ALL TERRAIN NAVIGATION
2) Effective suspension - For enhanced camera feed from the vehicle
3) Sturdiness - our imported 130 RPM, 24 V motors may very well disintegrate the unit if it has a weak frame. Moreover it should hold 2 12 V UPS batteries each weighing more than 2.5 Kg.
4) An effective arm to pick small objects

Now, for the first concern - all terrain navigation - we had to decide on the type of wheels. We had a look at the trainer wheels in kids' cycles and thought that it would work out for us. Then we worked on the suspension. We fell upon the springs used in the gear box of ambassador cars. With the essential parts in hand, the design of the body was done easily. All that we had to do then was - go to the workshop; cut the metal (we used Mild Steel) ; put the things in place and bolt them! Wait, I forgot to tell about the arm! Even before deciding on the wheels, we finished the construction of the arm using 6mm thick Aluminium plates. Seshatri came up with an effective idea of a pulley system that could make the maximum use of low torque motors. It was very simple yet effective considering the limited options we had.

Finally after some two months(semester exams slowed us down), we were done with the chassis. It was time for a test run! The first test run gave us a BIG BIG BLOW!! Yeah, we totally forgot the "Buckling and twisting" nature of springs during the construction. The very high torque motors that we used made the springs twisted in different directions and caused big variations in the alignment of wheels. We had to use unconventional methods like placing bolts and clamps at appropriate places to control the twisting. But we couldn't stop the buckling. Only during the next test run, we realised that buckling - which is considered to be a bad aspect in suspension, actually helped us save the bot from the juggernaut of the motor!! The initial acceleration was immense that it could have toppled the bot without the spring that absorbed the force. Finally we added the gripper to the arm and mounted the arm. Santhosh turned up with better wheels for the bot - those wheels used in trolleys seen at airports. That type of wheel impressed all and we used that finally. (I'm simply sayin "we mounted the arm".. this is an understatement! we had to work for days and experienced sleepless night in doing these works!)

The Base Console
Atlast, after a lot of fine tuning and adjustments, the base console was ready. The base console was the most attractive part of the bot. The base being a computer, the console application displays
1) The camera feed
2) Parameters like system voltage, system current, motor supply voltage, remaining battery power etc..
3) The GPS module placed in the bot displays the coordinates of its current position and its velocity
4) Google map embedded in the application provides visuals of its location

Due to unexpected and shocking happenings like burning of TV tuner card in the computer, failure of the wireless transmitter of camera and so on just on the day before the date of display, we had to postpone the date of display by 2 days. After doing the necessary changes, we finally had a good show during the display. One thing which most people like about it was the unique suspension system ;-)..

Right now, I dont have the screenshots of the base console with me. So, I'll upload them later. as for now, I'll upload the only pic of the bot that I've got

Friday, January 2, 2009

Science in Sports - The Magnus Effect

My brother looks back at the cylindrical filter of a reverse osmosis unit substituted for a lone stump, toppled by the plastic ball I threw. He had played a perfect forward defense that would have made Rahul Dravid proud! Yet the ball, tracing a curved path in the shape of a banana had whizzed past the outside edge to hit the "stump". "Yeah, that's the Magnus Effect", I thought to myself. The same effect that helps Roberto Carlos score a goal as well as threaten the ball boy standing 10 yards away from the goal!

So, what is the Magnus Effect? When a cylindrical body or a spherical spins and moves in one direction through a fluid, experiences a force perpendicular to the direction of its velocity.

Consider there is no wind and the velocity of the ball is V. So, the relative velocity of air around the ball with respect to the ball is V. Now, due to the spin on the ball, the air in contact with its surface acquires some velocity. In the above picture (I got the picture from wikipedia) you can see that the flow of air is assisted by the spin. Therefore the relative velocity of air will be greater than V. On the other side, the flow is being opposed by the spin and hence lesser relative velocity of air with respect to the linear motion of the ball. This difference in velocity, in accordance with Bernoulli's theorem, will create a difference in pressure between the top and bottom side. With the bottom side having a lesser pressure due to high velocity of air, the ball experiences a net downward force.

This force is given by the relation,
Here F is the force, ρ is the density of air, V is the relative velocity of air over the ball with respect to the ball, A is the area of cross section of the ball and l is spin ratio.

l = rw/(2*linear velocity) where w is the angular velocity of the ball and r is its radius.

Now that you know what exactly is the magnus effect, lets see its influence in various sports. And yeah, in the order of my favourite ones! ;-)

I guess most people know that the lateral movement of the cricket ball when a fast bowler bowls is due to the varied degree of smoothness on the two sides. So, this has got nothing to do with the magnus effect though bernoulli's theorem comes into play. In cricket the only scenario where I've observed this effect is when a spin bowler bowls.

When an off spinner bowls, he gets the ball to drift away from the batsman and when a leggie bowls, the ball drifts into the batsman. When the ball leaves the bowler's hand(in both cases), it spins around an axis that is slightly inclined to the horizontal. So, the angular velocity has a component in the horizontal plane and this accounts for the drift!(Hope you could visualise what I mean)

In tennis the magnus effect is the reason behind the dip in the ball's trajectory after being hit. In tennis terminology this is called "topspin". When Roger Federer imparts heavy topspin on the ball with a forehand shot, the initial path traversed by it would apparently take it way outside the baseline, but the considerable force acting in the downward direction keeps it in play!

A similar action is observed in Table Tennis too. Without the help of the magnus effect there is no way to keep the ball within the limits of the table!

Beckham does it, Gerrard does it, Roberto Carlos does it and almost every one of those skilled players does it!

Check this video
Its self explanatory!!!

But wait! A cricket ball is imparted with much more spin that that on a football and yet the football moves more! The reason is simple.

  • *Magnus force is proportional to the area of cross section of the ball. A football is larger than a cricket ball.
  • *F=m*a, when mass is less the acceleration is more for a constant force. Football is lighter than a cricket ball(i guess so :P)
The other sports like golf and volleyball are also influenced by Magnus effect.

Learnt some facts from wikipedia.

Thursday, January 1, 2009

My Birthday Reminder program!

At last I'm done with that birthday reminder program! Here are a few screen shots of my 'software'. :P

The Main Menu

Adding Data:

Checking for birthdays on a particular date:

Clearing data:

Finally, a 'Thank You!':

The code:

#include "stdio.h"
#include "conio.h"
#include "strings.h"
void boss(void);
void add(void);
void clear(void);
void bcheck(void);
printf("\n (Press any key to exit)");

void boss(void)
int choice;
FILE *bd;
printf("_________________________ PREM'S BIRTHDAY REMINDER ____________________________");
j:printf("\n\nWhat do u want to do?");
printf("\n1. Add Birthday");
printf("\n2. Clear the list");
printf("\n3. Check for a birth date");
printf("\n4. Exit\n");
printf("Enter choice:");
if(choice!=1 && choice!=2 && choice!=3 && choice!=4)
{printf("\nInvalid choice!\n\n");goto j;}


void add()
int n;
FILE *bd;
char *name[25],*bday[10];
l:printf("\nAdding a birthday...\n");
printf("Enter the name:");
printf("Enter the birthday(dd/mm/yyyy):");
j:printf("\n\nAdd another birthday?\n1 - Yes\n2 - No (Go to main menu) \nEnter your choice:");
goto l;
if(n!=1 && n!=2)
{printf("\nInvalid choice!");goto j;}
void clear(void)
int n1,n2;
FILE *cl;
printf("\n WARNING! YOU ARE ABOUT TO CLEAR THE LIST! PROCEED?\n1. Yes\n2. No (Go to main menu)\nEnter choice:");
k:printf("\nThe file is empty now! Do you want to add birthday?\n1 - Yes\n2 - No (Go to main menu)\nEnter your choice:");
if(n2!=1 && n2!=2)
{printf("\nInvalid choice!");goto k;}}
if(n1!=1 && n1!=2)
{printf("\nInvalid choice!");goto o;}
void bcheck(void)
int i=1,flag=0,count=1;
FILE *bd;
char name[50],date[10],input[5];
char *c;
bd = fopen("Birthday.txt","r");
printf("Enter the date:(dd/mm):");
printf("\nList of people with their birthday falling on %s :",input);
do {
c = fgets(name,50,bd);
{flag=1;printf("\n\n%d. %s",count,name);count++;}}
}while (c != NULL);
printf("\n (Press any key to go to main menu)");

This code was compiled using the compiler - Dev C++, version
If you are to use this code, I would recommend the above compiler as some parts of the code may not work on other compilers. You can download Dec C++ compiler here.
(If you want this code but have problems copying from here, contact me at

Note: The file "Birthday.txt" will be created in the directory in which the code is saved.

Blogger and files

It occurred on my birthday. I was getting a lot of calls from friends expressing their wishes. I felt kind of guilty of not knowing the birthdays of half of those people. So, I decided to do something with my laptop that could remind me of friends' b'days. First I thought of documenting those in a text file. But then even a diary could do that job! So, I decided to go the 'C' way! I wanted to create an executable file that could do what I wanted.

To store data permanently, a file should be created for that. So, the first thing I did was a 'crash course' on file management using C. Now that I'm well equipped with those stuff essentially needed for creating my 'software' :P, the next thin I have to do is start coding! I'll be completing that work tomorrow and write about the outcome.

As I always like open source software I thought I could upload the file to this blog. Unfortunately blogger doesn't allow file hosting. In order to get that file available on the net, I would have to upload it to some page like the Google Pages service which is free! But as Google Pages has stopped signing up new users, the only option I have is to include the entire code in a post! ;-)