class RobotMover(object):
    def __init__(self):
        # valori di velocità angolare e lineare precedenti , inizializzati a 0 e 0.1
        self.previous_angular = 0
        self.previous_linear = 0.1
        rospy.Subscriber("cmd_vel_topic", Twist, self.cmd_vel_callback)
        # creazione di un oggetto della classe MotorDriver
        self.motion_driver = MotorDriver()

    # callback invocata ogni qual volta venga pubblicato qualcosa sul topic "cmd_vel_topic"
    def cmd_vel_callback(self, data):
        # velocità lineare e angolare pubblicate sul topic
        linear_speed = data.linear.x
        angular_speed = data.angular.z
        # se sono dei valori di default, si passano a change speed le velocità precedenti, continua a fare quello che faceva
        if (linear_speed == -1000) or (angular_speed == -1000) or (
                linear_speed == 1000) or (angular_speed == 1000):
            self.motion_driver.change_speed(self.previous_linear,
                                            self.previous_angular)
            print("{ROBOT_MOVER} Linear: " + str(self.previous_linear) +
                  ", Angular: " + str(self.previous_angular))
        else:  # se le velocità sono cambiate, aggiorno i valori di quelle precedenti e li passo a change_speed
            self.previous_linear = linear_speed
            self.previous_angular = angular_speed
            self.motion_driver.change_speed(linear_speed, angular_speed)
            print("{ROBOT_MOVER} Linear: " + str(linear_speed) +
                  ", Angular: " + str(angular_speed))
Example #2
0
class RobotMover(object):
    def __init__(self):

        rospy.Subscriber("wheel", Twist, self.cmd_vel_callback)

        self.motion_driver = MotorDriver()

    def cmd_vel_callback(self, data):
        linear_speed = data.linear.x
        angular_speed = data.angular.z
        rospy.loginfo(data.linear)
        self.motion_driver.change_speed(linear_speed, angular_speed)

    def listener(self):
        rospy.spin()
Example #3
0
class RobotMover(object):
    
    def __init__(self):
        self.previous_angular = 0
        self.previous_linear = 0.1
        rospy.Subscriber("cmd_vel_topic", Twist, self.cmd_vel_callback2)
        self.motion_driver = MotorDriver()

    def cmd_vel_callback2(self, data):
        linear_speed = data.linear.x
        angular_speed = data.angular.z
        if (linear_speed == -1000) and (angular_speed == -1000 or angular_speed == 1000):
            self.motion_driver.change_speed(self.previous_linear, self.previous_angular)
            print("{ROBOT_MOVER} Linear: " + str(self.previous_linear) + ", Angular: " + str(self.previous_angular))
        else:
            self.previous_linear = linear_speed
            self.previous_angular = angular_speed
            self.motion_driver.change_speed(linear_speed, angular_speed)
            print("{ROBOT_MOVER} Linear: " + str(linear_speed) + ", Angular: " + str(angular_speed))