You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+8-22
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Nav2 Complete Coverage
2
2
3
-
This package contains the Complete Coverage Task server utilizing the [Fields2Cover](https://github.com/Fields2Cover/Fields2Cover) complete coverage planning system which includes a great deal of options in headland, swath, route, and final path planning. You can find more information about Fields2Cover (F2C) in its [ReadTheDocs Documentation](https://fields2cover.github.io/index.html).
3
+
This package contains the Complete Coverage Task server utilizing the [Fields2Cover](https://github.com/Fields2Cover/Fields2Cover) complete coverage planning system which includes a great deal of options in headland, swath, route, and final path planning. You can find more information about Fields2Cover (F2C) in its [ReadTheDocs Documentation](https://fields2cover.github.io/index.html). It can accept both GPS and Cartesian coordinates.
4
4
5
5
This capability was created by [Open Navigation LLC](https://www.opennav.org/) in partnership with [Bonsai Robotics](https://www.bonsairobotics.ai/). Bonsai Robotics funded the development of this work for their own product and has graciously allowed Open Navigation to open-source it for the community to leverage in their own systems. Please thank Bonsai Robotics for their commendable donation to the ROS community!
6
6
@@ -34,7 +34,7 @@ Finally, it contains the polygon information. This can be represented either as
34
34
35
35
When setting the polygon (`goal.polygons`), this is a vector of polygons. If only considering a bounding field, only populate the first field shape. If there are internal voids, use subsequent polygons to indicate them. The coordinate type has `axis1` and `axis2` instead of X and Y as the server can process both GPS and cartesian coordinates. If specifying the polygon outside of GML files, you must specify the frame of reference of the polygon using the `goal.frame_id` field. This is not used for GML files as those should contain the frame within it.
36
36
37
-
The result returns a `result.nav_path` -- which is a `nav_msgs/Path` containing the coverage path requested **only if** all `generate_` fields are `true`. This can be followed by a local trajectory planner or controller directly. This is what is used in the `nav2_coverage_bt` examples for basic coverage navigation. It also returns `result.coverage_path` which contains an ordered set of swaths and paths to connect them (if applicable settings enabled) which can be used for more task-specific navigation. For example, navigating with a tool down or enabled on swaths and raised in turns to connect to other swaths.
37
+
The result returns a `result.nav_path` -- which is a `nav_msgs/Path` containing the coverage path requested **only if** all `generate_` fields are `true`. This can be followed by a local trajectory planner or controller directly. This is what is used in the `nav2_coverage_bt` examples for basic coverage navigation. It also returns `result.coverage_path` which contains an ordered set of swaths and paths to connect them (if applicable settings enabled) which can be used for more task-specific navigation. For example, navigating with a tool down or enabled on swaths and raised in turns to connect to other swaths. A utility is provided in `nav2_coverage/utils.hpp` for iterating through this custom `coverage_path` for convenience.
38
38
39
39
It also returns an error code, if any error occurred and the total planning time for metrics analysis.
40
40
@@ -44,6 +44,8 @@ The Coverage Navigator calls the `ComputeCoveragePath` action within its BT XML.
44
44
45
45
It returns the error code from the BT's error code IDs if any error occurs. Otherwise, it returns live regular feedback on the robot's current position, navigation time elapsed, number of recoveries enacted, distance remaining in the path (if `nav_path` valid), and a rough ETA.
46
46
47
+
Note that Navigator Plugins require **ROS 2 Iron or newer**. Otherwise, you may still use the Coverage Server in **Foxy or newer**, just don't compile the `nav2_coverage_navigator` package.
48
+
47
49
## Configuration
48
50
49
51
The complete set of options are exposed as both dynamic parameters and through the Action definition to be used as you prefer. Parameters are useful for consistent requests with the same configurations and actions are useful when changing parameters on a per-request basis. When any of the fields in `XYZMode.msg` messages are filled in, all must be filled in to be a complete request of a stage's mode parameters. `HeadlandMode`, `SwathMode`, `RouteMode`, and `PathMode` contain the complete parameter options for each of those stages in F2C coverage planning. The parameters given (or defaults) will be used for each stage, but any single stage can be overwritten via the Action message.
@@ -84,36 +86,20 @@ If you use this work, please make sure to cite both Nav2 and Fields2Cover:
84
86
85
87
## Notes of Wisdom
86
88
87
-
Walk through
88
-
- Lifecycle-Component-Action Task Server like you expect in Nav2
89
-
- Fully parameterized with dynamic parameters to easily test / tune
90
-
- Expose all relevent options in the Action for per-request modifications from param defaults
89
+
TODO
91
90
- Visualize major stages for debugging
92
91
- Modular stages retained; optional to which you'd like when
93
92
- Each stage has factories and enums for options; can be expanded past F2C as well
94
-
- Use GPS, Cartesian; files or direct coordinates
95
-
- Error codes for contextual failures to know when failures what to do about it
96
-
- Return: PathComponents, NavPath, error code, compute time for metrics
97
-
- BT nodes + XML using the nav path from coverage + Navigator type for semantic information of request + demo sim use
98
93
99
-
- Tester to demo
100
-
- Basic call
101
-
- Adjust to cartesian
102
-
- Different options
103
-
- RQT
104
94
105
95
Future
106
-
- Use setup with BT nodes / XML / Navigator. Simulator demo altogether. Demo video (in readme).
107
96
- README
108
-
109
-
110
-
- Python3 API from tester.py
111
-
- Nav2 docs to include / config guide. BT ports. Groot index
112
97
- Rename packages / repo?
113
98
- A couple of utilities for the BT nodes to iterate through the swath-turn combos (optional)
114
99
115
100
116
101
117
-
Navigators require Iron+
118
-
Options: (A) upgrade, (B) use Navigate To Pose and hardcode the field file path and ignore the pose action request, (C) call the server manually from your application
102
+
- Use setup with BT nodes / XML / Navigator. Simulator demo altogether. Demo video (in readme).
119
103
104
+
- Python3 API from tester.py
105
+
- Nav2 docs to include / config guide. BT ports. Groot index
0 commit comments