def __init__(self, default_port='/dev/ttyUSB0', default_update_rate=120.0): """ @param default_port: default tty port to use for establishing connection to Eddiebot. This will be overriden by ~port ROS param if available. """ self.default_port = default_port self.default_update_rate = default_update_rate self.robot = Eddiebot() self.sensor_handler = None self.sensor_state = EddiebotSensorState() self.req_cmd_vel = None rospy.init_node('eddiebot') self._init_params() self._init_pubsub() self._pos2d = Pose2D() # 2D pose for odometry self._diagnostics = EddiebotDiagnostics() if self.has_gyro: self._gyro = EddiebotGyro() else: self._gyro = None dynamic_reconfigure.server.Server(EddieBotConfig, self.reconfigure) self.last_pan_degree = 96 # Default is facing center self.last_angle = self.UNDEFINED self.last_dist = self.UNDEFINED self.emergency_activated = False self.last_time = 0 self.cmd_log = open( '/home/eddie/logs/cmd_log_' + str(int(time.time())), 'w') self.cmd_log.write( 'cur_time,msg.linear.x,msg.angular.z,linear_speed_ticks,angular_speed_ticks,left_spd,right_spd\n' )