Advertisement

Robot Navigation Problem - Grid Map and Vectors

Started by August 20, 2008 02:31 AM
0 comments, last by Adam_42 16 years, 3 months ago
Hi, I've found an annoying problem with my robot navigation solution. I've developed a grid based map, with and A* path planner and a navigation system that determines the angle the robot should be facing at a given point along that path. At the moment it looks at the current orientation of the robot and the difference between that and the vector angle to the next grid cell is the correction angle. Problem is that all is works fine if the robot is on the path (Although not necessarly pointing the right way). It all goes pear shapped if the robot is off the path, even by one cell (4cm in the real world). The alg, correctly works out that it would be 45deg to correct to the cell, actioning this movement basically ends up with it going round in circles as it never gets back on the path. e.g if the coordinats are: (17, 7)->(18, 7)->(19, 7)->(20, 7) = fine - the correction angle will always be correct and execute ok (17, 6)->(18, 7)->(19, 7)->(20, 7) = Prob (17, 6)->(18, 7) is 45 deg - which whilst correct with have the robot running round in circles.. :( I'm not sure what I should to to correct. Options I've thought of are: 1) Make the path wider - (it's 4cm at the moment - the bot is 16cm Radis) - net result should be that it won't be as easy for it to move outside the path 2) Work out the correction angle between the bot and a point on the path further along. What should that point be? Can only think of IDing the next turn point at using that. Issue I have with both of these is that I think it's just masking the issue. Any suggestions would be most welcome - rest of the thing is working - most annoying! :) Thanks Mark
Here's a couple of options off the top of my head:

- Don't move and turn at the same time. Slows things down but solves the problem easily. You might find you don't need to stop completely, just slowing down a bit may fix it.

- Look ahead somewhat. If you go in circles round the target cell, then you've actually gone past it, so you should update which cell is actually next if you get to one that's further down the path than the 'next' one. This needs a bit more work if the path ever crosses over itself - you could bypass large sections of path.

This topic is closed to new replies.

Advertisement