The Miniature Mobile Nano-ITX Rover Project!

Hey guys,

Its been a while since I have been here! Man I missed Lynxmotion :slight_smile:

Anyhow, it’s been almost a year since I attempted my first Biped robot. Sadly, I had to sell it because I wanted to buy a new computer. But I am back for more! I guess I just can’t live without robotics :frowning: Its just part of me.

I have been thinking the past few days about starting a new robotics project when I get some funds, that is, in a few months or 6 or so (I am currently saving up the last major $400 or so of my PC project)… As you can guess from my title the brains for the bot will be a Nano-ITX board.

Now, why a Nano-ITX instead of a PICmicro or ATMEL? Well, while I was here a few months ago I noticed a lot of the improvements RoboRealm has been receiving from the developer(s) and in general what amazing software it is. I am simply amazed at what it can do. This simple free software does a lot more than very expensive software can.

It can also export variables into VB and you can program a robot in VB that is controlled by RoboRealm. Since I can’t carry a desktop, or a laptop on the robot I need to go smaller: ITX! Micro-ITX is a little too large. But Nano-ITX is perfect! It is a 4.7 x 4.7" motherboard with everything on board. I can get a small SSD drive to reduce noise and heat since a SATA drive will be loud and produce some heat and IDE cable is just too thick and ugly for a cute little robot!

Since I want to build a miniature mobile robot I will want it to be as small as possible. Therefore, I have decided that 5 x 5 x 5" will be the largest I would like to go. 4.7" wide will give me .15", or little over 1/8", (3.81mm) on each side. Just enough to fit an aluminum or lexan frame! The motors and wheels will be inside of the frame most likely.

Some of you guys/gals might know that I did a Intel research project at my highschool for my senior year. My research project was a robotics (duh) project at a local college (Brooklyn College, it’s a CUNY). My project was a project related to SLAM - Simultaneous Localization And Mapping.

From wiki for those unfamiliar:

But, unfortunately I did not get to reach my set goal due to time issues. I wasn’t working hard enough and didn’t get the project done in time :frowning:. I feel really bad about it and really wish I could of completed my project. I also feel bad for my mentor for putting in so much time into me when he had far more things to do.

So I will try to continue and finish my original project!

A few bits of info on my project for those who didn’t read about it in the forums before. I used a K-Team Khepera II robot (its a tiny 70 x 70 x 30mm bot powered by a Motorola 68331, 25MHz 512KB RAM, and 512KB FLASH.) The robot has Eight ( 8 ) IR/Proximity sensors with a 10cm range. It has 6 on the front and 2 at the back. The great thing about it is the modular design. (As a programmer who uses OOP, modularity is “t3h l33t” as the young ones say these days) Heres a little picture of it:

http://www.k-team.com/images/i_khepera.jpg

As you can see, there are many little pins (damn i hate pins) on the top. You can get modules for the robot which give it different functionalities such as a camera, radio, gripper, general i/o for custom sensors, etc. And all of the modules can be access via the provided libraries and examples (in C).

Now back to my project idea. I think I could build a lil 5 x 5" bot with similar features and have it powered by a Logitech QuickCam® Pro 9000 because the camera is very tiny - I mean, its TINY!!

I am also thinking of having 3 IR sensors in the front and 3 in the back (For simple collision detecsion). I will mount the QuickCam directly in the front center and might put it on a small pan/tilt SES system. I will have an accelerometer/gyro in the direct center of the robot to help with calculating speed.
I will use 2x 7.2vdc 50:1 175rpm (6mm shaft) (GHM-04) motors with 2x Quadrature Motor Encoder (QME-01) hugged in Neoprene Foam Tire - 1.75"D x 0.5"W (NFT-02) wheels. They are fairly small and not lightning fast, but they have an encoder which I will need for measuring distance. Anyone know of faster motors that would work with the encoders? Something like 430RPM would give me 1m/s with those 1.75" wheels.

That sort of stuff is almost sorted out. The main question on every mind when doing a project is POWERING the darn thing!!! I can’t have the robot plugged into the wall while its running. It will need to have a battery since wireless power hasn’t been invented yet, not to my knowledge at least.

The Nano-ITX manual states it requires 90-120w of power and their PSU they sell are like 90-200w. I need the PSU to output 12v I believe. 120w @ 12v would mean 10Amperes?!! Where the hell would I find a small 30Ah battery? let alone a 10Ah battery that can output 12v!

