Uno - My first robot.
My first attempt at a robot, this is mostly just the Arduino robot kit that is a combination of an arduino and pololu kit components.My goal with this was to have a platform for teaching myself some electronics (for some reason I did German instead of physics at A-Level). I intend to play around with room mapping so have added an IR range finding sensor.
After assembling the arduino and motors and playing around for a bit I decided that the motors were not sufficiently similar to allow me to know my position based on how hard and long I had driven the motors. So I have also added a pair of quadrature encoders which will let me sense the position of the wheels.
All the hardware is now assembled (hence the picture) and seems to work (getting sensible looking feedback from encoders and IR sensor, motors do what I tell them). So now need to start some proper coding. First task will be some utility functions for controlling movement using feedback from the encoders.
This will require
a) Controlling the speed of the motors (probably using PI techniques). As the motors need to go at the same speed to allow the vehicle to go in a straight line, simply driving them until each wheel has covered the same distance will not work.
b) Control the distance, not sure if I need to get too technical here. Can I stack one PI feedback loop with another (i.e. one control loop contols speed by adjusting voltage, the one controls distance by adjusting speed.
Controlling rotation will be tricky, I will be rotating the robot by driving it's pair of wheels in opposing directions and on the face of it, it should be easy to calculate the distance required to drive the wheels to turn a certain amount. However the problem I can see is where to measure the radius of the turning circle to. The wheels are quite wide and the difference between measuring from the inside and outside edge could be quite large. I guess I will start using the middle of the wheels and see where that gets me.
The interesting part will come when I actually start trying to do the room mapping. There are some interesting looking algorithms about, which use an occupancy map, however the Arduinos 1K of ram means that if I tried to do a simple array the best I could manage would be about 30x30 cells which isn't an especially high resolution. So I am thinking some form of sparse representation will be in order. Alternatively grouping of points into lines etc would allow more efficient storage.
Thanks for reading this far! If you have any comments/suggestions please let me know.