This is the newest addition to the family. MALaD is a 3pi robot from Pololu and it is awesome. It's specialty is in using line following and maze solving algorithms to solve those problems -- both of which i have tried and successfully tested using both C and the C++ programming languages.
The 3pi robot makes a great platform for people with C programming experience to learn robotics, and it is a fun environment for ambitious beginners to learn C programming. At its heart is an Atmel ATmega168 microcontroller running at 20 MHz with 16KB of flash program memory and 1KB data memory, enough space to run complicated programs. An extra 512 bytes of persistent flash memory is provided on the microcontroller for data logging or long-term learning applications. The popular, free GNU C/C++ compiler works perfectly with the 3pi, Atmel’s AVR Studio provides a comfortable development environment, and an extensive set of libraries provided by Pololu makes it a breeze to interface with all of the integrated hardware. The 3pi is also compatible with the popular Arduino development platform. We provide a number of sample programs to show how to use the various 3pi components, as well as how to perform more complex behaviors such as line following and maze solving.
Here he is on a simple line-following task using the NXT line map. i will post a video of him solving a maze, a very crude maze, that i designed. As crude as the maze is, the task was still accomplished successfully.
The image above depicts the use of RFID and sound on the NXT brick. This simple program starts out with implementing the RFID sensors and connecting them to a Logic block. The input we are looking for in this case is the 'AND' operator. We then connect to a Switch block which contains our first sound (can be any sound) and a simple motor movement. When we pass the RFID keyfob (any) transponder before the RFID sensor, out robot plays a sound and moves forward.
The second stage of the program does pretty much the same thing, in reverse, but with one key exception; we use a second keyfob transponder. This was done to experiment with using multiple transponders to see how it would work. The key thing to remember when using multiple transponders is to be certain to do a "Live Update" and click the "Current Transponder" button in order to uniquely identify each transponder. Sound, movement, just about anything is possible using RFID on the NXT.
So i had a chance to finally play around with the RFID sensor. Yeah, yeah! It is certainly exciting. The RFID sensor was easy to implement and use, once imported. Importing was easy as well, i simply used the built-in block 'Import and Export' wizard.
With that in mind, here is a simple program that illustrates how to control the NXT with RFID.
Start out by displaying a message. Then, implement the RFID sensors and connect them with Data Wires. Pass the value from the RFID sensors to Data Wires on a Compare Block that will determine the state in which the robot is in, i.e., 'Stop' or 'Go'. We then connect the Data Wires to a switch which contains our movement. The movement in this case is simple, just a 'jog' forward, say something ("Bravo", in this case), and then execute a sharp left turn. That's about that.
How It Works: Run the program, and then pass the RFID transponder before the RFID sensor. Once read, the robot does his little run and turn move and then stops and awaits further instructions.
Clearly, RFID on NXT has infinite possibilities. We can have the robot carry out various tasks, use multiple transponders, 'go here, do this', identify objects using RFID, etc. Let your imaginations go wild with it. The RFID sensor does not disappoint and i am eager to delve deeper into more experiments with robotics and RFID.
SeTH-1 as a 'Hunter'. Got the idea from NXTprograms, decided to implement it for fun as well as to check out some of the light sensor's capabilities. Using this program gave me an idea for another program which i am currently working on -- actually almost done with -- using the ambient light in a space to determine what SeTH-1 does; i.e., go forward, reverse, etc.
At any rate, here's a short video demonstrating the hunter in action.
The idea is to seek out the objects -- in this case the ball. Based upon a pre-determined criteria, ball color, the robot decides what to do with it: Blue? Identify it as being 'Blue', push it away, seek out red ball. Red? Identify it as being 'Red' and hold on to it.
Today i received my new Codatex RFID sensor for the NXT brick. Yeah, yeah! i have not 'officially' begun experimenting with it just yet, since i have some actual work to do, but will probably give it a go a little later today. i finally have the chance to combine two of my strongest passions -- robotics and RFID.
The following is a picture that i took just to show what it looks like out of the package.
1.
2.
Here's a quote from LEGOEducation:
The Codatex RFID Sensor works with 125 kHz transponders and can read five-byte transponder numbers into the NXT Intelligent Brick. The RFID Sensor has three different reading modes: single read, continuous read, and stop. The maximum reading distance depends on the transponder size; for example, the keyfob will read up to a maximum distance of 30 mm. One RFID Sensor, five keyfob transponders, five clear disc transponders, and two card transponders are included in this set.
A simple "Bump & Run" program that i've been tinkering with. The idea is for the robot to run around, wnd when he bumps into an object, he utters "Ouch!", looks around, backs up, and then moves in a new direction. The only issue that i see, when he bumps into an object, he tends to want to keep going for an extra second or so, before backing up as he should.
So it has been several months since i first began work on the inspection algorithm; several months even since i last worked on it. i have decided to go back to the drawing board with it -- it is just not efficient enough. The original version takes too long and is not as accurate as i would like it to be. This time around, i am going to try to get it to identify basic shapes as part of the qualifying-id process. Too, i am going to try to improve the color recognition feature. i forsee this taking a few months of on-and-off work to complete the design and a few months more to do a complete analysis (i am certain that i will have to work some more on it following that).
i have been a bit busy this week, but i am hoping to debut OMaR this weekend (Saturday, specifically). He has to be able to see (he does), measure distance and direction, as well as demonstrate edge-awareness. i have started working on some of the code to handle some of the functionality -- particularly distance measurement. The objective is for him to be able to measure a specific distance from himself to a pre-determined object, and choose the shortest 'best' path to that object. In case of an obstacle or some other obstruction, he must then re-calculate the distance, and then choose a different direction in which to travel. Upon successfully arriving at the desired object, he must then push -- 'object Manipulation' -- it to some other location and put it in place.
More specifics on his functionality features in the future.
i have also been thinking of different ideas on how to skin him -- not skin him -- but apply some skin to him. i like seeing the wires and circuitry, but he can't just run around naked. Ha!
OMaR -- Object Manipulation Robot development is coming along nicely. i seem to have however, hit a snag. i think there may be a mis-connection somewhere and i am now going to have to reverse engineer it. i'd hate to have to desolder and then resolder, but i will if i must. For the time being though, i am taking a break from working on it. i will be posting some pics representing a tiny timeline of the development process a little later on. OMaR's brains will not be written in Java (that's for our other buddy), but will instead be written in C++. i have not really tested out too much C++ robot code, but i did mess around with writing a little LED blinking program as well as a timer/delay program. Since those programs were successful, i am imagining that the rest will be fairly easy to work out (besides, experimentation is the most fun).