The power consumption in the manual seems to show 22w is the highest it uses… 22w is dualable with li-ion. It’s 22w/12v = 1.8A. Getting a 2Ah battery would be perfect, or 4Ah and run for 2hrs :slight_smile: I can simple get 8 (a 2x 2 x 2 matrix of) Polymer Lithium Ion Batteries - 2000mAh batteries from SparkFun. They are 3.7v @ 2Ah. 2 x 2 matrix, in series, would make 14.8v and two of those in parrallel would give me 14.8v @ 4Ah! The batteries would outcome to .46 x 4.2 x 4.2" + the wires and electrical board for it. Charging them is a different story, but ehhh… We can think of something, right?

BUT, what if it does require a minimum of 90w to function? How the hell would I do that with batteries?! Are there magical electronic devices which make amps out of nothing? Is there something like the 5V DC to DC Step Up - VPack PCB from sparkfun:
sparkfun.com/commerce/produc … ts_id=8290

which can convert 1.1v input to 5v @ 300mA output?

Well, thats all I can say about that for now. If anyone has any questions, comments, or suggestions please feel free to post. I would love to hear from everyone!

I have not yet added the power consumption that the webcam (will probably be part of the nano-itx’s since it uses USB), sensors, and motors will use.

When I get some free time, I will try to make a few lil models in SketchUp or Alibre.

Cheers,
-robodude666

P.S. Sorry for long post ^^;; I like to write a lot :blush:

So, (wow, it’s been a long time guys!)

You’re going to plug the WebCam in the nano board and from there you will transmit the images to your computer for it to process? Or will the robot do that itself?

If you trabafer the Data, can you tell me how?

Ok… I checked out the board, it’s like a computer motherboard… :open_mouth: You’ll probably have enough power to process you’re WebCAm images :laughing:

It’s looks like a nice project by the way, I was interested in that to for a while. Can you explain to me how you’ll program the whole thing? It’s kinda blurded in my head.

Thanks :stuck_out_tongue:

I started typing the answer to first quote but it seems I answered both so I will quote both on top here and answer everything squashed together below :slight_smile:

Hey sam! Whoever you are… Its been a long time (jp, :stuck_out_tongue: I remember ya’)

I guess you missed the whole point of nano-itx inside the robot? This part:

“Since I can’t carry a desktop, or a laptop on the robot I need to go smaller: ITX! Micro-ITX is a little too large. But Nano-ITX is perfect!”

:laughing:

Yes. The Nano-ITX will be inside the robot and it will be running windows and RoboRealm and will process the data.

I will write a VB program which will get all the variables from RoboRealm and output a TXT file (if thats possible with VB?) I really don’t like VB because its a “basic” languages. I really like C and C++ and those curly brackets! Anyhow… I will have a C or C++ program (probably C++ with a Win32 GUI) running in the background of the system reading the file that VB outputs. This way it can get the roborealm info. I will then have a PICmicro as a my sensor board. It will get all the sensor info and pop it into a PIC 4550. The C++ program will then read the sensor data, do some funky algorithms and output to the PIC with motor commands. Example:

MT, 0, 50 // Set motor 0 to +50% speed
MT, 1, -50 // Set motor 1 to -50% speed
//These two commands will make the robot spin :slight_smile:

or

MTS, 50 // Set motor 0, 1 to +50% speed.

Its not a 100% solid design yet, but I am working on it on and off. I will also be getting a wifi mini-PCI card so the bot can have WiFi to communicate via AdHoc with other robots, or with a Nintendo DS! I am thinking of getting a nintendo DS with a DSerial2 (Its a little game/card you stick into your DS and it gives you i/o ports and a microcontroller which you can program :slight_smile: Its VERY VERY COOL! Check it out: natrium42.com). This way I can use a DS as a remote control :slight_smile: Its would be fun!

Anyhow. I will write the script on my computer or maybe on the bot itself. First of all, I am thinking of getting this Nano-ITX board:

VIA EPIA-NL5000EG Nano-ITX Motherboard with VIA Luke Corefusion 533MHz Fanless Processor
mini-box.com/VIA-EPIA-NL5000 … ategory=83

Mainly because it doesn’t have connectors on it. They are simple male headers. I was thinking of making a PCB board with all the connectors on it that I won’t normally use for the robot (VGA, Audio, LAN, etc). This way I can plug them in when in development, hook up a monitor and mouse/keyboard and develop on the robot itself and quickly test stuff out.

But yea… In summary I will be using C/C++ as main language to power the robot with a VB wrapper to collect information from RoboRealm and export a TXT file.

If it won’t work out, then I will just make a custom PIC 4550 controller with a wifi card that will output video to my laptop via WiFi. I seen a few IEEE 802.11b/g webcams around. Hopefully it would work though because its cooler saying you are using a Nano-ITX board :slight_smile:!

-robodude666

