-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
nav2_tree_nodes.xml
347 lines (289 loc) · 16.8 KB
/
nav2_tree_nodes.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
<?xml version="1.0"?>
<!--
For instructions on using Groot and description of the following BehaviorTree nodes,
please refer to the groot_instructions.md and REAMDE.md respectively located in the
nav2_behavior_tree package.
-->
<root BTCPP_format="4">
<TreeNodesModel>
<!-- ############################### ACTION NODES ################################# -->
<Action ID="BackUp">
<input_port name="backup_dist">Distance to backup</input_port>
<input_port name="backup_speed">Speed at which to backup</input_port>
<input_port name="time_allowance">Allowed time for reversing</input_port>
<input_port name="server_name">Server name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<output_port name="error_code_id">"Back up error code"</output_port>
</Action>
<Action ID="DriveOnHeading">
<input_port name="dist_to_travel">Distance to travel</input_port>
<input_port name="speed">Speed at which to travel</input_port>
<input_port name="time_allowance">Allowed time for reversing</input_port>
<input_port name="server_name">Server name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<output_port name="error_code_id">"Drive on heading error code"</output_port>
</Action>
<Action ID="CancelControl">
<input_port name="server_name">Server name to cancel the controller server</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="CancelBackUp">
<input_port name="server_name">Server name to cancel the backup behavior</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="CancelDriveOnHeading">
<input_port name="server_name">Service name to cancel the drive on heading behavior</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="CancelSpin">
<input_port name="server_name">Server name to cancel the spin behavior</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="CancelAssistedTeleop">
<input_port name="server_name">Server name to cancel the assisted teleop behavior</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="CancelWait">
<input_port name="server_name">Server name to cancel the wait behavior</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="ClearEntireCostmap">
<input_port name="service_name">Service name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="ClearCostmapExceptRegion">
<input_port name="service_name">Service name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<input_port name="reset_distance">Distance from the robot above which obstacles are cleared</input_port>
</Action>
<Action ID="ClearCostmapAroundRobot">
<input_port name="service_name">Service name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<input_port name="reset_distance">Distance from the robot under which obstacles are cleared</input_port>
</Action>
<Action ID="ComputePathToPose">
<input_port name="goal">Destination to plan to</input_port>
<input_port name="start">Start pose of the path if overriding current robot pose</input_port>
<input_port name="planner_id">Mapped name to the planner plugin type to use</input_port>
<input_port name="server_name">Server name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<output_port name="path">Path created by ComputePathToPose node</output_port>
<output_port name="error_code_id">"Compute path to pose error code"</output_port>
</Action>
<Action ID="ComputePathThroughPoses">
<input_port name="goals">Destinations to plan through</input_port>
<input_port name="start">Start pose of the path if overriding current robot pose</input_port>
<input_port name="server_name">Server name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<input_port name="planner_id">Mapped name to the planner plugin type to use</input_port>
<output_port name="path">Path created by ComputePathToPose node</output_port>
<output_port name="error_code_id">"Compute path through poses error code"</output_port>
</Action>
<Action ID="RemovePassedGoals">
<input_port name="input_goals">Input goals to remove if passed</input_port>
<input_port name="radius">Radius tolerance on a goal to consider it passed</input_port>
<input_port name="global_frame">Global frame</input_port>
<input_port name="robot_base_frame">Robot base frame</input_port>
<output_port name="output_goals">Set of goals after removing any passed</output_port>
</Action>
<Action ID="RemoveInCollisionGoals">
<input_port name="service_name">Costmap service name responsible for getting the cost</input_port>
<input_port name="input_goals">A vector of goals to check if in collision</input_port>
<input_port name="use_footprint">Whether to use the footprint cost or the point cost.</input_port>
<input_port name="cost_threshold">The cost threshold above which a waypoint is considered in collision and should be removed.</input_port>
<output_port name="output_goals">A vector of goals containing only those that are not in collision.</output_port>
</Action>
<Action ID="SmoothPath">
<input_port name="smoother_id" default="SmoothPath"/>
<input_port name="unsmoothed_path">Path to be smoothed</input_port>
<input_port name="max_smoothing_duration">Maximum smoothing duration</input_port>
<input_port name="check_for_collisions">Bool if collision check should be performed</input_port>
<output_port name="smoothed_path">Smoothed path</output_port>
<output_port name="smoothing_duration">Smoothing duration</output_port>
<output_port name="was_completed">True if smoothing was not interrupted by time limit</output_port>
</Action>
<Action ID="FollowPath">
<input_port name="controller_id" default="FollowPath"/>
<input_port name="path">Path to follow</input_port>
<input_port name="goal_checker_id">Goal checker</input_port>
<input_port name="progress_checker_id">Progress checker</input_port>
<input_port name="service_name">Service name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<output_port name="error_code_id">Follow Path error code</output_port>
</Action>
<Action ID="NavigateToPose">
<input_port name="goal">Goal</input_port>
<input_port name="server_name">Server name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<input_port name="behavior_tree">Behavior tree to run</input_port>
<output_port name="error_code_id">Navigate to pose error code</output_port>
</Action>
<Action ID="NavigateThroughPoses">
<input_port name="goals">Goals</input_port>
<input_port name="server_name">Server name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<input_port name="behavior_tree">Behavior tree to run</input_port>
<output_port name="error_code_id">Navigate through poses error code</output_port>
</Action>
<Action ID="ReinitializeGlobalLocalization">
<input_port name="service_name">Service name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="TruncatePath">
<input_port name="distance">Distance before goal to truncate</input_port>
<input_port name="input_path">Path to truncate</input_port>
<output_port name="output_path">Truncated path to utilize</output_port>
</Action>
<Action ID="TruncatePathLocal">
<input_port name="distance_forward">Distance in forward direction</input_port>
<input_port name="distance_backward">Distance in backward direction</input_port>
<input_port name="robot_frame">Robot base frame id</input_port>
<input_port name="transform_tolerance">Transform lookup tolerance</input_port>
<input_port name="pose">Manually specified pose to be used if overriding current robot pose</input_port>
<input_port name="angular_distance_weight">Weight of angular distance relative to positional distance when finding which path pose is closest to robot. Not applicable on paths without orientations assigned</input_port>
<input_port name="max_robot_pose_search_dist">Maximum forward integrated distance along the path (starting from the last detected pose) to bound the search for the closest pose to the robot. When set to infinity (default), whole path is searched every time</input_port>
<output_port name="output_path">Truncated path to utilize</output_port>
</Action>
<Action ID="PlannerSelector">
<input_port name="topic_name">Name of the topic to receive planner selection commands</input_port>
<input_port name="default_planner">Default planner of the planner selector</input_port>
<output_port name="selected_planner">Name of the selected planner received from the topic subcription</output_port>
</Action>
<Action ID="ControllerSelector">
<input_port name="topic_name">Name of the topic to receive controller selection commands</input_port>
<input_port name="default_controller">Default controller of the controller selector</input_port>
<output_port name="selected_controller">Name of the selected controller received from the topic subcription</output_port>
</Action>
<Action ID="SmootherSelector">
<input_port name="topic_name">Name of the topic to receive smoother selection commands</input_port>
<input_port name="default_smoother">Default smoother of the smoother selector</input_port>
<output_port name="selected_smoother">Name of the selected smoother received from the topic subcription</output_port>
</Action>
<Action ID="GoalCheckerSelector">
<input_port name="topic_name">Name of the topic to receive goal checker selection commands</input_port>
<input_port name="default_goal_checker">Default goal checker of the controller selector</input_port>
<output_port name="selected_goal_checker">Name of the selected goal checker received from the topic subcription</output_port>
</Action>
<Action ID="ProgressCheckerSelector">
<input_port name="topic_name">Name of the topic to receive progress checker selection commands</input_port>
<input_port name="default_progress_checker">Default progress checker of the controller selector</input_port>
<output_port name="selected_progress_checker">Name of the selected progress checker received from the topic subcription</output_port>
</Action>
<Action ID="Spin">
<input_port name="spin_dist">Spin distance</input_port>
<input_port name="time_allowance">Allowed time for spinning</input_port>
<input_port name="server_name">Server name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<output_port name="error_code_id">Spin error code</output_port>
</Action>
<Action ID="Wait">
<input_port name="wait_duration">Wait time</input_port>
<input_port name="server_name">Server name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
</Action>
<Action ID="AssistedTeleop">
<input_port name="time_allowance">Allowed time for spinning</input_port>
<input_port name="is_recovery">If true recovery count will be incremented</input_port>
<input_port name="server_name">Service name</input_port>
<input_port name="server_timeout">Server timeout</input_port>
<output_port name="error_code_id">Assisted teleop error code</output_port>
</Action>
<!-- ############################### CONDITION NODES ############################## -->
<Condition ID="GoalReached">
<input_port name="goal">Destination</input_port>
<input_port name="global_frame">Reference frame</input_port>
<input_port name="robot_base_frame">Robot base frame</input_port>
</Condition>
<Condition ID="IsStuck"/>
<Condition ID="TransformAvailable">
<input_port name="child">Child frame for transform</input_port>
<input_port name="parent">Parent frame for transform</input_port>
</Condition>
<Condition ID="GoalUpdated">
<input_port name="goal">Vector of navigation goals</input_port>
<input_port name="goals">Navigation goal</input_port>
</Condition>
<Condition ID="GlobalUpdatedGoal">
<input_port name="goal">Vector of navigation goals</input_port>
<input_port name="goals">Navigation goal</input_port>
</Condition>
<Condition ID="IsBatteryLow">
<input_port name="min_battery">Min battery % or voltage before triggering</input_port>
<input_port name="battery_topic">Topic for battery info</input_port>
<input_port name="is_voltage">Bool if check based on voltage or total %</input_port>
</Condition>
<Condition ID="IsBatteryCharging">
<input_port name="battery_topic">Topic for battery info</input_port>
</Condition>
<Condition ID="DistanceTraveled">
<input_port name="distance">Distance to check if passed</input_port>
<input_port name="global_frame">reference frame to check in</input_port>
<input_port name="robot_base_frame">Robot frame to check relative to global_frame</input_port>
</Condition>
<Condition ID="TimeExpired">
<input_port name="seconds">Time to check if expired</input_port>
</Condition>
<Condition ID="PathExpiringTimer">
<input_port name="seconds">Time to check if expired</input_port>
<input_port name="path">Check if path has been updated to enable timer reset</input_port>
</Condition>
<Condition ID="InitialPoseReceived">
<input_port name="initial_pose_received">SUCCESS if initial_pose_received true</input_port>
</Condition>
<Condition ID="IsPathValid">
<input_port name="path"> Path to validate </input_port>
<input_port name="server_timeout"> Server timeout </input_port>
</Condition>
<Condition ID="WouldAControllerRecoveryHelp">
<input_port name="error_code">Error code</input_port>
</Condition>
<Condition ID="WouldAPlannerRecoveryHelp">
<input_port name="error_code">Error code</input_port>
</Condition>
<Condition ID="WouldASmootherRecoveryHelp">
<input_port name="error_code">Error code</input_port>
</Condition>
<Condition ID="AreErrorCodesPresent">
<input_port name="error_code">Error code</input_port>
<input_port name="error_codes_to_check">Error codes to check, user defined</input_port>
</Condition>
<!-- ############################### CONTROL NODES ################################ -->
<Control ID="PipelineSequence"/>
<Control ID="RecoveryNode">
<input_port name="number_of_retries">Number of retries</input_port>
</Control>
<Control ID="RoundRobin"/>
<!-- ############################### DECORATOR NODES ############################## -->
<Decorator ID="RateController">
<input_port name="hz">Rate</input_port>
</Decorator>
<Decorator ID="DistanceController">
<input_port name="distance">Distance</input_port>
<input_port name="global_frame">Reference frame</input_port>
<input_port name="robot_base_frame">Robot base frame</input_port>
</Decorator>
<Decorator ID="SingleTrigger">
</Decorator>
<Decorator ID="GoalUpdater">
<input_port name="input_goal">Original goal in</input_port>
<output_port name="output_goal">Output goal set by subscription</output_port>
</Decorator>
<Decorator ID="SpeedController">
<input_port name="min_rate">Minimum rate</input_port>
<input_port name="max_rate">Maximum rate</input_port>
<input_port name="min_speed">Minimum speed</input_port>
<input_port name="max_speed">Maximum speed</input_port>
<input_port name="goal">Vector of navigation goals</input_port>
<input_port name="goals">Navigation goal</input_port>
</Decorator>
<Decorator ID="PathLongerOnApproach">
<input_port name="path">Planned Path</input_port>
<input_port name="prox_len">Proximity length (m) for the path to be longer on approach</input_port>
<input_port name="length_factor">Length multiplication factor to check if the path is significantly longer </input_port>
</Decorator>
<Decorator ID="GoalUpdatedController">
<input_port name="goal">Vector of navigation goals</input_port>
<input_port name="goals">Navigation goal</input_port>
</Decorator>
</TreeNodesModel>
</root>