QUOTE (stevesliva @ Oct 14 2008, 10:59 PM)
You've got sendRover(direction, position)... your stop case is arriving at the destination, at which point you stop all the other recursive calls. You might not be doing this recursively, but that's really a matter of using the OS stack versus using your own data structure of routes.
Nope, the calls do not stop when one or more 'rovers' arrive at the destination, it just continues for a user-defined number of programming cycles. What happens is that each rover which 'arrives' is dumped into a list and "stopped", and only after completing the set number of programming cycles all arrived rovers are questioned and their routes analyzed. This allows for selecting routes on other criteria then 'fastest route' alone. You might wish to set values to maximum or average terrain encountered, etc, etc, so the first rover which arrives might not have traveled along the desired route. Each software rover keeps track of various factors (average stdev value, maximum stdev value, etc) and these can be questioned afterward.
QUOTE (stevesliva @ Oct 14 2008, 10:59 PM)
So to sort of adapt what I was saying from the recursive algorithm to your problem of having your existing route-finding program: You already have, for each location, a value that corresponds to how long it takes to traverse. What you need to introduce are functions that modify those values, not new "intelligence" or new algorithmic magic. If you try a more exponential function, you will probably start to see routes that steer around obstacles that were previously traversed.
Fully agree with you. What I have been trying to do is keep as much as possible all these choices to the software user itself, so almost any variable in the whole calculation can be changed by the user. And indeed, changing these variables often completely changes the route which is calculated, trick is in finding the 'correct' values...
With regards to your location-value, note that in fact each
vector has a certain 'weight', this is also my problem in incorporating other analyze-methods into the software. In one position you might run in to big problems on a westerly course while running in a southerly course will be okay, so you can't say "this position is okay", you need to say "this position is okay for a southerly course".
The red/blue/green maps are wonderful and extremely important for getting an overview of the terrain but they don't work on the scale of route-finding as they are non directional. In my opinion we should take the following steps:
1) Manually define a number of waypoints and a 'general' route from the various earlier produced colored analysis.
2) Use the various route-finding methods to create a route from one waypoint to the next along the route found under option 1 (Note this is not only software calculations but can just as well include manual analysis of terrain!).
3) Analyze the defined route using various options (total length, estimated duration, terrain encountered, etc).
After step 3, try to think of a different route and repeat steps 1 to 3, until there are various routes, then finally compare all routes found.
Although I enjoy discussing all the software-issues of route-finding, we should not forget to take step 1 first ! As yet there is not much discussion on the 'general route' and I think that should come first before we start to discuss how to get from one waypoint to the next!
Also we need a better method to 'analyze routes', a set of criteria by which we can compare the various route-options, and finally we need some sort of coordinate-system by which we can describe routes ('turn left after the third crater' is a bit vague..). If we all work on the same HiRISE images and on the same scale we could simply use pixel-locations (X,Y) but I think it would be better if we could somehow relate them the 'real' latitude/longitude coordinates or some other type of 'universal' locator-descriptions. Any comment is more then welcome!
All in all I think there is still lots and lots of work to be done, and we must be careful not to get lost along the way...