Wow, it looks realy interesting like project! Can’t wait to see the developement. Did you start buying the parts yet? Cause I saw this : logicsupply.com/products/n5000e

It looks a lot like the other one, just 33 MHz less (I dunno, maybe they like rounded it off because I thought that it was made only 533 MHz…) and it comes with a heatsink and other stuff (that, honnestly I don’t know what’s there utility :confused: )And the 1 Gig one is like 26$ more, if maybe you think you’ll need it, but even at that it’s not that much for the double of the speed.

I love the Idea of having a computer (without the useless parts on :unamused: :laughing: ) You can brag about it : yeah, that’s almost as fast as your computer 8)

Anyway, It’s a good Idea, It’s a bit pricey, but you can do a LOT with it. And you can also change it to a computer :stuck_out_tongue:

WOW! I didn’t know other stores sold ITX stuff!!! I thought it was only mini-box.com!! SWEET! Thanks man :slight_smile: This site has far better pictures than what mini-box has. Better angles too.

I did not start buying stuff actually. I might buy the webcam first since I kinda want a decent webcam.

Yea, its a costy project… My price list is currently at like $780 which includes the nano-itx, 8 li-ion batteries, all sensors, motors, encoder, wheels, hubs, wifi mini-PCI card. I didn’t include the cost of the hdd, frame materials, and some other misc things. I have a 256MB stick of SODIMM RAM. I hope to get 512MB minimum or 1GB though. I will grab it off ebay though as its cheaper. Windows needs a minimum of 512mb to function well >_< 1GB to run semi-smooth.

533MHz is not all that fast but its far faster than a 48MHz PIC :slight_smile: My CPU is 2GHz stock, but OC’D to 2.6GHz. It can do 2.8GHz but temps too high :frowning: It is also dual core so it can multi-task =D Can you say burning DVD while watching movie, or doing a virus scan while playing games?!

Its a nice project and it seems like it will be fun. I hope to show this to my mentor when I get it done :slight_smile:

Oh, one cool thing I noticed mini-box sells is a 18-bit and 24-bit LCD adapter thingy. Its cool because it uses the connectors Laptop monitors use! I can get a nice 17" 1600 x 1200 monitor from a laptop on ebay and use that! Make a little frame with a mouse/keyboard and have a thick cable coming form back with an adapter module that plugs into the i/o ports of the bot.

-robodude666

I would make it bigger so you have more room to ad more sensors and stuff, and you don’t want to be constantly fighting the space battle. I would go 10 inches square.

Nope, 5" square would be better because it would be smaller. A smaller robot will be able to get into more corners of the unknown land and make a more accurate map.

If I get access to curved lexan then I might consider making it like a 6-7" diam. circle shape instead of a 5 x 5" square. A circle would allow for better IR sensor placement as well as better corner handling. If a square gets stuck in a corner it needs to backup and all that jazz. If a circle gets stuck in a corner, it just simple rotates and continues moving.

I am not really all that interested in having a lot of sensors. The original project I had was to design a program for a robot that can map an unknown environment with only IR sensors. I did several months of research at the library and all of the research papers I found involved robots with some sort of vision. Whether it was a full color or B&W camera… or some other sort of camera which shows outlines of stuff. Cameras are technically expensive. However, IR sensors can be bought by the buckets for the cheap. You can get them for like a quarter or less each. It would be far cheaper to send out 10 little $100 bots than it would be to send out 5 $300 bots. So if you build a lot of little tiny cheap bots and send them out to mars, for example, you can still complete your mission even if 10% fail. But if you have one expensive robot that fails, well poop! The mission failed and you’l need to wait like 15 more years before the next one. Get what I am saying?

I think a HD quality webcam, 6 IR sensors, accelerometer/gyro, and encoders would be more than enough information for my robot to process to know where it is and what the environment looks like. I will really need to get to know RoboRealm if I want to use the full power of it. The only things I know it can do is track colors and measure distance (sort of). Anyone here worked with RoboRealm before?

I understand your point, but maybe one inch on both sides would make all the wiring sooo much eaiser. And what happens when you decide you want a thermal array sensor or something like that?

P.S. NASA would make 200 $300 bots if they wanted to, remember it’s your money thats paying for it. :laughing:

If there were making $300 robots, they would make MILLIONS of them!!!

Thermal Array sensor? I am not using one of those :confused:

May not be a thermal array sensor, but that was the first to pop into my mind, here:

And what happens when you decide you want a insert really cool sensor here or something like that?

I pop it on top of the bot =D

The Khepera II had a modular design which I loved. You could buy different modules, sensors and other goodies, and add them to the robot or take them off!

http://www.arrowtech.com.sg/images/K-Team1.gif

