move_base_simple/goal

发布时间 2023-04-04 00:21:50作者: 黑逍逍

move_base_simple/goal 是一个ROS话题(Topic),用于发布移动目标的简单消息。它是一个geometry_msgs/PoseStamped类型的消息,包含目标位置的位姿信息,包括三维坐标和四元数。

move_base_msgs/MoveBaseActionGoal消息相比,它更加简单,只包含一个位置和一个方向,而不是包含更多的导航行为和状态信息。这使得它在一些简单的应用场景中更加方便使用,例如在移动机器人上通过编写脚本实现一些简单的运动控制等

 

move_base_simple/goalmove_base_msgs/MoveBaseActionGoal 的区别在于消息类型和发送方式。move_base_simple/goal 是一个简单的消息类型,只需要在其中设置目标点的坐标,而 move_base_msgs/MoveBaseActionGoal 则需要设置更多的参数,如目标点的姿态、机器人的速度等等,需要通过 actionlib 发送。简单来说,move_base_simple/goal 更加方便快捷,而 move_base_msgs/MoveBaseActionGoal 更加灵活,可以设置更多参数控制机器人的运动

 

import rospy
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()
    goal.header.stamp = rospy.Time.now()
    goal.header.frame_id = "map"
    goal.pose.position.x = x
    goal.pose.position.y = y
    goal.pose.orientation.z = theta

    # 发布目标位置消息
    pub.publish(goal)

    # 等待一段时间,让小车到达目标位置
    rospy.sleep(5)

if __name__ == '__main__':
    # 发送目标位置为 x=1.0, y=1.0, theta=0.0 的消息
    send_goal(1.0, 1.0, 0.0)