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))
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()
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))