从这个项目里摘抄修改的的
上代码
#!/usr/bin/env python
# encoding: utf-8
import rospy
import math
from geometry_msgs.msg import PointStamped, PoseStamped, PoseWithCovarianceStamped, Twist, Point
from std_msgs.msg import Int8
from move_base_msgs.msg import *
from pyquaternion import Quaternion
from tf import transformations
class TaskGenerator():
def __init__(self):
# Publisher
self.initialpose_pub = rospy.Publisher('/initialpose', PoseWithCovarianceStamped, queue_size=1)
def pub_initial_position(self, set_pose):
rospy.loginfo("start test inital pose...")
setpose_pub = rospy.Publisher("initialpose",PoseWithCovarianceStamped,latch=True, queue_size=10)
rospy.loginfo("start set pose...")
p = PoseWithCovarianceStamped()
p.header.stamp = rospy.Time.now()
p.header.frame_id = "map"
p.pose.pose.position.x = set_pose['x']
p.pose.pose.position.y = set_pose['y']
p.pose.pose.position.z = set_pose['a']
(p.pose.pose.orientation.x,
p.pose.pose.orientation.y,
p.pose.pose.orientation.z,
p.pose.pose.orientation.w) = transformations.quaternion_from_euler(0, 0, set_pose['a'])
p.pose.covariance[6 * 0 + 0] = 0.5 * 0.5
p.pose.covariance[6 * 1 + 1] = 0.5 * 0.5
p.pose.covariance[6 * 3 + 3] = math.pi / 12.0 * math.pi / 12.0
setpose_pub.publish(p) # 有时候发一次不行,原因不明
rospy.sleep(1)
setpose_pub.publish(p)
rospy.sleep(1)
if __name__ == '__main__':
rospy.init_node('test_initalpose', anonymous=False)
task = TaskGenerator()
set_pose = {'x':13.767,'y':-10.380,'a':3.127}
task.pub_initial_position(set_pose)