执行路点导航Py demo发现总是提示 FollowWaypoints action server is not available
-
ros2 FollowWaypoints action server is not available (ros2 foxy版本 ubuntu20)
但ros2命令执行发现 FollowWaypoint 的node action service都在
而且rviz2是可以做导航的。(按钮驱动)
用的是navigation2 (humble的)
主要代码如下:
from geometry_msgs.msg import PoseStamped
from nav2_simple_commander.robot_navigator import BasicNavigator, TaskResult
import rclpy
from rclpy.duration import Duration
import tf_transformationsdef main():
rclpy.init()navigator = BasicNavigator() # 位置初始化 # initial_pose = PoseStamped() # initial_pose.header.frame_id = 'map' # initial_pose.header.stamp = navigator.get_clock().now().to_msg() # initial_pose.pose.position.x = 3.45 # initial_pose.pose.position.y = 2.15 # initial_pose.pose.orientation.z = 1.0 # initial_pose.pose.orientation.w = 0.0 # navigator.setInitialPose(initial_pose) navigator.waitUntilNav2Active() #添加导航点 goal_poses = [] goal_pose1 = PoseStamped() goal_pose1.header.frame_id = 'map' goal_pose1.header.stamp = navigator.get_clock().now().to_msg() goal_pose1.pose.position.x = 1.5 goal_pose1.pose.position.y = -0.55 yaw=0 quat=tf_transformations.quaternion_from_euler(0,0,yaw) goal_pose1.pose.orientation.x = quat[0] goal_pose1.pose.orientation.y = quat[1] goal_pose1.pose.orientation.z = quat[2] goal_pose1.pose.orientation.w = quat[3] goal_poses.append(goal_pose1) goal_pose2 = PoseStamped() goal_pose2.header.frame_id = 'map' goal_pose2.header.stamp = navigator.get_clock().now().to_msg() goal_pose2.pose.position.x = 0.3 goal_pose2.pose.position.y = -0.2 yaw=0 quat=tf_transformations.quaternion_from_euler(0,0,yaw) goal_pose2.pose.orientation.x = quat[0] goal_pose2.pose.orientation.y = quat[1] goal_pose2.pose.orientation.z = quat[2] goal_pose2.pose.orientation.w = quat[3] goal_poses.append(goal_pose2) goal_pose3 = PoseStamped() goal_pose3.header.frame_id = 'map' goal_pose3.header.stamp = navigator.get_clock().now().to_msg() goal_pose3.pose.position.x = -0.8 goal_pose3.pose.position.y = -0.3 yaw=0 quat=tf_transformations.quaternion_from_euler(0,0,yaw) goal_pose3.pose.orientation.x = quat[0] goal_pose3.pose.orientation.y = quat[1] goal_pose3.pose.orientation.z = quat[2] goal_pose3.pose.orientation.w = quat[3] goal_poses.append(goal_pose3) nav_start = navigator.get_clock().now() navigator.followWaypoints(goal_poses)