Realm of the Robots!

Indian Express

In the run – up to the annual fiesta that is Robotix held at Kshitij, Technology Robotix Society has lined up a series of events, workshops and exhibitions at various locations in the country.  With the team spreading out to all corners of India, vast turnouts were witnessed at Bangalore, Nagpur and Ludhiana workshops held during the DP holidays. At the Kalyani hands-on workshop, students learnt to build a  autonomous line following robot in a span of one day.

In more recent news, the annual eagerly awaited Kolkata workshop, held at GD Birla Sabhaghar, in association with Kshitij, was a grand success. Hogged by media spotlights, Technology Robotix Society also held a demonstration of about 15 working robots at Birla Industrial and Technological Museum accompanied by a one-hour session on “Robotics for Beginners” specifically meant for school children which involved the explanation of the making of the simplest manual robot capable of traversal in 4 directions. As the floor was thrown open to questions, the audience, ranging across ages 5 – 50 were bursting with queries ranging from the exact platform for coding in Image Processing to the type of wire to be used for connecting various components of a robot.
Check out the pictures from the workshop here

Hindustan Times

And we aren’t even close to the finish line! A hands – on Image processing Workshop will be held at Techno India, Salt Lake on 6th November 2011 and we’re in the final rungs of preparation.

As a mark of the high standards in which our workshops are regarded, the yearly inhouse Winter Workshop to be held at this year in December has received IEEE certification. 1st years at IIT Kharagpur interested in attending the workshop are requested to look out for announcements at www.robotix.in

Meanwhile, registration for our events at Robotix to be held during Kshitij 2012 have begun! Register your team at http://www.ktj.in/#teams

Machines At Work

The “Robotization” of Industrial Processes

- by Samarth Mahajan, Head, Technology Robotix Society, 2011-12

Robots have come a long way – from just manual puppets to entities with microCs coded to process input aspiring towards a brain , to attaining an allmost human like form a.k.a “humanoids”. As we have seen through the ages, dating right back to the pre-historic times, every technological advancement in human history has had an echo in the industrial development and economy of the world. Robots and in general, the whole new area of robotics has had a dynamo effect on world economics.

Industrial robot for processing food products like bread

Industrial robot for processing food products like bread

Industrial robots are employed in almost every manufacturing plant around the world. A plant can never be efficient in production if the work force is not motivated enough to work. Solution : Use robots, they need no motivation! Chores, which are deemed boring, monotonous but mostly ardous to humans are done in split seconds by these world-changing machines.

A 6 - Axis Robot

A 6 - Axis Robot

The development of 5 axis , 6 axis (indicating the degrees of freedom it has) and other variety of robots has led to a revolution in the tasks like welding, machining and assembly of parts which can now be done in a fraction of the time that we, prone to fatigue and mental exhaustion, humans would take.

These robots are not limited only to the manufacturing and civil industry. Mine surveillance, farming, medical treatment, defence, and underwater exploration are just a few examples of activities which are steadily becoming robot dependent.

A mining robot - Line diagram

A mining robot - Line diagram

We, at Robotix, have always tried to create problem statements which are society and industry oriented. Pirate Bay, a manual event at Robotix 2011, is a very good example of application of robotics in the mining/civil sector through the activity of digging. This year too we have created new challenges which, when solved, will have great implications on our progress as a race.

References : 

Bangalore Workshop

Being the first of its kind in Bangalore, this year an introductory workshop about the working of a Line Following robot was conducted at the M.S. Ramaiah Institute of Technology on the 8th of October. In addition the Robotix 2012 events were also publicized and the audience responded enthusiastically to this opportunity to display their Robotics skills.The workshop left the audience asking for more, with many in the audience remaining in touch with the Robotix team eager to learn further. 

Technology Robotix Society is a society under the Technology Students’ Gymkhana, IIT Kharagpur, and does not conduct workshops for profit. Our only objective is to spread robotics across India. We conduct workshops when contacted by students/faculty of various colleges. If you want us to conduct a workshop in your school or college, please contact us at workshops@robotix.in .

