def start(self): log_once = True while not rospy.is_shutdown(): try: self.robot.start(self.port, robot_types.ROBOT_TYPES[self.robot_type].baudrate) break except serial.serialutil.SerialException as ex: msg = "Failed to open port %s. Error: %s Please make sure the Create cable is plugged into the computer. \n"%((self.port), ex.message) self._diagnostics.node_status(msg,"error") if log_once: log_once = False rospy.logerr(msg) else: sys.stderr.write(msg) time.sleep(3.0) self.sensor_handler = robot_types.ROBOT_TYPES[self.robot_type].sensor_handler(self.robot) self.robot.safe = True if rospy.get_param('~bonus', False): bonus(self.robot) self.robot.control() # Write driver state to disk with open(connected_file(), 'w') as f: f.write("1") # Startup readings from Create can be incorrect, discard first values s = TurtlebotSensorState() try: self.sense(s) except Exception: # packet read can get interrupted, restart loop to # check for exit conditions pass
def start(self): log_once = True while not rospy.is_shutdown(): try: self.robot.start(self.port) break except serial.serialutil.SerialException as ex: msg = "Failed to open port %s. Please make sure the Create cable is plugged into the computer. \n"%(self.port) self._diagnostics.node_status(msg,"error") if log_once: log_once = False rospy.logerr(msg) else: sys.stderr.write(msg) time.sleep(3.0) self.create_sensor_handler = TurtlebotSensorHandler(self.robot) self.robot.safe = True if rospy.get_param('~bonus', False): bonus(self.robot) self.robot.control() # Write driver state to disk with open(connected_file(), 'w') as f: f.write("1") self._init_pubsub()