def talker(): '''targetGen Publisher''' rospy.init_node('targetGen', anonymous=True) pub = rospy.Publisher('leader', robotState, queue_size=1) rate = rospy.Rate(50) # 50hz tArcSpeed = rospy.get_param("~AngleSpeed",0.1) initArc = rospy.get_param("~initArc",0) last_point = Point() last_angle = 0 last_time = rospy.get_time() last_point.x = LineFunction(initArc).x last_point.y = LineFunction(initArc).y start = rospy.get_time() while start == 0: start = rospy.get_time() # print "start: %s" %start while not rospy.is_shutdown(): leader = robotState() duration = rospy.get_time() - start if duration == 0: continue # print "duration: %s" %duration angle = initArc+tArcSpeed*duration #count from x+ leader.xi = angle leader.x = LineFunction(angle).x leader.y = LineFunction(angle).y leader.angSp = tArcSpeed # angler speed: given in there leader.dirAngle = math.atan2(leader.y - last_point.y, leader.x - last_point.x) last_point.x = leader.x last_point.y = leader.y curTime = rospy.get_time() if last_time == curTime: continue # print "leaderTime:%s; (%s, %s); xi: %s; anSp: %s; dir: %s" % (duration, leader.x, leader.y, leader.xi, leader.angSp, leader.dirAngle) RobotAnSpee = (leader.dirAngle - last_angle) / (curTime - last_time) last_time = curTime last_angle =leader.dirAngle #pub leader messages pub.publish(leader) rate.sleep()
#!/usr/bin/env python import rospy import sys from geometry_msgs.msg import Twist, Point import math from target.msg import robotState import tf import numpy as np leaderInfo = robotState() CurRobot = robotState() Robot1 = robotState() Robot2 = robotState() Robot3 = robotState() Robot4 = robotState() def getLeader(data): global leaderInfo leaderInfo = data def getOwnMes0(data): global CurRobot CurRobot = data def getOwnMes1(data): global Robot1
#!/usr/bin/env python import rospy from geometry_msgs.msg import Twist, Point from nav_msgs.msg import Odometry import math from target.msg import robotState import tf import numpy as np ns = '/robot_1' leaderInfo = robotState() CurRobot = robotState() rho = 0.5 def getLeader(data): global leaderInfo leaderInfo = data def getOwnMes(data): global CurRobot CurRobot = data class followTest(): def __init__(self):
#!/usr/bin/env python # this is used for publish some need formation # pub message 50 hz '''dd ROS Node''' import rospy from std_msgs.msg import String from target.msg import robotState from geometry_msgs.msg import Twist, Point from nav_msgs.msg import Odometry import tf import math import numpy as np curRobotPos = robotState() last_angle_global = 0 elapse_angle_global = 0 last_time = 0 last_pos = Point() rho = 0 pub = rospy def getName(): global name global pub global rho name = rospy.get_param("~number", "robot_1") pub = rospy.Publisher("/" + name + "/robotStates", robotState,