LCAS / topological_navigation

The topological navigation framework
Apache License 2.0
31 stars 36 forks source link

Fixes #77

Closed adambinch closed 3 years ago

adambinch commented 3 years ago

Fix for toponav breaking if the go to node goal exists but there is no route to it. Fix for toponav breaking if an invalid exec policy route is used. Class for determining if an exec policy route is valid and its usage in navigation.py. Correct setting of terminal states for both actions. A couple of minor map manager 2 fixes. Improvements to the edge action manager. Tidying.

francescodelduchetto commented 3 years ago

I think there are some race conditions to be fixed yet, I got this error in the multisim scenario

[INFO] [1619687949.740546, 2538.390000]: Edge Action Manager: Waiting for the result ...                                                                                                            [80/1565]
[ERROR] [1619687950.935208, 2539.585000]: Exception in your execute callback: service call failed                                                                                                            
Traceback (most recent call last):                                                                                                                                                                           
  File "/opt/ros/melodic/lib/python2.7/dist-packages/actionlib/simple_action_server.py", line 289, in executeLoop                                                                                            
    self.execute_callback(goal)                                                                                                                                                                              
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 229, in executeCallback                                                        
    self.navigate(goal.target)                                                                                                                                                                               
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 332, in navigate                                                               
    result, inc = self.followRoute(route, target, 0)                                                                                                                                                         
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 539, in followRoute                                                            
    self.reconfigure_movebase_params(params)                                                                                                                                                                 
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 182, in reconfigure_movebase_params                                            
    self._do_movebase_reconf(translated_params)                                                                                                                                                              
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 188, in _do_movebase_reconf                                                    
    self.rcnfclient.update_configuration(params)                                                                                                                                                             
  File "/opt/ros/melodic/lib/python2.7/dist-packages/dynamic_reconfigure/client.py", line 224, in update_configuration                                                                                       
    raise DynamicReconfigureCallbackException('service call failed')                                                                                                                                         
DynamicReconfigureCallbackException: service call failed                                                                                                                                                     

[ERROR] [1619687950.937231, 2539.585000]: Exception in your execute callback: 'NoneType' object has no attribute 'close'                                                                                     
Traceback (most recent call last):                                                                                                                                                                           
  File "/opt/ros/melodic/lib/python2.7/dist-packages/actionlib/simple_action_server.py", line 289, in executeLoop                                                                                            
    self.execute_callback(goal)                                                                                                                                                                              
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 249, in executeCallbackexecpolicy                                              
    result = self.execute_policy(route, target)                                                                                                                                                              
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 372, in execute_policy                                                         
    succeeded, inc = self.followRoute(route, target, 1)                                                                                                                                                      
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 539, in followRoute                                                            
    self.reconfigure_movebase_params(params)                                                                                                                                                                 
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 182, in reconfigure_movebase_params                                            
    self._do_movebase_reconf(translated_params)                                                                                                                                                              
  File "/home/francesco/workspaces/rasberry_ws/src/topological_navigation/topological_navigation/scripts/navigation.py", line 188, in _do_movebase_reconf                                                    
    self.rcnfclient.update_configuration(params)                                                                                                                                                             
  File "/opt/ros/melodic/lib/python2.7/dist-packages/dynamic_reconfigure/client.py", line 222, in update_configuration                                                                                       
    msg = self._set_service(config).config                                                                                                                                                                   
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 442, in __call__                                                                                                    
    return self.call(*args, **kwds)                                                                                                                                                                          
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py", line 535, in call                                                                                                        
    transport.close()                                                                                                                                                                                        
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/impl/tcpros_base.py", line 846, in close                                                                                                          
    self.socket.close()                                                                                                                                                                                      
AttributeError: 'NoneType' object has no attribute 'close'                                                                                                                                                   

[INFO] [1619687951.138639, 2539.785000]: Cancelling current navigation goal, timeout_secs=10...                                                                                                              
[INFO] [1619687951.139610, 2539.785000]:        [timeout called]                                                                                                                                             
[INFO] [1619687951.335532, 2539.985000]:        [timeout called]                                                                                                                                             
[WARN] [1619687951.348924, 2539.995000]: Preempting toponav exec_policy                                                                                                                                      
[INFO] [1619687951.349952, 2539.995000]: Cancelling current navigation goal, timeout_secs=2...                                                                                                               
[INFO] [1619687951.350901, 2540.000000]:        [timeout called]                                                                                                                                             
[INFO] [1619687951.535646, 2540.185000]:        [timeout called]                                                                                                                                             
[INFO] [1619687951.552205, 2540.200000]:        [timeout called]                                                                                                                                             
[INFO] [1619687951.738950, 2540.385000]:        [timeout called]                                                                                                                                             
[INFO] [1619687951.753528, 2540.400000]:        [timeout called]                                                                                                                                             
[INFO] [1619687951.938335, 2540.585000]:        [timeout called]                                                                                                                                             

It happens when a toponavGoal and an executePolicyGoal are sent at the same time.

francescodelduchetto commented 3 years ago

With the last commit I should have fixed the race conditions issue, @adambinch have a look please.