move_base_simple/goal 使用记录BUG

无论使用rospy roscpp 发布话题move_base_simple/goal ,第一次发布的消息,基本都回丢。

具体原因不详。经排查,move_base_simple/goal的回调函数的消息队列长度为1,但调为10,依旧没有解决。

故先发一个空消息,休眠后再发正确的消息。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import rospy
import time
from geometry_msgs.msg import PoseStamped
 
def send_goal(x, y, theta):
    # 初始化节点
    rospy.init_node('send_goal_node', anonymous=True)
 
    # 创建一个发布者,发布目标位置消息
    pub = rospy.Publisher('/move_base_simple/goal', PoseStamped, queue_size=10)
    
    
    # 创建一个PoseStamped消息对象,填充位置信息
    goal = PoseStamped()
    #先发送一个空位置,否则第一个包容易丢,具体原因可能是因为回调函数的缓冲长度为1
    pub.publish(goal) 
    time.sleep(1)
    
    goal = PoseStamped()
    goal.header.stamp = rospy.Time.now()
    goal.header.frame_id = "map"
    goal.pose.position.x = x
    goal.pose.position.y = y
    goal.pose.orientation.w = theta
 
    # 发布目标位置消息
    pub.publish(goal)
 
    # 等待一段时间,让小车到达目标位置
    rospy.sleep(5)
 
if __name__ == '__main__':
    # 发送目标位置为 x=1.0, y=1.0, theta=0.0 的消息
    send_goal(1.0, 0.0, 1.0)
    rospy.spin()

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值