I’ve been working on my little FEZDA for a little while and am happy with my “hello world” project.
The next project for my bot I have in mind is a 2 pass maze navigation. By 2 pass I mean this:
- 1st pass through the maze is essentially to map out the maze using my sensors.
- 2nd pass is a “high speed” run based on a map of the maze created in the 1st pass.
What I need to address before going too far into this my navigation and doing this without sensors like GPS, accell, mag, etc.
With the DC Motor Drivers, one just sets the speed of the respective motors and it goes and turns. This works perfectly fine with my wandering obstacle avoiding bot.
But with any type of navigation, things are bit different. The path through the map of the maze may require this:
- go straight for 10 feet/meters/whatever
- turn 90 degrees left
- go 1 foot/meters/whatever
- turn 45 degrees right
- go 2 feet/meters/whatever
- etc, etc, etc
All I have to control this bot is power levels and timing. But different floor surfaces have different friction levels and different battery power levels will throw off any “precise” timings.
If I ignore the friction and battery issues, my thought that I would essentially create a grid for the map. Instead of saying go forward 10 feet, it would be to go forward 10 units.
Each unit would be based on a timing of (to be calculated, but for discussion’s sake) 50 milliseconds. Once a movement is completed, then come to a full stop.
So to go forward 10 units, it would be 100% for 500ms total. But the problem with this is that there’s ramp up/down times for the motor. I guess I could avoid this by running at a constant speed, then there’s no ramp times any more.
Any suggestions for this idea?
How about suggestions on different ways to accomplish this?
Would doing this type of navigation be better handled with servos? or steppers?
Is some type of positioning sensor, like a GPS, pretty much required in doing this? I would to keep the costs/hardware complexity down, but am not 100% opposed to do this, as I could reuse that for other projects.