def __init__(self,bool_direction):
print "Beginning wall follow"
#setup the node
rospy.init_node('wall_follower', anonymous=False)
rospy.on_shutdown(self.shutdown)
self.right = bool_direction
# node specific topics (remap on command line or in launch file)
self.drive = rospy.Publisher('/vesc/ackermann_cmd_mux/input/navigation', AckermannDriveStamped, queue_size=5)
#sets the subscriber
rospy.Subscriber('scan', LaserScan, self.laserCall)
rospy.Subscriber('blob_info', blob_detect,self.blobCall)
rospy.spin()
# always make sure to leave the robot stopped
self.drive.publish(AckermannDriveStamped())
python类on_shutdown()的实例源码
def __init__(self,bool_direction):
print "Beginning wall follow"
#setup the node
rospy.init_node('wall_follower', anonymous=False)
rospy.on_shutdown(self.shutdown)
self.right = bool_direction
# node specific topics (remap on command line or in launch file)
self.drive = rospy.Publisher('/vesc/ackermann_cmd_mux/input/navigation', AckermannDriveStamped, queue_size=5)
#sets the subscriber
rospy.Subscriber('scan', LaserScan, self.laserCall)
rospy.Subscriber('blob_info', blob_detect,self.blobCall)
rospy.spin()
# always make sure to leave the robot stopped
self.drive.publish(AckermannDriveStamped())
def main():
"""Intera RSDK Joint Velocity Example: Wobbler
Commands joint velocities of randomly parameterized cosine waves
to each joint. Demonstrates Joint Velocity Control Mode.
"""
arg_fmt = argparse.RawDescriptionHelpFormatter
parser = argparse.ArgumentParser(formatter_class=arg_fmt,
description=main.__doc__)
parser.parse_args(rospy.myargv()[1:])
print("Initializing node... ")
rospy.init_node("rsdk_joint_velocity_wobbler")
wobbler = Wobbler()
rospy.on_shutdown(wobbler.clean_shutdown)
wobbler.wobble()
print("Done.")
def main():
"""RSDK Head Example: Wobbler
Nods the head and pans side-to-side towards random angles.
Demonstrates the use of the intera_interface.Head class.
"""
arg_fmt = argparse.RawDescriptionHelpFormatter
parser = argparse.ArgumentParser(formatter_class=arg_fmt,
description=main.__doc__)
parser.parse_args(rospy.myargv()[1:])
print("Initializing node... ")
rospy.init_node("rsdk_head_wobbler")
wobbler = Wobbler()
rospy.on_shutdown(wobbler.clean_shutdown)
print("Wobbling... ")
wobbler.wobble()
print("Done.")
joint_trajectory_action_server.py 文件源码
项目:intera_sdk
作者: RethinkRobotics
项目源码
文件源码
阅读 16
收藏 0
点赞 0
评论 0
def start_server(limb, rate, mode, valid_limbs):
rospy.loginfo("Initializing node... ")
rospy.init_node("sdk_{0}_joint_trajectory_action_server{1}".format(
mode, "" if limb == 'all_limbs' else "_" + limb,))
rospy.loginfo("Initializing joint trajectory action server...")
robot_name = intera_interface.RobotParams().get_robot_name().lower().capitalize()
config_module = "intera_interface.cfg"
if mode == 'velocity':
config_name = ''.join([robot_name,"VelocityJointTrajectoryActionServerConfig"])
elif mode == 'position':
config_name = ''.join([robot_name,"PositionJointTrajectoryActionServerConfig"])
else:
config_name = ''.join([robot_name,"PositionFFJointTrajectoryActionServerConfig"])
cfg = importlib.import_module('.'.join([config_module,config_name]))
dyn_cfg_srv = Server(cfg, lambda config, level: config)
jtas = []
if limb == 'all_limbs':
for current_limb in valid_limbs:
jtas.append(JointTrajectoryActionServer(current_limb, dyn_cfg_srv,
rate, mode))
else:
jtas.append(JointTrajectoryActionServer(limb, dyn_cfg_srv, rate, mode))
def cleanup():
for j in jtas:
j.clean_shutdown()
rospy.on_shutdown(cleanup)
rospy.loginfo("Joint Trajectory Action Server Running. Ctrl-c to quit")
rospy.spin()
go_along_circle.py 文件源码
项目:master_robot_strage
作者: nwpu-basketball-robot
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def __init__(self):
#?????????? m/s
self.move_cmd_pub = rospy.Publisher('cmd_move_robot',g_msgs.Twist,queue_size=100)
self.move_speed = config.go_along_circle_speed
self.get_position = robot_state.robot_position_state()
#????????? rad
self.stop_tolerance = config.go_along_circle_angular_tolerance
#????????
rospy.on_shutdown(self.brake)
# ??sleep ??? ???????????
self.rate = 100.0
self.R = rospy.Rate(int(self.rate))
self.MODE = { 1:(-1, 1),
2:( 1,-1),
3:( 1, 1),
4:(-1,-1)}
move_in_robot.py 文件源码
项目:master_robot_strage
作者: nwpu-basketball-robot
项目源码
文件源码
阅读 22
收藏 0
点赞 0
评论 0
def turn_to(self,goal_angular):
rospy.on_shutdown(self.brake) #???????????
current_angular = start_angular = self.robot_state.get_robot_current_w()#??????????
is_arrive_goal = False
r = rospy.Rate(100)
delta_angular = current_angular - start_angular
delta_upper_limit = abs(goal_angular) + 0.02 #????
delta_lower_limit = abs(goal_angular) - 0.02 #????
move_velocity = g_msgs.Twist()
while not rospy.is_shutdown() and not is_arrive_goal:
if abs(delta_angular)<=delta_upper_limit and abs(delta_angular) >= delta_lower_limit: #????
self.brake()
is_arrive_goal = True
break
current_angular = self.robot_state.get_robot_current_w()
if goal_angular > 0:
move_velocity.angular.z = 0.1
else:
move_velocity.angular.z = -0.1
delta_angular += abs(abs(current_angular) - abs(start_angular) )
start_angular = current_angular
self.cmd_move_pub.publish(move_velocity) #???????????
r.sleep()
self.brake()
find_volleyball.py 文件源码
项目:master_robot_strage
作者: nwpu-basketball-robot
项目源码
文件源码
阅读 21
收藏 0
点赞 0
评论 0
def __init__(self):
self.find_ball_client = rospy.ServiceProxy('volleyball_data',volleyballdata)
self.cmd_vel_pub = rospy.Publisher('cmd_move_robot' , g_msgs.Twist , queue_size=100)
self.cmd_position = get_robot_position.robot_position_state()
self.move_speed = 0.21
#????????
rospy.on_shutdown(self.brake)
#????????????
self.MODE = { 1:(-1, 1),
2:( 1,-1),
3:( 1, 1),
4:(-1,-1)}
rospy.loginfo('waiting for the find ball..')
self.find_ball_client.wait_for_service()
rospy.loginfo('connect to the find ball!!!')
#??????????????????
def __init__(self):
self.node_name = "face_recog_fisher"
rospy.init_node(self.node_name)
rospy.on_shutdown(self.cleanup)
self.bridge = CvBridge()
self.face_names = StringArray()
self.all_names = StringArray()
self.size = 4
face_haar = 'haarcascade_frontalface_default.xml'
self.haar_cascade = cv2.CascadeClassifier(face_haar)
self.face_dir = 'face_data_fisher'
self.model = cv2.createFisherFaceRecognizer()
# self.model = cv2.createEigenFaceRecognizer()
(self.im_width, self.im_height) = (112, 92)
rospy.loginfo("Loading data...")
# self.fisher_train_data()
self.load_trained_data()
rospy.sleep(3)
# self.img_sub = rospy.Subscriber("/asus/rgb/image_raw", Image, self.img_callback)
self.img_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.img_callback)
# self.img_pub = rospy.Publisher('face_img', Image, queue_size=10)
self.name_pub = rospy.Publisher('face_names', StringArray, queue_size=10)
self.all_names_pub = rospy.Publisher('all_face_names', StringArray, queue_size=10)
rospy.loginfo("Detecting faces...")
def __init__(self):
self.node_name = "train_faces_eigen"
rospy.init_node(self.node_name)
rospy.on_shutdown(self.cleanup)
self.bridge = CvBridge()
self.size = 4
face_haar = 'haarcascade_frontalface_default.xml'
self.haar_cascade = cv2.CascadeClassifier(face_haar)
self.face_dir = 'face_data_eigen'
self.face_name = sys.argv[1]
self.path = os.path.join(self.face_dir, self.face_name)
# self.model = cv2.createFisherFaceRecognizer()
self.model = cv2.createEigenFaceRecognizer()
self.cp_rate = 5
if not os.path.isdir(self.path):
os.mkdir(self.path)
self.count = 0
self.train_img_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.img_callback)
# self.train_img_pub = rospy.Publisher('train_face', Image, queue_size=10)
rospy.loginfo("Capturing data...")
def __init__(self):
self.node_name = "hand_gestures"
rospy.init_node(self.node_name)
rospy.on_shutdown(self.cleanup)
# self.cv_window_name = self.node_name
# cv2.namedWindow("Depth Image", 1)
# cv2.moveWindow("Depth Image", 20, 350)
self.bridge = CvBridge()
self.numFingers = RecognizeNumFingers()
self.depth_sub = rospy.Subscriber("/asus/depth/image_raw", Image, self.depth_callback)
self.num_pub = rospy.Publisher('num_fingers', Int32, queue_size=10, latch=True)
# self.img_pub = rospy.Publisher('hand_img', Image, queue_size=10)
rospy.loginfo("Waiting for image topics...")
def __init__(self):
# rospy.init_node('nav_test', anonymous=False)
#what to do if shut down (e.g. ctrl + C or failure)
rospy.on_shutdown(self._shutdown)
#tell the action client that we want to spin a thread by default
self.move_base = actionlib.SimpleActionClient("move_base", MoveBaseAction)
rospy.loginfo("waiting for the action server to come up...")
#allow up to 5 seconds for the action server to come up
self.move_base.wait_for_server(rospy.Duration(5))
#we'll send a goal to the robot to tell it to move to a pose that's near the docking station
self.goal = MoveBaseGoal()
self.goal.target_pose.header.frame_id = 'odom'
self.goal.target_pose.header.stamp = rospy.Time.now()
def __init__(self):
self.node_name = "face_recog_eigen"
rospy.init_node(self.node_name)
rospy.on_shutdown(self.cleanup)
self.bridge = CvBridge()
self.face_names = StringArray()
self.size = 4
face_haar = 'haarcascade_frontalface_default.xml'
self.haar_cascade = cv2.CascadeClassifier(face_haar)
self.face_dir = 'face_data_eigen'
# self.model = cv2.createFisherFaceRecognizer()
self.model = cv2.createEigenFaceRecognizer()
(self.im_width, self.im_height) = (112, 92)
rospy.loginfo("Loading data...")
# self.fisher_train_data()
self.load_trained_data()
rospy.sleep(3)
# self.img_sub = rospy.Subscriber("/asus/rgb/image_raw", Image, self.img_callback)
self.img_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.img_callback)
# self.img_pub = rospy.Publisher('face_img', Image, queue_size=10)
self.name_pub = rospy.Publisher('face_names', StringArray, queue_size=10)
self.all_names_pub = rospy.Publisher('all_face_names', StringArray, queue_size=10)
rospy.loginfo("Detecting faces...")
def __init__(self):
self.marker_id = rospy.get_param("~marker_id", 12)
self.frame_id = rospy.get_param("~frame_id", "odom_meas")
self.camera_frame_id = rospy.get_param("~camera_frame_id", "overhead_cam_frame")
self.count = rospy.get_param("~count", 50)
# local vars:
self.calibrate_flag = False
self.calibrated = False
self.calibrate_count = 0
self.kb = kbhit.KBHit()
self.trans_arr = np.zeros((self.count, 3))
self.quat_arr = np.zeros((self.count, 4))
self.trans_ave = np.zeros(3)
self.quat_ave = np.zeros(3)
# now create subscribers, timers, and publishers
self.br = tf.TransformBroadcaster()
self.kb_timer = rospy.Timer(rospy.Duration(0.1), self.keycb)
rospy.on_shutdown(self.kb.set_normal_term)
self.alvar_sub = rospy.Subscriber("ar_pose_marker", AlvarMarkers, self.alvarcb)
return
def __init__(self,dis=0.0):
State.__init__(self, outcomes=['succeeded','preempted','aborted'],input_keys=['target'])
rospy.on_shutdown(self.shutdown)
self.test_distance = target.y-dis
self.rate = 200
self.r = rospy.Rate(self.rate)
self.speed = rospy.get_param('~speed',0.08)
self.tolerance = rospy.get_param('~tolerance', 0.01)
self.cmd_vel = rospy.Publisher('/mobile_base_controller/smooth_cmd_vel',Twist,queue_size=5)
self.base_frame = rospy.get_param('~base_frame', '/base_link')
self.odom_frame = rospy.get_param('~odom_frame', '/odom')
self.tf_listener = tf.TransformListener()
rospy.sleep(1)
self.tf_listener.waitForTransform(self.odom_frame,self.base_frame,rospy.Time(),rospy.Duration(60.0))
#define a bianliang
self.flag = rospy.get_param('~flag', True)
rospy.loginfo(self.test_distance)
#tf get position
#publish cmd_vel
def __init__(self,angle=0):
State.__init__(self, outcomes=['succeeded','aborted','preempted'],input_keys=["angle_in"])
self.speed = rospy.get_param('~speed', 0.10)
self.secretindigal = 1.0
self.tolerance = rospy.get_param('tolerance', math.radians(5))
self.start = True
self.cmd_vel = rospy.Publisher('mobile_base_controller/smooth_cmd_vel', Twist, queue_size=5)
self.base_frame = rospy.get_param('~base_frame', '/base_link')
self.odom_frame = rospy.get_param('~odom_frame', '/odom')
rospy.on_shutdown(self.shutdown)
self.rate = 30
self.start_test = True
self.r = rospy.Rate(self.rate)
self.tf_listener = tf.TransformListener()
rospy.sleep(0.5)
self.tf_listener.waitForTransform(self.odom_frame, self.base_frame, rospy.Time(), rospy.Duration(60))
def __init__(self, angle=0):
State.__init__(self, outcomes=['succeeded', 'aborted', 'preempted'], input_keys=["angle_in"])
self.speed = rospy.get_param('~speed', 0.03)
self.secretindigal = 1.0
self.tolerance = rospy.get_param('tolerance', math.radians(5))
self.start = True
self.cmd_vel = rospy.Publisher('mobile_base_controller/smooth_cmd_vel', Twist, queue_size=5)
self.base_frame = rospy.get_param('~base_frame', '/base_link')
self.odom_frame = rospy.get_param('~odom_frame', '/odom')
rospy.on_shutdown(self.shutdown)
self.rate = 30
self.start_test = True
self.r = rospy.Rate(self.rate)
self.angle=angle
self.tf_listener = tf.TransformListener()
rospy.sleep(0.5)
self.tf_listener.waitForTransform(self.odom_frame, self.base_frame, rospy.Time(), rospy.Duration(60))
def __init__(self,dis=0):
State.__init__(self, outcomes=['succeeded','preempted','aborted'])
rospy.on_shutdown(self.shutdown)
self.test_distance = dis
self.rate = 100
self.r = rospy.Rate(self.rate)
self.speed = rospy.get_param('~speed',0.08)
self.tolerance = rospy.get_param('~tolerance', 0.01)
self.cmd_vel = rospy.Publisher('/mobile_base_controller/smooth_cmd_vel',Twist,queue_size=5)
self.base_frame = rospy.get_param('~base_frame', '/base_link')
self.odom_frame = rospy.get_param('~odom_frame', '/odom')
self.tf_listener = tf.TransformListener()
rospy.sleep(1)
self.tf_listener.waitForTransform(self.odom_frame,self.base_frame,rospy.Time(),rospy.Duration(60.0))
self.flag = rospy.get_param('~flag', True)
#tf get position
self.position = Point()
self.position = self.get_position()
self.y_start = self.position.y
self.x_start = self.position.x
#publish cmd_vel
def __init__(self,dis=0.0):
State.__init__(self, outcomes=['succeeded','preempted','aborted'])
rospy.on_shutdown(self.shutdown)
self.test_distance = target.y-0.0
self.rate = 100
self.r = rospy.Rate(self.rate)
self.speed = rospy.get_param('~speed',0.08)
self.tolerance = rospy.get_param('~tolerance', 0.01)
self.cmd_vel = rospy.Publisher('/mobile_base_controller/smooth_cmd_vel',Twist,queue_size=5)
self.base_frame = rospy.get_param('~base_frame', '/base_link')
self.odom_frame = rospy.get_param('~odom_frame', '/odom')
self.tf_listener = tf.TransformListener()
rospy.sleep(1)
self.tf_listener.waitForTransform(self.odom_frame,self.base_frame,rospy.Time(),rospy.Duration(60.0))
#define a bianliang
self.flag = rospy.get_param('~flag', True)
rospy.loginfo(self.test_distance)
#tf get position
#publish cmd_vel
def __init__(self,angle=0):
State.__init__(self, outcomes=['succeeded','aborted','preempted'])
self.speed = rospy.get_param('~speed', 0.20)
self.secretindigal = 1.0
self.tolerance = rospy.get_param('tolerance', math.radians(5))
self.start = True
self.cmd_vel = rospy.Publisher('mobile_base_controller/smooth_cmd_vel', Twist, queue_size=5)
self.base_frame = rospy.get_param('~base_frame', '/base_link')
self.odom_frame = rospy.get_param('~odom_frame', '/odom')
rospy.on_shutdown(self.shutdown)
self.rate = 30
self.start_test = True
self.r = rospy.Rate(self.rate)
self.angle = angle
self.tf_listener = tf.TransformListener()
rospy.sleep(0.5)
self.tf_listener.waitForTransform(self.odom_frame, self.base_frame, rospy.Time(), rospy.Duration(60))
def __init__(self,angle=0):
State.__init__(self, outcomes=['succeeded','aborted','preempted'])
self.speed = rospy.get_param('~speed', 0.20)
self.secretindigal = 1.0
self.tolerance = rospy.get_param('tolerance', math.radians(5))
self.start = True
self.cmd_vel = rospy.Publisher('mobile_base_controller/smooth_cmd_vel', Twist, queue_size=5)
self.base_frame = rospy.get_param('~base_frame', '/base_link')
self.odom_frame = rospy.get_param('~odom_frame', '/odom')
rospy.on_shutdown(self.shutdown)
self.rate = 30
self.start_test = True
self.r = rospy.Rate(self.rate)
self.angle = angle
self.tf_listener = tf.TransformListener()
rospy.sleep(0.5)
self.tf_listener.waitForTransform(self.odom_frame, self.base_frame, rospy.Time(), rospy.Duration(60))
def __init__(self):
# Holds the current drone status
self.status = -1
# Subscribe to the /ardrone/navdata topic, of message type navdata, and call self.ReceiveNavdata when a message is received
self.subNavdata = rospy.Subscriber('/ardrone/navdata',Navdata,self.ReceiveNavdata)
# Allow the controller to publish to the /ardrone/takeoff, land and reset topics
self.pubLand = rospy.Publisher('/ardrone/land',Empty)
self.pubTakeoff = rospy.Publisher('/ardrone/takeoff',Empty)
self.pubReset = rospy.Publisher('/ardrone/reset',Empty)
# Allow the controller to publish to the /cmd_vel topic and thus control the drone
self.pubCommand = rospy.Publisher('/cmd_vel',Twist)
# Setup regular publishing of control packets
self.command = Twist()
self.commandTimer = rospy.Timer(rospy.Duration(COMMAND_PERIOD/1000.0),self.SendCommand)
# Land the drone if we are shutting down
rospy.on_shutdown(self.SendLand)
def __init__(self):
#constants for racecar speed and angle calculations
self.pSpeed = 0.3 #tweak
self.pAngle = 1
#positive charge behind racecar to give it a "kick" (forward vector)
self.propelling_charge = 4.5
#more constants
self.charge = 0.01
self.safety_threshold = 0.3
self.speeds = [1] #Creates a list of speeds
self.stuck_time = 0
self.stuck = False
self.stuck_threshold = 2
rospy.init_node("explorer")
self.sub = rospy.Subscriber('scan', LaserScan, self.laser_callback)
self.pub = rospy.Publisher('/vesc/ackermann_cmd_mux/input/navigation', AckermannDriveStamped)
rospy.on_shutdown(self.shutdown)
def __init__(self):
rospy.init_node('nav_asr', anonymous = True)
rospy.Subscriber("/recognizer/output", String, self.SpeechUpdateGoal)
rospy.Subscriber("/WPsOK", String, self.GetWayPoints)
self.waypoint_list = dict()
self.marker_list = list()
self.makerArray = MarkerArray()
self.makerArray_pub = rospy.Publisher("Waypoint_Array",MarkerArray,queue_size=5)
rospy.on_shutdown(self.shutdown) # @@@@
# How long in seconds should the robot pause at each location?
self.rest_time = rospy.get_param("~rest_time", 2)
# Are we running in the fake simulator?
self.fake_test = rospy.get_param("~fake_test", True)
# Publisher to manually control the robot (e.g. to stop it, queue_size=5)
self.cmd_vel_pub = rospy.Publisher('cmd_vel', Twist, queue_size=5)
# Subscribe to the move_base action server
self.move_base = actionlib.SimpleActionClient("move_base", MoveBaseAction)
rospy.loginfo("Waiting for move_base action server...")
# Wait 60 seconds for the action server to become available
self.move_base.wait_for_server(rospy.Duration(60))
rospy.loginfo("Connected to move base server")
# Create the waypoints list from txt
def main():
"""SDK Joint Position Waypoints Example
Records joint positions each time the navigator 'OK/wheel'
button is pressed.
Upon pressing the navigator 'Rethink' button, the recorded joint positions
will begin playing back in a loop.
"""
arg_fmt = argparse.RawDescriptionHelpFormatter
parser = argparse.ArgumentParser(formatter_class=arg_fmt,
description=main.__doc__)
parser.add_argument(
'-s', '--speed', default=0.3, type=float,
help='joint position motion speed ratio [0.0-1.0] (default:= 0.3)'
)
parser.add_argument(
'-a', '--accuracy',
default=intera_interface.settings.JOINT_ANGLE_TOLERANCE, type=float,
help='joint position accuracy (rad) at which waypoints must achieve'
)
args = parser.parse_args(rospy.myargv()[1:])
print("Initializing node... ")
rospy.init_node("sdk_joint_position_waypoints", anonymous=True)
waypoints = Waypoints(args.speed, args.accuracy)
# Register clean shutdown
rospy.on_shutdown(waypoints.clean_shutdown)
# Begin example program
waypoints.record()
waypoints.playback()
def __init__(self, name):
"""
:param name: the name of the ROS node
"""
super(NaoqiNode, self).__init__()
# A distutils.version.LooseVersion that contains the current verssion of NAOqi we're connected to
self.__naoqi_version = None
self.__name = name
## NAOqi stuff
# dict from a modulename to a proxy
self.__proxies = {}
# Initialize ros, before getting parameters.
rospy.init_node(self.__name)
# If user has set parameters for ip and port use them as default
default_ip = rospy.get_param("~pip", "127.0.0.1")
default_port = rospy.get_param("~pport", 9559)
# get connection from command line:
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("--pip", dest="pip", default=default_ip,
help="IP/hostname of parent broker. Default is 127.0.0.1.", metavar="IP")
parser.add_argument("--pport", dest="pport", default=default_port, type=int,
help="port of parent broker. Default is 9559.", metavar="PORT")
import sys
args, unknown = parser.parse_known_args(args=rospy.myargv(argv=sys.argv)[1:])
self.pip = args.pip
self.pport = args.pport
## ROS stuff
self.__stop_thread = False
# make sure that we unregister from everything when the module dies
rospy.on_shutdown(self.__on_ros_shutdown)
def run(self):
""" This function is the main run loop."""
rospy.on_shutdown(self.stop)
while not rospy.is_shutdown():
if self.twist:
self.publisher.publish(self.twist)
self.r.sleep()
def __init__(self):
self.publishers = {}
rospy.on_shutdown(self.shutdown)
# Appends a value to a rosparam list
turn_an_angular.py 文件源码
项目:master_robot_strage
作者: nwpu-basketball-robot
项目源码
文件源码
阅读 17
收藏 0
点赞 0
评论 0
def start_turn(self , goal_angular = 0.0):
rospy.loginfo('[robot_move_pkg]->move_an_angular will turn %s'%goal_angular)
rospy.on_shutdown(self.brake) #???????????
current_angular = start_angular = self.robot_state.get_robot_current_w()#??????????
is_arrive_goal = False
r = rospy.Rate(100)
delta_angular = current_angular - start_angular
delta_upper_limit = abs(goal_angular) + self.stop_tolerance #????
delta_lower_limit = abs(goal_angular) - self.stop_tolerance #????
move_velocity = g_msgs.Twist()
while not rospy.is_shutdown() and not is_arrive_goal:
if abs(delta_angular)<=delta_upper_limit and abs(delta_angular) >= delta_lower_limit: #????
self.brake()
is_arrive_goal = True
break
current_angular = self.robot_state.get_robot_current_w()
if goal_angular > 0:
move_velocity.angular.z = self.speed
else:
move_velocity.angular.z = -self.speed
delta_angular += abs(abs(current_angular) - abs(start_angular) )
start_angular = current_angular
self.cmd_vel_pub.publish(move_velocity) #???????????
r.sleep()
self.brake()
#???????. ?????
move_in_robot.py 文件源码
项目:master_robot_strage
作者: nwpu-basketball-robot
项目源码
文件源码
阅读 30
收藏 0
点赞 0
评论 0
def move_to(self, x = 0.0, y = 0.0, yaw = 0.0):
''' ???????? '''
rospy.on_shutdown(self.brake) #???????????
rospy.loginfo('[robot_move_pkg]->move_in_robot will move to x_distance = %s'
'y_distance = %s, angular = %s'%(x, y, yaw))
if x == 0.0 and y == 0:
self.turn(self.normalize_angle(yaw))
else:
self.turn(self.normalize_angle(yaw))
self.start_run(x, y)