Romancing Python : Part 4

About C++ :

Almost everything said for Java also applies for C++, just more so: where Python code is typically 3-5 times shorter than equivalent Java code, it is often 5-10 times shorter than equivalent C++ code! Anecdotal evidence suggests that one Python programmer can finish in two months what two C++ programmers can’t complete in a year. Python shines as a glue language, used to combine components written in C++.

Common Lisp

These languages are close to Python in their dynamic semantics, but so different in their approach to syntax that a comparison becomes almost a religious argument: is Lisp’s lack of syntax an advantage or a disadvantage? It should be noted that Python has introspective capabilities similar to those of Lisp, and Python programs can construct and execute program fragments on the fly. Usually, real-world properties are decisive: Common Lisp is big (in every sense), and the Scheme world is fragmented between many incompatible versions, where Python has a single, free, compact implementation.

With that, we close the Romancing Python series. We hope you have got a substantial introduction to the intricacies of the various programming platforms and will now proceed to attempt coding problem statements in the tongue of your choice!

For an exciting heads up, visit the page for the coding event for ROBOTIX 2012 : http://robotix.in/events/echelon

Romancing Python : Part 3

In this not very long post, lets see how Python, Javascript and Perl compare.

Python’s “object-based” subset is roughly equivalent to JavaScript. Like JavaScript (and unlike Java), Python supports a programming style that uses simple functions and variables without engaging in class definitions. However, for JavaScript, that’s all there is. Python, on the other hand, supports writing much larger programs and better code reuse through a true object-oriented programming style, where classes and inheritance play an important role.

nullPython and Perl come from a similar background (Unix scripting, which both have long outgrown), and sport many similar features, but have a different philosophy. Perl emphasizes support for common application-oriented tasks, e.g. by having built-in regular expressions, file scanning and report generating features. Python emphasizes support for common programming methodologies such as data structure design and object-oriented programming, and encourages programmers to write readable (and thus maintainable) code by providing an elegant but not overly cryptic notation. As a consequence, Python comes close to Perl but rarely beats it in its original application domain; however Python has an applicability well beyond Perl’s niche.

Stay tuned for more as you go about choosing your own favourite coding platform.

Romancing Python : Part 2

In this and a series of following articles, we take you through brief comparisons between programming languages concentrate on language issues only so you can figure out which one is best for your use. In practice, the choice of a programming language is often dictated by other real-world constraints such as cost, availability, training, and prior investment, or even emotional attachment. Since these aspects are highly variable, it seems a waste of time to consider them much for this comparison.

Python VS Java

Python programs are generally expected to run slower than Java programs, but they also take much less time to develop. Python programs are typically 3-5 times shorter than equivalent Java programs. This difference can be attributed to Python’s built-in high-level data types and its dynamic typing. For example, a Python programmer wastes no time declaring the types of arguments or variables, and Python’s powerful polymorphic list and dictionary types, for which rich syntactic support is built straight into the language, find a use in almost every Python program. Because of the run-time typing, Python’s run time must work harder than Java’s. For example, when evaluating the expression a+b, it must first inspect the objects a and b to find out their type, which is not known at compile time. It then invokes the appropriate addition operation, which may be an overloaded user-defined method. Java, on the other hand, can perform an efficient integer or floating point addition, but requires variable declarations for a and b, and does not allow overloading of the + operator for instances of user-defined classes.
For these reasons, Python is much better suited as a “glue” language, while Java is better characterized as a low-level implementation language. In fact, the two together make an excellent combination. Components can be developed in Java and combined to form applications in Python; Python can also be used to prototype components until their design can be “hardened” in a Java implementation. To support this type of development, a Python implementation written in Java is under development, which allows calling Python code from Java and vice versa. In this implementation, Python source code is translated to Java bytecode (with help from a run-time library to support Python’s dynamic semantics).

Next up : We tell you more about Python’s stand against Javascript!

Romancing Python : Part I

