Strategy to Start With
Since vision, multiple motor control, internal state management and environment awareness are all resource intensive tasks and are all taking place in real time, and are somewhat interdependent on each other. This is why a fairly complex strategy is needed to with the main variables that the limited reality that the robot will experience. Since most resources are limited, mainly space, time and money, a plan that uses those wisely is best and not necessarily balanced. While, it would be cheaper and use less space inside the robot to just use one micro controller, but then a lot of time would be used to program some sort of multitasking system into the main program and that has it’s own inherent problems. Discussing all the different strategies would not be the best use of one particular resource which is time, it’s the one resource that we never have enough of, cannot store and are literally losing it second by second. Skipping to the best solution, in my opinion at least, is to divide the tasks up by area of the robot and have the appropriate sized or easiest procured micro controller take care of those tasks, report sensor readings and task status to the main controller. This frees up programming time and clock cycles for more complex problems such vision and human interaction. Once the base micro controllers are programmed well enough to do their tasks adequately or better, they can just do their tasks like a well coded sub routine. Just think of the various micro controllers as physical sub routines in a box that can do a set number of tasks when called by the main controller.
You could say that this is Physical Object Oriented Programming or POOP for short. Go ahead and put that on a resume’. *smiles*
Now the Plan!
Here is a plan in place for the bot, it has three layers, and while each layers has it’s own sensor and working payload, it is governed by the one above it in some way. The working plan for the layers are:
- Bottom layer; battery storage, locomotion and base sensors
- Mid layer; secondary micro controller storage, some advanced sensors
- Top layer; main micro controller, manipulator and probable payload area
The bottom layer is the base, which will be really quite stuffed with batteries, a gearbox, tachometers, line following hardware, and charging contacts. Trying to put most of the weight in the bottom of the bot and lower than the axles of the gear box. This will help lower the center of gravity and hopefully the need of heat dissipation
That leaves, the secondary micro controller, power management micro controller, charging circuits and anti-collision sensors for the middle layer. The secondary micro controller captures all the sensor information and reports it the main controller, while getting heading and distance parameters from the main controller, as well.
The top layer has the main micro controller, some sort of vision sensor and possibly a manipulator. This layer cannot be really planned in depth till the lower layers are complete and working. I’m hoping by offloading most of the tasks to other micro controllers that such problems such as vision and human interaction can solved and implemented easier.
It’s generally easier to break things into basic blocks, solve the simpler problems first, integrate the parts back into the equation that the problem is represented by and that is left to do is solve the last few variables.
Will be discussed in future posts.