Reasoning robots the art and science of programming robotic agents (Springer, 2005)