Even though you are free to pick a language (and a third party NLP library written in the same) of your choice to attempt a solution to the  online programming event, Echelon, at Robotix 2012, there are certain reasons we recommend Python (and Python – NLTK) to beginners. Let us have a look at the general picture.

If you do much work on computers, there’s bound to be some task you’d like to manipulate and automate further. Case in point, you may wish to perform a search-and-replace over a large number of text files, or rename and rearrange a bunch of photo files in a preferred manner. Perhaps you’d like to write a small custom database, or a specialized GUI application, or a simple game. At the same time, you don’t want to delve deep into the programmers’ realm. If that is who you are, Python might be the answer for you.

Python is simple to use, but it is a real programming language, offering much more structure and support for large programs than shell scripts or batch files can offer. On the other hand, Python also offers much more error checking than C, and, being a very-high-level language, it has high-level data types built in, such as flexible arrays and dictionaries. Because of its more general data types, Python is applicable to a much larger problem domain than Awk or even Perl, yet many things are at least as easy in Python as in those languages.

Its elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.

The Python interpreter is easily extended with new functions and data types implemented in C or C++ (or other languages callable from C). Python is also suitable as an extension language for customizable applications.

Python allows you to split your program into modules that can be reused in other Python programs. It comes with a large collection of standard modules that you can use as the basis of your programs — or as examples to start learning to program in Python. Some of these modules provide things like file I/O, system calls, sockets, and even interfaces to graphical user interface toolkits like Tk.

Python enables programs to be written compactly and readably. Programs written in Python are typically much shorter than equivalent C, C++, or Java programs, for several reasons:

  • the high-level data types allow you to express complex operations in a single statement;

  • statement grouping is done by indentation instead of beginning and ending brackets;

  • no variable or argument declarations are necessary.

Often, programmers fall in love with Python because of the increased productivity it provides. Since there is no compilation step, the edit-test-debug cycle is incredibly fast. Debugging Python programs is easy: a bug or bad input will never cause a segmentation fault. Instead, when the interpreter discovers an error, it raises an exception. Once you are really hooked, you can link the Python interpreter into an application written in C and use it as an extension or command language for that application.

The Python interpreter and the extensive standard library are freely available in source or binary form for all major platforms from the Python Web site, http://www.python.org/, and may be freely distributed. The same site also contains distributions of and pointers to many free third party Python modules, programs and tools, and additional documentation.

COMING UP : Python is often compared to other interpreted languages such as Java, JavaScript, Perl, Tcl, or Smalltalk. Comparisons to C++, Common Lisp and Scheme can also be enlightening. In coming articles, we will see briefly the comparison between Python and each of these languages.

DIY : Attempting ‘Echelon’ in Java

Though carrying out Natural Language Processing (NLP) for the Robotix 2012 event Echelon might seem a daunting task, the tools for such are readily available online. The programmer need only concern himself with the appropriate usage of these tools to achieve his ends. This article deals with doing so using Java. And if you’re one of those who is not quite familiar with the language, please do have a look at http://download.oracle.com/javase/tutorial/ Once you are comfortable with it, you can dive right into the more exciting world of NLP!

The first step is to download the Java Natural Language Processing Toolkit called Learning Based Java (LBJ) which is freely available online from http://cogcomp.cs.illinois.edu/page/download_view/11. It comes as a JAR file which needs to be imported into the custom libraries section of whichever IDE is there on the user’s computer for Java programming. There are several packages with several more classes, but it should not prove overwhelming. The next important step is to read the online documentation of this library, on the same site from where the downloading took place. Details of every function, in each class, in every package are given. There is actually a package called nlp and another called nlp.seg, but those are not the only ones relevant to this problem. Of course, there are similar toolkits for every major programming language, check them out at http://en.wikipedia.org/wiki/Natural_language_processing_toolkits. The methods for implementing them will be similar to that mentioned above.

