$search
00001 #!/usr/bin/python 00002 00003 # ROS stuff 00004 import roslib; roslib.load_manifest('clearpath_base') 00005 import rospy 00006 00007 from base import Clearpath 00008 00009 00010 class Torque(Clearpath): 00011 def __init__(self): 00012 rospy.loginfo("Clearpath Base") 00013 rospy.loginfo("Using closed-loop current control") 00014 # TODO: insert detection here for differential platform 00015 00016 Clearpath.__init__(self) 00017 00018 if self.horizon: 00019 self.max_current = rospy.get_param('~max_current', 26) 00020 self.linear_scale = rospy.get_param('~linear_scale', 1.2) 00021 self.angular_scale = rospy.get_param('~angular_scale', 2) 00022 rospy.loginfo("Using %f m/s as %f A output (linear scale)", 00023 self.linear_scale, self.max_current) 00024 rospy.loginfo("Using %f rad/s as +/- %f A (angular scale)", 00025 self.angular_scale, self.max_current) 00026 00027 def cmd_vel(self, linear_velocity, angular_velocity): 00028 linear = linear_velocity * (self.max_current / self.linear_scale) 00029 diff = angular_velocity * (self.max_current / self.angular_scale) 00030 left_current = max(min(linear - diff, self.max_current), -self.max_current) 00031 right_current = max(min(linear + diff, self.max_current), -self.max_current) 00032 self.horizon.set_differential_current(left_current, right_current) 00033 00034 00035 Torque().run()