@@ -75,24 +75,20 @@ def planning(self, sx, sy, gx, gy):
7575            if  len (open_set_A ) ==  0 :
7676                print ("Open set A is empty.." )
7777                break 
78-              
78+ 
7979            if  len (open_set_B ) ==  0 :
8080                print ("Open set B is empty.." )
8181                break 
8282
8383            c_id_A  =  min (
8484                open_set_A ,
85-                 key = lambda  o : open_set_A [o ].cost  +  self .calc_heuristic (current_B ,
86-                                                                      open_set_A [
87-                                                                          o ]))
88-                                 
85+                 key = lambda  o : self .find_lowest_cost (open_set_A , o , current_B ))
86+ 
8987            current_A  =  open_set_A [c_id_A ]
9088
9189            c_id_B  =  min (
9290                open_set_B ,
93-                 key = lambda  o : open_set_B [o ].cost  +  self .calc_heuristic (current_A ,
94-                                                                      open_set_B [
95-                                                                          o ]))
91+                 key = lambda  o : self .find_lowest_cost (open_set_B , o , current_A ))
9692
9793            current_B  =  open_set_B [c_id_B ]
9894
@@ -129,46 +125,49 @@ def planning(self, sx, sy, gx, gy):
129125                continue_B  =  False 
130126
131127                child_node_A  =  self .Node (current_A .x  +  self .motion [i ][0 ],
132-                                  current_A .y  +  self .motion [i ][1 ],
133-                                  current_A .cost  +  self .motion [i ][2 ], c_id_A )
128+                                           current_A .y  +  self .motion [i ][1 ],
129+                                           current_A .cost  +  self .motion [i ][2 ], c_id_A )
134130
135131                child_node_B  =  self .Node (current_B .x  +  self .motion [i ][0 ],
136-                                  current_B .y  +  self .motion [i ][1 ],
137-                                  current_B .cost  +  self .motion [i ][2 ], c_id_B )
132+                                           current_B .y  +  self .motion [i ][1 ],
133+                                           current_B .cost  +  self .motion [i ][2 ], c_id_B )
138134
139135                n_id_A  =  self .calc_grid_index (child_node_A )
140136                n_id_B  =  self .calc_grid_index (child_node_B )
141137
142138                # If the node is not safe, do nothing 
143139                if  not  self .verify_node (child_node_A ):
144140                    continue_A  =  True 
145-                  
141+ 
146142                if  not  self .verify_node (child_node_B ):
147143                    continue_B  =  True 
148144
149145                if  n_id_A  in  closed_set_A :
150146                    continue_A  =  True 
151-                  
147+ 
152148                if  n_id_B  in  closed_set_B :
153149                    continue_B  =  True 
154150
155151                if  not (continue_A ):
156152                    if  n_id_A  not  in   open_set_A :
157-                         open_set_A [n_id_A ] =  child_node_A   # discovered a new node 
153+                         # discovered a new node 
154+                         open_set_A [n_id_A ] =  child_node_A 
158155                    else :
159156                        if  open_set_A [n_id_A ].cost  >  child_node_A .cost :
160157                            # This path is the best until now. record it 
161158                            open_set_A [n_id_A ] =  child_node_A 
162-              
159+ 
163160                if  not (continue_B ):
164161                    if  n_id_B  not  in   open_set_B :
165-                         open_set_B [n_id_B ] =  child_node_B   # discovered a new node 
162+                         # discovered a new node 
163+                         open_set_B [n_id_B ] =  child_node_B 
166164                    else :
167165                        if  open_set_B [n_id_B ].cost  >  child_node_B .cost :
168166                            # This path is the best until now. record it 
169167                            open_set_B [n_id_B ] =  child_node_B 
170168
171-         rx , ry  =  self .calc_final_path_bidir (meetpointA , meetpointB , closed_set_A , closed_set_B )
169+         rx , ry  =  self .calc_final_path_bidir (
170+             meetpointA , meetpointB , closed_set_A , closed_set_B )
172171
173172        return  rx , ry 
174173
@@ -203,6 +202,11 @@ def calc_heuristic(n1, n2):
203202        d  =  w  *  math .hypot (n1 .x  -  n2 .x , n1 .y  -  n2 .y )
204203        return  d 
205204
205+     def  find_lowest_cost (self , open_set , lambda_ , n1 ):
206+         cost  =  open_set [lambda_ ].cost  +  \
207+             self .calc_heuristic (n1 , open_set [lambda_ ])
208+         return  cost 
209+ 
206210    def  calc_grid_position (self , index , minp ):
207211        """ 
208212        calc grid position 
0 commit comments