On that bot there is like a gripper, matrix camera, and a radio for communicating to computer wirelessly.

I will make a little modular like interface on top of the bot too. I’ll have like one or two I2C 16bit or something i/o expanders on the PIC 4550. I then can just add upto 32 bits of information and access it all from just 4 pins :slight_smile:

:open_mouth: Wow, that’s wicked!

Round would be cool, but wouldn’t be more complicated to calculate the distance if it’s at an angle? You would have to do a lot of calculations to get it to map propelly no? just a
thougt.

:laughing: What specific is wicked? I went over a few things :stuck_out_tongue:

Not sure what you are referring to 100% so I will just answer the best I can. Whether it will be a circle shape or square the robot will be moved using two motors. One on either side of the robot. This will allow me to make 90 degree turns easily. It would also use up less power (2 motors eat less than 4). It would also drop costs down a bit and add more room inside the robot.

Most turns will be around the robot’s center axis. i.e one wheel will spin forward while other backward. This makes it easier to calculate stuff as the radius of the turn is half the distance between the center of both wheels. The distance traveled will be calculated using the K * diameter of the wheel. Where K is number of counts the encoder counted divided by number of counts to make a full rotation i.e is the % of the wheel rotation in decimal form.

If the robot were to have different turns like one wheel moves at 50 and other at 20 then it would get complicated. I have not figured out the math for that which is why I avoid those types of turns.

I already made some of the functions for the kherpa II so I know how the different move functions are supposed to look and function which will make it a lil easier. Although one thing I love about the Khepera II is the fact that it has multitasking abilities. It can run several functions at the same time. One task can be set to gather all sensor data and stick it into arrays. Another task to parse the data, and a third task can be set to make the appropriate moves. You can make some VERY cool programs with it.

So… um, yea. If I didn’t answer your question then please explain it better as I didn’t understand :frowning:

-robodude666

Well, I hadn’t thought about that… But, actualy it’s pretty simple let’s say its 50 and 20 (like you said) the first 20, it would turn with the center as the center of the circle, and then for the 30 rest it would turn around the opposite wheel (so the Diameter would double) and let’s says its makes it do 326 degrees, you calculate it, and the new point is the wheel that was turning and the center of the 2 wheels would be the center, anyway I have it all on paper but it’s difficult to explain. :laughing:

But I wasn’t talking about that, sorry I thought about it for a while and then I thought that I had written it. It was for the readings of the sensors. But it’s okay if the sensors are at the front/back/left/right, but if there at an angle, it’ll be difficult to take the reading, it will see a diagonal line, and the reading could be falsifide… no? I think I lost myself a bit, I have to go eat :arrow_right: :unamused: :laughing: :wink:

Uhhh… you lost me there bub. Sorry :frowning: Pictures speak a thousand words.

Ahh, alright. I see what your saying. I don’t think it really will.

The front and back will both have 3 IR sensors. One on the left, center and right. The center sensor will be directly centered. And the side sensors will both be angled with the curved shape of the robot. This will allow the robot to easily see if there is something coming up on the left or right side. The Khepera II has the sensors placed out like this and I think it works rather well, except the Khepera has 6 in the front and 2 in back. In the front, they are in pairs of two so you take an average reading of both to get a better more confident result.

This type of sensor placement is good when you are following a wall. You can monitor where the wall is and once the sensor doesn’t detect anything then you know you came to a corner. I will be using the IR sensors to follow the wall and to detect obstacles so it won’t bump into anything.

The camera will be also directly centered so there won’t be any problems with that. And the accel./gyro sensors won’t care about the shape of the robot. :slight_smile:

Very cool bot. I can’t wait to start it. If anyone wants to donate, feel free to pm me :laughing::lol::lol:

-robodude666

ok yeah, I understand! the gyro and accel. will take care that it will go strait? so the reading will be okay?before, when you say 50 and 20, is it the count of the encoder? or the speed?

You confuse me once again with your lingo. “will go strait” :question:

The accelerometer will be used to double check the speed the encoders give. The gyro will be used to check the accelerometer and will also be used to detect the angle turned to double check the angle calculated based on the encoders :slight_smile:

The reason for all the error checking was before with the khepera I had some major number issues because the encoder values (IR encoder >_<!!!). It really pissed me off because the robot thought it was at “X” but really it was like 2" to the left =/ So I want the robot to know exactly where it is, even if its a wrong location. This way error correction can be applied in the next move.

This discussion is great, but I would really appreciate it if someone were to help me sort out the battery/power questions/issues.

robotmarketplace.com/marketplace_lipoly-tp.html
Also try two 7.2volt stick batteries.