Пример #1
0
    def __init__(self):
        self.node_name = rospy.get_name()
        rospy.loginfo("[%s] Initializing " % (self.node_name))
        self.car_like_mode = self.setupParam("~car_like_mode", True)

        # Setup publishers
        self.dagu = DAGU_Differential_Drive(car_like_mode=self.car_like_mode)
        self.dagu.setSpeed(0.0)
        self.dagu.setSteerAngle(0.0)

        self.control_msg = None
        # self.control_msg = CarControl()
        # self.control_msg.speed = 0.0
        # self.control_msg.steering = 0.0

        # Setup subscribers
        self.sub_topic = rospy.Subscriber("~car_control", CarControl,
                                          self.cbControl)

        # Create a timer that calls the cbTimer function every 1.0 second
        self.timer = rospy.Timer(rospy.Duration.from_sec(0.02), self.cbTimer)

        self.last_cmd = None
Пример #2
0
    def __init__(self):
        self.node_name = rospy.get_name()
        rospy.loginfo("[%s] Initializing " %(self.node_name))
        self.car_like_mode = self.setupParam("~car_like_mode",True)

        # Setup publishers
        self.dagu = DAGU_Differential_Drive(car_like_mode=self.car_like_mode)
        self.dagu.setSpeed(0.0)
        self.dagu.setSteerAngle(0.0)

        self.control_msg = None
        # self.control_msg = CarControl()
        # self.control_msg.speed = 0.0
        # self.control_msg.steering = 0.0

        # Setup subscribers
        self.sub_topic = rospy.Subscriber("~car_control", CarControl, self.cbControl)

        # Create a timer that calls the cbTimer function every 1.0 second
        self.timer = rospy.Timer(rospy.Duration.from_sec(0.02),self.cbTimer)

        self.last_cmd = None
Пример #3
0
class DaguCar(object):
    def __init__(self):
        self.node_name = rospy.get_name()
        rospy.loginfo("[%s] Initializing " %(self.node_name))
        self.car_like_mode = self.setupParam("~car_like_mode",True)

        # Setup publishers
        self.dagu = DAGU_Differential_Drive(car_like_mode=self.car_like_mode)
        self.dagu.setSpeed(0.0)
        self.dagu.setSteerAngle(0.0)

        self.control_msg = None
        # self.control_msg = CarControl()
        # self.control_msg.speed = 0.0
        # self.control_msg.steering = 0.0

        # Setup subscribers
        self.sub_topic = rospy.Subscriber("~car_control", CarControl, self.cbControl)

        # Create a timer that calls the cbTimer function every 1.0 second
        self.timer = rospy.Timer(rospy.Duration.from_sec(0.02),self.cbTimer)

        self.last_cmd = None

    def setupParam(self,param_name,default_value):
        value = rospy.get_param(param_name,default_value)
        rospy.set_param(param_name,value) #Write to parameter server for transparancy
        rospy.loginfo("[%s] %s = %s " %(self.node_name,param_name,value))
        return value

    def cbControl(self,msg):
        self.control_msg = msg

    def cbTimer(self,event):
        if self.control_msg is None:
            return

        speed = self.control_msg.speed
        steer = self.control_msg.steering
        values = (speed, steer)
        
        # do not publish redundant values
        if self.last_cmd is not None:
            if values == (self.last_cmd.speed,self.last_cmd.steering):
                delta = event.current_real - self.last_cmd.header.stamp
                # unless 2 seconds elapsed
                if delta.to_sec() < 2.0:
                    return

        self.dagu.setSpeed(speed)
        self.dagu.setSteerAngle(steer)
        self.last_cmd = self.control_msg

    def on_shutdown(self):
        self.dagu.setSpeed(0.0)
        self.dagu.setSteerAngle(0.0)
        rospy.loginfo("[DaguCar] Shutting down.")
Пример #4
0
class DaguCar(object):
    def __init__(self):
        self.node_name = rospy.get_name()
        rospy.loginfo("[%s] Initializing " % (self.node_name))
        self.car_like_mode = self.setupParam("~car_like_mode", True)

        # Setup publishers
        self.dagu = DAGU_Differential_Drive(car_like_mode=self.car_like_mode)
        self.dagu.setSpeed(0.0)
        self.dagu.setSteerAngle(0.0)

        self.control_msg = None
        # self.control_msg = CarControl()
        # self.control_msg.speed = 0.0
        # self.control_msg.steering = 0.0

        # Setup subscribers
        self.sub_topic = rospy.Subscriber("~car_control", CarControl,
                                          self.cbControl)

        # Create a timer that calls the cbTimer function every 1.0 second
        self.timer = rospy.Timer(rospy.Duration.from_sec(0.02), self.cbTimer)

        self.last_cmd = None

    def setupParam(self, param_name, default_value):
        value = rospy.get_param(param_name, default_value)
        rospy.set_param(param_name,
                        value)  #Write to parameter server for transparancy
        rospy.loginfo("[%s] %s = %s " % (self.node_name, param_name, value))
        return value

    def cbControl(self, msg):
        self.control_msg = msg

    def cbTimer(self, event):
        if self.control_msg is None:
            return

        speed = self.control_msg.speed
        steer = self.control_msg.steering
        values = (speed, steer)

        # do not publish redundant values
        if self.last_cmd is not None:
            if values == (self.last_cmd.speed, self.last_cmd.steering):
                delta = event.current_real - self.last_cmd.header.stamp
                # unless 2 seconds elapsed
                if delta.to_sec() < 2.0:
                    return

        self.dagu.setSpeed(speed)
        self.dagu.setSteerAngle(steer)
        self.last_cmd = self.control_msg

    def on_shutdown(self):
        self.dagu.setSpeed(0.0)
        self.dagu.setSteerAngle(0.0)
        rospy.loginfo("[DaguCar] Shutting down.")