Robot Navigation using Dynamic Neural Networks Suresh Golconda www.cacs.ull.edu/~sxg3148 2 Contents TOPIC Page No. 1) Introduction. --------------------------------------- 3 1-a Idea. --------------------------------------- 3 1-b Reasons for the idea. --------------------------------------- 4 1-c Open Questions. --------------------------------------- 5 2) Methods. --------------------------------------- 7 2-a Broad steps for robot navigation. --------------------------------------- 7 2-b More details of the Algorithm. --------------------------------------- 7 1) Types of neural nodes used in the neural map. --- 8 2) Possible links between neural nodes in the neural map. --- 12 3) Feasibility factor for a link. --- 12 4) Dynamically adding new neural node. --- 14 5) Dynamically deleting new neural node. --- 16 6) Finding activation values of neural nodes on the map. --- 16 7) Using the neural maps for navigation. --- 17 2-c Data Structure. -------------------------------------- 17 3) Results. -------------------------------------- 19 4) Discussions & conclusions. -------------------------------------- 20 5) Comparing with earlier neural map algorithm. 6) Remaining Open Questions. ----------------------------- 20 -------------------------------------- 22 3 7) Future Works. -------------------------------------- 22 8) Reference. -------------------------------------- 23 1) Introduction: Neural maps have brought a new approach to traditional robot navigation problem. They build a neural map to represent the world around the robot and use the neural map to navigate in real world. Neural map approach solves the navigation problems very effectively. But they require lot of memory and processing power in order to maintain the complete neural map. Size of this neural map increases along with the area of the world under analysis. Hence the algorithm can be used to navigate when considering small area around the robot. This limit the situations where the algorithm can be utilized. We here represent dynamic neural maps that requires very less memory to represent the world around the robot, and requires less processing power. The size of dynamic neural map do not depend on the area of the real world that they represent, this facilitates the algorithm to be used in wide range of application, like robot navigation on Mars. Experimental results (in simulated world of Nomad 200) demonstrates the validity of the approach and help to understand the implementation issues. 1-a) Idea We build dynamic neural map (DNM) representing the real world around the robot. By the word ‘dynamic’ we mean that the neural map grows and shrinks as the robot encounters new obstacles in its journey. We use this dynamic neural map to navigate the robot. In Dynamic neural map (DNM), neural nodes are not spread in any pattern as in regular Neural map[1]. Neural nodes are placed at positions that seem to be of any use for robot to navigate. These positions include neural node at target position (target-neural node) and neural node around obstacles (called as boundary-neural nodes). We join these neural nodes with a link, such that a link between 2 nodes exists if the robot can move from one node to another without touching the obstacles. We then calculate activation value of each neural nodes, which represents how close the neural node is from target. We use these links to move directly to the target node, if a direct path exist, else move towards the boundary node that seems closest to the target node. See an example world scenario and its corresponding neural map, in FIG X1,X2. 4 1-b) Reasons for the idea: Neural map approach requires lot of memory and processing power. Hence it is difficult to implement on mobile robots with limited memory and processing power. We need a better algorithm that requires very less memory and processing power and can be executed on mobile robots. Earlier neural map represents all the point of real world with neural nodes. Most of these points are not used by the robot to navigate [Ref fig 3], hence we try to prevent all such points. We represent only those nodes that may be used for robot navigation. And provide a facility to dynamically add more neural nodes as need arises. Decrease in number of neural nodes decreases the amount of memory required to store the neural map. Small number of neural nodes reduces the amount of computation required. This facilitates the algorithm to be implemented on mobile robot with less processing and memory powers. 5 FIG-3 Showing the points which are not used by the robot for navigation. 6 1-c) Open Questions: Two of the open questions in robot navigation area are: 1) To develop a robot navigation algorithm which can perform well even with malfunctioning sensory system. 2) To develop an algorithm which ensures that robot will not get stuck with local obstacles. Potential Field Based Navigation algorithms suffer from with this draw back. Some of the algorithms which suffer with this draw back are provided in references. [Ref 9] The algorithm that we propose ensures that the robot will not get stuck with local obstacles. There exists other navigation methods which ensures that the robot does not get stuck with local obstacles.[Ref 10] 2) Methods 2-a) Broad steps for robot navigation: There are four broad steps in robot navigation. 1) Building the neural map: Starting with the Target-node at Target position, we build neural nodes on the edges of the obstacle (obstacle nodes), and a set of nodes (boundary nodes) around the obstacle nodes and finally a node (source node) at robot's source position. 2) Creating links: Link the appropriate neural nodes with weight values proportional to inverse of the distance between the neural nodes. 3) Assigning Activation values: We assign +infinity activation value to target node and -infinity activation value to obstacle nodes and '0' activation value to rest all nodes. We run the neural network with each neural node getting input from all the neural nodes to which it is linked. The network keeps running till all the neural nodes in the map stabilize with their activation values. 4) Starting the Journey: Robot is ready to make its path towards the (local target) neural node, whose link provides maximum activation value. Then from this node, it finds next (local target) neural node with highest activation value and moves to this node. It continues this till it reaches final target node. On encountering a new obstacle in its journey following steps are performed: 7 a) Add a new obstacle neural node to the neural map. b) Add a set of boundary neural nodes around the newly added obstacle neural node. c) Form all possible links for the newly added neural node. d) Recheck earlier links of all neural nodes that may no longer be valid because of the newly added obstacle neural node. e) Update the activation values of the all neural node. 2-b) More details of the Algorithm Details of the algorithm are explained here. 7) Types of neural nodes used in the neural map. 8) Possible links between neural nodes in the neural map 9) Feasibility factor for a link 10) Dynamically adding new neural node 11) Dynamically deleting new neural node 12) Finding activation values of neural nodes on the map 13) Using neural map for navigation 1) Types of neural nodes used in the neural map.[Ref Fig-1] a) Source neural node abbreviated as SNN b) Target neural node abbreviated as TNN c) Obstacle neural node abbreviated as ONN d) Boundary neural node abbreviated as BNN a) Source neural node: We represent robot as a point, corresponding to the center of robot. Unlike Michaels representation of representing robot with a point and obstacle with a circle (corresponding to circular region where a robot center cannot reach), we represent both the obstacle and robot as points. We still prevent the case of robot circumference overlapping over obstacle, by selecting paths to only boundary nodes which represent the safest position around the obstacle where a robot can reach. For each robot there exists only one source neural node. The position of source neural node is updated as robot navigates in the real world. b) Target neural node: We represent target position using a point in neural map. The target neural node has +infinity activation value. c) Obstacle neural node: Obstacle neural node represent a point on obstacle. This neural node is dummy, as they are not used for running the neural map. These neural nodes do not maintain links to any other neural nodes except for maintaining links with at-most 2 obstacle neural nodes, which represent adjacent points of same obstacle. There could be 3 types of obstacle neural nodes. 8 Point obstacle nodes- this neural node represent a point on small obstacle from real world, which is represented using a single point. Point obstacle neural node do not have link to any other obstacle neural node.[Ref Fig-4a] End obstacle node- this neural node represents an edge of a obstacle from real world. i.e. it is the one end of obstacle. This neural node have link to only one other obstacle node, which represent the adjacent point on the obstacle. [Ref Fig-4b] Mid obstacle node- This neural node represent a point on obstacle which has two other adjacent obstacle neural node, with which it maintain links. [Ref Fig-4c]. The angle between the links, is called Angle of surface. [Ref Fig 5] 9 10 d) Boundary neural node: Boundary neural node do not represent anything that exist in the real world, but instead represent the closest point around an obstacle, to which an robot’s center can reach. Boundary neural nodes are always in surrounding a obstacle neural node. Depending on the type of obstacle neural node, a obstacle neural node can have 4, 3, 2 boundary neural node surrounding it. A point obstacle neural node is surrounded by 4 boundary neural nodes. One in each direction. [Fig-6a] An End obstacle neural node has 3 boundary neural node, as explained in the following figure. [Fig-6b] A Mid obstacle neural node has 2 boundary neural node which can be on same side of obstacle or one on either side depending on its ‘angle of surface’. If angle of surface is greater than 270o degrees, then both the boundary neural nodes are on same side [Ref Fig 6c], else if ‘angle of surface’ is smaller than 270o then 2 boundary neural nodes exists on either side of obstacle [ Ref Fig 6d] 11 12 2) Different possible links in the neural map This section describes constraints for deciding which two types of neural nodes can be linked. Not all types of neural nodes can form a link with every other type of neural nodes. Possible links for a source neural node: Source neural node can maintain links to boundary neural nodes and target neural nodes. Second constraint for a link to exist between any two given nodes is described in next section. [Ref Sec 2-b-3] Source neural node can be linked to {Target neural node, Boundary neural node} Possible links for a Target neural node: Target neural node can maintain links to boundary neural nodes and source neural node. Second constraint for a link to exist between any two given nodes is described in next section. [Ref Sec 2-b-3] Possible links for a Obstacle neural node: Obstacle neural node can maintain links to other obstacle neural nodes which represent adjacent points on a single obstacle. Possible links for a Boundary neural node: Boundary neural nodes can maintain links to boundary neural nodes, target neural nodes and source neural node. Second constraint for a link to exist between any two given nodes is described in next section. [Ref Sec 2-b-3] 3) Feasibility test of a link. Here we discuss if a link between two neural nodes is possible, considering the obstacles on the board. Let the two neural nodes to link be N1, N2. In order to have a link, nodes N1 and N2 need to satisfy 2 conditions with each set of connected obstacle neural nodes O1, O2. The 2 conditions are listed as follows: a) The line segments joining N1-N2 and O1-O2 should not intersect. [Ref 1] This considers the case when the path between node N1, N2 runs over the obstacle. A robot cannot move over the obstacles, hence this path is not valid. [Ref fig-7] 13 b) The perpendicular distance between the line segments should be greater than radius of the robot. This considers the case when path do not run over the obstacle but move very close to the obstacle, such that if a robot tries to travel by this path it will collide with obstacle. [Ref Fig-8] 14 4) Dynamically adding new Neural nodes When a new neural node is to be added to the neural map, depending on the type of the neural node being added, one of the following sets of actions is performed. a) Source neural node: Position of Source neural node is updated when the robot is navigating in real world. For the new position, source neural node checks its feasibility to form links to each of the boundary neural node, and target neural node. And forms all feasible link. The feasibility condition that is to be satisfied is described in section 2-b-3 . b) Obstacle neural node: A obstacle neural node is added to the map when a new obstacle is encountered. Following action are performed when adding the obstacle neural node: 1) Add the obstacle node to the map. 2) Search for an obstacle neural node which are located with-in a distance equal to radius of the robot. If any obstacle neural node exists in near affinity, then combine the new obstacle neural node with old obstacle to defining new obstacle. a) If old obstacle is a point obstacle, combining it with new point obstacle leads to a line obstacle. Refer to fig-9 b) If old obstacle is a line-obstacle, combining it with new point obstacle leads to one single bigger obstacle. Refer to fig-10 15 3) Add new boundary neural nodes around the new obstacle neural node. Number of boundary neural nodes to be added depends on the type of obstacle neural node, and is explained below. a) If the new obstacle neural node is a point-obstacle, then add 4 boundary neural node on four sides of the obstacle neural node. As shown in Fig 6a b) If the new obstacle neural node is end-obstacle node then add 3 boundary neural nodes as shown in the fig-6b c) If the new obstacle neural node is mid-obstacle node, then add 2 boundary neural nodes either on same side of obstacle or on either side of obstacle, depending on the ‘Angle of the surface’. If angle of surface is greater than 270o degrees, then both the boundary neural nodes are on same side [Ref Fig 6c], else if ‘angle of surface’ is smaller than 270o then 2 boundary neural nodes exists on either side of obstacle [ Ref Fig 6d] 16 c) Boundary neural node: A boundary neural node is added to neural map when configuration of a obstacle node in the map is changed or when a new neural node is added to the map. When a new boundary neural node is added to the map, form all possible links with source neural nodes, target neural nodes and other boundary neural nodes. Feasibility check of a link is possible is as explained in the above section (SEE Sec ‘Feasibility links between neural nodes’). 5) Dynamically deleting neural nodes from neural map: Steps for deleting a neural node from dynamic neural map depends on the type of the neural node that we are deleting. We explain the steps to follow for each of the possible type of neural node as follows. Source or boundary neural node: deleting source or boundary neural node involves direct steps. a) Delete all the links from the present boundary neural node to other nodes. b) Delete all the links from other neural nodes to present neural node. c) Finally delete the neural node from neural map. Obstacle neural node: Deleting an obstacle neural node has more work compared to other type of neural node. Deleting a obstacle neural node (a vertex of the obstacle) effects other neural nodes belonging to same obstacle. Hence we need to update other obstacle neural nodes that are connected to the present obstacle neural node. Different operations to be performed when deleting a obstacle neural node are: a) Delete all boundary neural nodes that surround the obstacle neural node. b) Delete links with other obstacle neural nodes. c) Update the definition of obstacle neural nodes that were connected to present obstacle neural node. These obstacle neural nodes change their type, from edge-obstacle neural node to point-obstacle neural node or mid-obstacle neural node to edge-obstacle neural node. 6) Finding activation values of neural nodes on the map The process of finding activation values of the neural nodes in the neural map is called stabilizing the neural map. In our neural map only target-neural nodes, boundary neural nodes and source neural nodes take part in running the network. Obstacle neural nodes are not connected to any of these neural nodes. And activation values of obstacle neural nodes need not be calculated, as the robot does not use obstacle neural nodes during navigation. Initially, target neural nodes are set to +infinity activation value, and boundary neural nodes and source neural nodes are set to 0 activation values. Each of the neural node takes input from all the neural nodes to which it is connected, and calculates it activation value. The new activation value is then used to updated activation value of other connected neural nodes, this process is continued till activation values of all neural nodes get stabilized. 17 7) Using the neural maps for navigation: The robot moves in the direction of the neural node(local target node) which is connected to the source neural node and which gives maximum input value compared to other neural nodes. On reaching local target node, the source neural node position is updated to present position and new links for source neural node are created [Ref 6.Ch-6] [Ref 1, Ref 2] . These new links are used by the robot to figure out new local target node, and moves towards this neural node. This is repeated till the robot reaches the target. 2-c) Data structure Structure to store a neural node in the neural map. /* a neural node in the neural network */ struct s_neural_node { int posx,posy; /* gives the topological position of the node */ char node_type; /*represents the type of node: O-obstacle, T-target, Ssource */ float activation_value; /* stores the activation value or output of the present node */ int n_links; /* maintains number of nodes, which are linked to present node */ struct s_link_list_node *head_link_list_node;/* maintains the linked list of all nodes connected to present node */ struct s_link_list_node *present_link_list_node; /* present node int the linked list of connected nodes */ int flag; }; Structure to store linked list of neural nodes that are connected to present neural node. struct s_link_list_node /* a node in the linked list to maintain neural_nodes that are linked to present node*/ { struct s_neural_node *linked_node; /*Node to which the link points*/ float weight_link; /* Weight of the link to present node */ struct s_link_list_node *next_list_node; struct s_link_list_node *prev_list_node; }; struct { struct struct struct } ; s_list_neural_node s_neural_node *linked_node; s_list_neural_node *next_list_node; s_list_neural_node *prev_list_node; Structure to store obstacle /* Struct to store a obstacle */ struct s_obstacle 18 { int n_obstacle_ends; /*one for point obstacle, and 2 for ordinary obstacle* / struct s_neural_node *obstacle_end1; /*points to one end of the obstacle */ struct s_neural_node *obstacle_end2; }; Structure to store list of obstacles /*struct to store list of obstacles */ struct s_list_node_obstacle { struct s_obstacle *linked_obstacle; struct s_list_node_obstacle *next_obstacle_node; struct s_list_node_obstacle *prev_obstacle_node; }; 3) Results: The algorithm’s basic steps were successfully implemented on Nomad 200. The robot was able to take shortest path from source position to target position in simulation world of Nomad 200. Algorithm successfully adapts neural map to addition of new obstacles and removal of existing obstacles. The neural map is adjusted dynamically during the navigation process. For a world configuration with 4-5 obstacles, the robot reacts to changes in the world, within a fraction of second. The algorithm is being implemented on Sun Ultra system. Above results can be compared to Michaels implementation. For 50 * 50 grid neural map, Michaels algorithm takes around 2 seconds to adjust with the changing world. Time increases drastically to around 10 second for neural map of size 1000* 500 [Ref 2]. 4) Discussions & Conclusions: We designed a general data structure that facilitates - multiple target nodes and multiple robots nodes on the same neural map. This facilitates future updates to the code. Like, implementing co-operative navigation algorithm with multiple robots[Ref to Future-update section]. Conclusions We propose an update to earlier approach of using neural maps for mobile robots navigation[1]. We successfully show the improved performance of algorithm in terms of required memory, and computational power of the mobile robot. 19 We successfully implemented the algorithm in both simulated-world of Nomad 200 mobile robot. 5) Comparing with earlier neural map algorithm Advantages: 1) This algorithm requires less number of neural nodes, which minimizes the required computational power. Hence mobile robots can easily implement this algorithm. 2) It reacts fast to new obstacles encountered, (like man standing in its path). For new obstacles encountered, the algorithm adds only 5 new nodes to the neural map. And update the links and activation values of neural nodes. 3) As the robot knows the distance of its local target node, it can uniformly increase and decrease the robot’s speed, so as to have a smooth path to the target node. 4) Performance of the algorithm is independent of the size of the real world. Traditional neural map methods have limitation on area of the real-world that they can represent. But dynamic neural maps are not influenced size of the real-world. 5) This algorithm is more natural algorithm . In the sense that, it is more close to how humans make their path. On encountering an obstacle on our path, we look at edges of the obstacle and estimate which path has smaller distance, and move to the edge with smaller expected distance. 6)More suitable for navigation on large open landscape(like surface on moon),where other neural map approach cannot work. 7) Traditional neural maps do not represent the exact position of the object in the world. The objects are represented by nearest neural node on the map. Dynamic neural maps represent the exact position of the objects, by storing the co-ordinates of the object within the neural node. 8) Traditional neural maps need to trade off between the area that they represent, and the accuracy of positioning the target and obstacle. As they use uniform grid to represent the world. Dynamic neural maps do not need to make such trade off as they represent the exact position of the object from real world using a neural node. 9) Earlier neural maps failed to provide more resolution to critical areas/spots, while this approach provide more resolution to critical areas by building more number of neural nodes at critical areas. 10) For a same world configuration, the distance that robot travels in-order to reach target when using dynamic neural map is less (Takes straight paths) than the distance the robot travels using traditional neural map (takes curved path). 20 11) Earlier neural map approach provide curvilinear paths, which requires robot to change its direction of motion after reaching new neural node on the grid neural map. This is not hard for a holonomic robot like Nomad 200, but other robots have great difficulty in implementing this approach. While in Dynamic neural map approach robots change their direction fewer number of times. They change their direction only when a obstacle’s boundary is encountered. Disadvantage: 1) When number of obstacles are increased to very high number, the complexity grows high, as the number of neural nodes (and their links) increase at much higher rate. 2) Robot does not make smooth turning. 3) Using robots like nomad200 , which can move in a curve, this algorithm is not utilizing this feature, hence at each turning it has to wait for its wheels to change direction. 6) Remaining open Questions: The ability of navigation algorithm to perform satisfactory when sensory system of robot is malfunctioning, is a challenging Task. This algorithm do not attempt to provide such a capability. 7) Future work If multiple robots following same navigation algorithm are simultaneously set to navigate (from same/near by source) to same target position. With each robot having no knowledge about existence of other robots[Ref fig-11] . How do each robot react to neighboring robots that are moving in same direction? What is the resulting path followed by each robot? And why? Understanding these question and an attempt to answer these questions may lead to good co-operative navigation algorithm using neural maps. Co-operative learning algorithms are key requirement in ‘Search and Rescue’ operations (SAR). Ref [7][8] 21 8) REFERENCES: 1) Logoudakis. G. Michael, Anthony S. Maida Neural Map for Mobile Robot Navigation. 1999. 2) Logoudakis. G. Micahel Mobile robot Local Navigation with polar neural maps. 1998. 3) Laubach. S.L., Burdick J.W. An Autonomous Sensor-Based Path-Planner for planetary microrovers. 4) Martti Mantyla Introduction to Solid Modeling. Computer Science press 1998 5) Mortenson E.Michael Geometric Modeling. John Wily & Sons 1985. 6) Igor Aleksander, Henri Farreny, Malik Ghallab, Decision And Intelligence Volume 6 Robot Technology. 1987 7) CSUS 2002, Search and Rescue robots http://teams.botball.org/team_web/2002/CSUSHI/private/sar_research.htm 8) Cooperative navigation for Rescue robots. The rescue project. Instituto de Sistemas e Robótica, Instituto Superior Técnico, Portugal. http://rescue.isr.ist.utl.pt/contact.php 22 9) Liu Chengqing, Marcelo H Ang Jr, Hariharan Krishna, Lim Ser Yong Virtual Obstacle Concepts for local-minimum-recovery in Potential-field Based Navigation. 2000 IEEE International Conference on Robotics & Automation San Francisco, April 2000. 10) Geert De Cubber ,Hichem Sahli, Francis Decroos Sensor Integration on Mobile robot. Vriji University Brussel- Etro Department.