Hello Everyone,
I am looking to Build an Arduino robot that can intelligently react to an environment by "mapping" its surroundings and then being able to more intelligently navigate them. I.E remembering where that thing i almost ran into was.
I am a Computer Science student at WPI and the programming involved seems well within my abilities, but my knowledge falls somewhat short when it comes to the hardware portion of the project.
I have imagined that i would need stepper motors to accurately keep track of where i am going and where i have been and additionally i would need at least one ping sensor on a 180 servo scanning the environment to detect objects (preferable 2, one scanning the back 180 degrees and one in the front).
I have found a motor shield here Motor Shield - Arduino motor/stepper/servo control that appears to do the trick nicely as it can handle two (albeit low power) stepper motors and the 2 servos i want to move the ping sensors to scan.
With the following please bear in mind i am still very new to this and have yet to get my feet wet with any hardware:
How would i then attach the ping sensors to the arduino, it looks as if the motor shield takes up all of the pins on the arduino, thus leaving me without any pins to input on. I have seen Extender shields that duplicates the pins (http://www.liquidware.com/shop/show/DTX/DoubleTall+ExtenderShield) but since this is a simple splitter, and the MotorShield uses all the pins, wouldn't i have two shields trying to access the same pins?
I would like to shy away from breadboards if possible since i am new to hardware. I am planning on doing this over my winter break which is a little over 3 weeks.
If it helps, here is my background:
Programming:
QBasic - Excellent
Visual Basic - Some
C - Proficient
C++ - Some
Java - Proficient
Assembler - God i hate Assembler...for any Arch
And i have been into to RC for almost 10 years and can solder decently.
Just to point you to two potential problems in your plan:
If you want exact positioning steppermotors are probably not a very good solution. When driving a robot around they might skip steps or there might be wheel slippage.
You will ned to take into consideration that Arduino has very limited memory. Only 1KB RAM to store variables and other data, some of which the system uses itself. And ony 16KB flash memory for program storage, of which 2K is used for the bootloader. 1KB RAM will probably not be enough for the mapping function. You can extend this by using SD card or serial EPROM but this wil take up I/O pins and space.
You can drive steppermotors with other things than the motorshield, search the forum to find out how. People have build robots similar to what you plan, except the mapping function i think.
The motor shield does not "use" all of the pins. It only uses a few, but the shield plugs into all of them. Check the schematics to see which ones it does/doesn't use.
OK, i poked around a found out the pins it uses and it will be using about 8 pins for the application i am looking for. And as to memory, i will look into a memory module. And as to the stepper motors, they are better than a standard DC motor for "keeping track" of where its been, would a continuous rotations servo be a better bet?
If the wheels slip and you rely on counting steps / rotations your bot will not be where it thinks it is after some time. This is not an easy issue to solve. Wheel slippage is very common especially when you start / stop.
But it all depends on the precision you aim to achieve, but considering your mapping plan i guess you need pretty high precision ?
Agreed, the wheel slippage will be an issue. But for now its a hobby robot that i do not intend to do any serious work with. I have spoken to some of the Robotics majors here at WPI and they recommended using an accelerometer and/or a gyroscope to determine movement. This would involve finding the correlation of values obtained from the accelerometer and/or gyro and the speed of the platform. One possible solution is that i could put 2 IR flares in the room and have it perform a resection calculation to figure its exact relative position. The latter seems simpler (if i can find a way to distinguish between the 2 IR flares) but less flexible.
In another note, are their any good chassis (preferable tracked) that you know of?