fkie / multimaster_fkie

ROS stack with FKIE packages for multi-robot (discovering, synchronizing and management GUI)
BSD 3-Clause "New" or "Revised" License
268 stars 108 forks source link

master synchronization always failed #15

Closed nuriozalp closed 9 years ago

nuriozalp commented 9 years ago

When conneciton time out your master synchronization kill itself. But Master Discovery continue to wkorking. Can you restart your master synchronization when it take a message from master discovery. Maybe you can write a subscribe to discovery node or when it restart to take any message from discovery it can restart master synchronization again. We use your project at our project. İf ı know phyton well i would do it myself.

atiderko commented 9 years ago

hello nuriozalp, can you explain when the synchronization die? Can you post an error message? Normally the master_sync subscribes to the local master_discovery (topic: changes). On changes a connection to remote master_discovery will be created (each time) using pythons XML-RPC.

nuriozalp commented 9 years ago

hello, Problem is based on TCP timeout. Your process is getting die. Because of this never subscribe or connect to anything. Now i dont have error message but i controlled before this error in your code.

atiderko commented 9 years ago

sorry, I cannot reproduce this issue :-( does it die while starting? I need an error message or a position in code...

nuriozalp commented 9 years ago

when sycn has fail the last called function is at below. And error like TCP timeout.

def stop(self): ''' Stops running thread. ''' rospy.logdebug(" SyncThread[%s]: stop request", self.name) with self.__lock_intern: if not self._update_timer is None: self._update_timer.cancel() self._unreg_on_finish() rospy.logdebug(" SyncThread[%s]: stop exit", self.name)

atiderko commented 9 years ago

this method is called, if the master was removed by master_discovery or at the end. The master_discovery removes the remote masters if 300 sec no messages are received from them. Also the master is added, if a message is then received. You can disable this by setting the remove_after parameter of master_discovery to zero. Actually, connection errors are printed to std output, but the node should not die... Can you reproduce this behavior?

atiderko commented 9 years ago

Do you have still problems with synchronization?