Help Choosing Arduino Board & Project Questions

Hey everyone. I'm interested in getting into Arduino. I'm a computer science student so I think I'll have fun messing around with code once I get my first project going.

I'm interested in this one. http://www.instructables.com/id/RC-Car-to-Robot/

My questions are as follows:

If I wanted to add one or two more ping sensors, would that work with the UNO Rev 3 board the author uses? I ask because my friend said that depending on the project, you may need more ports and because of this a Mega board would be better.

Would it make sense to have two ping sensors up front angled out so it could detect distances from the front-left as well as front-right to better make decisions in regards to turning. Would it be better to use three?

Would it be a good idea to have a rear ping sensor to make sure it isn't running into things when it is backing up? Or would that just be a waste since you can program the truck to back up just a little?

If I were interested in programming the truck to "learn a room" where after exploring would know where the valid paths are, would I need more parts?

Thanks for any help you can provide, please let me know if there certain resources I should be using right now.

BlueShorts

Look at the number of I/O pins that each sensor needs and whether it needs any particular pins, or can be used with any arbitrary I/I pins. You already know how many I/O pins you have available so you can see how many sensors you can support.

How many sensors you need is entirely up to you - you need to decide what behaviour you want to achieve and then decide what sensors you need to achieve it.

Your "learn a room" idea is generally known as simultaneous localisation and mapping, and is an extremely difficult problem to crack in the general case, even more so on an Arduino which has extremely limited memory available for holding map data. Have a go at it if it interests you - it will certainly make for an interesting project, but don't set out expecting to solve the problem over a weekend.

PeterH: Look at the number of I/O pins that each sensor needs and whether it needs any particular pins, or can be used with any arbitrary I/I pins. You already know how many I/O pins you have available so you can see how many sensors you can support.

How many sensors you need is entirely up to you - you need to decide what behaviour you want to achieve and then decide what sensors you need to achieve it.

Your "learn a room" idea is generally known as simultaneous localisation and mapping, and is an extremely difficult problem to crack in the general case, even more so on an Arduino which has extremely limited memory available for holding map data. Have a go at it if it interests you - it will certainly make for an interesting project, but don't set out expecting to solve the problem over a weekend.

Thank you for the information. I will look into the sensors and I/O pins. In regards to the simultaneous localisation and mapping, would it be better to use a raspberry pi instead of an arduino since it can hold more data? I'd rather not have to use both, if that is even an option.

Also, my friend says you can use an sd card for the arduino; is that something that could hold the map data?

As far as the "SIM-LOC" idea, I think you can forget about that because you don't have any feedback for distance traveled. That kind of programming is motion feedback dependent. You need to know how far you have gone in any direction. If your vehicle was moving forward and backward in a confined track too narrow to turn you could monitor your distance to the wall in front (and in back if you have sensors on the back). In a room, you might know the distance to any wall in front or back but you will need to "KEY" the room so it is no longer ambiguous to the robot, meaning you need to provide some kind of feedback to tell the robot which end is which. Once it knows that one end emits light and the other doesn't or each corner sends a coded light beam where corner #1 blinks once, #2 blinks twice , etc. then the robot can "know" where it is in general (w distance from #1, x distance from #2, y distance from #3, z distance from #4. It will also be able to figure out which way it is facing , (more or less). If you had a robot with rotary shaft encoders then that would put you in a whole different class of navigating. GPS won't work indoors so that's out. The car in the instructable can know distances to walls but all walls (or at least two) will appear identical so it will always be disoriented unless you "KEY" the room. The extent to which you do that will determine the effectiveness of the navigation.

I suggest that you start with the simpler collision avoidance project, which is something that you can realistically implement on an Arduino. Before you start taking on localisation and mapping, do some googling and read up on other people's work in this area to get a feel for the difficulty involved, and decide whether this is something you're willing to spend man-years tackling on your own before you get into details of what hardware you need to do it.

Good advice.

PeterH: I suggest that you start with the simpler collision avoidance project, which is something that you can realistically implement on an Arduino. Before you start taking on localisation and mapping, do some googling and read up on other people's work in this area to get a feel for the difficulty involved, and decide whether this is something you're willing to spend man-years tackling on your own before you get into details of what hardware you need to do it.

Man-years!? I was hoping it would be something I could get done in a summer. I think I'll pass on that for right now. I'll do some googling but do you guys have any ideas on where to take the RC Truck after it's been programmed to avoid walls?

Edit: I think I may try to use a PS3 controller to control the RC truck if I wish to do so. I've read that you can make the controller rumble so that would be cool to set it to rumble when the truck gets within a certain distance of an object, sort of a warning that you may crash.

I also think I could change what LED is on on the PS3 controller to indicate what mode it is in.

Wouldn't it be much easier to just add a decent size piezo alarm buzzer from RadioShack and build a 9V battery powered circuit to turn it on with a transistor triggered from the arduino by processing the sonar output with IF or CASE statements ?

raschemmel: Wouldn't it be much easier to just add a decent size piezo alarm buzzer from RadioShack and build a 9V battery powered circuit to turn it on with a transistor triggered from the arduino by processing the sonar output with IF or CASE statements ?

I hadn't thought about making sound at all. Just figured it would be cool to implement the rumble feature of the PS3 controller. The more I think about it though, the more I think about using an Android phone instead of a PS3 controller. It would be rad to figure out how to stream live video from a camera on the arduino to an android app that I would create. I'd rather not just stick the Android phone on the rc truck to stream since it's a low powered rc truck ($10 walmart one) and slows it down a bit.

But before I get carried away I need to pick a board, haha. Is it looked down upon to use clone boards? I'm looking at this one, (link to company selling a counterfeit board removed by moderator) because I'd rather not spend the $50 or $60 that an official Arduino Mega would cost. I'm looking at a Mega rather than Uno because I think I'd like 2 ping sensors, bluetooth transeiver, some leds, and who knows what in the future.

Regarding the ping sensors... If I wanted the RC truck to know which way to turn when it runs too close to something would I need 2 ping sensors? Basically if something is closer on the right ping sensors, then turn left. Is this functionality able to be accomplished with 1 ping sensor? Sorry if these are silly questions, I am entirely new to doing anything with hardware. I am only familiar with code.