16 from geometry_msgs.msg
import PoseStamped
19 from rclpy.duration
import Duration
22 Basic navigation demo to go to poses.
29 navigator = BasicNavigator()
32 initial_pose = PoseStamped()
33 initial_pose.header.frame_id =
'map'
34 initial_pose.header.stamp = navigator.get_clock().now().to_msg()
35 initial_pose.pose.position.x = 3.45
36 initial_pose.pose.position.y = 2.15
37 initial_pose.pose.orientation.z = 1.0
38 initial_pose.pose.orientation.w = 0.0
39 navigator.setInitialPose(initial_pose)
47 navigator.waitUntilNav2Active()
59 goal_pose1 = PoseStamped()
60 goal_pose1.header.frame_id =
'map'
61 goal_pose1.header.stamp = navigator.get_clock().now().to_msg()
62 goal_pose1.pose.position.x = 1.5
63 goal_pose1.pose.position.y = 0.55
64 goal_pose1.pose.orientation.w = 0.707
65 goal_pose1.pose.orientation.z = 0.707
66 goal_poses.append(goal_pose1)
69 goal_pose2 = PoseStamped()
70 goal_pose2.header.frame_id =
'map'
71 goal_pose2.header.stamp = navigator.get_clock().now().to_msg()
72 goal_pose2.pose.position.x = 1.5
73 goal_pose2.pose.position.y = -3.75
74 goal_pose2.pose.orientation.w = 0.707
75 goal_pose2.pose.orientation.z = 0.707
76 goal_poses.append(goal_pose2)
77 goal_pose3 = PoseStamped()
78 goal_pose3.header.frame_id =
'map'
79 goal_pose3.header.stamp = navigator.get_clock().now().to_msg()
80 goal_pose3.pose.position.x = -3.6
81 goal_pose3.pose.position.y = -4.75
82 goal_pose3.pose.orientation.w = 0.707
83 goal_pose3.pose.orientation.z = 0.707
84 goal_poses.append(goal_pose3)
89 nav_start = navigator.get_clock().now()
90 navigator.followWaypoints(goal_poses)
93 while not navigator.isTaskComplete():
102 feedback = navigator.getFeedback()
103 if feedback
and i % 5 == 0:
104 print(
'Executing current waypoint: ' +
105 str(feedback.current_waypoint + 1) +
'/' + str(len(goal_poses)))
106 now = navigator.get_clock().now()
109 if now - nav_start > Duration(seconds=600.0):
110 navigator.cancelTask()
113 if now - nav_start > Duration(seconds=35.0):
114 goal_pose4 = PoseStamped()
115 goal_pose4.header.frame_id =
'map'
116 goal_pose4.header.stamp = now.to_msg()
117 goal_pose4.pose.position.x = -5.0
118 goal_pose4.pose.position.y = -4.75
119 goal_pose4.pose.orientation.w = 0.707
120 goal_pose4.pose.orientation.z = 0.707
121 goal_poses = [goal_pose4]
123 navigator.followWaypoints(goal_poses)
126 result = navigator.getResult()
127 if result == TaskResult.SUCCEEDED:
128 print(
'Goal succeeded!')
129 elif result == TaskResult.CANCELED:
130 print(
'Goal was canceled!')
131 elif result == TaskResult.FAILED:
132 print(
'Goal failed!')
134 print(
'Goal has an invalid return status!')
136 navigator.lifecycleShutdown()
141 if __name__ ==
'__main__':