Armed with all the information one could need, it is now time to attempt the problem. The sample chat log on the site, or others found online, should be saved as a .txt file. Anyone familiar with Java, or for that matter, any programming language, will know that text files can be accessed and read from with the necessary commands. Inside the program, although one’s first inclination might be to use a multi-dimensional array to store the various sentences typed in the chat log, and associate them with their authors, this author feels that such a process requires too many repeated traversals of the chat log to decide specific dimensions of the array (How many chat users, how many lines each typed .etc). A more prudent approach would be to use a recursive data structure like a linked list or a structure, and keep adding information as and when needed.

There are numerous methods one might employ to decide which anonymous statement goes to which chat participant. However, all of them will involve detailed analysis of the text in the chat log, and its meaning. It is important to remember that no code is expected to be right all the time, just enough times for it to be meaningful and not arbitrary. Manipulation of the text can be easily handled with the parse package in LBJ, while the infer package deals with trying to figure out what the sentences imply. Additional assistance can be obtained in the form of an electronic text corpus, which is an extensive list of words of the English language, as well as a freely available spell check software, in case of a random inconsistency in the chat log.

All of that, however, will come with time. For those new to this sphere, just start by installing the software and creating your own, small chat log to start with, which you can use to apply your newly-honed text analysis skills! Take each sentence individually and store it in a separate element of the data structure you have chosen. Then test out the functions of the LBJ libraries with each separate sentence and see what results you get! Now if you can incorporate results of multiple function calls on the text in a single program, you have officially completed your first concrete step on the way to NLP.

Well, you now have all the tools we think you need. So gear up and start coding! And if you ever need a helping hand, feel free to post on our forum, where we have a section dedicated to the event.

Freshers’ RoboSoccer Challenge 2011 !

The RoboSoccer Challenge

The Freshers’ RoboSoccer Challenge conducted this year turned out  to be a delight with participants being mighty enthusiastic about making  and playing with their very first Robots! Though in principle these robots were merily differential drives, in order to survive in this challenege, creativity and experimentation with designs were key components.

This challenge had a Knock-Out format with the number of matches being the logartihmic function of the number of participants to the base two ( Too much of Math eh? Well..we’re IITians you see ). This Freshers’ event was the first one this season for the new KGPians who were just introduced to the crazy world of Robotics.  For all those who missed the opportunity to participate in this event, do not be disheartened!

 Yes, you  guessed it right. There is a  Second in-house Robotix event going to take place on our campus soon. The problem statement of which would be revealed in due course of time.

The Winners of this challenge have also been given a direct entry into the second round of the next event being conducted by Team Robotix!

To know more about who we are and what we do, visit our website @ www.robotix.in . Be sure NOT to miss out on the next event .

Exciting things are bound to happen..  Where Machines  Dare!!!

To know more logon to our site www.robotix.in or check out http://www.robotix.in/robosoccer .

Of Humanoids and How We Are Getting There

Biomimicry is one of the most inspiring fields around which present
day robotics researches revolve. It is our technology exchange with
mother nature, who cranks out newer and newer designs that we have
never even dreamt of and many that we haven’t been able to figure out
yet. The reason being evident that it is one of the most energy
efficient and most widely tested and naturally certified designs ever
possible. These kinds of designs for robots ensure more stability in
all aspects and bring to advantage several latest technologies.

Researchers are presently taking a step foreward in the artificial
intelligence technology by trying to mimic the human  brain and its
neurons to be used in robots.  Researchers from the National
University Of Ireland And The  University Of Ulster have been working
on this with the main aim of applying an electronic neural device
called the Hardware Spiking Neural Network to the control and behavior
of an autonomous robot. The present day silicon IC technology is not
capable of handling the complexity of the neurons found in the human
brain. Researchers have now successfully fabricated and used spiking
neural networks for robotics control. In a manner similar to that of
the brain, the device can be trained to perform a specific function
and also later retrained to perform some other functions.

To date, robotics technologies have concentrated on usage of
microprocessors for autonomous robots. The major concern here is the
power consumption. The awerage power consumption of the brain is about
10watts while that of a computer is about 300 watts.

The ultimate goal of such a device is to identify and overcome
electronic faults that occur within itself and to adapt to its
surroundings without human intervention.

Follow

Get every new post delivered to your Inbox.

Join 29 other followers