From 1654264ebfb077fb89085712b69490c7742f3f31 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Tue, 3 Jul 2018 08:57:14 -0700 Subject: [PATCH 01/27] Add the requirements document --- LICENSE | 201 ++++++++++++ README.md | 8 +- design/README.md | 15 - doc/README.md | 10 + doc/images/ros2-logo.png | Bin 0 -> 7010 bytes .../requirements/_template_requirement.md | 0 .../images/Command-Pipeline-Support.png | Bin 0 -> 62509 bytes doc/requirements/images/Command-Pipeline.png | Bin 0 -> 44970 bytes doc/requirements/images/Command-Pipeline.vsdx | Bin 0 -> 208318 bytes doc/requirements/images/Mapping-Use-Cases.png | Bin 0 -> 68578 bytes .../images/Mission-Execution-Use-Cases.png | Bin 0 -> 35750 bytes .../images/Mission-Planning-Use-Cases.png | Bin 0 -> 37747 bytes doc/requirements/requirements.md | 306 ++++++++++++++++++ .../use_cases/_template_use_case.md | 0 .../use_cases/collision_avoidance_use_case.md | 0 .../use_cases/indoor_localization_use_case.md | 0 .../use_cases/indoor_navigation_use_case.md | 0 .../use_cases/keep_out_zones_use_case.md | 0 .../multi-story-building_use_case.md | 0 .../outdoor_localization_use_case.md | 0 .../use_cases/outdoor_navigation_use_case.md | 0 include/.gitignore | 0 src/.gitignore | 0 test/.gitignore | 0 24 files changed, 522 insertions(+), 18 deletions(-) create mode 100644 LICENSE delete mode 100644 design/README.md create mode 100644 doc/README.md create mode 100644 doc/images/ros2-logo.png rename {design => doc}/requirements/_template_requirement.md (100%) create mode 100644 doc/requirements/images/Command-Pipeline-Support.png create mode 100644 doc/requirements/images/Command-Pipeline.png create mode 100644 doc/requirements/images/Command-Pipeline.vsdx create mode 100644 doc/requirements/images/Mapping-Use-Cases.png create mode 100644 doc/requirements/images/Mission-Execution-Use-Cases.png create mode 100644 doc/requirements/images/Mission-Planning-Use-Cases.png create mode 100644 doc/requirements/requirements.md rename {design => doc}/use_cases/_template_use_case.md (100%) rename {design => doc}/use_cases/collision_avoidance_use_case.md (100%) rename {design => doc}/use_cases/indoor_localization_use_case.md (100%) rename {design => doc}/use_cases/indoor_navigation_use_case.md (100%) rename {design => doc}/use_cases/keep_out_zones_use_case.md (100%) rename {design => doc}/use_cases/multi-story-building_use_case.md (100%) rename {design => doc}/use_cases/outdoor_localization_use_case.md (100%) rename {design => doc}/use_cases/outdoor_navigation_use_case.md (100%) create mode 100644 include/.gitignore create mode 100644 src/.gitignore create mode 100644 test/.gitignore diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000000..261eeb9e9f8 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 40ac5df4224..c3c8adf2eab 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ +![ROS2](doc/images/ros2-logo.png) + # Navigation2 -ROS2 Navigation +ROS2 Navigation System # Overview -The ROS2 Navigation system is the central control system for a robot to autonomously move to a given location on a map. Given a current pose, a map and a destination, the system uses sensor input to localize the robot on the map, generates a plan to reach the destination, and outputs commands to drive a robot to that location. It will also autonomously avoid obstacles and re-plan if needed to bypass them. +The ROS 2 Navigation System is the control system that enables a robot to autonomously reach a goal state, such as a specific position and orientation relative to a specific map. Given a current pose, a map, and a goal, such as a destination pose, the navigation system generates a plan to reach the goal, and outputs commands to autonomously drive the robot, respecting any safety constraints and avoiding obstacles encountered along the way. # Contributing -Currently we are in the design phase, and are accepting input and requirements. To contribute, see the [design README.md](design/README.md) +We are currently in the requirements analysis phase, and are accepting input and requirements. To contribute, see the [documentation README](doc/README.md). diff --git a/design/README.md b/design/README.md deleted file mode 100644 index 1ad42a54359..00000000000 --- a/design/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# ROS2 Navigation design documentation -This is where the ROS2 Navigation design documentation is being collected and vetted - -# Use Cases -These are for defining how the user interacts with the system - -See the [use case template](use_cases/_template_use_case.md) - -# Requirements -These are for defining the technical requirements - -See the [requirement template](requirements/_template_requirement.md) - -# Contributing -To submit a request for a use case or requirement, copy and modify the template and submit a pull request for review diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 00000000000..108d6ac6d41 --- /dev/null +++ b/doc/README.md @@ -0,0 +1,10 @@ +![ROS2](../doc/images/ros2-logo.png) + +# ROS2 Navigation System Documentation +This is where the ROS2 Navigation System documentation is being collected and vetted. + +# Requirements +See the [requirements document](requirements/requirements.md) for the current list of requirements. + +# Contributing +To propose additions or changes to the requirements, modify the requirements document and submit a pull request for review. diff --git a/doc/images/ros2-logo.png b/doc/images/ros2-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3eba505cea57d713da6490c045db0bf9847fcf06 GIT binary patch literal 7010 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 literal 0 HcmV?d00001 diff --git a/design/requirements/_template_requirement.md b/doc/requirements/_template_requirement.md similarity index 100% rename from design/requirements/_template_requirement.md rename to doc/requirements/_template_requirement.md diff --git a/doc/requirements/images/Command-Pipeline-Support.png b/doc/requirements/images/Command-Pipeline-Support.png new file mode 100644 index 0000000000000000000000000000000000000000..3ab473895e86170c99124a91f370d90bb755fa13 GIT binary patch literal 62509 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 literal 0 HcmV?d00001 diff --git a/doc/requirements/images/Command-Pipeline.png b/doc/requirements/images/Command-Pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..3b296e64b9ff484d5b32efe7cc6edb496fafbd70 GIT binary patch literal 44970 zcmeFYbx@mM6gF6)#S4_;R-hCL6e;e-tw4)g2wDmhf_q2>cZ#)WaSu}59f~^?3ogMm zkPx!r_wDS=&Ntu8xBu?$A589>4EMc9?m6e4=ec3;HI<18XbJA!yGN|5qM&{6-UH@) z_wJ+d9%H{5dRVH7{kZR@tt@vBIzqpTeZaAm)sVe+uQG=4#^Mq78Q)pO$nD;}C*5~{ z_Y=9E(A~RNE~Ba-tLtsHpN{(lp!n}LbD?(jv!_T4B5+K7r$vSA1F6D(c*`EUes}by zjxH(12i*#DS?=>?xlhcovCHuq|CXKFFxSINRVD&COqAtEjsqiq;|3(Dg{{I2r|CSQuIJS38L?Z9Y^Q5{kFVt-^ zPC54n;W=D0V0GL3yH6pM|M$)=T-Q%IB*_UrHgj1I>mxS?P)=8mPZyVS8u;kdbjB6R ze8k#;$n0Gp^}}!OoOwxQsppxtCN<`8cNQT6(GecncM2sdr%Ud@3D4O zJtFlF`44RoROr-xK!qq!3W5r z&;u(IW8I@8Fe;j#KtA&vy!Okc(MHcuO7qLJmdJbeOIZz72P`KT=my;p@mvXNFOku- zSoy!>lQSz>ILl?%_%tyZ)6Ld;>ng@!4g-8%g@zc0i3z!)QbJRNLFcI9d|T>Z{(3$# z%V&{E2O7TK>Tzmj>u-}o{e0^#m8vWA3{Jc|3F+=+JvPV6ipOx^=xYsD5>qt$;Cy?_ph|#b92%N#)*z6Z4s~X;o(dEqIe(=JYvl}~6 z#oa_i4b^LQ1#g?3`;UC5of{=&;w*&r6hnzG-~3;*%!CDDO3eGc`pzFAv}RJ}I%n9d zu!~i}E_UB#3@__boV|KlBwj+d!@bH5=cRB%%_7tOQKq$^VTX64*j+XE2fLU{4l~yJ z_ol|s-3tqw42;r}0}K6ty}O6PxMA1=T!#toKiS%?Si0wO`1){X!mCaRG|GreM1O#X zgCka&X)efm!UvnR?4{AI5AQtdORqv`WgouSHR+QOp;C*$XvW0%TJReD5M6y*qZEBd z#Ue|^9v+PePs}g2J89ozrJXwq>?GK(DlTS#qLq{FEo~+U!wonULX$jCSO<2R|1s+c zN4k)>)@u20U_ArtAWyL$e)NKJ{jY-F3zw+I7wnYM^w8>LoOgDTIQ!s}au!AEQvTif zMq?xtol3AiYqpm=EROz!-j$$cV}HBWSB z9wpJ#h=3+fJ?Lthg^F!W!mFir6G9`l-9w5kjWnR|;9r7sX@jRfofm!xr${b-@k7VR zr8_JsG@GXp8|?VK|MM}^Xd}%owOj!nYXF`Pp{mw`@P(%!SDJ=5yMBM5B`0V32i0k3 z#qegTiGC zW4Y4@Mz295_F&t7ua@&!JoIMgplV1ulVPn-xO$FQ6f_}!MvXiqNXX(`MUS{-R2l2k ze2?kxW>DgZpSUSVf_He}OD*aSy<-dyMm6etk{f>bNgy3R2tOvnXONQ4@48HVtvKW` zjWxn=3#3|Wz`$3Vnke9yC&aY6bF984mhdw#hJ1tqfMRU%z5iOBFvE zPP}k#O4#L)PP(&T!e{!}m4|ztaa^E8_!6H~hZ#HX!~5jSy*!VAv56Y#_F>AX;PFca z4pPΜE(vh-y2N0xG43PIXr7n!D}b+MTilZU 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⪻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 OkG{5%Rt3rd_kREz3As=J literal 0 HcmV?d00001 diff --git a/doc/requirements/images/Command-Pipeline.vsdx b/doc/requirements/images/Command-Pipeline.vsdx new file mode 100644 index 0000000000000000000000000000000000000000..0fc8fda79ff7b2ebf824aae904fa5f89f72f75d2 GIT binary patch literal 208318 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

HWUqEzRF) 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 OCoiKS{Z-N==zjs{l3xt~ literal 0 HcmV?d00001 diff --git a/doc/requirements/images/Mission-Execution-Use-Cases.png b/doc/requirements/images/Mission-Execution-Use-Cases.png new file mode 100644 index 0000000000000000000000000000000000000000..137e16e9065b784722db9e069c0ea15e761ad3d4 GIT binary patch literal 35750 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 z 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 IbxsLQ07$^D=l}o! literal 0 HcmV?d00001 diff --git a/doc/requirements/images/Mission-Planning-Use-Cases.png b/doc/requirements/images/Mission-Planning-Use-Cases.png new file mode 100644 index 0000000000000000000000000000000000000000..59e25251ddf28f3715cab1ee7958560c0880e00d GIT binary patch literal 37747 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 literal 0 HcmV?d00001 diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md new file mode 100644 index 00000000000..bb833e19a88 --- /dev/null +++ b/doc/requirements/requirements.md @@ -0,0 +1,306 @@ +![ROS2](../images/ros2-logo.png) + +# ROS 2 Navigation System Requirements + +The ROS 2 Navigation System ("Navigation System") is the control system that enables a robot to autonomously reach a goal state, such as a specific position and orientation relative to a specific map. Given a current pose, a map, and a goal, such as a destination pose, the navigation system generates a plan to reach the goal, and outputs commands to autonomously drive the robot, respecting any safety constraints and avoiding obstacles encountered along the way. + +This document lists the requirements for the ROS 2 Navigation System. + +# 1. Introduction + +This section describes the format of each requirement, the keywords used in the requirements, and the basic concepts needed to define and understand the requirements. + +## 1.1 Requirement Fields + +Each requirement is presented in tabular form with the following fields: + +* **Id** - A unique identifier for the requirement +* **Handle** - A short, scoped, description summarizing the essence of the requirement +* **Priority** - An associated priority level: **1** (high), **2** (medium), and **3** (low) +* **Requirement** - The requirement itself, stated in clear, concise requirements language +* **Notes** - Elaboration and related information for the requirement + +## 1.2 Requirement Language Keywords + +In the requirements specified below, certain keywords have a specific meaning as they appear in the text. These keywords are defined as follows and must be capitalized whenever used in a manner intended to specify a behavior or requirement. + +1. **MUST**: This word, or the terms "REQUIRED" or "SHALL", mean that the definition is an absolute requirement of the specification. + +2. **MUST NOT**: This phrase, or the phrase "SHALL NOT", mean that the definition is an absolute prohibition of the specification. + +3. **SHOULD**: This word, or the adjective "RECOMMENDED", mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course. + +4. **SHOULD NOT**: This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label. + +5. **MAY**: This word, or the adjective "OPTIONAL", mean that an item is truly optional. One vendor may choose to include the item because a particular marketplace requires it or because the vendor feels that it enhances the product while another vendor may omit the same item. An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein an implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides.) + +These definitions are derived from the IETF Best Current Practices Document #14. + +## 1.3 Use Cases + +The Navigation System is part of a larger system that involves a person or automated system ("the user") directing the operation of one or more robots. To provide context for the Navigation System, this section lists the expected interactions between the user and the robot system. + +## 1.3.1 Mapping Use Cases + +The user will typically create a map of the area in which the robot is to navigate. This map identifies significant features of the environment, such as safety zones, known obstacles, walls, virtual lanes, etc. While the creation of the map itself is outside the scope of the Navigation System, the system is dependent on the map format(s). The map will need to be rich enough to support the Navigation System requirements listed in this document. + +The following use case diagram shows an example of the kinds of operations provided by a mapping interface. + +![Mapping Use Cases](./images/Mapping-Use-Cases.png) + +## 1.3.2 Mission Planning Use Cases + +Another area in which the user interacts with the system is in the creation of a mission plan for the robot. The user composes a sequence of primitive functions, such as **Navigate to Position**, **Navigate to Area**, **Wait**, etc., into an overall plan. While mission planning is also outside the scope of the Navigation Stack, the mission plan format should be sufficient to meet the Navigation System requirements listed in this document. + +![Mission Planning Use Cases](./images/Mission-Planning-Use-Cases.png) + +## 1.3.2 Mission Execution Use Cases + +The user will be able to initiate the execution of specific mission plans ("missions") and should also be able to view the status of the mission in progress, as well as cancel any mission that is in progress. In addition, the user may be required to provide the robot with its initial location if the robot is not able to determine it automatically. + +![Mission Execution Use Cases](./images/Mission-Execution-Use-Cases.png) + +## 1.4 Architectural Components + +The design of the ROS 2 Navigation System will attempt to generalize the navigation system from ROS 1 and address some of its limitations. While this document does not attempt to define the ROS 2 Navigation System architecture, there are some expected modules that are convenient to call out for the purposes of defining more detailed requirements for the system. It is useful to split these modules into two general categories: those that are involved in the *command chain*, where each level refines its command input into successively more specific operations for the lext level down, and those modules that are *support modules* used by modules in the command chain. + +## 1.4.1 Command Chain + +The command chain is the sequence of modules that comprise the chain of command from the user, at the top, to the robot, at the bottom. + +* **User** - The user interacts with a Mission Planning subsystem to specify a plan for the robot. +* **Mission Planning** - The Mission Planning module provides an interface to the user to allow the user to create mission plans. The resulting plans are available for assignment to robots and subsequent execution. The Mission Planning subsystem is outside the scope of the Navigation System. However, the data format, or messages, required to interact with the subsystem area within scope and must be specified as the Navigation System needs to receive this information to be able to execute the mission plans. +* **Mission Execution** - The Mission Execution module receives the mission plan as input and is responsible to execute it. It can select the appropriate global and local planners to use to perform each primitive maneuver. It also reports back progress on the execution of the mission plan. +* **Global Planning** - The Global Planning module, of which there could be several specialied implementations, use information from the map(s) to determine a route for the robot to achieve its goal. +* **Local Planning** - The Local Planning module, of which there could also be several specialized implementations, uses the defined route from the Global Planner and information from robot sensors to handle any required deviations from the route to achieve its goal. +* **Robot Interface** - The Robot Interface is an abstraction of the robot platform, providing the means to control the robot and learn about its capabilities. There should be a standard set of messages to control the robot and, perhaps, a standard way to determine a robot's capabilities and attributes. This may require a layer on top of the vendor interface. + +![Command Pipeline](./images/Command-Pipeline.png) + +## 1.4.2 Support Modules + +In addition to the main command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules are all outside the scope of the Navigation System. However, the inteface to these components is in scope and the associated requirements are defined. + +* **Mapping** - The Navigation System uses a map to plan the robot's route. The map contains information about known (static) obstacles in the environment. The map is typically created in advance and is available to the Navigation System. The map can also be dynamically updated, to reflect the current state of the environment. +* **Sensing** - There is a sensing subsystem that can utilize various sensors (and sensor fusion), the goal of which is to develop an understanding of the dynamic environment around the robot. This information is available to the Navigation System, especially the Local Planning module, in directing the robot's motion. +* **Localization** - The Navigation System also needs a Localization module to provide the current location of the robot. + +In a complete robot system these modules are utilized by the core navigation modules (the command chain). This document does not specify the architecture for the complete system, but simply names the various comonents and subsystems for the purpose of listing their associated requirements. The information provided by these modules should be available to all of the modules in the command pipeline. + +![Command Pipeline with Support](./images/Command-Pipeline-Support.png) + +To facilitate error recovery, each module in the chain, if it is unable to carry out its task, its able to propagate error information to its predecessor in the command chain. + +## 1.5 Design Goals + +The Navigation System designers should strive to meet the following high-level design goals: + +* **Modularity** - The Navigation Stack should allow for other implementers to easily replace architectural level components with alternative implementations, in particular, the global and local planners. +* **Portability** - The Navigation Stack should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. +* **Performance** - *TODO: What are the performance goals?* +* **Scalability** - *TODO: How low should the implementation scale?* *Specify a minimum platform?* +* *Other important design goals?* + +In particular, there are several specific goals for the ROS 2 Navigation System with respect to improving the existing ROS navigation stack: + +* The global and local planners should be easy to replace and chain together in a dynamic way. For example, a user may want to have a global planner for classic point-A-to-point-B travel, but upon reaching point B, have a special planner then control a series of maneuvers such as docking to a charging station or a conveyor belt. +* The user should be able to plan complex missions which include a series of movements, and the Navigation System should be able to accept those mission plans and execute them. +* The user should be able to specify different types of Robot drive types, such as Ackerman (automobile) steering, and Robot shapes (the current navigation stack is very limited in these areas). +* The Navigation System should be able to handle more map types and orientations, including outdoor and 2D+ terrain. + +# 2.0 Requirements + +This section lists the requirements for the Navigation System. + +## 2.1 Implementation Constraints + +There are various constraints on the development of the ROS 2 Navigation stack. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +IC001 | Developer's Guide | 1 | The Navigation System SHALL be developed in accordance with the ROS 2 Devloper's Guide | [ROS 2 Developer's Guide](https://github.com/ros2/ros2/wiki/Developer-Guide) +IC002 | Implementation Language.C++.Version | 1 | Developers SHALL assume the availability of C++14 language features | Per the ROS 2 Developer's Guide +IC003 | Implementation Language.C++.API Preference | 1 | Developers SHALL prefer standard C++, then Boost, then custom code, in that order. | Boost may be used if equivalent functionality is not already available in the C++ standard library +IC004 | Implementation Language.C++.Supported Compilers.g++ | 1 | The Navigation System code SHALL compile with gcc 5.4 or newer +IC004 | Implementation Language.C++.Supported Compilers.Clang | 1 | The Navigation System code SHALL compile with Clang, version *x* +IC004 | Implementation Language.C++.Supported Compilers.Intel C++ Compiler | 1 | The Navigation System code SHOULD compile with the Intel C++ Compiler, version *x* | Could be useful for optimization purposes +IC005 | Implementation Language.Python.Version | 1 | Any Python code developed for the Navigation System MUST use Python 3 +IC006 | Implementation Language.GUI | 1 | Any GUIs developed as part of the Navigation System MUST use the Qt library, via C++ or Python (PyQt) | *Which version?* +IC006 | Implementation Language.GUI.QML | 1 | Any GUIs developed as part of the Navigation System MAY use QML + +## 2.2 Development Tools + +This section specifies the development tools and associated targets that will be used for the project. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +DEV001 | Tools.ROS2.Version | 1 | The Navigation System WILL be developed against the latest stable version of the ROS 2 stack | *What is the current latest version?* +DEV002 | Tools.Unit Test.Library | 1 | *TODO: GTest and GMock?* +DEV003 | Tools.Unit Test.Module Requirements | 1 | *TODO: What are the module level requirements?* +DEV004 | Tools.Static Analysis | 1 | *TODO: What is the static analysis tool to use?* +DEV005 | Tools.Static Analysis.Quality Targets | 1 | *TODO: What are the static analysis targets?* +DEV006 | Tools.Dynamic Analysis | 1 | *TODO: What dynamic analysis tool(s) to use?* +DEV007 | Tools.Dynamic Analysis.Code Coverage Targets | 1 | *TODO: What are the code coverage targets?* +DEV008 | Tools.Dynamic Analysis.Memory Checking | 1 | *TODO: What is/are the memory checking tool(s) to use?* + +## 2.3 Target Platforms + +The Navigation System will run on the latest versions of the operating systems supported by the core ROS 2 code. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +PLT001 | Target Platforms.Operating Systems.Ubuntu | 1 | The Navigation System MUST support Ubuntu Desktop 16.04 and Ubuntu Desktop 18.04 +PLT002 | Target Platforms.Operating Systems.MacOS | 1 | The Navigation System MUST support MacOS 10.13 (High Sierra) and MacOS 10.14 (Mohave) +PLT003 | Target Platforms.Operating Systems.Windows | 1 | The Navigation System MUST support Windows 10 Professional +PLT004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation System SHOULD support the latest version of Intel's Clear Linux distribution | What is the latest version number? +PLT005 | Target Platforms.CPU.Word Size | 1 | The Navigation System SHALL support 64-bit processors | Don't assume a specific pointer size +PLT006 | Target Platforms.Minimum Platform | 1 | *Should we specify a minimum target platform?* *Or, should this be expressed as minimum platform requirements?* + +## 2.4 Command Chain Modules + +This section lists the requirements for the core command chain modules in the Navigation System. + +### 2.4.1 Mission Planning + +A complete system, which incorporates the Navigation System, would also have a Mission Planning subsystem that generates a Mission Plan from input provided by the User. The Mission Plan is a sequence of primitive operations and any associated policy about how the plan should be carried out. The design and implementation of the subsystem that creates the Mission Plan is outside the scope of the Navigation System, but its output, the Mission Plan, has a direct relationship to the capabilities that the Navigation System must provide. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +MP001 | Mission Planning.Primitives | 1 | The Mission Plan MUST be able to express the plan as a sequence of the following Primitives (MP002 - MP010) +MP002 | Mission Planning.Primitives.Navigate to Position | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a specified destination pose. +MP003 | Mission Planning.Primitives.Navigate to Area | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a specified area. | *TODO: How to define "area"?* +MP004 | Mission Planning.Primitives.Enqueue | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a position behind another specified robot. +MP005 | Mission Planning.Primitives.Follow | 1 | The Navigation System MUST be able to direct the Robot to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies some more information such as "follow until destination reached" +MP006 | Mission Planning.Primitives.Orbit | 1 | *TODO: How is this defined?* | Similar to Follow in that it doesn't complete (unless it specifies time) +MP007 | Mission Planning.Primitives.Wait | 1 | The Navigation System MUST be able to idle at the current location until directed otherwise +MP008 | Mission Planning.Primitives.Park | 1 | *TODO: What does parking mean? Some low-power state?* +MP009 | Mission Planning.Primitives.Enter Elevator | 1 | The Navigation System MUST be able to navigate the Robot from its current location onto an elevator. | *TODO: Would the elevator door be automated?* +MP010 | Mission Planning.Primitives.Exit Elevator | 1 | The Navigation System MUST be able to navigate the Robot from its position in an elevator to a specified location outside the elevator. +MP011 | Mission Planning.Policy | 1 | The Mission Plan MUST be able to express the following policy associated with how to carry out the mission (MP012 - MP015)| *What are the important qualities for how the primitives should be carried out? Should there be per-primitive policy?* +MP012 | Mission Planning.Policy.Timeliness | 1 | The Navigation System MUST respect any timeliness constraints in the Mission Plan | *TODO: Is it important to specify by when the mission should be completed, for example?* +MP013 | Mission Planning.Policy.Safety Constraints | 1 | The Navigation System MUST respect any safety constraints in the Mission Plan | *TODO: Is there a set of global safety-related policy for the robot to follow?* +MP014 | Mission Planning.Policy.Safety Constraints.Maximum Speed | 1 | The Navigation System MUST respect the maximum speed specified in the Mission Plan +MP015 | Mission Planning.Policy.Safety Constraints.Minimum Safety Buffer | 1 | The Navigation System MUST maintain a minimum safe distance between the robot and other objects at all times, as specified int he Mission Plan | Configurable safety zone around the robot. *TODO: Variable with speed? Differ in each direction?* + +*TODO: How to handle reverse direction? Does each primitive include this information?* + +### 2.4.2 Mission Execution + +The Mission Execution module has the responsibility to execute a provided mission. It provides each successive primitive operation to the global planner, monitoring and reporting progress towards the goal. This is similar to the current navigation stack's **move_base** module. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +ME001 | Mission Execution.Inputs.Mission Plan | 1 | The Mission Execution module MUST accept the Mission Plan to execute. +ME002 | Mission Execution.Inputs.Commands.Execute Mission | 1 | The Mission Execution module MUST execute the provided Mission Plan, respecting any specified constraints. +ME003 | Mission Execution.Inputs.Commands.Cancel Mission | 1 | The Mission Execution module MUST be able to interrupt the Robot's navigation and cancel the current mission. +ME004 | Mission Execution.Select Planners | 1 | The Mission Execution module SHOULD select the best planners to use for each mission primitive | Can dynamically utilize planners +ME005 | Mission Execution.Outputs | 1 | At each stage of the Mission Plan, the Mission Execution module SHALL output the next primitive to execute and WILL monitor for completion of each primitive before sending the next. | Tracks completion of the mission and sequences the operations. *TODO: What about primitives that don't complete? Would they be defined with a time element so that they can complete?* +ME006 | Mission Execution.Feedback.Outputs.Notify Progress | 1 | The Mission Execution module MUST provide progress notifications on the execution of the mission, including mission completion. | The current stack, once it reaches a goal, publishes a message. This would be a generalization of that feature. We can determine the elapsed time using the message timestamp. +ME007 | Mission Execution.Logging | 1 | The Mission Execution module SHOULD log activity for later analysis. | In case of forensic analysis of a safety event, for example. +ME008 | Mission Execution.Feedback.Inputs.Error Notification.Automatic Error Recovery | 1 | Upon receipt of a downstream failure (from a Global Planner), the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Mission Execution module could have the robot perform a recovery maneuver of some kind, before continuing with execution of the mission plan. +ME009 | Mission Execution.Feedback.Outputs.Error Information | 1 | If the Mission Execution module is unable to execute the mission, it MUST report the failure | This would be received by the higher-level software. Perhaps a remote operating center where the remote operator "rescues" the robot. +ME010 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST direct the robot to a safe state. | *TODO: Define "safe state"* The failure could be for a variety of reasons - sensor failures, algorithmic failure, a collision, etc. + +### 2.4.3 Global Planning + +The Global Planning module compute the intended route for the robot, typically using a static map, the robot's initial pose, and the desired primitive to execute. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +GP001 | Global Planning | 1 | The Navigation System SHOULD have a Global Planning module which generates the route for the robot to follow for the specified primitive, respecting any policy guidance contained in the Mission Plan | Could use pluggable cost functions +GP002 | Global Planning.Inputs.Static Map | 1 | The Global Planner SHALL have a static map available that describes the environment | Assumes the map has already been created and available as an input +GP003 | Global Planning.Inputs.Current Pose | 1 | The Global Planner SHALL have the robot's current pose | The pose could be be provided manually or automatically determined (outside of this module) +GP004 | Global Planning.Inputs.Primitive to Execute | 1 | The Global Planner SHALL have the primitive operation to execute +GP005 | Global Planning.Inputs.Policy | 1 | The Global Planner SHALL have policy guidance associated with the primitive operation to execute | This could be global policy and/or per-primitive policy +GP006 | Global Planning.Multiple Global Planners | 1 | As part of the Navigation System, there SHOULD be multiple global planners available and chosen depending on the primite to be executed | Dynamic selection of global planners +GP007 | Global Planning.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing global planners +GP008 | Global Planning.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing global planners +GP009 | Global Planning.Conventions | 1 | *TODO: Should there be a specification of conventions for the robot to follow? Navigate on the right side of a path, for example.* +GP010 | Global Planning.Feedback.Inputs | 1 | The Global Planner MUST receive error input from the Local Planner so that it can attempt to recover | For example, if a local planner can't execute the route, because it is blocked, the global planner has an opportunity to define an alternative route +GP011 | Global Planning.Feedback.Outputs | 1 | If the Global Planner is unable to define a route to its goal state, it SHALL report the error on its error output channel +GP012 | Global Planning.Outputs.Route | 1 | The Global Planning module should output a route that the robot is to follow to execute the primitive | *TODO: Should there be attributes associated, such as time to be at particular waypoints?* + +### 2.4.4 Local Planning + +The Local Planning module receives the route from the Global Planner and is responsible to carry it out. To do so, it evaluates the dynamic environment using input from the sensory subsystem and possibly makes local adjustments to the route, such as when avoiding collisions with objects crossing its path. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +LP001 | Local Planning | 1 | The Navigation System SHOULD have a Local Planning module which carries out the route provided by the Global Planner +LP002 | Local Planning.Inputs.Route | 1 | The Local Planning module MUST receive the Route from the Global Planning module. +LP003 | Local Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Local Planning module MUST support negative velocity values +LP004 | Local Planning.Inputs.Policy | 1 | The Local Planning module MUST receive any policy information which could inform its planning +LP005 | Local Planning.Inputs.Sensory Input | 1 | The Local Planning module MUST receive object-level data from the Sensory Subsystem +LP006 | Local Planning.Collision Avoidance.Avoid Stationary Objects | 1 | The Robot MUST avoid colliding into stationary objects in its environment | Fixed parts of the environment, such as walls or shelving. +LP007 | Local Planning.Collision Avoidance.Avoid Stationary Objects.*Qualities* | 1 | *TODO: How close can it come? Does it depend on the robot's speed?* +LP008 | Local Planning.Collision Avoidance.Avoid Moving Objects | 1 | The Robot MUST avoid colliding into moving objects that intercept its path | Such as people and other robots +LP009 | Local Planning.Collision Avoidance.Avoid Moving Objects.*Qualities* | 1 | *TODO: How close can it come? Does it depend on the robot speed?* +LP010 | Local Planning.Collision Avoidance.Parameters | 1 | *TODO: Any specific parameters foer the collision avoidance? Perhaps different global values for object-specific properties in the environment.* +LP011 | Local Planning.Collision Detection | 1 | *TODO: What module first detects if there has been a collision?* Some way of detecting if a collision has occurred within some low latency (50ms?). This could be additional HW such as bumpers (like Turtlebot has), or other sensor input such as wheel feedback +LP012 | Local Planning.Collision Reporting | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* +LP013 | Local Planning.Collision Recovery | 1 | The Local Planning module MUST provide a way to recover from collisions | Like back up slowly, notify user, etc., which could be configurable based on the robot/environment/application +LP014 | Local Planning.Feedback.Inputs | 1 | TODO | Could be failures from the sensors, for example +LP015 | Local Planning.Feedback.Outputs | 1 | TODO | Could provide failure to execute the route. Perhaps the passageway is blocked, for example +LP016 | Local Planning.Outputs | 1 | The Local Planning module interfaces to the robot to command its actuators. | TBD if this is through an abstraction of the robot or directly to a vendor's interface. + +### 2.4.5 Robot Interface + +*TODO: What to say about the robot interface?* *Should there be a robot abstraction?* *Perhaps this would be a convenient place to put some safety-related functionality* + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +ROB001 | Robot Interface.Attributes | 1 | Holonomicity, max/min speeds and accelerations, etc. +ROB002 | Robot Interface.Dynamic Switching | 1 | Can the robot dynamically change attributes? +ROB003 | Robot Interface.Safety.Limited Parameters | 1 | A list of parameters used to limit certain circumstances and provide the hooks for users to set those values if they want +ROB004 | Robot Interface.Safety.Speed Limiting | 1 | TODO +ROB005 | Robot Interface.Safety.Force Limiting | 1 | TODO +ROB006 | Robot Interface.EMO Button | 1 | TODO +ROB007 | Robot Interface.Feedback.Outputs | 1 | TODO + +## 2.5 Support Modules + +There are a few support modules and subsystems that are not part of the Navigation System proper, but are necessary components in a complete system. The Navigation System depends on the data interfaces to these components. This section describes the requirements and assumptions of these interface. + +### 2.5.1 Mapping + +The map data format should be capable of describing common indoor and outdoor environments. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System | So that the Mapping System has a basic understanding of its static environment. Used in global planning +MAP002 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information +MAP003 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information | *TODO: How is this defined?* +MAP004 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information | *TODO: Use voxel-based?* +MAP005 | Mapping.Multiple Maps Per Environment | 1 | The Mapping system SHOULD provide multiple maps of the same environment. | *TODO: Different scales and elevations?* +MAP006 | Mapping.Dynamic Updates | 1 | The Mapping System SHOULD provide real-time updates of map information | For example, to create a keep-out zone in the event of a spill hazard. +MAP007 | Mapping.Data Model.Traversable Surface | 1 | Planar (2D) surface (street, floor). +MAP008 | Mapping.Data Model.Traversable Surface.Planarity | 1 | The map data format SHALL be capable of describing the planarity of traversable surfaces | Uneven ground +MAP009 | Mapping.Data Model.Safety Zone | 1 | Specify limitations to be respected while the robot is in this zone. Speed, (increased) distance to people. +MAP010 | Mapping.Data Model.Safety Zone.Keep Out Zone | 1 | Robot MUST NOT navigate through a keep-out zone +MAP011 | Mapping.Data Model.Safety Zone.Intersection | 1 | May want to slow down (or even stop), for example, when approaching an intersection | Robots can slow down when coming to an intersection in order to ensure that they can see anyone coming and other people/robots can see them +MAP012 | Mapping.Data Model.Lanes | 1 | Able to specify virtual lanes. Prefer the specified lanes (such as in a warehouse) +MAP013 | Mapping.Data Model.Building Levels | 1 | Able to specify single and multi-level buildings +MAP014 | Mapping.Data Model.Building Levels.Level Connecting Features | 1 | Able to specify level connecting features, such as elevators, stairways, ramps. +MAP015 | Mapping.Data Model.Unknown Space | 1 | To be dynamically mapped? In global maps, it can be areas beyond the edge of the map, or areas within the center of the map for which we didn't have any observations during map building. In the current system, this is the "dark grey" portion of the map (free space is light grey, obstacles are black) +MAP016 | Mapping.Data Model.Extensibility | 1 | *TODO: Map attributes. Layers concept?* + +### 2.5.2 Sensing + +The Navigation System requires dyanamic information about objects in its environment. This information is provided by a Sensory Subsystem that is outside the scope of the Navigation System. This information would typically be provided by a set of sensors on the robot and a sensor fusion capability. This section lists the requirements on the data that the Sensory Subsystem provides. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +SEN001 | Sensing | 1 | The Sensory Subsystem SHALL provide information about the dynamic environment of the robot | Info sufficient to carry out the Navigation System requirements +SEN002 | Sensing.Latency | 1 | TODO +SEN003 | Sensing.Environment Model | 1 | *TODO: What, specifically, should be in the environment model?* +SEN004 | Sensing.Environment Model.Object Prediction | 1 | The Sensing Subsystem SHOULD provide an object prediction capability that projects the position of the objects into the future. | One of the biggest shortcomings of the current system is the inability to model/predict where obstacles will be in the future. This leads to collisions with other moving objects +SEN005 | Sensing.Environment Model.Object Prediction.Time Horizon | 1 | *TODO: How far into the future should the object prediction work?* + +### 2.5.5 Localization + +The Navigation System requires the Robot's current pose, provided by an external Localization module. This section lists the requirements for the information from the Localization module. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +LOC001 | Localization.Robot Pose | 1 | The Localization module MUST provide the robot's current pose to the Navigation System | This could be manual or as a result of automatic localization; the Navigation System wouldn't know either way +LOC002 | Localization.Robot Pose.Accuracy | 1 | *TODO: What are the requirements on the accuracy of this pose?* diff --git a/design/use_cases/_template_use_case.md b/doc/use_cases/_template_use_case.md similarity index 100% rename from design/use_cases/_template_use_case.md rename to doc/use_cases/_template_use_case.md diff --git a/design/use_cases/collision_avoidance_use_case.md b/doc/use_cases/collision_avoidance_use_case.md similarity index 100% rename from design/use_cases/collision_avoidance_use_case.md rename to doc/use_cases/collision_avoidance_use_case.md diff --git a/design/use_cases/indoor_localization_use_case.md b/doc/use_cases/indoor_localization_use_case.md similarity index 100% rename from design/use_cases/indoor_localization_use_case.md rename to doc/use_cases/indoor_localization_use_case.md diff --git a/design/use_cases/indoor_navigation_use_case.md b/doc/use_cases/indoor_navigation_use_case.md similarity index 100% rename from design/use_cases/indoor_navigation_use_case.md rename to doc/use_cases/indoor_navigation_use_case.md diff --git a/design/use_cases/keep_out_zones_use_case.md b/doc/use_cases/keep_out_zones_use_case.md similarity index 100% rename from design/use_cases/keep_out_zones_use_case.md rename to doc/use_cases/keep_out_zones_use_case.md diff --git a/design/use_cases/multi-story-building_use_case.md b/doc/use_cases/multi-story-building_use_case.md similarity index 100% rename from design/use_cases/multi-story-building_use_case.md rename to doc/use_cases/multi-story-building_use_case.md diff --git a/design/use_cases/outdoor_localization_use_case.md b/doc/use_cases/outdoor_localization_use_case.md similarity index 100% rename from design/use_cases/outdoor_localization_use_case.md rename to doc/use_cases/outdoor_localization_use_case.md diff --git a/design/use_cases/outdoor_navigation_use_case.md b/doc/use_cases/outdoor_navigation_use_case.md similarity index 100% rename from design/use_cases/outdoor_navigation_use_case.md rename to doc/use_cases/outdoor_navigation_use_case.md diff --git a/include/.gitignore b/include/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 00000000000..e69de29bb2d From 29207aaba873a2147ec4e6405108e85d6f80384b Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Fri, 6 Jul 2018 14:05:03 -0700 Subject: [PATCH 02/27] Update up-front material in requirements doc based on review feedback --- README.md | 2 - doc/README.md | 2 - doc/requirements/images/Command-Pipeline.png | Bin 44970 -> 34203 bytes doc/requirements/images/Context.png | Bin 0 -> 29868 bytes doc/requirements/images/Navigation-System.png | Bin 0 -> 13718 bytes .../images/With-Support-Modules.png | Bin 0 -> 46541 bytes doc/requirements/requirements.md | 253 +++++++++++------- 7 files changed, 163 insertions(+), 94 deletions(-) create mode 100644 doc/requirements/images/Context.png create mode 100644 doc/requirements/images/Navigation-System.png create mode 100644 doc/requirements/images/With-Support-Modules.png diff --git a/README.md b/README.md index c3c8adf2eab..4596500a75d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -![ROS2](doc/images/ros2-logo.png) - # Navigation2 ROS2 Navigation System diff --git a/doc/README.md b/doc/README.md index 108d6ac6d41..096818d82dc 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,5 +1,3 @@ -![ROS2](../doc/images/ros2-logo.png) - # ROS2 Navigation System Documentation This is where the ROS2 Navigation System documentation is being collected and vetted. diff --git a/doc/requirements/images/Command-Pipeline.png b/doc/requirements/images/Command-Pipeline.png index 3b296e64b9ff484d5b32efe7cc6edb496fafbd70..edd46d382b3ec502db0bb0c6bd419378ce2a0095 100644 GIT binary patch literal 34203 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 SeG`uWzCK7PN|wGi4E!GsUV)nc literal 44970 zcmeFYbx@mM6gF6)#S4_;R-hCL6e;e-tw4)g2wDmhf_q2>cZ#)WaSu}59f~^?3ogMm zkPx!r_wDS=&Ntu8xBu?$A589>4EMc9?m6e4=ec3;HI<18XbJA!yGN|5qM&{6-UH@) z_wJ+d9%H{5dRVH7{kZR@tt@vBIzqpTeZaAm)sVe+uQG=4#^Mq78Q)pO$nD;}C*5~{ z_Y=9E(A~RNE~Ba-tLtsHpN{(lp!n}LbD?(jv!_T4B5+K7r$vSA1F6D(c*`EUes}by zjxH(12i*#DS?=>?xlhcovCHuq|CXKFFxSINRVD&COqAtEjsqiq;|3(Dg{{I2r|CSQuIJS38L?Z9Y^Q5{kFVt-^ zPC54n;W=D0V0GL3yH6pM|M$)=T-Q%IB*_UrHgj1I>mxS?P)=8mPZyVS8u;kdbjB6R ze8k#;$n0Gp^}}!OoOwxQsppxtCN<`8cNQT6(GecncM2sdr%Ud@3D4O zJtFlF`44RoROr-xK!qq!3W5r z&;u(IW8I@8Fe;j#KtA&vy!Okc(MHcuO7qLJmdJbeOIZz72P`KT=my;p@mvXNFOku- zSoy!>lQSz>ILl?%_%tyZ)6Ld;>ng@!4g-8%g@zc0i3z!)QbJRNLFcI9d|T>Z{(3$# z%V&{E2O7TK>Tzmj>u-}o{e0^#m8vWA3{Jc|3F+=+JvPV6ipOx^=xYsD5>qt$;Cy?_ph|#b92%N#)*z6Z4s~X;o(dEqIe(=JYvl}~6 z#oa_i4b^LQ1#g?3`;UC5of{=&;w*&r6hnzG-~3;*%!CDDO3eGc`pzFAv}RJ}I%n9d zu!~i}E_UB#3@__boV|KlBwj+d!@bH5=cRB%%_7tOQKq$^VTX64*j+XE2fLU{4l~yJ z_ol|s-3tqw42;r}0}K6ty}O6PxMA1=T!#toKiS%?Si0wO`1){X!mCaRG|GreM1O#X zgCka&X)efm!UvnR?4{AI5AQtdORqv`WgouSHR+QOp;C*$XvW0%TJReD5M6y*qZEBd z#Ue|^9v+PePs}g2J89ozrJXwq>?GK(DlTS#qLq{FEo~+U!wonULX$jCSO<2R|1s+c zN4k)>)@u20U_ArtAWyL$e)NKJ{jY-F3zw+I7wnYM^w8>LoOgDTIQ!s}au!AEQvTif zMq?xtol3AiYqpm=EROz!-j$$cV}HBWSB z9wpJ#h=3+fJ?Lthg^F!W!mFir6G9`l-9w5kjWnR|;9r7sX@jRfofm!xr${b-@k7VR zr8_JsG@GXp8|?VK|MM}^Xd}%owOj!nYXF`Pp{mw`@P(%!SDJ=5yMBM5B`0V32i0k3 z#qegTiGC zW4Y4@Mz295_F&t7ua@&!JoIMgplV1ulVPn-xO$FQ6f_}!MvXiqNXX(`MUS{-R2l2k ze2?kxW>DgZpSUSVf_He}OD*aSy<-dyMm6etk{f>bNgy3R2tOvnXONQ4@48HVtvKW` zjWxn=3#3|Wz`$3Vnke9yC&aY6bF984mhdw#hJ1tqfMRU%z5iOBFvE zPP}k#O4#L)PP(&T!e{!}m4|ztaa^E8_!6H~hZ#HX!~5jSy*!VAv56Y#_F>AX;PFca z4pPΜE(vh-y2N0xG43PIXr7n!D}b+MTilZU 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⪻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 OkG{5%Rt3rd_kREz3As=J diff --git a/doc/requirements/images/Context.png b/doc/requirements/images/Context.png new file mode 100644 index 0000000000000000000000000000000000000000..fc02ef15055a4ce52a8f63843011ee1ee3263810 GIT binary patch literal 29868 zcmc$_byOT**XN5Q5C{?=5S#!F1PJaPf)-BW9^74nCM1F2(2Z*XO%pV@OK^u^!QDMb zaJiM=ecpG?J8Rv!Gi%K=^H-g&uC6}k)IR%s_IK|JQ&W+{#U{r_K|#R<hMAhb&K-q2Avb z8t!Laf6Y}>c=zalyp;j%XpMdOes5^q%^P@uNGneoxW0577#tcJIuN~XJ~UKeF@!TJ zKZZkqu`UQOTFC{#cpa5s5M>J1euz<>+n>|zv9hDQ?DM_6cex1U#(GM%!q~6A=K#is zqp9Ah{kV}9$LXr8pa$bB+w*ply_|P}_=`Y*(j4=L5gR);WqMY7NQSt#sr_1X(p`=9 z4kjj3qrpdHfX`Bt$@$NXm38UuOy0_JDMHiTo}*f40pkAHT$_`V4Kdfe;qs(N?^Inf zS}amLnwS9Zd1DH*lJCQJQ|_W?@gD&q*2j=m$(s~+lbg5hq*%AkCz&TngbYge3w>z7 z^t6xxotKjT;X7Og0lG7@#mFKDV6=s|fr*)e<8UiX7wSME?PR#;ci|JsrBi&-1y#^=fL@HE@0*K(^DbtucdKEDQ9~CrVq3y}yDy|z#POom zwd}Chy*Ek2eYC=TeNhRV7pnQlx0BrNZtzjuk?WYI-x|R2ftJK!l(@@^gPWII{reIN z7uGVco1_&g1s$oo{%#w;sIHyQ*55Ih9GZW>=qQR{p3YaWfm7$NS#3h{Ioz$+))44HAVb%FGjq_7Re^Sy;Llp^c28!-^_aY*oGHl9^_snf01yS@-lVMWZ1kU@1x%h$AIRvXF-cpUk_1Sl; zER{ZC->c(a-{#jwzTXx37f9c*eM0j+nVhGn*`KO6Ka9KRe5t&Y85dwA!od=uR3T_)~Ww_}rF*8_6yoXCK{2 zqU*kif!=d0dhQf4jo11^ZzqJ_KaR$9QZepZB9PSe&t3^>v%Ki>RqVWQNF%Gapl>%~r*?@S*@2E(wjhOBRF z7&oW8{O&p0n!l#c_9m*XZ&h9g{lq8pQ)5sveNDZkiHU!}K&k@heb^lLmSdXuu0nR{c2yQ=Hab?M8# zF;Ary2$%K!-AR?c?e?Uf_kqaEdwy@KF)rZkTcB6xm(#Q*PkxQ`&qgu2(Nhe@F_c`r zlt6$kKE1)^C<3?UJNi<&8=T;b$cbmbGx#XanqN}{*DWmG zd_W|hC(DDDSvk<|i{O|5IBCN4%tkQHbO7e02}A6rLAGTXfcobDrH|7LfV=oKhxmi+ zOM|2Vv1fO-9Kh(GL3UtfY^XAn)nZji69x@X1Io^8~BoA{M+DkyxejGsWUQzgffNy@M4v&M(S5C76dGK;P zDh^`U3OkZAN{k7p*Q?Nh4Vm4TpQfSaF!25wVf3JQS`v5UCTSwySCO zD+RL76!%R+TLHp=U__ApeoHA&sY4m>+L)5}W8Q#D^(CD=ox4 z{{ulC!%PetVnB|(b*n#aFy2^&eqj_7(Yft{jy=!SOH~2dk~u%9zsDNxc#5hJZUzcME!)=A881jEg!S8H_fMs z8Hj}>{Mbu?{Bcj1cHNv97U)V7*RiEvCyL4A$WoC1fH(ncxvYs|HiFP9zCh($J@37S9V*n z?FL2iZ>9VcS)>F5ky(+nm;q0@dxe{uD-W4a9WQG+17VsC+)-0}hEWn+pXRV98Y;=? z`74M(l=4@iRkm-KN0Mt9xme!MzW~U{$gGDlqr#$Qn-1RvR_Dq?&X;l;eF4q^<0hs~5lXq~3+hX&61uJ!*W&A)$T@+s@$?e16HI83_i z>~k7nSYjgbWPINjVrgZ$KUK9k+=EUN+TBvKUNl}jDqx`M5V7EXF$IWmJP2oCW?*12 z+sst0>6lJW0KdMkrkSm{k3Eihh-4m3B334B_Lz+pqY23>6C%quD0HsQoO53)l}zF! zmV{baS#=CG(R|7(7s6#0+v?u$#-|i2X@7`h10rK?qJKEJqd~7mOw_MAm>?`cLnB1W z+7PbN@o`?5NZMD$ZH27RZm@d-a@HIj2Jm?A{U6IYi%w!rJRZzVw(jH25lL_l;#F*U zGbMx@fx3uAc5zSuP2lP8GI+h4A_-)D-KZ{=keWd%jcRL*%~f5*dv|A^;~|6#p_oL} zyWxPrmMcXd0M5u*c_apMkoSGfloEuC(tM#x!+NMBLePT8hB<(Rj&8*cDJg-((cAo2=I{UgK2gP@<1#O(GpjiXx>B4dxV8 zjx!vad=Akk3fQIKon+nd z0G|#OBT{e9b|z{>r6sdc;Rx!&Q~B&Su96Bx<*G2>UhJM1si3)RBc=P+*$vI7jhPMR z`m}kzJ_O9tk$1QatAlVOY=|C}qPk>Sn));Z*y+kOvuO2I-&*_(0oIN9Rc1(vC=wxn zLYS}NZ~ue`^bi0xDhq=!JN{p3Anai(8BM?C)=<+36t^|%8Mj}*K3-J!bCi9VD-}RV zO+(Pc!^I{S10i!eft4VgBW7&D1xmHk|2r9kWVnYS)Gm?BZgOF`ebu3hEmz={#C1!4 zV0+C&Dv?$|2b0wFA>_T6Z{m^9UWz9H_x7)+veq4vg=f%dy z!PAmqR0LHgIlnddbCO15?rQe87TTHqZWFz{PXLc#SQsSo2<2h|r+s9Kr$vsslB_9S z<<#^d#c`xzg(J^MWso-H1pu=}b1u`1MIaTnr|WQB&s$d|97XKh@t`$^9egB{-NTT~ z2AHx95ddq>rs#S{s;#ZUE+rbo;J4Y_F5#TSxh?OLGpK%z*J&gQkMEq%Otc(Ohe0xG zA&+64Aq;a+GyS3IwLP&=l{>P!`_d-|0hH3l)O`i?591(ltSH>C6OitDqbr?;Q)CvY{@y7%T}AXQGkWV2f_(?KU%5}=0)(W~s6g_&FwUe*M~hQI zrgWA&EW`>C&nl6odMW0uC$DX93>SZbuTJo5d|`O{;0~rve0-u*{F^eX0WH!|3R&F| zh$#;7DQ;JzgA}`vj{=fQXg(H1Jm$`!%KeT6%ln9`{7OvAidTvX0xnDyO6|n1=DTbH z<&|atVOOntLQ+eDH@1tEg@sf?98m@Rez>aMk$aJH?p^161j=WTln4%Efl+4Zf?IST zSrC<4h%ABSAkzMV#c$+}CqL$%&{`uu$Te<45m%}p#Y(E>Y#5@K8phHv+UjnrdP8ol zVJonbl`%CKXA$Ei&(M1+t)HI)0aE!H0T?n0fFW$nVG!GyE``l zQ&OhNdJZYZ-L17N&J`#vDou5o@Uhd=o=rnln@=-CF2pMrO4}Q-6B{aPA@RO({ecIe zJb9)yxh*H5y#Nr7*`zAXZeET#a_wtdb`A_rcaMj4IwA9G=6fS!Y!Hc0gA*7xuyY3` z&T?p2Hz6rV#-I>~N8GA4ufy_fw7QOGlV?dvUnSTsu<>JSq$Up_fmRh6P2wFnIqe~! zJh`Z}>JnvrGBv9ZsT6oO7VH*C(O->B;rLcQ_oCw(aodanMBhDE95Q22JMw~r4Xad<&wotk^2A8|jyiQp}L zX;9rcp06_i8d7g|T*<2kps+wp`G*c zgA~z%n656zy=&jNd@54gDqu8kmSc(&@-!*d){a(LgS7%eyq$=UVi9BQe+xCOflxuW z_4F8fyV!tG%>wO2pzY;6%tJoc&N3YWvMOGFWpO0@Bi7&RY-g3>@o{mk>wQ`xqxp{k zj_)y5;7Y;4$k`5`4V!-g06?!?bOyL82?z+v#C#_czcroZw$M4+pML-R&8FmRXx?vC zHKT8!k9+WA^gfNef`ZD1#a;Bm`TQ^QW6Z=mzW{3L^Zx4g*&Hu7CTnZ!-AmSmaE36+ z?#`?b+ROI$zE8Z})`pt$ZMW+!^KD?H2d(tolX6tmLNxgXFU;D0ZHXlj!A~!5b7f*X zIAgjyio;?h5D1Z`mUSG?TqJV)38Mjwbouh}v-?O`%hPWfpifs#?jNAD9(|@%4IzuF ziyJwfRP-#qcNFp6vnW!xHaT^YA*2^^KbyOfPodt{?-0~>-zJ-`^L0}MIk7y$?<|0T z+WsFJ3|RXLLL0M0fkkS)fiuW>jM;~0-)zz(6}Qzu`kksed{ccaQtNBl8;oeQ59`&b zmfo)-tBl9XU7H^f;pyN|O=bK|Vt@)nZtq=2P|)E|;pi)5g@67mKgdh&agx)=2qS$A z>C6zm-93}yr%xQsd%kT4ZW~{cbkMQogAYKZLBcr!G9CJy8T2Z-2n92|zs^6N6)0zt zghJ~t69sF;0homZ30lt0b$kd32u?QROMyKk45pLX^S1A;atC*E--AN|ZQ|NoW zLI}-Ej6esu6^sbxx_Jg=mv1d)00d;9udydtneWUbZ}#W)+a+AceVago{aAETGdf4D-4@AI6v_ZBP{ETAJ0=1?91ZLb)i zmwl5WvH1&T@|S*Lc(%@U4f(lzx-w@R_4NyShH{osh;y%8ND7B!V4V%@r2#f^iF$$r z=FY@$7EbP{FWx|s@wDb6a!VW#3oSDJ+*faM)NDPUN3_o3z1o*nYJukTNW=2q*OmPl zTTxld8eS1*afjq5Nj(s>#2eq$;sxkFmE(Mp8GpfDRg(~fGq5-iHrhz)#w~_TU4Se|EI11e+`#bs%rHYZucBF z^fdwPzK3kZC8{G#bRY@7|91x>|C6zfhca|-yJD9P0-Vtr!96x^awX``XCrkLLa#V) zl%zF1%=DwF0q(U8BZc~U2D_NSFS#Dyz;IROU@9ZtsplsXz)U6-dv}+}!@rt1n$|q) z>j0|ou^(0Y1{;tZu*kZ}(elU!e9B9&UDq^M#ckyvnSBx0jnM=gscKsMBnactFMV;~ zZESpKp{VD4nU#d9)7>kokwppEm z!7Z}qwp+!hF&+j_wY11UM7->ULAu&Yq1?FEgwPt9LsQQ;U=Zy4vu0LB_E5}&ky-KO zTs)-rZ!r2&9tve(_`%fywszxn}BcKTTF)vUJ6hQ)Su{A*ZO?d~R)Na>eJrnEf4pN^|Cu*MUU+eaE)> zW=WUfP^4;)XrV7XsJ)kLGmh{Zj6krGAGz!B;6&ctBsd&|Tu496pX&EQMuox?Z%EC- zs5V^jRi7mj*Gi%lgS1+I8^tz0ebFNrCo0h$5l3pGCB#udiN{c>S15>&qF{)@dOEI} zQZaBZk2Fo;R{oQR2CN4wi>3J;o9LDNd)nC@YT@Gkb&PlO)K|}bU(Vbj6WDrOmv0%E|D~() z`&*{Y0U1lP0g(c&zGySdh_eD_18IYb+x7zz27M!I_|^~2KAKXkLNkMB<;O~}&QH+0 zVQ;|d!Faasywd&H&*OYcMR%G{XKXKY_mfQ$Bm^G%={sl^zfo+y9Xmimzj6`JSWF1X zROu9+{R()tr!&>Z18mqJjkC0nk8NGc29jchtJh6-Zb(SjlsmJ}1{WW*nswiJJ=991 z(Be6dcNVA>VOZ~(oVJ+Ix--SDspq z#C!sj;5xNXx>z}59S^DfkO9u@c$^0-rW>n!Kd+p->rj61gLmn5@qlCe>$~bU?Lc6q zK6$fyhc4f8y&mSdVIr{p+F&jjX%^Uz))zjdlR;0>ZCb!PVXhspA;7}v?mkB9Y~ii3 zEu5w#Q$>IBF2W{ZQTAx|@|w8XEyLB`vM+bYx@0aDlE0?C#2ntD(I4|)qY7<)pdMy= z5xB|lwMHN-V5x9*BaZ@)A%z?m8}BPp)jw_T#X6*ZS+sb@l&migo_h(5lri(;eAUaM z8swU3$JF2d+2@w2IrSH1eL<8hcU2svO(;mPgmEhV1=xIjGN#_WzwqnGx(YFE`+MDt z_8IWEaY{241+(BK=P+*cxH{cVuD$5V@Y`2hbeOT$$Z_9a2ufCr0<+mOos%x6_e!G) zg*rLjhl}-M$Hg=??00Wg+YcQnFXs-Sxdnd4(?4=$TO1;%NC-UFe3ZOYqHV=b?I!7a z-*CDG-PF>W%{^|x6swfoN&I%ZvPd21JZ55$W41cHH7!Q02=$fi+SnJVlW?TLbYoP5~wfgZy!3_&=ySY0Ap$mzzv8oDC0Z^IdzV zWi6EQ2f374h|I_r2L5``_AMrwyMNX3vx`W9^#N}GrMkoGnY@VW(7q~1#zLKevC73ckqSF8!ZcyqAe?d~s;W14)Z}`uv3tUsPWQT(H|r zPD|c05)oWzxJ8$0;d*(z`L4W^_vxMupMb(@8`gIj=W4l1YS`t0TpOxd>A_faNTuS~b|@p$KZ7$h@Aoh|CG~ln^@}$ZT986!SUIr}GuA8pYS(`sX->13r-}aAeAt zLt>P|)aBp#eKKvZl2~*i9HOXWvC~nHSuxIvqQo!NCt(ti2r4AUmI1x-yM;wz?k{yCA}nRz$tc3Z50$4!>Njs_^9PSZtw;8<0H{1)mX0{hO8#h!+t={a z4SzF-5Q}>54ZOz?pf72nm)^5^kgw1GTL25sQ63*nUqboJWI1aD6>*rok%RNf7y0>l zUwIa#*AM0HtzogFF}5c5-ex>*N4zFTr{Yiq%RN62K&cMXOofJ()qWQ6SH7oT7oncL zG61Q%3@Ts#+qnA8yxla;VWJ|;gNm5!kq4cn1Hb*90qeg%^7|hJmmp#9?0pgl!l@xE zixB3JnLSxRE}yT0}D^wT}V59&g(4t;#5TVb03%!~$9XHg=nkZ$(R%^O9t@2mm@N*oo@?XVh?fUm z2X7Djn|vUOFwU+7bI9S4vOG_^%D@jE(Aj@KiwLR^V#vQYM$a<5Uk&*jz%<;&WEDpn zW@sQF1T*7@#IYIm^S|K0e07_$wr7N?dRN64&c|eJ=I#W&fB#!*Z8EE9{?5CjBqxtZ zmBA{bB~{t5{|Ol^`c*k2mbpzVo>I}{p6wxsWv8*iqC0Oi&!xNK+If)lR7SHt&C!mk zhy%;M%q$&U&B0XAi-Xq#>q-xESf_z)j9`qfQmRjxtrQ8n9t~zP)3Sw*WGM_pD))#6 z-tEL)D25UnY18aW?VhFUozAUb@zv<-;ODkr5<4pcoigmOozCu^y$`1E~}DW4K^c|t~?6<$FyN#d2cJ(=qvg!r9e`d{%@hJS-a z2qR811#Qe>Yw|7yQW17iCPF2ebk_0Rl|R7?;#ZdTyjNvERspshRte?#&vLu}ssR2| zf%mUdRt6N>trn*C%3As}M_N=OCBja=bVczoKJC@~16~#kV8YB!$-UL11h-)%tSN;V zg`(d{(WhgSGbFopnE^=VF8mbBDS|Ub^68^i-)Wj1Hf8v+W(uxn;h*YYJ@+8C2HpFn$}<$xzm}=$4Ol2YZr-Qhl-uLXz!v+1tU;i7pQP-;Nm%$i{@~w zn5dyvI+0zUj1kV9=5+U2K)ZbJ$C?E;AAgNH_T}u;)jCMNV8i>!S&s=VqNItNIS-@9 zB`%UcrFy2WNziNn7rCxdk{yH4N>svy$-X>LcH&y*n7)WyEzq*NOT3@ME=>FXdUl|C z3+l62Vy`0t1%>uk={NG6oyG0#Ab;grajbWYjee!2fwNg}{w3hbbR(xYKUxKN@pjwD zWzkkJ{jW>82GdM`HQmvmHv$S!1%;jMvAlCC!AieH)P}Jb0|)!P*K*NR5<$zat+W$u z@lGA@UqPLm4yN5V>2k8$bIxuW|NPWhW@^TXiMw(>1?5{X2?fd#L=bp`HuzGAS^ z(J`TjKXIWFI1(odi51Wq1+^*$yTkYGa#3A|^MO)t${-97M#tH@!@qJt1q_r60%yZA z{P5REajq;tb@zAfvdEdD4nkl#-Rl6AQH-4?{5dlZ50BXKI7E?D7#rsVG%QRB0O@JVcr>k>DF90=;*jhJ_R!UURO^}S|%@?hLcZuiH)BK zz`+F5i$XQ*E3yAV+ed$N7XBPJ2wp;%CAPfS7!SsW4H!U;Ngj-XdiY;RsQjb+paK`Y za2Vv80K$+jaasb`>`g`J018u&bnNuu+5Y1bV=TLt`Hm%P9 z;U+tZJD6e=XW?pBqrILEc}O0e+vo587)EHW^e1sSXX@-Sq573BWl615#9UJkdf9i= zbJNb^a=+22152ZO{7qxGgzl}xL+5eDlpxClW&tBL*Dz(CVx%6)ADPPGAbn2YVL5H@ zTro5#p!pMXoS{YC6xB#DRpeA>i8_1nsw@c2A!IZaJ}57u`%Jw=UEQt^iCeN6cR*_WfcsSutk z#(a@GB7k2cT)DcPy&#vRFw@z1U9f)sIj~`LrvVE;eKN_=dpzzm!({vAINg<%$UIXb zcVS$~)9CV<{`5TWdS?~KO1>UR=rt1z+e-)Y4MyQB0Tr0AX8%|jY4r@U_U|7?Lp-qu zYjS)$KNT^KHcGR+D!4c+7!T9jDbCx(09Yy;gvYXF)lvI8VHUy0l>&RwHFFkRd%?@Z zZ$HBd_u!B}i~mRJLH@@wEU3OJ-E5oGD8lxnz?A&>^y46D>e7F)Av*+ePgON()d3YA z?_NG47!e^Fb32uX(F$+~@wxk1RQ`j8U`fza-JuIi1+2%*wcI?Is<;QslKx+*Rhm+e z#G4&VnOOD=PN2%_q5@wsGBf-{&j#urrFiV>A36(Fu-R>sTrx35ZKlO1|ooTwU>X*Xpl2q&~tgX=k{+d zKdh$;teJIZp%tU$3nk5l07$IHPAf@RDod_41=-4-x$7<+-fa4Zakk0OWoxhwm{KCi zpIs>8CnF3JAR}Ok!#W%5$2aD)YwAb-yNFmyRs^ACyN{#gtr+}kwo z|77ww?d~X?4qVgvW%E z>Rm544^NbA4#<6JmE7`BV`F1~|C^1$G>QA0lZir|@A_3ca8+@=3ah~qqXv~M@r=Yo z#+lC&uReDL-5hme()j;A?&r|ZzK-=8(?-ho4GzwinRj0ww%lK=#&8%^JFNF5s20e+ z&m*;*^3|#GUU<7HHu243Y^5{e8M~p+?FQfW4GyM))F==ofKlWP*V?uFl55XN3nlDNqfR$HNEc))U$@}hC zO>PXNptJu#l}aQHD_73tw6g(+F)a1f<;|0`5jh$vA-4_>6x(|X%a4fKTERwwFuXv^ zv%P6FJkwy}fm1_1jRZSnfqxDL$EOim(Wcw8S%VrUJ}O!LBW+oEVb_%hfsY;;`)=nx zGx1kv=pbQqN3AGoiEbsj9E*{-vk{K0Tq)j*m2Or_q?hLoSM*zDyqsvQ z;8bS1RC{bg`znL>%DT5s-eXcNJI|DV4{2E|~%@-_s)B5nl`0aWEoJloRmVU5pFB0+lw@WYqC9nOj zqM-XbX&TbtNEWSvcWAU>#mZ^?maH+^&x`6ljZoJ>43nORHOa#s02dHnYF?WsSc117 zUJkyg)W}l-7dPb<*cs%AVT0Fl+b1d!FG`6(Ist)6O)cZWA^A4iw|;)Bp}OB9M3K&m z%?YeJCF(gCV{@gZ?XpqiM^n0deWafl3s6Zcso#S+z5y7*xXE|q9{f54pGIZ#oy^Y; zG&Hoixw)zHPtS}m_G=cKZ;tz|vjXrAFIG;5#jj7{J{?UKw1+drw$nQzl=nXId?>&oVtl3b=FRhOVy8c)AX;F_kc*cWqsQyfiPNkw@)2Fzc@TRjGyen7W+W;=ewY`7gD;nSAV7-=itt{2$Iqb z#0e1`XJ==V4iBX8(1ua>3?H=I2XgaxA#j&t%DJn{%z-5reY2bO4iAOVe2qNuy9@Kg zMU$Z0KYa7_J@pu1YvRdA?EbTW$6l2J=NuBZ`>;c;myNdIJNpx*ZnO9Ug`<0ng` z2X&j&{^+FYLY93NZ_LnIje&(@+)r#N>0-`7F!-7_c!%qDDN$Hhdn2 z#mMgm?~}c5MOUUl_z{m#~5Q_31&^CpKK%)ed>;*mjkOt{kDFZ z#+&%NL)c~AQfyd2aAKQYjL3wsD29W+n}+61;V-~M=P z_FGI8=5)R{{Xy%%X!Ax&Fw4~oclSYN_iPh%9@ z6S_J(Q&jRPlMm#Dy$|NV?aP%@iT_+!=?UTy%>XO2%9}SQ%>maRhT1;GJTbB9l4jQ} zMG4W(8iUE{qha=QiIPFehzpY42<^=1oIVtL_#8H!7wMKc++4VhqtnFv{2+-nSNggm z<$YX^xw4Xl3PdY1JQh=nUN-VMO)8%~3F%-m7y3$=jUeY06L~oyg6tccaUT zT3HSPy3EhBRGX+IwU}-M$WViuk5RYnH7ugh_3 zsd=Q#c<^vkhB2H^{F*_^nW_+BfoFma!U zCE~8w&)O(?XflL7sYSdDb*DV&9yy?r2#CqPXGVxomOfTma!wY_#O7X#DIOn7F83iI zeC+TmvPWhV7rM4h`Hc5SYzd81t3b1pRuVt#?f#6X?rkeW+|$ptN)kD;Q7bN|SYxNX z^a}(tbj_Q}l?aah@V zWJLu}JB2{>fP>oGo@P%;sJ1o%Yulhd^F4Ld>;M{;@zd* zipvIACi__>VdZpn?LNwp6%9tyjolqD(a6*H3WtSCk=1*b_19=uywNbTa83+kz0 zA@ZdXlt&T|SOuxoFqkn=Uah&1K6In!=0qbSbrt;b^t;{e~Lz!L;tV*sZ0&WOJ)%%^dqlC+~Srfw$}gAM+W!O`G52E4;%X|NS7C8X0>L z9EY(?(bMc|gb+_CjFlD9%!fv;liHVE{R!B5{|c*W@3jP{^n2>9@YUdlqRTozp0$^i zVF>`bkfC5ci24&fFI`>I0fO;Y@UB>C)Fkb|1@w|rQUh($)Ud$uEQ< zJ)R)eGFxSIT@bc07^{6$!SVQ5h;B&AAPAF#_j2(shjaFU1W3C-ZwIkW-p<<;9V^hYzfZAho}U+c!p4P+4HJNWq;I8A z*UO78-^ZM~K_?CSR`x7PXzK&MxQ%eA zn{7QkGaVh8!1D#7V3Ss!qo>{UF7I(*)EhDHWEg5cW03^q=i*ir`q1Lz>kA7DL%#%6 z*=e;ta{g#QcYqR#@-U0(XGhji{73T0(u4ViFpI}dy76(}!p=U<9}zLWOqRHB_g+j9 zvuFIHChwO@utY~sue_1GO~ozQA6{W<^m5Fht;E+exAy zB_)EK7h6v-)03F^Qm+W9(DxXzFH&hz>+;ohYkkT?9=dS4&9gC-;Rn(g7=gKi=)=)` zVJ0gp>*aOU9wRzXpRc|uTU77`GYgd+n-}#?^v^l|^HG94&L4IqcR~+sPzp`a*Nx&4 z+z%8sGP%ouqA4KK23`17NX&ak&+dE!e!stVbg60ZFMTKbzl$R)I;wYcw=CEQ3cH`By)}))I8_ls~Iq7f-zjH5zqC6g#X5jN- z_NNVf!r`*A%vriycsD@;!@#5NLEC?Sy;&T%xgH{helz*9vkAoE-3=`(&+hOd|B$ce zukrvzoe+sD-Hy4-MO7i6m00jmc7Y1f1x3Slm|bjqeEcaGg9d?t>_z0?-~rJ$KF_-=`N$V^6d`ai6>tE{z6%^z0UnRaY@ISDk_)mcSoyTp1Z$@X)q{*iC4aG z(mj*p6of!Z>sAKP(8ynWr@1)ccz1tu`&36RUuKLXCp4Oz$69}lN1NfdO9Bxt!<7qe|3&wq-yXg*^Kg2 zCv+jX_uL(4utsC zHC6!uZ*PHfq;hJt-E@I+;Vpdx{3wUGtwZVes4h{3-CGCDTOg z2G3`rcwKL?K}BrQ*AZ=Je!k$ShkgIb6W?($FFz-gNN;3c%gI@6>ib!rN{RCyn~UCe zw|NOYf6geJF$L^JueV$AW#`20xiF&Q|9WBavyZT?Q=f}mX3#HYHM8m03b5ytKRJ*l;6JG9a-d-NA zXC7WoI^FiMEr(M}UnE=Ef_JWcYwJIH73$bKU6c2Vye-+P-dt<7ubULVzlE0^dhAyR zs{KZHyrH<@JF*`waTF;RIA*(<|M4Du(PtHR3@aXgj2_THDzz>SWQwJE3g(}Kn|2JP zkl6sAQqWRL^}YyhZH~m(C=0zCOZ1TEVT~9bKYBooXTH5c7MH2db6hn6)Q@OnbGZ2U zs@(Hb5G#KIc0?vUyeumk(%_29O!(G1H25{LRfcIkb^L|vb5rg4U#%y6o%k9J8^w(D zf1Qz!a=y`gGqyl08O7v<<%3YonLL~e*!jt~S|#8eWPICWX^DP05fxYw3un=k*|E^Cj&YYZcQKD~Pp&F{^Dw}%hpMqk#uxqMsR**RDl(0Q8arZnkHjr5= z)SDO?oQNV-s3$=LnnhPOxxyLW880+vK=U9%!onDsnD`X@IGY{VhWe%Ga21f$O#T#hZiP@ZanZC2-Rx757kU!l139 z_%m~LzL-KrwmEEKLp@b#my7K*6s^LCGBGkeT?f{^34-q#RN3LFb!rSqUG8Rt!gJgw zSSAeZ>U}1UygXegM#pPpPBw6F$f>5h-+e7HZc43;l;o!7>H+mk*29;-@ok97!%cR6 z6=RALeEu75KYqskndoIZ@)-326iwK)OR3q)VD1q`SMML%Knlq5FS)zrG(~u@?8v z+;h%8`?vSGf}9WiYdOq!!s`<@B~Jcc7f3o-q&%PYroIV$JyK~2nzVh%s9vP{f>|HSBW+W8Y-=q>DNyeR8Oz&A8F>Dammno#hj05b zODqHhIotecu-*aoLD*H3aodx@r6IxCGkJb~euYF9bxq;HZw5Wzf`D!H9!aXUyYgu) zTQZBsR)+}2^HUy}vcB>UO-xQv(2nvcXXx1p{JeP5=F`LP@cV_|L?TxA-SYUUE=l)y z`Acs6{QEOyMdV`xrH7Seam&edC#QGjqbVY1%fR4b94nW%#ZfdAH8dgS8z)s(M9-aq za;w7(MsRgU|IC@V3n55_>(NS^C{fJ0Lr$E_xti#Z<9auSTne8fM_~+q z3{mJ+gj%^lI={wBv&J;y)q1~9Nocse;;2j)Y2fmotgVxIW((WrE8fh!I}caOFj5Zg zEL*K(JKJwpdtABpZ4LUmE26p6!;Z+k*rangk_D(Dh!nX>+-XAAZakI~{o_S+eEd@m z#aekffmYN0LW}NP_DX?MgVSb{nPL8Jz;`7^CSsRcxori~(2i)rb+u3&8rfXs*wx#u zUHN8lIsgOTp$vXz_Y@+S?ISFV|y9M~#Lrf?t5=YD=dXv^?g zF1ZM#y}#eU3GF>@d1_S@&iuhFsat1H{$k?S*V&nzz6c5qSGlVr;rSZ-*;db{@f;Zk z90&V<9wnH>^HrIf^8bs)MD5xfh|_j+^mbYrh(JO{#;|2N(9Qya_XzyHp`l^2Ab8w| z>qpZ1_O^_}TFm!UsR3yWhmTWJg=>0UzHeWFRap^7lQ%JCROCU;uFSCq{t`R#h-KMU zm=w$D^hm3wQGq*nZ#rH7t!DY!+Uiv2QmME9ys1AD9TY2LI%la_VPCRHpV@J-n* zHU3Uwe|UhdyjD+PH7M9X)h<7LP5*5L1{p&d9qy}j#kpkCf)f6Wbs~4%Y zyvwsvXN*JO=X;Y`nJ2Ek_3ZU535y-K*myP_tOF#-YxMN?>YLo$+}$gR`vkc^4+~`3 z=^qD0khGpGPV#FLQ+nNt>x&*oyDZNEOZ{ zV*ez4NyB%$N{8Z+%Wz2M$VL&ub^*L$7Y-mg{ey?;e4;y;xiD2{Q&ohDQsG5Q(BS@S z0$O-QX|Ju7$jwPigr>u8eclF-bv69>nyXC>-GFb!K7 zB(YC6U-#ZnQX;I&M37>UbDW%HBU5@@XGfL8rN1yC$-({n{7w?I=|yIb06PqLoDqCS zP}q{!c0&xtd(_i^(kh4a1JY8Tni{-kEu^OxKZ|{0ML}@{EK%RIl;4qMWh_D$=jVmG zb&=)ea1Io0&fs=I_hQ2Z=?Hja-mTBXrw98sPxvYQl#^1WfY9p@#T2f;K$B}Vxg0hf zH!tOwHsP#z9|PBRJ$KOmZ)9$!_hT}@#xf;AR&y#Luh=is=Wc^~U;0#0amR4IHLQPn z0mW*0Ilr8}E^JdCdJH|QXTtSr;V!>PgzZ}!1vghC@!PIS805K;X9*>6r68q z4`sXu8f<{~Xp&q7P*6S@ofx7|2nj(v!jC62FM{?EB*hK|B7D~GAKs~Maoa0;Oyo8l z@oWSS>O(u?^PcF%SPIg2mGZ~KJQgqIQ!y(AQBgy-ptnLaW7U?+Ch%N& z)q*!G_81mS7qZ`pZvI$gCbvQU&W-1E1!D?BHQXfiZrGP%AO`>lCiB`;FrYsoBuWOM z7?k`?`ncE*78uHJ2kc0c)$FH!khSVx?dHCvIzhFT%V~2cuP3`Y<#s4N&y_v!q*S^L zg#03@@a(2addV&4qyxwN?cCl8M-fq%d){5PxL+Vy*WzuUTOgxiwreW8uHEc>*w8pU zS?el!36U4z$QgIl;XdVJWc(+{en}ij1a;HK4K8*?v*qjMYS{D`J)=hnKd3kA@BTCw`=?QqNIGN5_FeT|IG3v@$Z|*kolM`~syb7>B;Mp|L*NawD3r`b&2Z zmZ8U*+m9b6(Q_S=!Si1&HOpcl?`I(|Yr|i$Vw3SHHGl7xLh^?{kHYhOk1E!VNNkfw zJj8jL4|GtzdZ7}cBJvxe_Rs^gD5N(8K0y*2y%E|)<342p!CkI{^BJ!<>m5ylF-a+= zikH&6f?F$>3R=4J3IJ)UG$++21MOHxasIC$TF+X zq)cGw$AOa_dh*p%$%nA$D{AJavj&L{EFt}>P_lnLkwCUi@E$X`c)pL_AY3wX#ypLcr!5^yl zm@W_$@CL$dGu6KmHQl;irxtxLUx*k9GN}Bjt!Os=(Z0xNKwOQNN-h{aUTwrITC@j|)AHuZ< zOVE`EK&5_X2wPj}#ODqJ>CXF9W0ghFF%m*oLm&`9P6%3PQt)6jo>YM*2h#q)vO#&*gDwPk(!my zETNSf zeO+ZSf}P3}@t#nm-!Hj1(ZGG6+CNYqjH1%I0SH~JKlRto>>)5_wx z1O0Y$P&L|myT>?0p?e#5TRU5j=~Wn}=>HZ==Ns4a%g-c>Z{BdRRqGoKx%i4RV;FC$ zT>o0@3UWCV{3Y(NVD3w8E1?t2g@b)K*J682Ewa3PxKJzmfrQtNc%o8wwv1Lba&v4X zg~t}3jL-DEuV{0<2!f8X}Vtxg8%GRj7gZ2)Kbh66OTdr6queh@Qs+4lRQazaGQ1@Al&3LYx zkD}+q{v~;1U{JvM(I1#((`A*#D2b4(gXPeVXy=`1acBf7r{&DgXj#!R=#J+{mLqk5 zBB83SI+0TpQPV%A9rkBz30$7To-`QYSmc16p7jl z{pt;fdC~=oe&g4_6A3njWtye8%gb0Ep5HEZMLwNm0lw>eH1&BmIvcv;32mAw4Zb|) z+|1xF%@@+~-o=#7lu2MzE7U2f%u)To?m80+2tNoV2<2csf8Jo)?gLboUZb;oniqeC z3Oxfo{SHVk7}PtgHLlFWYYc*JjDW%>)HIn17hQcJDdZN%P8Uj4%#VQphTMKqDotolAO=fNe zO^%Z2=oc~yA|iH+t^zg_)t?ht(!qzxR3`TCjzbgXC2@q$JMJg}BdNRg&wRQ%!&ej% zpO9oTSvt!0QYDP}(2TyhyQx>PepvDw+#0vz1ca_t+URV13GHjM)0cvo?8$Fi-)qI~~-_ zO)mQ+cw_{fl`!j_kL2@T4=0F&8llI3V4BChh>u@|tfxzdh^!RTTxai}IR)cTy3fwB zlQ%gZb9%hDJf{B8C(70)?r*NnxTH}O*3<;IEr^)LQI45=25Y;*I_(xG4A0%kF4gI< z{_+KWwc_1ow_Ge#2Z91ffqal;i@)U zS#AlnGwuEUccI)qRihN7i5n={ORgcu$lFm;F(+FZBHHiuXx+j`y{=b`x{b zl~`Zd(s2scO(=Z^4M(l*OPw}@mMp@NCg{;vk!`9*hxlWw2$qLOV?gcEc!NSnlwzNI z>wm~3-;4AuuKTl1=~qa(%w779JO!Qi50CecS9kBd%Z`vqxf}XMR|-C78FtZilnSD9 zVV_?XtyIh7iy9ivxKrEC9OA0e=*$3#fviP$3rdF2?Ilvr7HWtV~csMh?G`F+Z5Ycsl|P5C3R~p=j*kr@-w*8QUqr# z_qPS|gC?akXUDxRwr9^ibGy6eXe$O|XU_f9=DeE!`gY2pVWgv?#iBHLZ^l|>)87|xMBVAATvT)j7FfGt2HY)nSNPBQGEB<9m`IOFE3{uk5EOWok;~cM}t*fyH*AA8BBh9 z-5@|Vn#_roE9clf`&e;l-Vx>4Gf;0F5{MI8>{^A(m<0r3CGBUX(=woJY!_;uF>MEx zEJ{9HhSXTkOn`wd{8TRSj4VY}eGB$PUaSr+I&^A+PO2Y!4bMEY_det{mfzP_TxmHe zlE-1%8>8c@*UlmQKmxTPCz&safig!mezlr)fu3ES+v&}gL*ra*J2S2_Du-K)je_SX zpxR9*5>5#vpJDf~uJ-CU|NMK#yFGfpEfXf^l9W~rs-6Vby)Cbq_g6Er07f&0M^Q_Yw2 z)?1t5@$bTOr>4|cSX$FTj7Mfs(3a%Yt5^q~uhURSr4}-|1Sw0fLX@uGTb`J=OKv+M z#$EA-tv}fz%JM^d*A( zAbZ*-7niRt%B?P)(<2E9uV}jsZ*OjZC4=A$8{=V?kVp-#E;-(xtx+h*Q~1I5kxXUh zcRH~}-n)d8oD!mXT|V)4yrE&ZQJ(ZfhVVBB=EV-vzDP5Ee_fglVxWc^YTNslmdG=u z+B@rS_1uk2iXD_kQW#h#s;y@~Hp_KQq>#^H@S*}=c=`9eW60wJ+Pz`mLVQ$sbd?~V zTIrfrf|*g^bD-7-HBNO8ri*6_w^y}Fi{Z-pXdsE=Xv1NNM4BE~O@Jv;OPMCKnkwAV?P?)BFLBqtA!Rd;uk?p+z4$m?EFKG2#orTbOUE@u zKYSYdDV=yzvjz#z{=lu}CxBoU8S>lpDrYj5fZ7m>% zx%msheZlsn^>mpeI=p!6P-CHQ;7@W&0;2|-Pm$`eFN6wa&?2LLA-S9cuhJWQN?+~=GnZh!=?vfEzLbg>1GBM1&K{a{OP zat5lz@ajna+qsh0(|l7Tyiccs%=EW|nja)%J;HCwP@>cIxfYc)VtE*?U2srGZ4xy1%Y+Xk<=I3yYbWv8FFh!9M=Mw4=#waVSpSa@r)&D}AZM^Q(cU!) zb2L)&mqAhL-RR41z~7CpA+p0@1=-6xuZO#pZ==Fdrs1dp#!$?E>(%Ie>$YrD-F`}r|*X1`Q!+d-oC zkoe3~C8}DyPXIIpMY(Ne%PxD~r6(G?{vF|6fw&4k9XK7goh`%4n>m0~laHgrbpYp{ ze8!79;RWb=&>`O-fx|9OBDTZGXk;`O@m^ZdK^vFi2tD*)jA+& z_1=%;>9HBD$1LGcsG?0E*y=ok=$`7guiNMb9+0CQ8lPkO>Vuj z;s6c1<3-dpB#FvP91lB7CGQ=CF}iybkx(23t#^r)ES3sHsh^iDMUsg~)LrwdP;SBG z;_H&8X>5whU-R<`3aXk;r>||q$PxzCTIr8A88EY!Q%eR1jU+8|RKI-0kV`Uu zjjM`v;JUesiTTv+ik?0u8S$q*64CS*$CEFbgEVl~&UNiuZ{XpqYtikN0MMyUQ$h>y zPuUIO9C)rjU}=$X_}s5Gdc_O^&3sJV&s*}Y-?n|~gQBPd)@;NAzQw1e^6yU;;3)9N zP&?vJ;^Bys648_)Mz{CBpBSedoE=$q8dWnhK3>%-`ZE0l(<)j&OqeeBQ)`{imk4~K zo&EdMBR$dHXcC~(8uZWO99;EgO|`bZ2p;>4ZLr+t+bnn1I7dCL(=u7BX`-xC2Qhil zJe7xg7Bdfurj14ly%Q?N`)Qa)xmLw`1n;ue;(zi-|&bu?`C2Bf4+MrprFG4yz=8?y|=fso#D7k`0kCYH(0= zC5c+)!c;bDd?$V&j=IQ-J9vQ+e~YXgy@IBTGxU|;39tBIfw-S8YGAF3+;iKNGGr}> z_lPJl;mYHnyTcQD9VnPhVJDSlhDn2wqx*}B{dlSA3UI98JH-5iAx)v1&A5N&(pumv zkjeT2V!7C)Jl|1{E*BUD`QC^I4Y)Pb^EqX%MpK1;+ip5;#ZSxwAAd}@KBEU-25M|O z`hVEZd!MlzoA`DKVU&x-XA=*z=Lq$LuO>T4M?)%)H~I)-Ls+9xgs0;RH6)|e@~plR z9+qsp?8`Cd5vsOc$kvCs*h=W4@nCtJMey?4%!$=5mpH~{wQpav>@ytCUY=c*?x-$w zRn<0G_>@!1q8U<1tM!~j5=s8dP>%UoQTeYGVm_MoOc4|kzU^iQ|68R2m<&H&_uU0* z(Dwx`B3(Pp)=#wFC}b~id);PWpP>UO)vgLk&A<#*z>pVup5zm>K>n)dEjepv#1QRS zR9!nUo73>~-pEdB3=5ZoLcFD;#(fstB{FM14OrQA?x1=x?vevV(k>R|3j%`0Y|jD% z;X5UxB0};ak70O&MMkME%!OQ$b*#u=sQJz8#Yyqu_S%jrrC#@-^5z{TLcz26TsyM# zY`;eU3STiLc>~-b)M$xoeb-Qo+l_`rA{C4Fuve${hE)mxZ5XRS{kX;5p$_KX=&+<_l7+wgN7CftoJ#wWP#eb#FGr@ zf?uQt>iZOl%42gq{u3;dbCgq$pADFMCfcVL`zQMT`g$rj7|6ES(tZ6rtAw_v$5c-Y zd2VaIPONiqa8*yKbd~upzYSanI~#fsbL8)Aw}6*&DO{fcGr>Pj7BB;gZc+vzp-fOf z>L*rqb3NRKlw0-FLB?$Y@JE9hCX2u)FEU7|w8@jkBP1m3MQZYXdVG)R7L-I!gAV2A zltNLyk5d$$+46cs+|wD>*AAL3?h#TeE6JDG(_G+CM8kPwI5c{T9$U=NR$1C?q@NcC zPvQ2BL?!yhfM0lT1Z6hbU2Z9;gHOgS<1W-y9fz3>rIV+h$OOti|BT!HlRQ@Ie2w7Q z`})^1h51(ca>>W_83RI-<<+#rYrj(k^Xr)hC;bbKu^Rg~lU zYCXQH3U0zx65UQQXDEgTv$?pFN%$Zou>IXL)Q+v2X`R$+nx^;bF34lxjt-3ftusuh z>tWWeo~vk-G>)}uXhcJ+r7|-wWJBCSqLX3#LYI&$h>Bfrx>$b-J#RBTm~)g2#>^M? z_l5kH7}?$Dczc1y6kiTeOZwvc$;RdEYci6WUsK|wdg|W%i43g8> zjFBMIh1rjCvG5E?4~`K{mwHQzYgO2PMIWOmT235G3No~A`0iLdu4721i*;k9GB(wR zdWz_>U9xUPUf`|<%yM;g+h#Sx+GIyNBvH@!Z01guTfRA(Mq4VT3%o4PVZlIl2oB(s z-C|^U`JD~57b%7UJ$-A<6A|2ij*gCmL}#8t;^pB&-xeW}FLqU@8avkF7}#YX7Ck;3 zXL(H(D${5=^i{p>qmQ{-{gL(D#Fe1jF|I@muS)uLuUaTSGG9OKK#%AeUSa!H4LEvf z5=QueP_!|`6Ht=&Y%6X~nPr=^6X&A8?=dgV;V5)81W}v)u5_pjMtBfokeqzoexc;m zTV$A6rjMZ&EmbQ;(x;UD!Y~A1WliI;upqM7e53c>iye=luDhjoF}afkihbSP2g@yY zHM0h~)t2M&465ycr0J;{yJE%c=EL>MIq?W+S|$DzfD6t{`$#LjD98R)yc20r`ikC;E~+GxhE%=Lz1!TXb?s{_GrGY7>9Z+A@9hK3|> z=5;CrnfYH_e;Mlqd8_~@yg#ui47eKtxVd6sva3`ARUsSB-I->)zH-H_m3e#$w~*hB zc)b3SCmoCQaPA{K63A;hIxr1ff-q@)9)L;rk3d9##2#>paTtdYiSaO)uDB4bf83JC zf_9Bovn%^E!nxr>t@=~BWd00M`^QXDp4El7nq^3DT&dV6U2(bDi+eg#xzdElJCoG8 zEs6&!v14cMf8Jkiv|KIg{;dsrhrP9?J~=?Vo@DQXLg%7v$Wn?`X@uBuO%yqV;6q{8 zZH;e)qN?BId^l&|mh6MAJz0?;F44Ld-5&B7Z~5Pr^IYRsMw$)4tTC?E2jh(yU&dBe zR?5Y)fO^QQSJ3MdV>!^3YxBCffjOERp zs!FLMo{iUc82AIGz^K4rZ(oDmt0huu^Fum5bOl9(8cGqTp&%+>piQ?lH_u5o3ytVa zBrV=&qfwg3fqnN|&E}=95&cuuy-}3P#V)5+iK*!(lLHn5tOERAgd7ysAViidTFfML z4+5=Z2|Vog%`%30VU-gB5Q);=Fmhsk;yJJ(pk-0`^G_TH>RMU7Wz(;BpcWB%?2n=C zt_ST#ySZP!&zAnlC6Mp%PPC8zS3~^=5QbRWJizJ(YEaTsMuf@A&A4$=>k=g52y$=gs;Q|tJ9BXZOnC*GJ*|(o z*7q~_H)jC3iwkrzeOVC&z7Qx=VHo573L!Bu3ug62UE^WHeJ<}T7WOwc83rS*_C?xA z7Iq@!CyZa62oWtdg<hm!B8SA{sEwrvLum-G;77m`Ms>XzrzkN2>`InLy+NTOZ#`I4xC!B@3=%EHDGI?{80SWeR9Y5t z2xicCirA#j9Iq7>S)ad^c(=`R|AIS!XAz^J%GDT2#ur(jXUK@A_jL3iPAgghvp3QN z;xMdwnfIC^Jk|IHzJ=;9t`}WtnNc* zx2vNb=@=bff{J4Rr#<&e>-q};a^QCb**%0TqhT(#Q%jj(jvgt%9jbwCz;n!U+ zD0Pr<`;}$`2jNOmG9E-_($24IeNDmC^+V6(p;aG z&{R@+?G5Ve$U~>VFgpbWKLSzi*lwZ;?m9~d)_4|fA){eO7v7SYwM zXUiT|o*u8jUN2h6^P~d}6p>jz{@3}hsItBa2vx@hXlYZr?^5UgfaEJnZsFXaP<2Kp zLoiKF1dIYKkf?mI#lwh#?eQCUK8fK3f|cw{4)4QufG_S4ua!(B8HS=OLyUy@TsUj9 z!_JA|apQg&{KOou>Td|7%9p?(%+mE@PaTO;87KEdg&s7ZJ+9d*aEfc~S3b&I0DOyw z2*Q9CLWFM9;D?X30O*ys0f40ROa%lS{9ht)2okN?v*8Xom{Liwbq4x8J3l{O$y6h0 zlbBKDkV4c5(fcI5>Icgq2C?oeP*i^*+jCTX3_O%I9QyNKQv2`3!tU!!(9tCR9HC~a z&pg7h5X=npKq;|**VZok3pBDZ$HU|Sftkye3=Z+x{L6$;XS*Onb`NGAL<)AH6C_I3ov=FdJ|086g67D1geeAzrfYC*6n0?q$o%sM>)AT_~IGVxoe&F!y^@e$ zV}A~^=OomzTHq+>1glKXOJeR4GWi~dkNET-1BmWl5Q$SW;1*4QbcC?|vd}5sYXp$q z8318}bb$--(3+`z@@oGi5K(F8A{P5cEUY@c!MFJPcgzZ+Zhh@a=~}P7DTZ~bqvwXw zFFs*~?=2@!uP>v@+iB4NULyQ`L%T|B5?fv!XHN84#gjuv>QJdw3bZ712XoKg2te(PYceC%V# z3FCI#rVl!`Vsn->9RWUmSB_jQLdd~$${>1L1xC$fxg^M6y6@<69wyy^*g=aJ)$_IpY#@P<(YdFhW*WfDey{{xhdde8s> literal 0 HcmV?d00001 diff --git a/doc/requirements/images/Navigation-System.png b/doc/requirements/images/Navigation-System.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b8c1a9973adc1892a4033c4ea56aa1b1f1e80f GIT binary patch literal 13718 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 literal 0 HcmV?d00001 diff --git a/doc/requirements/images/With-Support-Modules.png b/doc/requirements/images/With-Support-Modules.png new file mode 100644 index 0000000000000000000000000000000000000000..d1cf7b8f4a30962b68481a4c92f3e7a978ab5a34 GIT binary patch literal 46541 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�lKN*1iGtw< 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%0Aru z0c#~8;_5!*@L-Vx0v9U07KSoX1S4R+FA|okAIHX?>y4J>tBx=>H)=9m{u2Rj=l6c) zS0XU`a28-7Jd^$4jUsdFH^t+P_4RsQpi-v8JZXn_{zaw!*?h^mX12>{!sgz+dl(GH z(-ZF(`LU>o?~UjqeIfIO*+S%bWL?X@E~mora>nn>Gqjm_*wD7?Nc?@*-X`J}^07_& f|HS`ozQ|&fc3(cXt~<32zAm0KIg8i7_3-}y!)-o| literal 0 HcmV?d00001 diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index bb833e19a88..b034f1fd1df 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -1,10 +1,8 @@ -![ROS2](../images/ros2-logo.png) - # ROS 2 Navigation System Requirements -The ROS 2 Navigation System ("Navigation System") is the control system that enables a robot to autonomously reach a goal state, such as a specific position and orientation relative to a specific map. Given a current pose, a map, and a goal, such as a destination pose, the navigation system generates a plan to reach the goal, and outputs commands to autonomously drive the robot, respecting any safety constraints and avoiding obstacles encountered along the way. +The ROS 2 Navigation System ("Navigation System") is the control system that enables a robot to autonomously reach a goal state, such as a specific position and orientation relative to a given map. Provided with a current pose, a map, and a goal, such as a destination pose, the Navigation System generates a plan to reach the goal, and outputs control commands to autonomously drive the robot, respecting any safety constraints and avoiding obstacles encountered along the way. -This document lists the requirements for the ROS 2 Navigation System. +This document lists the requirements for the ROS 2 Navigation System. The ROS 2 Navigation System will be a generalization of the ROS 1 navigation stack and will address some of its known limitations. # 1. Introduction @@ -50,44 +48,56 @@ The following use case diagram shows an example of the kinds of operations provi ## 1.3.2 Mission Planning Use Cases -Another area in which the user interacts with the system is in the creation of a mission plan for the robot. The user composes a sequence of primitive functions, such as **Navigate to Position**, **Navigate to Area**, **Wait**, etc., into an overall plan. While mission planning is also outside the scope of the Navigation Stack, the mission plan format should be sufficient to meet the Navigation System requirements listed in this document. +Another area in which the user interacts with the system is in the creation of a mission plan for the robot. The user composes a sequence of primitive functions, such as **Navigate to Pose**, **Navigate to Area**, **Maintain Pose**, etc., into an overall plan. While mission planning is also outside the scope of the Navigation Stack, the mission plan format should be sufficient to meet the Navigation System requirements listed in this document. ![Mission Planning Use Cases](./images/Mission-Planning-Use-Cases.png) ## 1.3.2 Mission Execution Use Cases -The user will be able to initiate the execution of specific mission plans ("missions") and should also be able to view the status of the mission in progress, as well as cancel any mission that is in progress. In addition, the user may be required to provide the robot with its initial location if the robot is not able to determine it automatically. +The user will be able to initiate the execution of specific mission plans ("missions") and should also be able to view the status of the mission in progress, as well as cancel any mission that is in progress. In addition, the user may be required to provide the robot with its initial pose if the robot is not able to determine it automatically. ![Mission Execution Use Cases](./images/Mission-Execution-Use-Cases.png) ## 1.4 Architectural Components -The design of the ROS 2 Navigation System will attempt to generalize the navigation system from ROS 1 and address some of its limitations. While this document does not attempt to define the ROS 2 Navigation System architecture, there are some expected modules that are convenient to call out for the purposes of defining more detailed requirements for the system. It is useful to split these modules into two general categories: those that are involved in the *command chain*, where each level refines its command input into successively more specific operations for the lext level down, and those modules that are *support modules* used by modules in the command chain. +The Navigation System is part of a larger robot software system. This document does not specify the architecture for the complete system, but simply names the various components and subsystems for the purpose of listing their associated requirements. + +The Navigation System has a *command chain*, where each level refines its command input into successively more specific operations for the lext level down, and *support modules* which are used by modules in the command chain. ## 1.4.1 Command Chain The command chain is the sequence of modules that comprise the chain of command from the user, at the top, to the robot, at the bottom. -* **User** - The user interacts with a Mission Planning subsystem to specify a plan for the robot. -* **Mission Planning** - The Mission Planning module provides an interface to the user to allow the user to create mission plans. The resulting plans are available for assignment to robots and subsequent execution. The Mission Planning subsystem is outside the scope of the Navigation System. However, the data format, or messages, required to interact with the subsystem area within scope and must be specified as the Navigation System needs to receive this information to be able to execute the mission plans. -* **Mission Execution** - The Mission Execution module receives the mission plan as input and is responsible to execute it. It can select the appropriate global and local planners to use to perform each primitive maneuver. It also reports back progress on the execution of the mission plan. -* **Global Planning** - The Global Planning module, of which there could be several specialied implementations, use information from the map(s) to determine a route for the robot to achieve its goal. -* **Local Planning** - The Local Planning module, of which there could also be several specialized implementations, uses the defined route from the Global Planner and information from robot sensors to handle any required deviations from the route to achieve its goal. -* **Robot Interface** - The Robot Interface is an abstraction of the robot platform, providing the means to control the robot and learn about its capabilities. There should be a standard set of messages to control the robot and, perhaps, a standard way to determine a robot's capabilities and attributes. This may require a layer on top of the vendor interface. +* **Mission Planning** - Mission Planning provides an interface to the user to allow the user to create mission plans and assign them to robots for execution. A *Mission Plan* is a sequence of *Navigation Commands* along with associated information about how the commands should be carried out. +* **Mission Execution** - Mission Execution receives the Mission Plan and is responsible to execute the plan and report progress on its execution +* **Navigation System** - The Navigation System receives a segment of an overall plan to execute (a *Navigation Command*) and generates the control commands to the robot to carry it out. +* **Robot Interface** - The Robot Interface is an abstraction of the robot platform, providing the means for the Navigation System to control the robot, learn about its capabilities, and receive feedback from the robot. + +![Command Chain](./images/Context.png) + +The Navigation System itself can be decomposed into two general responsibilities, *Planning*, and *Execution*. + +* **Planning** - The Planning Module is responsible to execute Navigation Commands. To do so, this module can evaluate input maps and continually assess the robot's environment to plan motion and provide trajectories for the robot to follow to eventually achieve completion of the Navigation Command. +* **Control** - The Control Module is responsible to execute the trajectories provided by Planning, generating the control signals required to execute the Trajectory. + +![Navigation System](./images/Navigation-System.png) + +Decomposing the Navigation System, the overall command chain is as follows: ![Command Pipeline](./images/Command-Pipeline.png) ## 1.4.2 Support Modules -In addition to the main command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules are all outside the scope of the Navigation System. However, the inteface to these components is in scope and the associated requirements are defined. +In addition to the main command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules is outside the scope of the Navigation System. However, the inteface to these components is in scope and the associated requirements should be defined. -* **Mapping** - The Navigation System uses a map to plan the robot's route. The map contains information about known (static) obstacles in the environment. The map is typically created in advance and is available to the Navigation System. The map can also be dynamically updated, to reflect the current state of the environment. -* **Sensing** - There is a sensing subsystem that can utilize various sensors (and sensor fusion), the goal of which is to develop an understanding of the dynamic environment around the robot. This information is available to the Navigation System, especially the Local Planning module, in directing the robot's motion. -* **Localization** - The Navigation System also needs a Localization module to provide the current location of the robot. +* **Mapping** - The Mapping Subsystem generates maps that can be used by the Navigation System to plan the robot's motion. Maps are typically created in advance and are available to the Navigation System. A map can be updated to reflect changes in the environment. The frequency of these updates will vary among implementations. +* **Perception** - The Perception Subsystem utilizes sensors to develop an understanding of the dynamic environment around the robot. This information is available to the Navigation System in directing the robot's motion. +* **Prediction** - The Prediction Subsystem anticipates future motion trajectories of any perceived objects. +* **Localization** - The Localization Subsystem provides the current location of the robot. -In a complete robot system these modules are utilized by the core navigation modules (the command chain). This document does not specify the architecture for the complete system, but simply names the various comonents and subsystems for the purpose of listing their associated requirements. The information provided by these modules should be available to all of the modules in the command pipeline. +In a complete robot system these modules are available to the core navigation modules (the command chain), as shown in the following diagram: -![Command Pipeline with Support](./images/Command-Pipeline-Support.png) +![Command Pipeline with Support](./images/With-Support-Modules.png) To facilitate error recovery, each module in the chain, if it is unable to carry out its task, its able to propagate error information to its predecessor in the command chain. @@ -95,16 +105,17 @@ To facilitate error recovery, each module in the chain, if it is unable to carry The Navigation System designers should strive to meet the following high-level design goals: -* **Modularity** - The Navigation Stack should allow for other implementers to easily replace architectural level components with alternative implementations, in particular, the global and local planners. -* **Portability** - The Navigation Stack should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. +* **Extensibility** - The Navigation Stack should be a *pluggable framework* to allow for other developers to easily extend the capabilities of the Navigation System. +* **Modularity** - The Navigation Stack should allow other developers to *easily replace components* with alternative implementations. +* **Generality** - The Navigation Stack should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. * **Performance** - *TODO: What are the performance goals?* * **Scalability** - *TODO: How low should the implementation scale?* *Specify a minimum platform?* * *Other important design goals?* In particular, there are several specific goals for the ROS 2 Navigation System with respect to improving the existing ROS navigation stack: -* The global and local planners should be easy to replace and chain together in a dynamic way. For example, a user may want to have a global planner for classic point-A-to-point-B travel, but upon reaching point B, have a special planner then control a series of maneuvers such as docking to a charging station or a conveyor belt. -* The user should be able to plan complex missions which include a series of movements, and the Navigation System should be able to accept those mission plans and execute them. +* The user should be able to plan complex missions which include a series of navigation commands, and the Navigation System should be able to accept those commands and execute them. +* It should be possible to define navigation components for specific navigation commands. In executing a mission plan, the Navigation System would dynamically use the associated components for each navigation command. For example, a user may want to have components for classic point-A-to-point-B travel, but upon reaching point B, have a special components that control a series of maneuvers such as docking to a charging station or a conveyor belt. * The user should be able to specify different types of Robot drive types, such as Ackerman (automobile) steering, and Robot shapes (the current navigation stack is very limited in these areas). * The Navigation System should be able to handle more map types and orientations, including outdoor and 2D+ terrain. @@ -118,32 +129,18 @@ There are various constraints on the development of the ROS 2 Navigation stack. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -IC001 | Developer's Guide | 1 | The Navigation System SHALL be developed in accordance with the ROS 2 Devloper's Guide | [ROS 2 Developer's Guide](https://github.com/ros2/ros2/wiki/Developer-Guide) +IC001 | Developer's Guide | 1 | The Navigation System SHOULD be developed in accordance with the ROS 2 Devloper's Guide | [ROS 2 Developer's Guide](https://github.com/ros2/ros2/wiki/Developer-Guide) IC002 | Implementation Language.C++.Version | 1 | Developers SHALL assume the availability of C++14 language features | Per the ROS 2 Developer's Guide -IC003 | Implementation Language.C++.API Preference | 1 | Developers SHALL prefer standard C++, then Boost, then custom code, in that order. | Boost may be used if equivalent functionality is not already available in the C++ standard library +IC003 | Implementation Language.C++.API Preference | 1 | Developers SHOULD prefer standard C++, then Boost, then custom code, in that order. | Boost may be used if equivalent functionality is not already available in the C++ standard library IC004 | Implementation Language.C++.Supported Compilers.g++ | 1 | The Navigation System code SHALL compile with gcc 5.4 or newer IC004 | Implementation Language.C++.Supported Compilers.Clang | 1 | The Navigation System code SHALL compile with Clang, version *x* IC004 | Implementation Language.C++.Supported Compilers.Intel C++ Compiler | 1 | The Navigation System code SHOULD compile with the Intel C++ Compiler, version *x* | Could be useful for optimization purposes IC005 | Implementation Language.Python.Version | 1 | Any Python code developed for the Navigation System MUST use Python 3 IC006 | Implementation Language.GUI | 1 | Any GUIs developed as part of the Navigation System MUST use the Qt library, via C++ or Python (PyQt) | *Which version?* IC006 | Implementation Language.GUI.QML | 1 | Any GUIs developed as part of the Navigation System MAY use QML +IC007 | ROS2.Version | 1 | The Navigation System WILL be developed against the latest stable version of the ROS 2 stack | *What is the current latest version?* -## 2.2 Development Tools - -This section specifies the development tools and associated targets that will be used for the project. - -Id | Handle | Priority | Description | Notes --- | ------ | -------- | ----------- | ----- -DEV001 | Tools.ROS2.Version | 1 | The Navigation System WILL be developed against the latest stable version of the ROS 2 stack | *What is the current latest version?* -DEV002 | Tools.Unit Test.Library | 1 | *TODO: GTest and GMock?* -DEV003 | Tools.Unit Test.Module Requirements | 1 | *TODO: What are the module level requirements?* -DEV004 | Tools.Static Analysis | 1 | *TODO: What is the static analysis tool to use?* -DEV005 | Tools.Static Analysis.Quality Targets | 1 | *TODO: What are the static analysis targets?* -DEV006 | Tools.Dynamic Analysis | 1 | *TODO: What dynamic analysis tool(s) to use?* -DEV007 | Tools.Dynamic Analysis.Code Coverage Targets | 1 | *TODO: What are the code coverage targets?* -DEV008 | Tools.Dynamic Analysis.Memory Checking | 1 | *TODO: What is/are the memory checking tool(s) to use?* - -## 2.3 Target Platforms +## 2.2 Target Platforms The Navigation System will run on the latest versions of the operating systems supported by the core ROS 2 code. @@ -156,23 +153,29 @@ PLT004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation Sys PLT005 | Target Platforms.CPU.Word Size | 1 | The Navigation System SHALL support 64-bit processors | Don't assume a specific pointer size PLT006 | Target Platforms.Minimum Platform | 1 | *Should we specify a minimum target platform?* *Or, should this be expressed as minimum platform requirements?* -## 2.4 Command Chain Modules +## 2.3 Command Chain Modules This section lists the requirements for the core command chain modules in the Navigation System. -### 2.4.1 Mission Planning +### 2.3.1 Mission Planning + +TODO: -A complete system, which incorporates the Navigation System, would also have a Mission Planning subsystem that generates a Mission Plan from input provided by the User. The Mission Plan is a sequence of primitive operations and any associated policy about how the plan should be carried out. The design and implementation of the subsystem that creates the Mission Plan is outside the scope of the Navigation System, but its output, the Mission Plan, has a direct relationship to the capabilities that the Navigation System must provide. +The Mission Planning subsystem is outside the scope of the Navigation System. However, the data format, or messages, required to interact with the subsystem area within scope and must be specified as the Navigation System needs to receive this information to be able to execute the mission plans. + +A complete system, which incorporates the Navigation System, would also have a Mission Planning subsystem that generates a Mission Plan from input provided by the User. The Mission Plan is a sequence of primitive operations and any associated policy about how the plan should be carried out. The design and implementation of the subsystem that creates the Mission Plan is outside the scope of the Navigation System, but its output, the Mission Plan, may have an impact on capabilities that the Navigation System must provide. + +*TODO: Rephrase using "mission plan" terminology rather than taking the robot's perspective* Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- MP001 | Mission Planning.Primitives | 1 | The Mission Plan MUST be able to express the plan as a sequence of the following Primitives (MP002 - MP010) -MP002 | Mission Planning.Primitives.Navigate to Position | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a specified destination pose. +MP002 | Mission Planning.Primitives.Navigate to Pose | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a specified destination pose. MP003 | Mission Planning.Primitives.Navigate to Area | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a specified area. | *TODO: How to define "area"?* MP004 | Mission Planning.Primitives.Enqueue | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a position behind another specified robot. MP005 | Mission Planning.Primitives.Follow | 1 | The Navigation System MUST be able to direct the Robot to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies some more information such as "follow until destination reached" MP006 | Mission Planning.Primitives.Orbit | 1 | *TODO: How is this defined?* | Similar to Follow in that it doesn't complete (unless it specifies time) -MP007 | Mission Planning.Primitives.Wait | 1 | The Navigation System MUST be able to idle at the current location until directed otherwise +MP007 | Mission Planning.Primitives.Maintain Pose | 1 | The Navigation System MUST be able to maintain its current pose | Could be indefinite or time-based MP008 | Mission Planning.Primitives.Park | 1 | *TODO: What does parking mean? Some low-power state?* MP009 | Mission Planning.Primitives.Enter Elevator | 1 | The Navigation System MUST be able to navigate the Robot from its current location onto an elevator. | *TODO: Would the elevator door be automated?* MP010 | Mission Planning.Primitives.Exit Elevator | 1 | The Navigation System MUST be able to navigate the Robot from its position in an elevator to a specified location outside the elevator. @@ -184,9 +187,9 @@ MP015 | Mission Planning.Policy.Safety Constraints.Minimum Safety Buffer | 1 | T *TODO: How to handle reverse direction? Does each primitive include this information?* -### 2.4.2 Mission Execution +### 2.3.2 Mission Execution -The Mission Execution module has the responsibility to execute a provided mission. It provides each successive primitive operation to the global planner, monitoring and reporting progress towards the goal. This is similar to the current navigation stack's **move_base** module. +The Mission Execution module has the responsibility to execute a provided mission. It provides each successive primitive operation to the global planner, monitoring and reporting progress towards the goal. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- @@ -197,55 +200,70 @@ ME004 | Mission Execution.Select Planners | 1 | The Mission Execution module SHO ME005 | Mission Execution.Outputs | 1 | At each stage of the Mission Plan, the Mission Execution module SHALL output the next primitive to execute and WILL monitor for completion of each primitive before sending the next. | Tracks completion of the mission and sequences the operations. *TODO: What about primitives that don't complete? Would they be defined with a time element so that they can complete?* ME006 | Mission Execution.Feedback.Outputs.Notify Progress | 1 | The Mission Execution module MUST provide progress notifications on the execution of the mission, including mission completion. | The current stack, once it reaches a goal, publishes a message. This would be a generalization of that feature. We can determine the elapsed time using the message timestamp. ME007 | Mission Execution.Logging | 1 | The Mission Execution module SHOULD log activity for later analysis. | In case of forensic analysis of a safety event, for example. -ME008 | Mission Execution.Feedback.Inputs.Error Notification.Automatic Error Recovery | 1 | Upon receipt of a downstream failure (from a Global Planner), the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Mission Execution module could have the robot perform a recovery maneuver of some kind, before continuing with execution of the mission plan. +ME008 | Mission Execution.Feedback.Inputs.Error Notification.Automatic Error Recovery | 1 | Upon receipt of a downstream failure (from a Planner), the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Mission Execution module could have the robot perform a recovery maneuver of some kind, before continuing with execution of the mission plan. ME009 | Mission Execution.Feedback.Outputs.Error Information | 1 | If the Mission Execution module is unable to execute the mission, it MUST report the failure | This would be received by the higher-level software. Perhaps a remote operating center where the remote operator "rescues" the robot. ME010 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST direct the robot to a safe state. | *TODO: Define "safe state"* The failure could be for a variety of reasons - sensor failures, algorithmic failure, a collision, etc. -### 2.4.3 Global Planning +### 2.3.3 Routing + +The Routing Module computes the intended route for the robot, typically using a map, the robot's initial pose, and the desired primitive to execute. + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +GP001 | Routing | 1 | The Navigation System SHOULD have a Routing Module which generates the route for the robot to follow for the specified primitive, respecting any policy guidance contained in the Mission Plan +GP002 | Routing.Inputs.Map | 1 | The Routing Module SHALL have a map available that describes the environment | Assumes the map has already been created and available as an input +GP003 | Routing.Inputs.Current Pose | 1 | The Routing Module MUST have the robot's current pose | The pose could be be provided manually or automatically determined (outside of this module) +GP004 | Routing.Inputs.Primitive to Execute | 1 | The Routing Module SHALL have the primitive operation to execute +GP005 | Routing.Inputs.Policy | 1 | The Routing Module SHALL have policy guidance associated with the primitive operation to execute | This could be global policy and/or per-primitive policy +GP009 | Routing.Inputs.Policy.Conventions | 1 | *TODO: Should there be a specification of conventions for the robot to follow? Navigate on the right side of a path, for example.* +GP012 | Routing.Outputs.Route | 1 | The Path Planning Module should output a route that the robot is to follow to execute the primitive +GP013 | Routing.Outputs.Policy Attributes | 1 | *TODO: Should there be attributes associated, such as time to be at particular waypoints?* + +*TODO: Routing Plugins* +GP006 | Routing.Multiple Planners | 1 | As part of the Navigation System, there SHOULD be multiple global planners available and chosen depending on the primite to be executed | Dynamic selection of global planners +GP007 | Routing.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing global planners +GP008 | Routing.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing global planners +*TODO: Well documented, examples* + +GP010 | Routing.Feedback.Inputs | 1 | The Planner MUST receive error input from the Planning Module so that it can attempt to recover from planning failures | For example, if a planner can't execute the route because it is blocked, the global planner has an opportunity to define an alternative route +GP011 | Routing.Feedback.Outputs | 1 | If the Planner is unable to define a route to its goal state, it SHALL report the error on its feedback output + +### 2.3.4 Planning -The Global Planning module compute the intended route for the robot, typically using a static map, the robot's initial pose, and the desired primitive to execute. +The Planning Module receives the route from the Routing Module and is responsible to carry it out. To do so, it evaluates the dynamic environment using input from the Perception Subsystem, possibly making local adjustments to the route, such as when avoiding collisions with objects crossing its path. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -GP001 | Global Planning | 1 | The Navigation System SHOULD have a Global Planning module which generates the route for the robot to follow for the specified primitive, respecting any policy guidance contained in the Mission Plan | Could use pluggable cost functions -GP002 | Global Planning.Inputs.Static Map | 1 | The Global Planner SHALL have a static map available that describes the environment | Assumes the map has already been created and available as an input -GP003 | Global Planning.Inputs.Current Pose | 1 | The Global Planner SHALL have the robot's current pose | The pose could be be provided manually or automatically determined (outside of this module) -GP004 | Global Planning.Inputs.Primitive to Execute | 1 | The Global Planner SHALL have the primitive operation to execute -GP005 | Global Planning.Inputs.Policy | 1 | The Global Planner SHALL have policy guidance associated with the primitive operation to execute | This could be global policy and/or per-primitive policy -GP006 | Global Planning.Multiple Global Planners | 1 | As part of the Navigation System, there SHOULD be multiple global planners available and chosen depending on the primite to be executed | Dynamic selection of global planners -GP007 | Global Planning.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing global planners -GP008 | Global Planning.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing global planners -GP009 | Global Planning.Conventions | 1 | *TODO: Should there be a specification of conventions for the robot to follow? Navigate on the right side of a path, for example.* -GP010 | Global Planning.Feedback.Inputs | 1 | The Global Planner MUST receive error input from the Local Planner so that it can attempt to recover | For example, if a local planner can't execute the route, because it is blocked, the global planner has an opportunity to define an alternative route -GP011 | Global Planning.Feedback.Outputs | 1 | If the Global Planner is unable to define a route to its goal state, it SHALL report the error on its error output channel -GP012 | Global Planning.Outputs.Route | 1 | The Global Planning module should output a route that the robot is to follow to execute the primitive | *TODO: Should there be attributes associated, such as time to be at particular waypoints?* - -### 2.4.4 Local Planning - -The Local Planning module receives the route from the Global Planner and is responsible to carry it out. To do so, it evaluates the dynamic environment using input from the sensory subsystem and possibly makes local adjustments to the route, such as when avoiding collisions with objects crossing its path. +LP001 | Planning | 1 | The Navigation System SHOULD have a Planning Module which carries out the route provided by the Planner +LP002 | Planning.Inputs.Route | 1 | The Planning Module MUST receive the Route from the Path Planning Module. +LP003 | Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Planning Module MUST support negative velocity values +LP004 | Planning.Inputs.Policy | 1 | The Planning Module MUST receive any policy information which could inform its planning +LP005 | Planning.Inputs.Sensory Input | 1 | The Planning Module MUST receive object-level data from the Sensory Subsystem +LP016 | Planning.Outputs | 1 | The Planning Module interfaces to the robot to command its actuators. | TBD if this is through an abstraction of the robot or directly to a vendor's interface. + +LP006 | Planning.Collision Avoidance.Avoid Stationary Objects | 1 | The Robot MUST avoid colliding into stationary objects in its environment | Fixed parts of the environment, such as walls or shelving. +LP007 | Planning.Collision Avoidance.Avoid Stationary Objects.*Qualities* | 1 | *TODO: How close can it come? Does it depend on the robot's speed?* +LP008 | Planning.Collision Avoidance.Avoid Moving Objects | 1 | The Robot MUST avoid colliding into moving objects that intercept its path | Such as people and other robots +LP009 | Planning.Collision Avoidance.Avoid Moving Objects.*Qualities* | 1 | *TODO: How close can it come? Does it depend on the robot speed?* +LP010 | Planning.Collision Avoidance.Parameters | 1 | *TODO: Any specific parameters foer the collision avoidance? Perhaps different global values for object-specific properties in the environment.* +LP011 | Planning.Collision Detection | 1 | *TODO: What module first detects if there has been a collision?* Some way of detecting if a collision has occurred within some low latency (50ms?). This could be additional HW such as bumpers (like Turtlebot has), or other sensor input such as wheel feedback +LP012 | Planning.Collision Reporting | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* +LP013 | Planning.Collision Recovery | 1 | The Planning Module MUST provide a way to recover from collisions | Like back up slowly, notify user, etc., which could be configurable based on the robot/environment/application +LP014 | Planning.Feedback.Inputs | 1 | TODO | Could be failures from the sensors, for example +LP015 | Planning.Feedback.Outputs | 1 | TODO | Could provide failure to execute the route. Perhaps the passageway is blocked, for example + +### 2.3.5 Control + +*TODO: The Control Module ... Bottom half of the Local Planner (Planning)* Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -LP001 | Local Planning | 1 | The Navigation System SHOULD have a Local Planning module which carries out the route provided by the Global Planner -LP002 | Local Planning.Inputs.Route | 1 | The Local Planning module MUST receive the Route from the Global Planning module. -LP003 | Local Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Local Planning module MUST support negative velocity values -LP004 | Local Planning.Inputs.Policy | 1 | The Local Planning module MUST receive any policy information which could inform its planning -LP005 | Local Planning.Inputs.Sensory Input | 1 | The Local Planning module MUST receive object-level data from the Sensory Subsystem -LP006 | Local Planning.Collision Avoidance.Avoid Stationary Objects | 1 | The Robot MUST avoid colliding into stationary objects in its environment | Fixed parts of the environment, such as walls or shelving. -LP007 | Local Planning.Collision Avoidance.Avoid Stationary Objects.*Qualities* | 1 | *TODO: How close can it come? Does it depend on the robot's speed?* -LP008 | Local Planning.Collision Avoidance.Avoid Moving Objects | 1 | The Robot MUST avoid colliding into moving objects that intercept its path | Such as people and other robots -LP009 | Local Planning.Collision Avoidance.Avoid Moving Objects.*Qualities* | 1 | *TODO: How close can it come? Does it depend on the robot speed?* -LP010 | Local Planning.Collision Avoidance.Parameters | 1 | *TODO: Any specific parameters foer the collision avoidance? Perhaps different global values for object-specific properties in the environment.* -LP011 | Local Planning.Collision Detection | 1 | *TODO: What module first detects if there has been a collision?* Some way of detecting if a collision has occurred within some low latency (50ms?). This could be additional HW such as bumpers (like Turtlebot has), or other sensor input such as wheel feedback -LP012 | Local Planning.Collision Reporting | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* -LP013 | Local Planning.Collision Recovery | 1 | The Local Planning module MUST provide a way to recover from collisions | Like back up slowly, notify user, etc., which could be configurable based on the robot/environment/application -LP014 | Local Planning.Feedback.Inputs | 1 | TODO | Could be failures from the sensors, for example -LP015 | Local Planning.Feedback.Outputs | 1 | TODO | Could provide failure to execute the route. Perhaps the passageway is blocked, for example -LP016 | Local Planning.Outputs | 1 | The Local Planning module interfaces to the robot to command its actuators. | TBD if this is through an abstraction of the robot or directly to a vendor's interface. - -### 2.4.5 Robot Interface +CTL001 | Control | 1 | The Navigation System SHOULD have a Control Module which TODO + +### 2.3.6 Robot Interface *TODO: What to say about the robot interface?* *Should there be a robot abstraction?* *Perhaps this would be a convenient place to put some safety-related functionality* +There should be a uniform interface to the various supported robots. This may require a layer on top of the vendor-specific interface(s). Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- @@ -257,17 +275,17 @@ ROB005 | Robot Interface.Safety.Force Limiting | 1 | TODO ROB006 | Robot Interface.EMO Button | 1 | TODO ROB007 | Robot Interface.Feedback.Outputs | 1 | TODO -## 2.5 Support Modules +## 2.4 Support Modules There are a few support modules and subsystems that are not part of the Navigation System proper, but are necessary components in a complete system. The Navigation System depends on the data interfaces to these components. This section describes the requirements and assumptions of these interface. -### 2.5.1 Mapping +### 2.4.1 Mapping The map data format should be capable of describing common indoor and outdoor environments. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System | So that the Mapping System has a basic understanding of its static environment. Used in global planning +MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System | So that the Mapping System has a basic understanding of its environment. Used in global planning MAP002 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information MAP003 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information | *TODO: How is this defined?* MAP004 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information | *TODO: Use voxel-based?* @@ -284,7 +302,7 @@ MAP014 | Mapping.Data Model.Building Levels.Level Connecting Features | 1 | Able MAP015 | Mapping.Data Model.Unknown Space | 1 | To be dynamically mapped? In global maps, it can be areas beyond the edge of the map, or areas within the center of the map for which we didn't have any observations during map building. In the current system, this is the "dark grey" portion of the map (free space is light grey, obstacles are black) MAP016 | Mapping.Data Model.Extensibility | 1 | *TODO: Map attributes. Layers concept?* -### 2.5.2 Sensing +### 2.4.2 Perception The Navigation System requires dyanamic information about objects in its environment. This information is provided by a Sensory Subsystem that is outside the scope of the Navigation System. This information would typically be provided by a set of sensors on the robot and a sensor fusion capability. This section lists the requirements on the data that the Sensory Subsystem provides. @@ -296,7 +314,15 @@ SEN003 | Sensing.Environment Model | 1 | *TODO: What, specifically, should be in SEN004 | Sensing.Environment Model.Object Prediction | 1 | The Sensing Subsystem SHOULD provide an object prediction capability that projects the position of the objects into the future. | One of the biggest shortcomings of the current system is the inability to model/predict where obstacles will be in the future. This leads to collisions with other moving objects SEN005 | Sensing.Environment Model.Object Prediction.Time Horizon | 1 | *TODO: How far into the future should the object prediction work?* -### 2.5.5 Localization +### 2.4.3 Prediction + +The Prediction Subsystem TODO + +Id | Handle | Priority | Description | Notes +-- | ------ | -------- | ----------- | ----- +PRE001 | Localization.Robot Pose | 1 | TDOO + +### 2.4.4 Localization The Navigation System requires the Robot's current pose, provided by an external Localization module. This section lists the requirements for the information from the Localization module. @@ -304,3 +330,50 @@ Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- LOC001 | Localization.Robot Pose | 1 | The Localization module MUST provide the robot's current pose to the Navigation System | This could be manual or as a result of automatic localization; the Navigation System wouldn't know either way LOC002 | Localization.Robot Pose.Accuracy | 1 | *TODO: What are the requirements on the accuracy of this pose?* + + +1 1 + +TODO: + +DONE: (mikefurgeson) Should we try to move away from calling this "static map" -- a common use case would be running navigation at the same time as mapping -- to explore the environment. In this case, the map isn't "static" but rather slowly changing. In particular, the important part is that the map must have some "constant reference frame" even as it changes over time (for instance, you can arbitrarily move 0,0 and expect things to still work, but if you add onto the map at runtime, the system should be able to handle it). + +(mikeferguson) Ideally, this module should also be extremely well commented and documented, such that it can be used as a teaching tool -- I presume it will be a fairly straight forward A* implementation, which means it can be easily understood by students and adapted during various coursework. + +(mike furgeson) In supporting this, I think you'll find that you also want to make it easy to "reset or disable" a planner. Most of these planners may have large memory usage, and for efficiency may not want to recreate them for each plan -- if you have multiple running at once, each taking up memory, you might actually run out of memory quickly. Having an easy API to say "hey, not using this planner for a while, have it release resources" would be very useful. + +Mapping: (mikefurgeson) Any thoughts around tiling? Especially for out-of-memory situations? Yes, we do this for Automotive + +Localization: (mikefurgeson) This won't be exact -- so it should also provide an estimate of the accuracy (current navigation stack can't take that into account, but future local planners certainly could). The current message is PoseWithCovariance to accomplish this in ROS1. + +Turtlebot image: (Carl) + +MP002: (Carl) What if the planner can't find a path? Then we can't meet this requirement. Should be rephrased to allow for failure (and the resulting reporting of failure) + +MP004,MP005: (Carl) This requires a much more complicated understanding of the world than I think we want to incorporate into the navstack. It implies we can identify what things in the environment are robots and distinguish a particular one even as it moves around in traffic, possibly goes out of view etc. (mikefurgeson) I concur -- this should provide a tool for generic navigation, and higher level "applications" would then call into the navigation stack. (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? + +MP006: (Carl) Orbit what? I can see potentially orbitting a fixed position in the world. Orbitting an object seems outside our scope. + +MP007: (Carl) Could this just be reduced to not having a specified objective? What would the robot do if it isn't given a wait primitive? (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. HoldPose may also be considered to be out of scope for Nav stack. The robot's base controller should take care of holding the pose. + +MP008: (Carl) Going to a low power state seems out of scope for the navstack. + +MP001: (mikefurgeson) I understand the desire to be able to "plan several legs of a trip at once, so if one is impassable you don't start the trip at all", but I feel like that is fairly incongruent with how actions typically are implemented. I know actionlib isn't implemented in ROS2 yet, but the issue I see arising is: how do you cancel part way through? + +MP009: (Carl) Why is this a special primitive? Can't "go to area" suffice? (Me) I'm not sure. We'd have to capture that the floor isn't always present, at least. It can't be freely navigated into. + +MP010: (Carl) Can't we just use go to location/area to get out of the elevator. (Me) I think we need to consider how to handle elevators and other kinds of lifts, where the mechanism has various states. If there's an external controller that's handling the elevator doors, etc., the Execution mechanism for the robot needs to at least feedback that it's ready to enter (or exit) an elevator and wait for the go-head. I think we should mock up some example mission plans and work through these issues. + +MP012: (Carl) How would this work? What if we can't meet the time requirement? Do we need to calculate out the ETA before starting so we can throw an error as soon as the command is given? What happens if the time constraint is much greater than required? Do we slow down or wait somewhere? (Me) Good questions. For me, the first question is whether it is important to introduce time-related requirements into the mission plan or not. If so, we'll have to address the issues that you mention. Would be good to get input from users. + +Mapping Use Cases: (Mohammad) Suggestion: "The user will typically either manually create a map or uses SLAM algorithm to create a map of the area in which the robot is to navigate." +Suggestion: Changing the phrase "known obstacles" to "known static obstacles". + +DONE: Mission Planning Use Cases: (Mohammad) Changing the phrase "Navigate to Position" to either "Navigate to Position and Orientation" or "Navigate to Pose" + +DONE: Mission Execution Use Cases: (Mohammad) We might want to change the phrase "initial location" to "initial pose" which includes both position and orientation. + +DONE: GP003: (Mohammad) The Global Planner "MUST" have the robot's current pose. + +MP005: (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? + +DONE: MP007: (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. \ No newline at end of file From d0e5ec08a78aea0b1ab850bbef02013102fb0651 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Fri, 6 Jul 2018 15:05:28 -0700 Subject: [PATCH 03/27] Update Mission Planning and Execution sections --- doc/requirements/requirements.md | 83 +++++++++++++++----------------- 1 file changed, 38 insertions(+), 45 deletions(-) diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index b034f1fd1df..f928a72d540 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -48,7 +48,7 @@ The following use case diagram shows an example of the kinds of operations provi ## 1.3.2 Mission Planning Use Cases -Another area in which the user interacts with the system is in the creation of a mission plan for the robot. The user composes a sequence of primitive functions, such as **Navigate to Pose**, **Navigate to Area**, **Maintain Pose**, etc., into an overall plan. While mission planning is also outside the scope of the Navigation Stack, the mission plan format should be sufficient to meet the Navigation System requirements listed in this document. +Another area in which the user interacts with the system is in the creation of a mission plan for the robot. The user composes a sequence of primitive functions, such as **Navigate to Pose**, **Navigate to Area**, **Maintain Pose**, etc., into an overall plan. While mission planning is also outside the scope of the Navigation System, the mission plan format should be sufficient to meet the Navigation System requirements listed in this document. ![Mission Planning Use Cases](./images/Mission-Planning-Use-Cases.png) @@ -105,9 +105,9 @@ To facilitate error recovery, each module in the chain, if it is unable to carry The Navigation System designers should strive to meet the following high-level design goals: -* **Extensibility** - The Navigation Stack should be a *pluggable framework* to allow for other developers to easily extend the capabilities of the Navigation System. -* **Modularity** - The Navigation Stack should allow other developers to *easily replace components* with alternative implementations. -* **Generality** - The Navigation Stack should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. +* **Extensibility** - The Navigation System should be a *pluggable framework* to allow for other developers to easily extend the capabilities of the Navigation System. +* **Modularity** - The Navigation System should allow other developers to *easily replace components* with alternative implementations. +* **Generality** - The Navigation System should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. * **Performance** - *TODO: What are the performance goals?* * **Scalability** - *TODO: How low should the implementation scale?* *Specify a minimum platform?* * *Other important design goals?* @@ -133,12 +133,12 @@ IC001 | Developer's Guide | 1 | The Navigation System SHOULD be developed in acc IC002 | Implementation Language.C++.Version | 1 | Developers SHALL assume the availability of C++14 language features | Per the ROS 2 Developer's Guide IC003 | Implementation Language.C++.API Preference | 1 | Developers SHOULD prefer standard C++, then Boost, then custom code, in that order. | Boost may be used if equivalent functionality is not already available in the C++ standard library IC004 | Implementation Language.C++.Supported Compilers.g++ | 1 | The Navigation System code SHALL compile with gcc 5.4 or newer -IC004 | Implementation Language.C++.Supported Compilers.Clang | 1 | The Navigation System code SHALL compile with Clang, version *x* -IC004 | Implementation Language.C++.Supported Compilers.Intel C++ Compiler | 1 | The Navigation System code SHOULD compile with the Intel C++ Compiler, version *x* | Could be useful for optimization purposes -IC005 | Implementation Language.Python.Version | 1 | Any Python code developed for the Navigation System MUST use Python 3 -IC006 | Implementation Language.GUI | 1 | Any GUIs developed as part of the Navigation System MUST use the Qt library, via C++ or Python (PyQt) | *Which version?* -IC006 | Implementation Language.GUI.QML | 1 | Any GUIs developed as part of the Navigation System MAY use QML -IC007 | ROS2.Version | 1 | The Navigation System WILL be developed against the latest stable version of the ROS 2 stack | *What is the current latest version?* +IC005 | Implementation Language.C++.Supported Compilers.Clang | 1 | The Navigation System code SHALL compile with Clang, version *x* +IC006 | Implementation Language.C++.Supported Compilers.Intel C++ Compiler | 1 | The Navigation System code SHOULD compile with the Intel C++ Compiler, version *x* | Could be useful for optimization purposes +IC007 | Implementation Language.Python.Version | 1 | Any Python code developed for the Navigation System MUST use Python 3 +IC008 | Implementation Language.GUI | 1 | Any GUIs developed as part of the Navigation System MUST use the Qt library, via C++ or Python (PyQt) | *Which version?* +IC009 | Implementation Language.GUI.QML | 1 | Any GUIs developed as part of the Navigation System MAY use QML +IC010 | ROS2.Version | 1 | The Navigation System WILL be developed against the latest stable version of the ROS 2 stack | *What is the current latest version?* ## 2.2 Target Platforms @@ -159,55 +159,46 @@ This section lists the requirements for the core command chain modules in the Na ### 2.3.1 Mission Planning -TODO: - -The Mission Planning subsystem is outside the scope of the Navigation System. However, the data format, or messages, required to interact with the subsystem area within scope and must be specified as the Navigation System needs to receive this information to be able to execute the mission plans. - -A complete system, which incorporates the Navigation System, would also have a Mission Planning subsystem that generates a Mission Plan from input provided by the User. The Mission Plan is a sequence of primitive operations and any associated policy about how the plan should be carried out. The design and implementation of the subsystem that creates the Mission Plan is outside the scope of the Navigation System, but its output, the Mission Plan, may have an impact on capabilities that the Navigation System must provide. - -*TODO: Rephrase using "mission plan" terminology rather than taking the robot's perspective* +A complete system would have some kind of Mission Planning subsystem to convey the user's intentions to the robot. The User interacts with this Mission Planning subsystem to generate a Mission Plan for the robot. The Mission Plan is defined as a sequence of navigation commands and any associated information about how and when the plan should be carried out. The design and implementation of a Mission Planning subsystem is outside the scope of the Navigation System. However, in order to understand the larger system context and how Mission Planning interacts with the Navigation System, this section will consider the nature of a mission plan and the kinds of operations it may contain. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -MP001 | Mission Planning.Primitives | 1 | The Mission Plan MUST be able to express the plan as a sequence of the following Primitives (MP002 - MP010) -MP002 | Mission Planning.Primitives.Navigate to Pose | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a specified destination pose. -MP003 | Mission Planning.Primitives.Navigate to Area | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a specified area. | *TODO: How to define "area"?* -MP004 | Mission Planning.Primitives.Enqueue | 1 | The Navigation System MUST be able to navigate the Robot from its current location to a position behind another specified robot. -MP005 | Mission Planning.Primitives.Follow | 1 | The Navigation System MUST be able to direct the Robot to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies some more information such as "follow until destination reached" -MP006 | Mission Planning.Primitives.Orbit | 1 | *TODO: How is this defined?* | Similar to Follow in that it doesn't complete (unless it specifies time) -MP007 | Mission Planning.Primitives.Maintain Pose | 1 | The Navigation System MUST be able to maintain its current pose | Could be indefinite or time-based -MP008 | Mission Planning.Primitives.Park | 1 | *TODO: What does parking mean? Some low-power state?* -MP009 | Mission Planning.Primitives.Enter Elevator | 1 | The Navigation System MUST be able to navigate the Robot from its current location onto an elevator. | *TODO: Would the elevator door be automated?* -MP010 | Mission Planning.Primitives.Exit Elevator | 1 | The Navigation System MUST be able to navigate the Robot from its position in an elevator to a specified location outside the elevator. -MP011 | Mission Planning.Policy | 1 | The Mission Plan MUST be able to express the following policy associated with how to carry out the mission (MP012 - MP015)| *What are the important qualities for how the primitives should be carried out? Should there be per-primitive policy?* -MP012 | Mission Planning.Policy.Timeliness | 1 | The Navigation System MUST respect any timeliness constraints in the Mission Plan | *TODO: Is it important to specify by when the mission should be completed, for example?* -MP013 | Mission Planning.Policy.Safety Constraints | 1 | The Navigation System MUST respect any safety constraints in the Mission Plan | *TODO: Is there a set of global safety-related policy for the robot to follow?* -MP014 | Mission Planning.Policy.Safety Constraints.Maximum Speed | 1 | The Navigation System MUST respect the maximum speed specified in the Mission Plan -MP015 | Mission Planning.Policy.Safety Constraints.Minimum Safety Buffer | 1 | The Navigation System MUST maintain a minimum safe distance between the robot and other objects at all times, as specified int he Mission Plan | Configurable safety zone around the robot. *TODO: Variable with speed? Differ in each direction?* - -*TODO: How to handle reverse direction? Does each primitive include this information?* +MP001 | Mission Planning.Navigation Commands | 1 | The Mission Plan MUST be able to express the plan as a coordinated sequence of Navigation Commands. | Could include time and policy aspects (*when* and *how*, not just *what*) +MP002 | Mission Planning.Navigation Commands.Composition | 1 | The Mission Plan SHOULD allow for the composition and naming of new Navigation Commands from a sequence of previously-defined Navigation Commands. | Build up levels of abstraction. For example, Enter-Elevator could be expressed as Navigate-to-Pose (right outside of elevator), Wait (for door to open), Navigate-to-Pose (inside the elevator) +MP003 | Mission Planning.Navigation Commands.Navigate to Pose | 1 | The Mission Plan MUST be able to convey the information required for a robot to navigate from its current location to a specific destination pose. +MP004 | Mission Planning.Navigation Commands.Navigate to Area | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a specific area. | An "area" could be a rectangular region or a more complex shape +MP005 | Mission Planning.Navigation Commands.Enqueue | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a position behind another specified robot. +MP006 | Mission Planning.Navigation Commands.Follow | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to be able to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies additional information such as "follow until destination reached" +MP007 | Mission Planning.Navigation Commands.Maintain Pose | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to maintain its current pose. | Could be indefinite or time-based +MP008 | Mission Planning.Navigation Commands.Park | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to park itself. | Presumably after Navigation-to-Pose *TODO: What does parking mean? Does the robot also enter some low-power state?* +MP009 | Mission Planning.Policy | 1 | The Mission Plan SHOULD be able to express information about how and when the navigation commands are to be carried out. | *What are the important qualities for how the primitives should be carried out? For example, time and safety constraints.* +MP010 | Mission Planning.Policy.Time.Initiation | 1 | The Mission Plan SHOULD be able to convey when a mission should begin. +MP011 | Mission Planning.Policy.Time.Completion | 1 | The Mission Plan SHOULD be able to convey by when a mission should end. +MP012 | Mission Planning.Policy.Safety.Maximum Speed | 1 | The Mission Plan SHOULD be able to convey a maximum speed for the robot. | The robot would respect this value in carrying out the plan. This could be site-specific policy. +MP013 | Mission Planning.Policy.Safety.Minimum Safety Buffer | 1 | The Mission Plan SHOULD be able to convey a minimum safety buffer distance. | The robot would respect this value and maintain the distance from other objects at all times. *TODO: Variable with speed? Differ in each direction?* ### 2.3.2 Mission Execution -The Mission Execution module has the responsibility to execute a provided mission. It provides each successive primitive operation to the global planner, monitoring and reporting progress towards the goal. +The Mission Execution module has the responsibility to execute a provided mission. It provides each successive Navigation Command operation to the Navigation Subsystem, monitoring and reporting progress towards the goal. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- ME001 | Mission Execution.Inputs.Mission Plan | 1 | The Mission Execution module MUST accept the Mission Plan to execute. -ME002 | Mission Execution.Inputs.Commands.Execute Mission | 1 | The Mission Execution module MUST execute the provided Mission Plan, respecting any specified constraints. -ME003 | Mission Execution.Inputs.Commands.Cancel Mission | 1 | The Mission Execution module MUST be able to interrupt the Robot's navigation and cancel the current mission. -ME004 | Mission Execution.Select Planners | 1 | The Mission Execution module SHOULD select the best planners to use for each mission primitive | Can dynamically utilize planners -ME005 | Mission Execution.Outputs | 1 | At each stage of the Mission Plan, the Mission Execution module SHALL output the next primitive to execute and WILL monitor for completion of each primitive before sending the next. | Tracks completion of the mission and sequences the operations. *TODO: What about primitives that don't complete? Would they be defined with a time element so that they can complete?* -ME006 | Mission Execution.Feedback.Outputs.Notify Progress | 1 | The Mission Execution module MUST provide progress notifications on the execution of the mission, including mission completion. | The current stack, once it reaches a goal, publishes a message. This would be a generalization of that feature. We can determine the elapsed time using the message timestamp. -ME007 | Mission Execution.Logging | 1 | The Mission Execution module SHOULD log activity for later analysis. | In case of forensic analysis of a safety event, for example. -ME008 | Mission Execution.Feedback.Inputs.Error Notification.Automatic Error Recovery | 1 | Upon receipt of a downstream failure (from a Planner), the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Mission Execution module could have the robot perform a recovery maneuver of some kind, before continuing with execution of the mission plan. -ME009 | Mission Execution.Feedback.Outputs.Error Information | 1 | If the Mission Execution module is unable to execute the mission, it MUST report the failure | This would be received by the higher-level software. Perhaps a remote operating center where the remote operator "rescues" the robot. -ME010 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST direct the robot to a safe state. | *TODO: Define "safe state"* The failure could be for a variety of reasons - sensor failures, algorithmic failure, a collision, etc. +ME002 | Mission Execution.Inputs.Commands.Execute Mission | 1 | When commanded to do so, the Mission Execution module MUST execute the provided Mission Plan, respecting any specified constraints. | It tracks completion of the mission and sequences the operations. *TODO: What about primitives that don't complete? Would they be defined with a time element so that they can complete?* +ME003 | Mission Execution.Inputs.Commands.Cancel Mission | 1 | When commanded to do so, the Mission Execution module MUST interrupt the Robot's navigation and cancel the current mission. +ME004 | Mission Execution.Outputs.Navigation Command | 1 | Upon completion of each Navigation Command, the Mission Execution module SHALL output the next Navigation Command to execute. +ME005 | Mission Execution.Command Sequencing | 1 | The Mission Execution module MUST monitor for completion of each Navigation Command before sending the next command. +ME006 | Mission Execution.Logging | 1 | The Mission Execution module SHOULD log its activity. | In case of forensic analysis of a safety event, for example. +ME007 | Mission Execution.Feedback.Outputs.Notify Progress | 1 | The Mission Execution module MUST provide progress notifications on the execution of the mission, including mission completion. | The current stack, once it reaches a goal, publishes a message. This would be a generalization of that feature. +ME008 | Mission Execution.Feedback.Outputs.Error Information | 1 | If the Mission Execution module is unable to execute the mission, it MUST report the failure | This would be received by the higher-level software. Perhaps a remote operating center where the remote operator "rescues" the robot. +ME009 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST direct the robot to a safe state. | *TODO: Define "safe state"* The failure could be for a variety of reasons - sensor failures, algorithmic failure, a collision, etc. ### 2.3.3 Routing The Routing Module computes the intended route for the robot, typically using a map, the robot's initial pose, and the desired primitive to execute. +ME008 | Mission Execution.Feedback.Inputs.Error Notification.Automatic Error Recovery | 1 | Upon receipt of a downstream failure, the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Mission Execution module could have the robot perform a recovery maneuver of some kind, before continuing with execution of the mission plan. + Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- GP001 | Routing | 1 | The Navigation System SHOULD have a Routing Module which generates the route for the robot to follow for the specified primitive, respecting any policy guidance contained in the Mission Plan @@ -376,4 +367,6 @@ DONE: GP003: (Mohammad) The Global Planner "MUST" have the robot's current pose. MP005: (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? -DONE: MP007: (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. \ No newline at end of file +DONE: MP007: (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. + +*TODO: How to handle reverse direction? Does each primitive include this information?* From 3697967600c2b1c5a9175548dbf67d13add39ca7 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Fri, 6 Jul 2018 17:37:51 -0700 Subject: [PATCH 04/27] Begin integration of separate sections into a Planning section --- doc/requirements/requirements.md | 141 ++++++++++++++----------------- 1 file changed, 64 insertions(+), 77 deletions(-) diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index f928a72d540..45f66a6715c 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -60,7 +60,7 @@ The user will be able to initiate the execution of specific mission plans ("miss ## 1.4 Architectural Components -The Navigation System is part of a larger robot software system. This document does not specify the architecture for the complete system, but simply names the various components and subsystems for the purpose of listing their associated requirements. +The Navigation System is part of a larger robot software system. This document does not specify the architecture for the complete system, but simply gives an conceptual overview for the purpose of requirements definition. The Navigation System has a *command chain*, where each level refines its command input into successively more specific operations for the lext level down, and *support modules* which are used by modules in the command chain. @@ -146,12 +146,12 @@ The Navigation System will run on the latest versions of the operating systems s Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -PLT001 | Target Platforms.Operating Systems.Ubuntu | 1 | The Navigation System MUST support Ubuntu Desktop 16.04 and Ubuntu Desktop 18.04 -PLT002 | Target Platforms.Operating Systems.MacOS | 1 | The Navigation System MUST support MacOS 10.13 (High Sierra) and MacOS 10.14 (Mohave) -PLT003 | Target Platforms.Operating Systems.Windows | 1 | The Navigation System MUST support Windows 10 Professional -PLT004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation System SHOULD support the latest version of Intel's Clear Linux distribution | What is the latest version number? -PLT005 | Target Platforms.CPU.Word Size | 1 | The Navigation System SHALL support 64-bit processors | Don't assume a specific pointer size -PLT006 | Target Platforms.Minimum Platform | 1 | *Should we specify a minimum target platform?* *Or, should this be expressed as minimum platform requirements?* +TP001 | Target Platforms.Operating Systems.Ubuntu | 1 | The Navigation System MUST support Ubuntu Desktop 16.04 and Ubuntu Desktop 18.04 +TP002 | Target Platforms.Operating Systems.MacOS | 1 | The Navigation System MUST support MacOS 10.13 (High Sierra) and MacOS 10.14 (Mohave) +TP003 | Target Platforms.Operating Systems.Windows | 1 | The Navigation System MUST support Windows 10 Professional +TP004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation System SHOULD support the latest version of Intel's Clear Linux distribution | What is the latest version number? +TP005 | Target Platforms.CPU.Word Size | 1 | The Navigation System SHALL support 64-bit processors | Don't assume a specific pointer size +TP006 | Target Platforms.Minimum Platform | 1 | *Should we specify a minimum target platform?* *Or, should this be expressed as minimum platform requirements?* ## 2.3 Command Chain Modules @@ -159,99 +159,88 @@ This section lists the requirements for the core command chain modules in the Na ### 2.3.1 Mission Planning -A complete system would have some kind of Mission Planning subsystem to convey the user's intentions to the robot. The User interacts with this Mission Planning subsystem to generate a Mission Plan for the robot. The Mission Plan is defined as a sequence of navigation commands and any associated information about how and when the plan should be carried out. The design and implementation of a Mission Planning subsystem is outside the scope of the Navigation System. However, in order to understand the larger system context and how Mission Planning interacts with the Navigation System, this section will consider the nature of a mission plan and the kinds of operations it may contain. +A complete system would have some kind of Mission Planning subsystem to convey the user's intentions to the robot. The User interacts with this Mission Planning subsystem to generate a Mission Plan for the robot. The Mission Plan is defined as a sequence of navigation commands, along with any associated information about how and when the plan should be carried out. The design and implementation of a Mission Planning subsystem is outside the scope of the Navigation System. However, in order to understand the larger system context and how Mission Planning interacts with the Navigation System, this section will consider the nature of a mission plan and the kinds of operations it may contain. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- MP001 | Mission Planning.Navigation Commands | 1 | The Mission Plan MUST be able to express the plan as a coordinated sequence of Navigation Commands. | Could include time and policy aspects (*when* and *how*, not just *what*) -MP002 | Mission Planning.Navigation Commands.Composition | 1 | The Mission Plan SHOULD allow for the composition and naming of new Navigation Commands from a sequence of previously-defined Navigation Commands. | Build up levels of abstraction. For example, Enter-Elevator could be expressed as Navigate-to-Pose (right outside of elevator), Wait (for door to open), Navigate-to-Pose (inside the elevator) +MP002 | Mission Planning.Navigation Commands.Composition | 1 | The Mission Plan SHOULD allow for the composition and naming of new Navigation Commands from a sequence of previously-defined Navigation Commands. | Build up levels of abstraction. For example, Enter-Elevator could be expressed as Navigate-to-Pose (right outside of elevator), Wait (for door to open), Navigate-to-Pose (inside the elevator). MP003 | Mission Planning.Navigation Commands.Navigate to Pose | 1 | The Mission Plan MUST be able to convey the information required for a robot to navigate from its current location to a specific destination pose. -MP004 | Mission Planning.Navigation Commands.Navigate to Area | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a specific area. | An "area" could be a rectangular region or a more complex shape +MP004 | Mission Planning.Navigation Commands.Navigate to Area | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a specific area. | An "area" could be a rectangular region or a more complex shape. MP005 | Mission Planning.Navigation Commands.Enqueue | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a position behind another specified robot. -MP006 | Mission Planning.Navigation Commands.Follow | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to be able to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies additional information such as "follow until destination reached" -MP007 | Mission Planning.Navigation Commands.Maintain Pose | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to maintain its current pose. | Could be indefinite or time-based -MP008 | Mission Planning.Navigation Commands.Park | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to park itself. | Presumably after Navigation-to-Pose *TODO: What does parking mean? Does the robot also enter some low-power state?* -MP009 | Mission Planning.Policy | 1 | The Mission Plan SHOULD be able to express information about how and when the navigation commands are to be carried out. | *What are the important qualities for how the primitives should be carried out? For example, time and safety constraints.* +MP006 | Mission Planning.Navigation Commands.Follow | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to be able to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies additional information such as "follow until destination reached." +MP007 | Mission Planning.Navigation Commands.Maintain Pose | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to maintain its current pose. | Could be indefinite or time-based. +MP008 | Mission Planning.Navigation Commands.Park | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to park itself. | The implementation of the parking command could interact with the robot to, for example, cause it to shut down or enter a low-power state. +MP009 | Mission Planning.Policy | 1 | The Mission Plan SHOULD be able to express information about how and when the navigation commands are to be carried out. | Time and safety constraints. MP010 | Mission Planning.Policy.Time.Initiation | 1 | The Mission Plan SHOULD be able to convey when a mission should begin. MP011 | Mission Planning.Policy.Time.Completion | 1 | The Mission Plan SHOULD be able to convey by when a mission should end. MP012 | Mission Planning.Policy.Safety.Maximum Speed | 1 | The Mission Plan SHOULD be able to convey a maximum speed for the robot. | The robot would respect this value in carrying out the plan. This could be site-specific policy. -MP013 | Mission Planning.Policy.Safety.Minimum Safety Buffer | 1 | The Mission Plan SHOULD be able to convey a minimum safety buffer distance. | The robot would respect this value and maintain the distance from other objects at all times. *TODO: Variable with speed? Differ in each direction?* +MP013 | Mission Planning.Policy.Safety.Minimum Safety Buffer | 1 | The Mission Plan SHOULD be able to convey a minimum safety buffer distance. | The robot would respect this value and maintain the distance from other objects at all times. Should vary with relative velocities. ### 2.3.2 Mission Execution -The Mission Execution module has the responsibility to execute a provided mission. It provides each successive Navigation Command operation to the Navigation Subsystem, monitoring and reporting progress towards the goal. +The Mission Execution module has the responsibility to execute a provided mission. It provides each successive Navigation Command to the Navigation Subsystem, monitoring and reporting progress towards completion of the plan. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- ME001 | Mission Execution.Inputs.Mission Plan | 1 | The Mission Execution module MUST accept the Mission Plan to execute. -ME002 | Mission Execution.Inputs.Commands.Execute Mission | 1 | When commanded to do so, the Mission Execution module MUST execute the provided Mission Plan, respecting any specified constraints. | It tracks completion of the mission and sequences the operations. *TODO: What about primitives that don't complete? Would they be defined with a time element so that they can complete?* +ME002 | Mission Execution.Inputs.Commands.Execute Mission | 1 | When commanded to do so, the Mission Execution module MUST execute the provided Mission Plan, respecting any specified constraints. ME003 | Mission Execution.Inputs.Commands.Cancel Mission | 1 | When commanded to do so, the Mission Execution module MUST interrupt the Robot's navigation and cancel the current mission. ME004 | Mission Execution.Outputs.Navigation Command | 1 | Upon completion of each Navigation Command, the Mission Execution module SHALL output the next Navigation Command to execute. ME005 | Mission Execution.Command Sequencing | 1 | The Mission Execution module MUST monitor for completion of each Navigation Command before sending the next command. ME006 | Mission Execution.Logging | 1 | The Mission Execution module SHOULD log its activity. | In case of forensic analysis of a safety event, for example. -ME007 | Mission Execution.Feedback.Outputs.Notify Progress | 1 | The Mission Execution module MUST provide progress notifications on the execution of the mission, including mission completion. | The current stack, once it reaches a goal, publishes a message. This would be a generalization of that feature. -ME008 | Mission Execution.Feedback.Outputs.Error Information | 1 | If the Mission Execution module is unable to execute the mission, it MUST report the failure | This would be received by the higher-level software. Perhaps a remote operating center where the remote operator "rescues" the robot. -ME009 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST direct the robot to a safe state. | *TODO: Define "safe state"* The failure could be for a variety of reasons - sensor failures, algorithmic failure, a collision, etc. +ME007 | Mission Execution.Feedback.Inputs.Error Recovery | 1 | Upon receipt of a downstream failure (unable to execute the Navigation Command), the Mission Execution module SHOULD attempt to recover and continue execution of the mission. +ME008 | Mission Execution.Feedback.Outputs.Progress Notification | 1 | The Mission Execution module SHALL provide progress notifications on the execution of the mission. | Intermediate steps of interest. +ME009 | Mission Execution.Feedback.Outputs.Mission Completed | 1 | Upon successfull completion of the mission, the Mission Execution module SHALL output a corresponding notification. +ME010 | Mission Execution.Feedback.Outputs.Mission Canceled | 1 | Upon receiving a cancellation command and cancelling the mission, the Mission Execution module SHALL output a corresponding notification. +ME011 | Mission Execution.Feedback.Outputs.Mission Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST output a failure notification. | This would be received by the user-level interface and could necessitate user intervention, such as having a remote operating center where the remote operator "rescues" the robot. +ME012 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST direct the robot to a safe state. | The failure could be for a variety of reasons - sensor failures, algorithmic failure, a collision, etc. -### 2.3.3 Routing +### 2.3.3 Navigation System.Planning The Routing Module computes the intended route for the robot, typically using a map, the robot's initial pose, and the desired primitive to execute. -ME008 | Mission Execution.Feedback.Inputs.Error Notification.Automatic Error Recovery | 1 | Upon receipt of a downstream failure, the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Mission Execution module could have the robot perform a recovery maneuver of some kind, before continuing with execution of the mission plan. +The Planning Module receives the route from the Routing Module and is responsible to carry it out. To do so, it evaluates the dynamic environment using input from the Perception Subsystem, possibly making local adjustments to the route, such as when avoiding collisions with objects crossing its path. + +The Planning Module interfaces to the robot to command its actuators. | TBD if this is through an abstraction of the robot or directly to a vendor's interface. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -GP001 | Routing | 1 | The Navigation System SHOULD have a Routing Module which generates the route for the robot to follow for the specified primitive, respecting any policy guidance contained in the Mission Plan -GP002 | Routing.Inputs.Map | 1 | The Routing Module SHALL have a map available that describes the environment | Assumes the map has already been created and available as an input -GP003 | Routing.Inputs.Current Pose | 1 | The Routing Module MUST have the robot's current pose | The pose could be be provided manually or automatically determined (outside of this module) -GP004 | Routing.Inputs.Primitive to Execute | 1 | The Routing Module SHALL have the primitive operation to execute -GP005 | Routing.Inputs.Policy | 1 | The Routing Module SHALL have policy guidance associated with the primitive operation to execute | This could be global policy and/or per-primitive policy -GP009 | Routing.Inputs.Policy.Conventions | 1 | *TODO: Should there be a specification of conventions for the robot to follow? Navigate on the right side of a path, for example.* -GP012 | Routing.Outputs.Route | 1 | The Path Planning Module should output a route that the robot is to follow to execute the primitive -GP013 | Routing.Outputs.Policy Attributes | 1 | *TODO: Should there be attributes associated, such as time to be at particular waypoints?* - -*TODO: Routing Plugins* -GP006 | Routing.Multiple Planners | 1 | As part of the Navigation System, there SHOULD be multiple global planners available and chosen depending on the primite to be executed | Dynamic selection of global planners -GP007 | Routing.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing global planners -GP008 | Routing.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing global planners +PLN001 | Planning | 1 | The Navigation System SHALL have a Planning Module that generates trajectories to follow to implement a specified Navigation Command. +PLN002 | Planning.Inputs.Navigation Command | 1 | The Planning Module SHALL receive the Navigation Command to execute. +PLN003 | Planning.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Navigation Command to execute | This could be global policy and/or per-command policy. *TODO: Should there be a specification of conventions for the robot to follow? Navigate on the right side of a path, for example?* +PLN004 | Planning.Inputs.Mapping.Maps | 1 | The Routing Module MUST have access to one or more maps available that describe the robot's environment | Assumes the map has already been created and available as an input +PLN005 | Planning.Inputs.Perception.Sensory Input | 1 | The Planning Module MUST have access to data from the Sensory Subsystem. +PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MUST have access to predicted trajectories of objects detected by the Sensory Subsystem. +PLN007 | Planning.Inputs.Localization.Current Pose | 1 | The Plann Module MUST have access to the robot's current pose | The pose could be be provided manually or automatically determined (outside of this module) +PLN008 | Planning.Outputs.Trajectory | 1 | The Path Planning Module MUST output trajectories for the robot to follow to execute the Navigation Command and MUST respect any associated policy. +PLN009 | Planning.Collision Avoidance.Avoid Stationary Objects | 1 | The Robot MUST avoid colliding into stationary objects in its environment | Fixed parts of the environment, such as walls or shelving. *TODO: How close can it come? Does it depend on the robot's speed?* +PLN010 | Planning.Collision Avoidance.Avoid Moving Objects | 1 | The Robot MUST avoid colliding into moving objects that intercept its path | Such as people and other robots *TODO: How close can it come? Does it depend on the robot speed?* *TODO: Any specific parameters for the collision avoidance? Perhaps different global values for object-specific properties in the environment.* +PLN011 | Planning.Collision Detection | 1 | The Planning Module SHOULD detect if a collision has occurred. +PLN011 | Planning.Collision Detection.Latency | 1 | The Planning Module SHOULD detect collisions within 50ms. | *What is the right latency value?* +PLN013 | Planning.Collision Recovery | 1 | The Planning Module SHOULD recover from collisions. | Recovery behavior could be configurable based on the robot/environment/application. +PLN014 | Planning.Feedback.Inputs | 1 | The Planner MUST receive error input from the Control Module so that it can attempt to recover from control failures. +PLN015 | Planning.Feedback.Inputs.Error Recovery | 1 | Upon receipt of a downstream failure, the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Planning Module could have the robot perform a recovery maneuver of some kind. +PLN016 | Planning.Feedback.Outputs.Command Completed | 1 | *TODO* +PLN017 | Planning.Feedback.Outputs.Unable to Execute Command | 1 | If the Planning Module is unable to execute the Navigation Command, it SHALL report the error on its feedback output. | It should handle errors if possible, but report back if it can't. +PLN018 | Planning.Feedback.Outputs.Collision Detected | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* +PLN019 | Planning.Feedback.Outputs.Recovered from Collision | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* +PLN020 | Planning.Multiple Planners | 1 | As part of the Navigation System, there SHOULD be multiple global planners available and chosen depending on the primite to be executed | Dynamic selection of global planners +PLN021 | Planning.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing global planners +PLN022 | Planning.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing global planners + +*TODO: Planning Plugins* *TODO: Well documented, examples* -GP010 | Routing.Feedback.Inputs | 1 | The Planner MUST receive error input from the Planning Module so that it can attempt to recover from planning failures | For example, if a planner can't execute the route because it is blocked, the global planner has an opportunity to define an alternative route -GP011 | Routing.Feedback.Outputs | 1 | If the Planner is unable to define a route to its goal state, it SHALL report the error on its feedback output - -### 2.3.4 Planning - -The Planning Module receives the route from the Routing Module and is responsible to carry it out. To do so, it evaluates the dynamic environment using input from the Perception Subsystem, possibly making local adjustments to the route, such as when avoiding collisions with objects crossing its path. - -Id | Handle | Priority | Description | Notes --- | ------ | -------- | ----------- | ----- -LP001 | Planning | 1 | The Navigation System SHOULD have a Planning Module which carries out the route provided by the Planner -LP002 | Planning.Inputs.Route | 1 | The Planning Module MUST receive the Route from the Path Planning Module. -LP003 | Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Planning Module MUST support negative velocity values -LP004 | Planning.Inputs.Policy | 1 | The Planning Module MUST receive any policy information which could inform its planning -LP005 | Planning.Inputs.Sensory Input | 1 | The Planning Module MUST receive object-level data from the Sensory Subsystem -LP016 | Planning.Outputs | 1 | The Planning Module interfaces to the robot to command its actuators. | TBD if this is through an abstraction of the robot or directly to a vendor's interface. - -LP006 | Planning.Collision Avoidance.Avoid Stationary Objects | 1 | The Robot MUST avoid colliding into stationary objects in its environment | Fixed parts of the environment, such as walls or shelving. -LP007 | Planning.Collision Avoidance.Avoid Stationary Objects.*Qualities* | 1 | *TODO: How close can it come? Does it depend on the robot's speed?* -LP008 | Planning.Collision Avoidance.Avoid Moving Objects | 1 | The Robot MUST avoid colliding into moving objects that intercept its path | Such as people and other robots -LP009 | Planning.Collision Avoidance.Avoid Moving Objects.*Qualities* | 1 | *TODO: How close can it come? Does it depend on the robot speed?* -LP010 | Planning.Collision Avoidance.Parameters | 1 | *TODO: Any specific parameters foer the collision avoidance? Perhaps different global values for object-specific properties in the environment.* -LP011 | Planning.Collision Detection | 1 | *TODO: What module first detects if there has been a collision?* Some way of detecting if a collision has occurred within some low latency (50ms?). This could be additional HW such as bumpers (like Turtlebot has), or other sensor input such as wheel feedback -LP012 | Planning.Collision Reporting | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* -LP013 | Planning.Collision Recovery | 1 | The Planning Module MUST provide a way to recover from collisions | Like back up slowly, notify user, etc., which could be configurable based on the robot/environment/application -LP014 | Planning.Feedback.Inputs | 1 | TODO | Could be failures from the sensors, for example -LP015 | Planning.Feedback.Outputs | 1 | TODO | Could provide failure to execute the route. Perhaps the passageway is blocked, for example - -### 2.3.5 Control +### 2.3.4 Navigation System.Control *TODO: The Control Module ... Bottom half of the Local Planner (Planning)* Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -CTL001 | Control | 1 | The Navigation System SHOULD have a Control Module which TODO +CTL001 | Control | 1 | The Control Module MUST... -### 2.3.6 Robot Interface +### 2.3.5 Robot Interface *TODO: What to say about the robot interface?* *Should there be a robot abstraction?* *Perhaps this would be a convenient place to put some safety-related functionality* There should be a uniform interface to the various supported robots. This may require a layer on top of the vendor-specific interface(s). @@ -326,8 +315,6 @@ LOC002 | Localization.Robot Pose.Accuracy | 1 | *TODO: What are the requirements TODO: -DONE: (mikefurgeson) Should we try to move away from calling this "static map" -- a common use case would be running navigation at the same time as mapping -- to explore the environment. In this case, the map isn't "static" but rather slowly changing. In particular, the important part is that the map must have some "constant reference frame" even as it changes over time (for instance, you can arbitrarily move 0,0 and expect things to still work, but if you add onto the map at runtime, the system should be able to handle it). - (mikeferguson) Ideally, this module should also be extremely well commented and documented, such that it can be used as a teaching tool -- I presume it will be a fairly straight forward A* implementation, which means it can be easily understood by students and adapted during various coursework. (mike furgeson) In supporting this, I think you'll find that you also want to make it easy to "reset or disable" a planner. Most of these planners may have large memory usage, and for efficiency may not want to recreate them for each plan -- if you have multiple running at once, each taking up memory, you might actually run out of memory quickly. Having an easy API to say "hey, not using this planner for a while, have it release resources" would be very useful. @@ -338,7 +325,6 @@ Localization: (mikefurgeson) This won't be exact -- so it should also provide a Turtlebot image: (Carl) -MP002: (Carl) What if the planner can't find a path? Then we can't meet this requirement. Should be rephrased to allow for failure (and the resulting reporting of failure) MP004,MP005: (Carl) This requires a much more complicated understanding of the world than I think we want to incorporate into the navstack. It implies we can identify what things in the environment are robots and distinguish a particular one even as it moves around in traffic, possibly goes out of view etc. (mikefurgeson) I concur -- this should provide a tool for generic navigation, and higher level "applications" would then call into the navigation stack. (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? @@ -359,14 +345,15 @@ MP012: (Carl) How would this work? What if we can't meet the time requirement? D Mapping Use Cases: (Mohammad) Suggestion: "The user will typically either manually create a map or uses SLAM algorithm to create a map of the area in which the robot is to navigate." Suggestion: Changing the phrase "known obstacles" to "known static obstacles". -DONE: Mission Planning Use Cases: (Mohammad) Changing the phrase "Navigate to Position" to either "Navigate to Position and Orientation" or "Navigate to Pose" - -DONE: Mission Execution Use Cases: (Mohammad) We might want to change the phrase "initial location" to "initial pose" which includes both position and orientation. - -DONE: GP003: (Mohammad) The Global Planner "MUST" have the robot's current pose. - -MP005: (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? - -DONE: MP007: (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. +**DONE** +* MP002: (Carl) What if the planner can't find a path? Then we can't meet this requirement. Should be rephrased to allow for failure (and the resulting reporting of failure) +* (mikefurgeson) Should we try to move away from calling this "static map" -- a common use case would be running navigation at the same time as mapping -- to explore the environment. In this case, the map isn't "static" but rather slowly changing. In particular, the important part is that the map must have some "constant reference frame" even as it changes over time (for instance, you can arbitrarily move 0,0 and expect things to still work, but if you add onto the map at runtime, the system should be able to handle it). +* Mission Planning Use Cases: (Mohammad) Changing the phrase "Navigate to Position" to either "Navigate to Position and Orientation" or "Navigate to Pose" +* Mission Execution Use Cases: (Mohammad) We might want to change the phrase "initial location" to "initial pose" which includes both position and orientation. +* GP003: (Mohammad) The Global Planner "MUST" have the robot's current pose. +* MP005: (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? +* MP007: (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. *TODO: How to handle reverse direction? Does each primitive include this information?* + +PLN003 | Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Planning Module MUST support negative velocity values \ No newline at end of file From 5854b00f410d0fcbd3fb6fe7ae114bf5e5943548 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Sun, 8 Jul 2018 18:48:13 -0700 Subject: [PATCH 05/27] Work on the Planning requirements section --- doc/requirements/requirements.md | 121 +++++++++++++++---------------- 1 file changed, 57 insertions(+), 64 deletions(-) diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index 45f66a6715c..2662bb9c060 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -1,12 +1,12 @@ # ROS 2 Navigation System Requirements -The ROS 2 Navigation System ("Navigation System") is the control system that enables a robot to autonomously reach a goal state, such as a specific position and orientation relative to a given map. Provided with a current pose, a map, and a goal, such as a destination pose, the Navigation System generates a plan to reach the goal, and outputs control commands to autonomously drive the robot, respecting any safety constraints and avoiding obstacles encountered along the way. +The ROS 2 Navigation System ("Navigation System") is the control system that enables a robot to autonomously reach a goal state, such as a specific position and orientation relative to a given map. Provided with a navigation command to execute, the Navigation System generates a plan to achieve the desired result and outputs control commands to autonomously direct the robot, respecting any safety constraints and avoiding obstacles encountered along the way. -This document lists the requirements for the ROS 2 Navigation System. The ROS 2 Navigation System will be a generalization of the ROS 1 navigation stack and will address some of its known limitations. +This document lists the requirements for the ROS 2 Navigation System. The ROS 2 Navigation System is intended to be a generalization of the ROS 1 navigation stack and will address some of its known limitations. # 1. Introduction -This section describes the format of each requirement, the keywords used in the requirements, and the basic concepts needed to define and understand the requirements. +This section describes the format of each requirement, the keywords available for use in the definition of each requirement, and the basic concepts needed to define and understand the requirements. ## 1.1 Requirement Fields @@ -36,7 +36,7 @@ These definitions are derived from the IETF Best Current Practices Document #14. ## 1.3 Use Cases -The Navigation System is part of a larger system that involves a person or automated system ("the user") directing the operation of one or more robots. To provide context for the Navigation System, this section lists the expected interactions between the user and the robot system. +The Navigation System is part of a larger system that includes a person or automated system ("the user") directing the operation of one or more robots. To provide context for the Navigation System, this section lists the expected interactions between the user and the robot system. ## 1.3.1 Mapping Use Cases @@ -48,19 +48,19 @@ The following use case diagram shows an example of the kinds of operations provi ## 1.3.2 Mission Planning Use Cases -Another area in which the user interacts with the system is in the creation of a mission plan for the robot. The user composes a sequence of primitive functions, such as **Navigate to Pose**, **Navigate to Area**, **Maintain Pose**, etc., into an overall plan. While mission planning is also outside the scope of the Navigation System, the mission plan format should be sufficient to meet the Navigation System requirements listed in this document. +Another area in which the user interacts with the system is in the creation of a mission plan for the robot. The user composes a sequence of primitive navigation commands, such as **Navigate to Pose**, **Navigate to Area**, **Maintain Pose**, etc., into an overall plan. While mission planning is also outside the scope of the Navigation System, the mission plan format should be sufficient to meet the Navigation System requirements listed in this document. ![Mission Planning Use Cases](./images/Mission-Planning-Use-Cases.png) -## 1.3.2 Mission Execution Use Cases +## 1.3.3 Mission Execution Use Cases -The user will be able to initiate the execution of specific mission plans ("missions") and should also be able to view the status of the mission in progress, as well as cancel any mission that is in progress. In addition, the user may be required to provide the robot with its initial pose if the robot is not able to determine it automatically. +The user will be able to initiate the execution of specific mission plans ("missions") and should also be able to view the status of the mission in progress, as well as cancel the mission that is currently in progress. In addition, the user may be required to provide the robot with its initial pose if the robot is not able to determine it automatically. ![Mission Execution Use Cases](./images/Mission-Execution-Use-Cases.png) ## 1.4 Architectural Components -The Navigation System is part of a larger robot software system. This document does not specify the architecture for the complete system, but simply gives an conceptual overview for the purpose of requirements definition. +The Navigation System is part of a larger software system. This document does not specify the architecture for the complete system, but simply gives a conceptual overview for the purpose of requirements definition. The Navigation System has a *command chain*, where each level refines its command input into successively more specific operations for the lext level down, and *support modules* which are used by modules in the command chain. @@ -69,10 +69,12 @@ The Navigation System has a *command chain*, where each level refines its comman The command chain is the sequence of modules that comprise the chain of command from the user, at the top, to the robot, at the bottom. * **Mission Planning** - Mission Planning provides an interface to the user to allow the user to create mission plans and assign them to robots for execution. A *Mission Plan* is a sequence of *Navigation Commands* along with associated information about how the commands should be carried out. -* **Mission Execution** - Mission Execution receives the Mission Plan and is responsible to execute the plan and report progress on its execution +* **Mission Execution** - Mission Execution receives the Mission Plan and is responsible to execute the plan and report progress on its execution. * **Navigation System** - The Navigation System receives a segment of an overall plan to execute (a *Navigation Command*) and generates the control commands to the robot to carry it out. * **Robot Interface** - The Robot Interface is an abstraction of the robot platform, providing the means for the Navigation System to control the robot, learn about its capabilities, and receive feedback from the robot. +The following diagram shows the modules in the command chain and the successive refinement of the control commands: + ![Command Chain](./images/Context.png) The Navigation System itself can be decomposed into two general responsibilities, *Planning*, and *Execution*. @@ -88,10 +90,10 @@ Decomposing the Navigation System, the overall command chain is as follows: ## 1.4.2 Support Modules -In addition to the main command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules is outside the scope of the Navigation System. However, the inteface to these components is in scope and the associated requirements should be defined. +In addition to the command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules is outside the scope of the Navigation System. However, the inteface to these components is in scope and the associated requirements should be defined. * **Mapping** - The Mapping Subsystem generates maps that can be used by the Navigation System to plan the robot's motion. Maps are typically created in advance and are available to the Navigation System. A map can be updated to reflect changes in the environment. The frequency of these updates will vary among implementations. -* **Perception** - The Perception Subsystem utilizes sensors to develop an understanding of the dynamic environment around the robot. This information is available to the Navigation System in directing the robot's motion. +* **Perception** - The Perception Subsystem utilizes sensors to develop an understanding of the dynamic environment around the robot. This information is available to the Navigation System, such as when avoiding obstacles in the robot's path. * **Prediction** - The Prediction Subsystem anticipates future motion trajectories of any perceived objects. * **Localization** - The Localization Subsystem provides the current location of the robot. @@ -99,13 +101,13 @@ In a complete robot system these modules are available to the core navigation mo ![Command Pipeline with Support](./images/With-Support-Modules.png) -To facilitate error recovery, each module in the chain, if it is unable to carry out its task, its able to propagate error information to its predecessor in the command chain. +To facilitate error recovery, each module in the command chain, if it is unable to carry out its task, its able to propagate error information to its predecessor in the chain. ## 1.5 Design Goals The Navigation System designers should strive to meet the following high-level design goals: -* **Extensibility** - The Navigation System should be a *pluggable framework* to allow for other developers to easily extend the capabilities of the Navigation System. +* **Extensibility** - The Navigation System should be a *pluggable framework* to allow for other developers to easily extend the capabilities of the Navigation System, such as adding the ability to handle new navigation commands. * **Modularity** - The Navigation System should allow other developers to *easily replace components* with alternative implementations. * **Generality** - The Navigation System should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. * **Performance** - *TODO: What are the performance goals?* @@ -115,7 +117,7 @@ The Navigation System designers should strive to meet the following high-level d In particular, there are several specific goals for the ROS 2 Navigation System with respect to improving the existing ROS navigation stack: * The user should be able to plan complex missions which include a series of navigation commands, and the Navigation System should be able to accept those commands and execute them. -* It should be possible to define navigation components for specific navigation commands. In executing a mission plan, the Navigation System would dynamically use the associated components for each navigation command. For example, a user may want to have components for classic point-A-to-point-B travel, but upon reaching point B, have a special components that control a series of maneuvers such as docking to a charging station or a conveyor belt. +* It should be possible to implement navigation components for specific navigation commands. In executing a mission plan, the Navigation System should be able to dynamically use the associated components for each navigation command. For example, a user may want to have components for classic point-A-to-point-B travel, but upon reaching point B, have a special components that control a series of maneuvers such as docking to a charging station or a conveyor belt. * The user should be able to specify different types of Robot drive types, such as Ackerman (automobile) steering, and Robot shapes (the current navigation stack is very limited in these areas). * The Navigation System should be able to handle more map types and orientations, including outdoor and 2D+ terrain. @@ -159,18 +161,18 @@ This section lists the requirements for the core command chain modules in the Na ### 2.3.1 Mission Planning -A complete system would have some kind of Mission Planning subsystem to convey the user's intentions to the robot. The User interacts with this Mission Planning subsystem to generate a Mission Plan for the robot. The Mission Plan is defined as a sequence of navigation commands, along with any associated information about how and when the plan should be carried out. The design and implementation of a Mission Planning subsystem is outside the scope of the Navigation System. However, in order to understand the larger system context and how Mission Planning interacts with the Navigation System, this section will consider the nature of a mission plan and the kinds of operations it may contain. +A complete system should have some kind of Mission Planning subsystem to convey the user's intentions to the robot. The User interacts with this Mission Planning subsystem to generate a Mission Plan for the robot. The Mission Plan is defined as a sequence of navigation commands, along with any associated information about how and when the plan should be carried out. The design and implementation of a Mission Planning subsystem is outside the scope of the Navigation System. However, in order to understand the larger system context and how Mission Planning interacts with the Navigation System, this section will consider the nature of a mission plan and the kinds of operations it may contain. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- MP001 | Mission Planning.Navigation Commands | 1 | The Mission Plan MUST be able to express the plan as a coordinated sequence of Navigation Commands. | Could include time and policy aspects (*when* and *how*, not just *what*) MP002 | Mission Planning.Navigation Commands.Composition | 1 | The Mission Plan SHOULD allow for the composition and naming of new Navigation Commands from a sequence of previously-defined Navigation Commands. | Build up levels of abstraction. For example, Enter-Elevator could be expressed as Navigate-to-Pose (right outside of elevator), Wait (for door to open), Navigate-to-Pose (inside the elevator). MP003 | Mission Planning.Navigation Commands.Navigate to Pose | 1 | The Mission Plan MUST be able to convey the information required for a robot to navigate from its current location to a specific destination pose. -MP004 | Mission Planning.Navigation Commands.Navigate to Area | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a specific area. | An "area" could be a rectangular region or a more complex shape. -MP005 | Mission Planning.Navigation Commands.Enqueue | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a position behind another specified robot. -MP006 | Mission Planning.Navigation Commands.Follow | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to be able to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies additional information such as "follow until destination reached." +MP004 | Mission Planning.Navigation Commands.Navigate to Area | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a specific area. | An "area" could be a rectangular region or a more complex shape. +MP005 | Mission Planning.Navigation Commands.Enqueue | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a position behind another specified robot. +MP006 | Mission Planning.Navigation Commands.Follow | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to be able to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies additional information such as "follow until destination reached." MP007 | Mission Planning.Navigation Commands.Maintain Pose | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to maintain its current pose. | Could be indefinite or time-based. -MP008 | Mission Planning.Navigation Commands.Park | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to park itself. | The implementation of the parking command could interact with the robot to, for example, cause it to shut down or enter a low-power state. +MP008 | Mission Planning.Navigation Commands.Park | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to park itself. | The implementation of the parking command could interact with the robot to cause it, for example, to shut down or enter a low-power state. MP009 | Mission Planning.Policy | 1 | The Mission Plan SHOULD be able to express information about how and when the navigation commands are to be carried out. | Time and safety constraints. MP010 | Mission Planning.Policy.Time.Initiation | 1 | The Mission Plan SHOULD be able to convey when a mission should begin. MP011 | Mission Planning.Policy.Time.Completion | 1 | The Mission Plan SHOULD be able to convey by when a mission should end. @@ -198,39 +200,36 @@ ME012 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution ### 2.3.3 Navigation System.Planning -The Routing Module computes the intended route for the robot, typically using a map, the robot's initial pose, and the desired primitive to execute. - -The Planning Module receives the route from the Routing Module and is responsible to carry it out. To do so, it evaluates the dynamic environment using input from the Perception Subsystem, possibly making local adjustments to the route, such as when avoiding collisions with objects crossing its path. - -The Planning Module interfaces to the robot to command its actuators. | TBD if this is through an abstraction of the robot or directly to a vendor's interface. +The Planning Module receives the Navigation Command from the Mission Execution module and is responsible to implement that command. To do so, the Planning Module can use information from the Mapping Subsystem to plan a route and use input from the Perception Subsystem to evaluate the dynamic environment and avoid collisions with objects crossing its path. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -PLN001 | Planning | 1 | The Navigation System SHALL have a Planning Module that generates trajectories to follow to implement a specified Navigation Command. +PLN001 | Planning | 1 | The Navigation System SHOULD have a Planning Module that generates trajectories to follow to implement a specified Navigation Command. | Separate the planning phase from execution. PLN002 | Planning.Inputs.Navigation Command | 1 | The Planning Module SHALL receive the Navigation Command to execute. -PLN003 | Planning.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Navigation Command to execute | This could be global policy and/or per-command policy. *TODO: Should there be a specification of conventions for the robot to follow? Navigate on the right side of a path, for example?* -PLN004 | Planning.Inputs.Mapping.Maps | 1 | The Routing Module MUST have access to one or more maps available that describe the robot's environment | Assumes the map has already been created and available as an input +PLN003 | Planning.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Navigation Command to execute | This could be global policy and/or per-command policy. Policy could contain, for example, a list of conventions for the robot to follow (navigate on the right side of a path, for example). +PLN004 | Planning.Inputs.Mapping.Maps | 1 | The Planning Module MUST have access to one or more maps available that describe the robot's environment PLN005 | Planning.Inputs.Perception.Sensory Input | 1 | The Planning Module MUST have access to data from the Sensory Subsystem. PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MUST have access to predicted trajectories of objects detected by the Sensory Subsystem. -PLN007 | Planning.Inputs.Localization.Current Pose | 1 | The Plann Module MUST have access to the robot's current pose | The pose could be be provided manually or automatically determined (outside of this module) -PLN008 | Planning.Outputs.Trajectory | 1 | The Path Planning Module MUST output trajectories for the robot to follow to execute the Navigation Command and MUST respect any associated policy. +PLN007 | Planning.Inputs.Localization.Current Pose | 1 | The Planning Module MUST have access to the robot's current pose | The pose could be be provided manually or automatically determined (outside of this module) +PLN008 | Planning.Outputs.Trajectory | 1 | The Planning Module MUST output trajectories for the robot to follow to execute the input Navigation Command and MUST respect any associated policy. PLN009 | Planning.Collision Avoidance.Avoid Stationary Objects | 1 | The Robot MUST avoid colliding into stationary objects in its environment | Fixed parts of the environment, such as walls or shelving. *TODO: How close can it come? Does it depend on the robot's speed?* -PLN010 | Planning.Collision Avoidance.Avoid Moving Objects | 1 | The Robot MUST avoid colliding into moving objects that intercept its path | Such as people and other robots *TODO: How close can it come? Does it depend on the robot speed?* *TODO: Any specific parameters for the collision avoidance? Perhaps different global values for object-specific properties in the environment.* +PLN010 | Planning.Collision Avoidance.Avoid Moving Objects | 1 | The Robot MUST avoid colliding into moving objects that intercept its path | Such as people and other robots *TODO: How close can it come? Does it depend on the robot speed? Any specific parameters for the collision avoidance? Perhaps different global values for object-specific properties in the environment?* PLN011 | Planning.Collision Detection | 1 | The Planning Module SHOULD detect if a collision has occurred. -PLN011 | Planning.Collision Detection.Latency | 1 | The Planning Module SHOULD detect collisions within 50ms. | *What is the right latency value?* +PLN012 | Planning.Collision Detection.Latency | 1 | The Planning Module SHOULD detect collisions within 50ms. | *What is the right latency value?* PLN013 | Planning.Collision Recovery | 1 | The Planning Module SHOULD recover from collisions. | Recovery behavior could be configurable based on the robot/environment/application. -PLN014 | Planning.Feedback.Inputs | 1 | The Planner MUST receive error input from the Control Module so that it can attempt to recover from control failures. +PLN014 | Planning.Feedback.Inputs | 1 | The Planner MUST receive error input from the downstream Control Module so that it can attempt to recover from control failures. PLN015 | Planning.Feedback.Inputs.Error Recovery | 1 | Upon receipt of a downstream failure, the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Planning Module could have the robot perform a recovery maneuver of some kind. -PLN016 | Planning.Feedback.Outputs.Command Completed | 1 | *TODO* +PLN016 | Planning.Feedback.Outputs.Command Completed | 1 | Upon completing the provided Navigation Command, the Planning Module MUST report this event on its feedback output. PLN017 | Planning.Feedback.Outputs.Unable to Execute Command | 1 | If the Planning Module is unable to execute the Navigation Command, it SHALL report the error on its feedback output. | It should handle errors if possible, but report back if it can't. PLN018 | Planning.Feedback.Outputs.Collision Detected | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* PLN019 | Planning.Feedback.Outputs.Recovered from Collision | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* -PLN020 | Planning.Multiple Planners | 1 | As part of the Navigation System, there SHOULD be multiple global planners available and chosen depending on the primite to be executed | Dynamic selection of global planners -PLN021 | Planning.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing global planners -PLN022 | Planning.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing global planners +PLN020 | Planning.Dynammic Selection of Planners | 1 | The selection of the Planning Module to use for a given Navigation Command should be dynamic. | There SHOULD be multiple planners available and chosen depending on the command to be executed +PLN021 | Planning.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing planners. +PLN022 | Planning.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing planners. +PLN023 | Planning.Documentation | 1 | The Navigation System SHOULD provided detailed documentation on how to develop a planner. +PLN024 | Planning.Simple Example | 1 | The Navigation System SHOULD provided a simple example of a Planner | Developers could use this as a starting point. *TODO: Planning Plugins* -*TODO: Well documented, examples* ### 2.3.4 Navigation System.Control @@ -265,7 +264,7 @@ The map data format should be capable of describing common indoor and outdoor en Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System | So that the Mapping System has a basic understanding of its environment. Used in global planning +MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System | So that the Mapping System has a basic understanding of its environment. Used in planning MAP002 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information MAP003 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information | *TODO: How is this defined?* MAP004 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information | *TODO: Use voxel-based?* @@ -311,40 +310,29 @@ Id | Handle | Priority | Description | Notes LOC001 | Localization.Robot Pose | 1 | The Localization module MUST provide the robot's current pose to the Navigation System | This could be manual or as a result of automatic localization; the Navigation System wouldn't know either way LOC002 | Localization.Robot Pose.Accuracy | 1 | *TODO: What are the requirements on the accuracy of this pose?* - +1 1 - -TODO: - -(mikeferguson) Ideally, this module should also be extremely well commented and documented, such that it can be used as a teaching tool -- I presume it will be a fairly straight forward A* implementation, which means it can be easily understood by students and adapted during various coursework. - -(mike furgeson) In supporting this, I think you'll find that you also want to make it easy to "reset or disable" a planner. Most of these planners may have large memory usage, and for efficiency may not want to recreate them for each plan -- if you have multiple running at once, each taking up memory, you might actually run out of memory quickly. Having an easy API to say "hey, not using this planner for a while, have it release resources" would be very useful. -Mapping: (mikefurgeson) Any thoughts around tiling? Especially for out-of-memory situations? Yes, we do this for Automotive -Localization: (mikefurgeson) This won't be exact -- so it should also provide an estimate of the accuracy (current navigation stack can't take that into account, but future local planners certainly could). The current message is PoseWithCovariance to accomplish this in ROS1. +**TODO** +* (mikeferguson) Ideally, this module should also be extremely well commented and documented, such that it can be used as a teaching tool -- I presume it will be a fairly straight forward A* implementation, which means it can be easily understood by students and adapted during various coursework. -Turtlebot image: (Carl) +* (mike furgeson) In supporting this, I think you'll find that you also want to make it easy to "reset or disable" a planner. Most of these planners may have large memory usage, and for efficiency may not want to recreate them for each plan -- if you have multiple running at once, each taking up memory, you might actually run out of memory quickly. Having an easy API to say "hey, not using this planner for a while, have it release resources" would be very useful. +* Mapping: (mikefurgeson) Any thoughts around tiling? Especially for out-of-memory situations? Yes, we do this for Automotive -MP004,MP005: (Carl) This requires a much more complicated understanding of the world than I think we want to incorporate into the navstack. It implies we can identify what things in the environment are robots and distinguish a particular one even as it moves around in traffic, possibly goes out of view etc. (mikefurgeson) I concur -- this should provide a tool for generic navigation, and higher level "applications" would then call into the navigation stack. (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? +* Localization: (mikefurgeson) This won't be exact -- so it should also provide an estimate of the accuracy (current navigation stack can't take that into account, but future local planners certainly could). The current message is PoseWithCovariance to accomplish this in ROS1. -MP006: (Carl) Orbit what? I can see potentially orbitting a fixed position in the world. Orbitting an object seems outside our scope. - -MP007: (Carl) Could this just be reduced to not having a specified objective? What would the robot do if it isn't given a wait primitive? (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. HoldPose may also be considered to be out of scope for Nav stack. The robot's base controller should take care of holding the pose. +* Turtlebot image: (Carl) -MP008: (Carl) Going to a low power state seems out of scope for the navstack. +* MP001: (mikefurgeson) I understand the desire to be able to "plan several legs of a trip at once, so if one is impassable you don't start the trip at all", but I feel like that is fairly incongruent with how actions typically are implemented. I know actionlib isn't implemented in ROS2 yet, but the issue I see arising is: how do you cancel part way through? -MP001: (mikefurgeson) I understand the desire to be able to "plan several legs of a trip at once, so if one is impassable you don't start the trip at all", but I feel like that is fairly incongruent with how actions typically are implemented. I know actionlib isn't implemented in ROS2 yet, but the issue I see arising is: how do you cancel part way through? +* MP004,MP005: (Carl) This requires a much more complicated understanding of the world than I think we want to incorporate into the navstack. It implies we can identify what things in the environment are robots and distinguish a particular one even as it moves around in traffic, possibly goes out of view etc. (mikefurgeson) I concur -- this should provide a tool for generic navigation, and higher level "applications" would then call into the navigation stack. (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? -MP009: (Carl) Why is this a special primitive? Can't "go to area" suffice? (Me) I'm not sure. We'd have to capture that the floor isn't always present, at least. It can't be freely navigated into. +* MP012: (Carl) How would this work? What if we can't meet the time requirement? Do we need to calculate out the ETA before starting so we can throw an error as soon as the command is given? What happens if the time constraint is much greater than required? Do we slow down or wait somewhere? (Me) Good questions. For me, the first question is whether it is important to introduce time-related requirements into the mission plan or not. If so, we'll have to address the issues that you mention. Would be good to get input from users. -MP010: (Carl) Can't we just use go to location/area to get out of the elevator. (Me) I think we need to consider how to handle elevators and other kinds of lifts, where the mechanism has various states. If there's an external controller that's handling the elevator doors, etc., the Execution mechanism for the robot needs to at least feedback that it's ready to enter (or exit) an elevator and wait for the go-head. I think we should mock up some example mission plans and work through these issues. - -MP012: (Carl) How would this work? What if we can't meet the time requirement? Do we need to calculate out the ETA before starting so we can throw an error as soon as the command is given? What happens if the time constraint is much greater than required? Do we slow down or wait somewhere? (Me) Good questions. For me, the first question is whether it is important to introduce time-related requirements into the mission plan or not. If so, we'll have to address the issues that you mention. Would be good to get input from users. - -Mapping Use Cases: (Mohammad) Suggestion: "The user will typically either manually create a map or uses SLAM algorithm to create a map of the area in which the robot is to navigate." +* Mapping Use Cases: (Mohammad) Suggestion: "The user will typically either manually create a map or uses SLAM algorithm to create a map of the area in which the robot is to navigate." Suggestion: Changing the phrase "known obstacles" to "known static obstacles". + **DONE** * MP002: (Carl) What if the planner can't find a path? Then we can't meet this requirement. Should be rephrased to allow for failure (and the resulting reporting of failure) * (mikefurgeson) Should we try to move away from calling this "static map" -- a common use case would be running navigation at the same time as mapping -- to explore the environment. In this case, the map isn't "static" but rather slowly changing. In particular, the important part is that the map must have some "constant reference frame" even as it changes over time (for instance, you can arbitrarily move 0,0 and expect things to still work, but if you add onto the map at runtime, the system should be able to handle it). @@ -353,7 +341,12 @@ Suggestion: Changing the phrase "known obstacles" to "known static obstacles". * GP003: (Mohammad) The Global Planner "MUST" have the robot's current pose. * MP005: (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? * MP007: (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. - -*TODO: How to handle reverse direction? Does each primitive include this information?* - -PLN003 | Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Planning Module MUST support negative velocity values \ No newline at end of file +* MP009: (Carl) Why is this a special primitive? Can't "go to area" suffice? (Me) I'm not sure. We'd have to capture that the floor isn't always present, at least. It can't be freely navigated into. +* MP010: (Carl) Can't we just use go to location/area to get out of the elevator. (Me) I think we need to consider how to handle elevators and other kinds of lifts, where the mechanism has various states. If there's an external controller that's handling the elevator doors, etc., the Execution mechanism for the robot needs to at least feedback that it's ready to enter (or exit) an elevator and wait for the go-head. I think we should mock up some example mission plans and work through these issues. +* MP008: (Carl) Going to a low power state seems out of scope for the navstack. +* MP007: (Carl) Could this just be reduced to not having a specified objective? What would the robot do if it isn't given a wait primitive? (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. HoldPose may also be considered to be out of scope for Nav stack. The robot's base controller should take care of holding the pose. +* MP006: (Carl) Orbit what? I can see potentially orbitting a fixed position in the world. Orbitting an object seems outside our scope. + +**OPENS** +* *TODO: How to handle reverse direction? Does each primitive include this information?* +* PLN003 | Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Planning Module MUST support negative velocity values \ No newline at end of file From 0e2babfbf2172eb0c3ede3cd810ee55f1f4acf2b Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Mon, 9 Jul 2018 13:37:59 -0700 Subject: [PATCH 06/27] More work on the Mapping section --- doc/requirements/requirements.md | 76 ++++++++++++++++---------------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index 2662bb9c060..2d4b2a4acf1 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -223,13 +223,11 @@ PLN016 | Planning.Feedback.Outputs.Command Completed | 1 | Upon completing the p PLN017 | Planning.Feedback.Outputs.Unable to Execute Command | 1 | If the Planning Module is unable to execute the Navigation Command, it SHALL report the error on its feedback output. | It should handle errors if possible, but report back if it can't. PLN018 | Planning.Feedback.Outputs.Collision Detected | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* PLN019 | Planning.Feedback.Outputs.Recovered from Collision | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* -PLN020 | Planning.Dynammic Selection of Planners | 1 | The selection of the Planning Module to use for a given Navigation Command should be dynamic. | There SHOULD be multiple planners available and chosen depending on the command to be executed +PLN020 | Planning.Dynammic Selection of Planners | 1 | The selection of the Planning Module to use for a given Navigation Command should be dynamic. | There SHOULD be multiple planners available and chosen depending on the command to be executed. PLN021 | Planning.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing planners. PLN022 | Planning.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing planners. PLN023 | Planning.Documentation | 1 | The Navigation System SHOULD provided detailed documentation on how to develop a planner. -PLN024 | Planning.Simple Example | 1 | The Navigation System SHOULD provided a simple example of a Planner | Developers could use this as a starting point. - -*TODO: Planning Plugins* +PLN024 | Planning.Simple Example | 1 | The Navigation System SHOULD provided a simple example of a Planner | An easily understood module that developers and students could use as a starting point. ### 2.3.4 Navigation System.Control @@ -241,18 +239,21 @@ CTL001 | Control | 1 | The Control Module MUST... ### 2.3.5 Robot Interface -*TODO: What to say about the robot interface?* *Should there be a robot abstraction?* *Perhaps this would be a convenient place to put some safety-related functionality* +*TODO: What to say about the robot interface?* +* *Should there be a robot abstraction?* +* *Perhaps this would be a convenient place to put some safety-related functionality* + There should be a uniform interface to the various supported robots. This may require a layer on top of the vendor-specific interface(s). Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -ROB001 | Robot Interface.Attributes | 1 | Holonomicity, max/min speeds and accelerations, etc. -ROB002 | Robot Interface.Dynamic Switching | 1 | Can the robot dynamically change attributes? -ROB003 | Robot Interface.Safety.Limited Parameters | 1 | A list of parameters used to limit certain circumstances and provide the hooks for users to set those values if they want -ROB004 | Robot Interface.Safety.Speed Limiting | 1 | TODO -ROB005 | Robot Interface.Safety.Force Limiting | 1 | TODO -ROB006 | Robot Interface.EMO Button | 1 | TODO -ROB007 | Robot Interface.Feedback.Outputs | 1 | TODO +RI001 | Robot Interface.Attributes | 1 | Holonomicity, max/min speeds and accelerations, etc. +RI002 | Robot Interface.Dynamic Switching | 1 | Can the robot dynamically change attributes? +RI003 | Robot Interface.Safety.Limited Parameters | 1 | A list of parameters used to limit certain circumstances and provide the hooks for users to set those values if they want +RI004 | Robot Interface.Safety.Speed Limiting | 1 | TODO +RI005 | Robot Interface.Safety.Force Limiting | 1 | TODO +RI006 | Robot Interface.EMO Button | 1 | TODO +RI007 | Robot Interface.Feedback.Outputs | 1 | TODO ## 2.4 Support Modules @@ -260,38 +261,38 @@ There are a few support modules and subsystems that are not part of the Navigati ### 2.4.1 Mapping -The map data format should be capable of describing common indoor and outdoor environments. +The map data format should be capable of describing common indoor and outdoor environments encoutered by the robots. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System | So that the Mapping System has a basic understanding of its environment. Used in planning -MAP002 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information -MAP003 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information | *TODO: How is this defined?* -MAP004 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information | *TODO: Use voxel-based?* -MAP005 | Mapping.Multiple Maps Per Environment | 1 | The Mapping system SHOULD provide multiple maps of the same environment. | *TODO: Different scales and elevations?* -MAP006 | Mapping.Dynamic Updates | 1 | The Mapping System SHOULD provide real-time updates of map information | For example, to create a keep-out zone in the event of a spill hazard. -MAP007 | Mapping.Data Model.Traversable Surface | 1 | Planar (2D) surface (street, floor). -MAP008 | Mapping.Data Model.Traversable Surface.Planarity | 1 | The map data format SHALL be capable of describing the planarity of traversable surfaces | Uneven ground -MAP009 | Mapping.Data Model.Safety Zone | 1 | Specify limitations to be respected while the robot is in this zone. Speed, (increased) distance to people. -MAP010 | Mapping.Data Model.Safety Zone.Keep Out Zone | 1 | Robot MUST NOT navigate through a keep-out zone -MAP011 | Mapping.Data Model.Safety Zone.Intersection | 1 | May want to slow down (or even stop), for example, when approaching an intersection | Robots can slow down when coming to an intersection in order to ensure that they can see anyone coming and other people/robots can see them -MAP012 | Mapping.Data Model.Lanes | 1 | Able to specify virtual lanes. Prefer the specified lanes (such as in a warehouse) -MAP013 | Mapping.Data Model.Building Levels | 1 | Able to specify single and multi-level buildings +MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System | So that the Mapping System has a basic understanding of its environment. Can be used during planning. +MAP002 | Mapping.Dynamic Updates | 1 | The Mapping System SHALL provide real-time updates of map information, as the environment described by the map changes. +MAP003 | Mapping.Data Model.Obstacles | 1 | Maps provided by Mapping Subsystem MUST indicate the location of known obstacles. +MAP004 | Mapping.Data Model.Confidence Metric | 1 | Each known obstacle in a map SHALL have a confidence metric associated with it. +MAP005 | Mapping.Data Model.Unknown Space | 1 | Maps provided by Mapping Subsystem MUST indicate unmapped/unknown space. | Such as areas beyond the edge of the map, or areas within the map for which we didn't have any observations during map building. +MAP006 | Mapping.Data Model.Surface Planarity | 1 | The map data format SHALL be capable of describing the planarity of traversable surfaces. | Can describe uneven ground. +MAP007 | Mapping.Data Model.Safety Zone | 1 | The map data format SHALL be capable of defining regions where the robot may have to adjust its operations. +MAP008 | Mapping.Data Model.Safety Zone.Name | 1 | The map data format SHOULD allow for naming each safety zone. | *Does it need to be a unique name?* +MAP009 | Mapping.Data Model.Safety Zone.Type | 1 | The map data format SHOULD allow for defining types of safety zones. | To allow for re-use of a safety zone type without redefining policy. Could be an "intersection" type, for example. May want to slot down at all intersections, for example. +MAP010 | Mapping.Data Model.Safety Zone.Policy | 1 | The map data format SHALL be capable of expressing policy associated with each safety zone and safety zone type. | Maximum speed, (increased) distance to people, etc. +MAP011 | Mapping.Data Model.Safety Zone.Policy.Keep Out | 1 | The map data format SHALL be capable of expressing that a robot must not navigate through this zone. +MAP012 | Mapping.Data Model.Lanes | 1 | Able to specify virtual lanes. Prefer the specified lanes (such as in a warehouse). +MAP013 | Mapping.Data Model.Building Levels | 1 | Able to specify single and multi-level buildings. MAP014 | Mapping.Data Model.Building Levels.Level Connecting Features | 1 | Able to specify level connecting features, such as elevators, stairways, ramps. -MAP015 | Mapping.Data Model.Unknown Space | 1 | To be dynamically mapped? In global maps, it can be areas beyond the edge of the map, or areas within the center of the map for which we didn't have any observations during map building. In the current system, this is the "dark grey" portion of the map (free space is light grey, obstacles are black) -MAP016 | Mapping.Data Model.Extensibility | 1 | *TODO: Map attributes. Layers concept?* +MAP015 | Mapping.Multiple Maps Per Environment | 1 | The Mapping System MAY provide multiple maps of the same environment. | Different scales and elevations? +MAP016 | Mapping.Data Model.Extensibility | 1 | The Mapping System SHOULD be extensible, to allow for the description of additional entities in the environment | *TODO: Layers concept?* +MAP017 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information. +MAP018 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information. | *TODO: How is this defined?* +MAP019 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information. | *TODO: Use voxel-based?* ### 2.4.2 Perception -The Navigation System requires dyanamic information about objects in its environment. This information is provided by a Sensory Subsystem that is outside the scope of the Navigation System. This information would typically be provided by a set of sensors on the robot and a sensor fusion capability. This section lists the requirements on the data that the Sensory Subsystem provides. +The Perception Subsystem provides information about objects detected in the robot's environment. This information would typically be generated from a fusion of sensor input. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -SEN001 | Sensing | 1 | The Sensory Subsystem SHALL provide information about the dynamic environment of the robot | Info sufficient to carry out the Navigation System requirements -SEN002 | Sensing.Latency | 1 | TODO -SEN003 | Sensing.Environment Model | 1 | *TODO: What, specifically, should be in the environment model?* -SEN004 | Sensing.Environment Model.Object Prediction | 1 | The Sensing Subsystem SHOULD provide an object prediction capability that projects the position of the objects into the future. | One of the biggest shortcomings of the current system is the inability to model/predict where obstacles will be in the future. This leads to collisions with other moving objects -SEN005 | Sensing.Environment Model.Object Prediction.Time Horizon | 1 | *TODO: How far into the future should the object prediction work?* +PER001 | Perception | 1 | The Sensory Subsystem SHALL provide information about the dynamic environment of the robot | Info sufficient to carry out the Navigation System requirements. +PER002 | Perception.Latency | 1 | TODO ### 2.4.3 Prediction @@ -299,7 +300,8 @@ The Prediction Subsystem TODO Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -PRE001 | Localization.Robot Pose | 1 | TDOO +PRD001 | Prediction.Object Prediction | 1 | The Prediction Subsystem SHOULD predict the trajectories of detected objects. | One of the biggest shortcomings of the current system is the inability to model/predict where obstacles will be in the future. This leads to collisions with other moving objects +PRD002 | Prediction.Object Prediction.Time Horizon | 1 | *TODO: How far into the future should the object prediction work?* ### 2.4.4 Localization @@ -308,12 +310,11 @@ The Navigation System requires the Robot's current pose, provided by an external Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- LOC001 | Localization.Robot Pose | 1 | The Localization module MUST provide the robot's current pose to the Navigation System | This could be manual or as a result of automatic localization; the Navigation System wouldn't know either way -LOC002 | Localization.Robot Pose.Accuracy | 1 | *TODO: What are the requirements on the accuracy of this pose?* +LOC002 | Localization.Robot Pose.Accuracy | 1 | The Localization Module MUST provide the expected accuracy of its generated poses. | So that Planning modules can determine if a particular Localization module has sufficient accuracy. **TODO** -* (mikeferguson) Ideally, this module should also be extremely well commented and documented, such that it can be used as a teaching tool -- I presume it will be a fairly straight forward A* implementation, which means it can be easily understood by students and adapted during various coursework. * (mike furgeson) In supporting this, I think you'll find that you also want to make it easy to "reset or disable" a planner. Most of these planners may have large memory usage, and for efficiency may not want to recreate them for each plan -- if you have multiple running at once, each taking up memory, you might actually run out of memory quickly. Having an easy API to say "hey, not using this planner for a while, have it release resources" would be very useful. @@ -346,6 +347,7 @@ Suggestion: Changing the phrase "known obstacles" to "known static obstacles". * MP008: (Carl) Going to a low power state seems out of scope for the navstack. * MP007: (Carl) Could this just be reduced to not having a specified objective? What would the robot do if it isn't given a wait primitive? (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. HoldPose may also be considered to be out of scope for Nav stack. The robot's base controller should take care of holding the pose. * MP006: (Carl) Orbit what? I can see potentially orbitting a fixed position in the world. Orbitting an object seems outside our scope. +* (mikeferguson) Ideally, this module should also be extremely well commented and documented, such that it can be used as a teaching tool -- I presume it will be a fairly straight forward A* implementation, which means it can be easily understood by students and adapted during various coursework. **OPENS** * *TODO: How to handle reverse direction? Does each primitive include this information?* From 62cec95168478f7e081e0751cb5ba590648db1e6 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Mon, 9 Jul 2018 13:43:10 -0700 Subject: [PATCH 07/27] Change Control -> Execution --- doc/requirements/requirements.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index 2d4b2a4acf1..d01c927b822 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -80,7 +80,7 @@ The following diagram shows the modules in the command chain and the successive The Navigation System itself can be decomposed into two general responsibilities, *Planning*, and *Execution*. * **Planning** - The Planning Module is responsible to execute Navigation Commands. To do so, this module can evaluate input maps and continually assess the robot's environment to plan motion and provide trajectories for the robot to follow to eventually achieve completion of the Navigation Command. -* **Control** - The Control Module is responsible to execute the trajectories provided by Planning, generating the control signals required to execute the Trajectory. +* **Execution** - The Execution Module is responsible to execute the trajectories provided by Planning, generating the control signals required to execute the Trajectory. ![Navigation System](./images/Navigation-System.png) @@ -351,4 +351,4 @@ Suggestion: Changing the phrase "known obstacles" to "known static obstacles". **OPENS** * *TODO: How to handle reverse direction? Does each primitive include this information?* -* PLN003 | Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Planning Module MUST support negative velocity values \ No newline at end of file +* PLN003 | Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Planning Module MUST support negative velocity values From 645f9f4b24f6e3ab35cca7e82b3550bff9a97a0a Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Tue, 10 Jul 2018 13:03:47 -0700 Subject: [PATCH 08/27] Update the Planning and Execution sections --- doc/requirements/images/Command-Pipeline.png | Bin 34203 -> 34069 bytes doc/requirements/images/Navigation-System.png | Bin 13718 -> 13584 bytes .../images/With-Support-Modules.png | Bin 46541 -> 46403 bytes doc/requirements/requirements.md | 213 +++++++++--------- 4 files changed, 110 insertions(+), 103 deletions(-) diff --git a/doc/requirements/images/Command-Pipeline.png b/doc/requirements/images/Command-Pipeline.png index edd46d382b3ec502db0bb0c6bd419378ce2a0095..a2cfd9294b4a904b2c8a040233ded776de013f36 100644 GIT binary patch delta 31778 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 O>7}|{3F>o`5B~$mwbzLN delta 31788 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 diff --git a/doc/requirements/images/With-Support-Modules.png b/doc/requirements/images/With-Support-Modules.png index d1cf7b8f4a30962b68481a4c92f3e7a978ab5a34..e2cf8ef68b948dc6430a7c63826aefbddbac83c6 100644 GIT binary patch delta 40114 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ⅇ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%0DbS_Bt`vB^&TlX73UT*~E(Km?3iPFK8F<(Bv;Fnu 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�z3NqL>~7+%JTMFWV{cL~%(EG~6h_)LV-{? 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

#D_(L-LFs1 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%0Au{fifyeJYTe#<`#i<{9 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 literal 0 HcmV?d00001 From b2a987c8c48c32fd1c9211cd03366954fbc92d19 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Fri, 20 Jul 2018 09:16:27 -0700 Subject: [PATCH 23/27] Add a cmake file for the robot directory --- Doxyfile | 4 ++-- .../task/TaskExecutionStateMachine.hpp | 1 - src/libs/task/package.xml | 19 ------------------- src/robot/CMakeLists.txt | 17 +++++++++++++++++ src/robot/include/robot/RosRobot.hpp | 12 +++++++++++- src/robot/src/RosRobot.cpp | 8 +++++++- 6 files changed, 37 insertions(+), 24 deletions(-) delete mode 100644 src/libs/task/package.xml create mode 100644 src/robot/CMakeLists.txt diff --git a/Doxyfile b/Doxyfile index 70ea929dbae..834f11b1a1e 100644 --- a/Doxyfile +++ b/Doxyfile @@ -771,7 +771,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = actuation can decision-making highway-pilot localization mission-planning navigation-maps route-planning sensing sensor-fusion trajectory-execution util vehicle virtual-bus world-model dash-sign +INPUT = src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -1604,7 +1604,7 @@ EXTRA_SEARCH_MAPPINGS = # If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. # The default value is: YES. -GENERATE_LATEX = YES +GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a # relative path is entered the value of OUTPUT_DIRECTORY will be put in front of diff --git a/src/libs/task/include/task/TaskExecutionStateMachine.hpp b/src/libs/task/include/task/TaskExecutionStateMachine.hpp index 3a56399ea5d..b2f774fe0c5 100644 --- a/src/libs/task/include/task/TaskExecutionStateMachine.hpp +++ b/src/libs/task/include/task/TaskExecutionStateMachine.hpp @@ -12,7 +12,6 @@ class TaskExecutionStateMachine explicit TaskExecutionStateMachine(TaskExecutionStateMachineBehavior * behavior); virtual ~TaskExecutionStateMachine(); - // No default constructor TaskExecutionStateMachine() = delete; typedef enum TaskExecutionEvent diff --git a/src/libs/task/package.xml b/src/libs/task/package.xml deleted file mode 100644 index 0230af4575d..00000000000 --- a/src/libs/task/package.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - task - 0.1.0 - TODO - Michael Jeronimo - Michael Jeronimo - Apache License 2.0 - ament_cmake - - - ament_cmake - - diff --git a/src/robot/CMakeLists.txt b/src/robot/CMakeLists.txt new file mode 100644 index 00000000000..24c6acdacf9 --- /dev/null +++ b/src/robot/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.5) +project(robot) + +# Default to C++14 +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) +endif() + +include_directories( + include + ) + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "../libs/") + +add_library(robot STATIC + src/RosRobot.cpp + ) diff --git a/src/robot/include/robot/RosRobot.hpp b/src/robot/include/robot/RosRobot.hpp index bd80bbe61a3..e2c6f9ae2b2 100644 --- a/src/robot/include/robot/RosRobot.hpp +++ b/src/robot/include/robot/RosRobot.hpp @@ -4,13 +4,23 @@ #ifndef ROBOT__ROSROBOT_HPP_ #define ROBOT__ROSROBOT_HPP_ +#include #include "robot/Robot.hpp" class RosRobot : public Robot { public: - RosRobot(); + /** + * Construct a RosRobot with a provided URDF file. + * + * @param[in] filename The filename of the URDF file describing this robot. + */ + RosRobot(std::string & filename); + + RosRobot() = delete; ~RosRobot(); + + void enterSafeState() override; }; #endif // ROBOT__ROSROBOT_HPP_ diff --git a/src/robot/src/RosRobot.cpp b/src/robot/src/RosRobot.cpp index ecd2a85ad20..3b7835962b1 100644 --- a/src/robot/src/RosRobot.cpp +++ b/src/robot/src/RosRobot.cpp @@ -3,10 +3,16 @@ #include "robot/RosRobot.hpp" -RosRobot::RosRobot() +RosRobot::RosRobot(std::string & /*filename*/) { + // Open and parser the URDF file } RosRobot::~RosRobot() { } + +void +RosRobot::enterSafeState() +{ +} From b1c01a11f03697ae77c927369c0289ecedebf115 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Mon, 23 Jul 2018 12:17:08 -0700 Subject: [PATCH 24/27] Make some changes to the Task hierarchy --- src/libs/.gitignore | 0 src/libs/task/CMakeLists.txt | 21 --- .../task/TaskExecutionStateMachine.hpp | 42 ----- .../TaskExecutionStateMachineBehavior.hpp | 17 -- .../task/src/TaskExecutionStateMachine.cpp | 169 ------------------ src/mission_execution/CMakeLists.txt | 2 - .../mission_execution/MissionExecution.hpp | 16 +- src/mission_execution/package.xml | 6 +- .../src/MissionExecution.cpp | 64 ------- .../include/navigation/NavigateToPose.hpp | 16 -- .../include/navigation/Navigation.hpp | 49 ----- .../include/navigation/NavigationTask.hpp | 19 -- src/navigation/src/Navigation.cpp | 123 ------------- src/navigation/src/main.cpp | 15 -- src/robot/include/robot/RosRobot.hpp | 2 +- src/robot/src/RosRobot.cpp | 1 + src/{navigation => task}/CMakeLists.txt | 20 +-- src/task/include/task/ControlTask.hpp | 19 ++ src/task/include/task/NavigationTask.hpp | 23 +++ src/task/include/task/PlanningTask.hpp | 19 ++ src/task/include/task/RobotTask.hpp | 21 +++ src/task/include/task/Task.hpp | 18 ++ src/{navigation => task}/package.xml | 12 +- .../src/ControlTask.cpp} | 7 +- src/task/src/NavigationTask.cpp | 13 ++ src/task/src/PlanningTask.cpp | 13 ++ .../src/RobotTask.cpp} | 7 +- 27 files changed, 154 insertions(+), 580 deletions(-) create mode 100644 src/libs/.gitignore delete mode 100644 src/libs/task/CMakeLists.txt delete mode 100644 src/libs/task/include/task/TaskExecutionStateMachine.hpp delete mode 100644 src/libs/task/include/task/TaskExecutionStateMachineBehavior.hpp delete mode 100644 src/libs/task/src/TaskExecutionStateMachine.cpp delete mode 100644 src/navigation/include/navigation/NavigateToPose.hpp delete mode 100644 src/navigation/include/navigation/Navigation.hpp delete mode 100644 src/navigation/include/navigation/NavigationTask.hpp delete mode 100644 src/navigation/src/Navigation.cpp delete mode 100644 src/navigation/src/main.cpp rename src/{navigation => task}/CMakeLists.txt (74%) create mode 100644 src/task/include/task/ControlTask.hpp create mode 100644 src/task/include/task/NavigationTask.hpp create mode 100644 src/task/include/task/PlanningTask.hpp create mode 100644 src/task/include/task/RobotTask.hpp create mode 100644 src/task/include/task/Task.hpp rename src/{navigation => task}/package.xml (58%) rename src/{navigation/src/NavigateToPose.cpp => task/src/ControlTask.cpp} (52%) create mode 100644 src/task/src/NavigationTask.cpp create mode 100644 src/task/src/PlanningTask.cpp rename src/{navigation/src/NavigationTask.cpp => task/src/RobotTask.cpp} (54%) diff --git a/src/libs/.gitignore b/src/libs/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/libs/task/CMakeLists.txt b/src/libs/task/CMakeLists.txt deleted file mode 100644 index d98d45dc1eb..00000000000 --- a/src/libs/task/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -cmake_minimum_required(VERSION 3.5) -project(task) - -# Default to C++14 -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 14) -endif() - -include_directories( - include - /usr/local/include/yasmine - /usr/local/include/yasmine/include - /usr/local/include/yasmine/include_impl - /usr/local/include/yasmine/essentials/include - ) - -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "../libs/") - -add_library(task STATIC - src/TaskExecutionStateMachine.cpp - ) diff --git a/src/libs/task/include/task/TaskExecutionStateMachine.hpp b/src/libs/task/include/task/TaskExecutionStateMachine.hpp deleted file mode 100644 index b2f774fe0c5..00000000000 --- a/src/libs/task/include/task/TaskExecutionStateMachine.hpp +++ /dev/null @@ -1,42 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#ifndef TASK__TASKEXECUTIONSTATEMACHINE_HPP_ -#define TASK__TASKEXECUTIONSTATEMACHINE_HPP_ - -#include "task/TaskExecutionStateMachineBehavior.hpp" - -class TaskExecutionStateMachine -{ -public: - explicit TaskExecutionStateMachine(TaskExecutionStateMachineBehavior * behavior); - virtual ~TaskExecutionStateMachine(); - - TaskExecutionStateMachine() = delete; - - typedef enum TaskExecutionEvent - { - EVENT_CANCEL_TASK, - EVENT_EXECUTE_TASK, - EVENT_EXECUTE_TASK_RECOVERY, - EVENT_TASK_EXECUTION_FAILED, - EVENT_TASK_CANCELED, - EVENT_TASK_EXECUTED, - EVENT_TASK_FAILED, - EVENT_TASK_RECOVERY_FAILED, - EVENT_TASK_RECOVERY_SUCCEEDED, - } TaskExecutionEvent; - - void run(); - void fireEvent(const TaskExecutionEvent eventToFire); - void halt(); - -private: - void initStateMachine(); - bool isValidStateMachine(); - - TaskExecutionStateMachineBehavior * behavior_; - void * impl_; -}; - -#endif // TASK__TASKEXECUTIONSTATEMACHINE_HPP_ diff --git a/src/libs/task/include/task/TaskExecutionStateMachineBehavior.hpp b/src/libs/task/include/task/TaskExecutionStateMachineBehavior.hpp deleted file mode 100644 index d3db4d5f7bb..00000000000 --- a/src/libs/task/include/task/TaskExecutionStateMachineBehavior.hpp +++ /dev/null @@ -1,17 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#ifndef TASK__TASKEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ -#define TASK__TASKEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ - -class TaskExecutionStateMachineBehavior -{ -public: - virtual void doReadyState() = 0; - virtual void doExecutingState() = 0; - virtual void doCancelingState() = 0; - virtual void doRecoveringState() = 0; - virtual void doAbortingState() = 0; -}; - -#endif // TASK__TASKEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ diff --git a/src/libs/task/src/TaskExecutionStateMachine.cpp b/src/libs/task/src/TaskExecutionStateMachine.cpp deleted file mode 100644 index 4c14fec9b46..00000000000 --- a/src/libs/task/src/TaskExecutionStateMachine.cpp +++ /dev/null @@ -1,169 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#include "task/TaskExecutionStateMachine.hpp" - -#include -#include -#include "yasmine.hpp" - -typedef sxe::SX_UNIQUE_PTR state_machine_uptr; - -typedef struct yasmine_data -{ - state_machine_uptr sm; -} yasmine_data; - -static void -handleUnhandledEvent(const sxy::event & event) -{ - std::cout << "Unhandled state machine event: '" << event.get_name() << "'" << std::endl; -} - -TaskExecutionStateMachine::TaskExecutionStateMachine( - TaskExecutionStateMachineBehavior * behavior) -: behavior_(behavior) -{ - impl_ = new yasmine_data; - -#if 0 - // Initialize the yasmine log manager - hermes::log_manager_template & log_manager = - hermes::log_manager::get_instance(); - log_manager.set_log_level(hermes::log_level::LL_DEBUG); - log_manager.add_logger(SX_MAKE_UNIQUE()); - log_manager.run(); - sxy::version::log_version(); -#endif - - initStateMachine(); - - if (!isValidStateMachine()) { - throw("TaskExecution state machine has defects"); - } -} - -TaskExecutionStateMachine::~TaskExecutionStateMachine() -{ - // log_manager.halt(); -} - -void -TaskExecutionStateMachine::run() -{ - // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::run()\n"); - - yasmine_data * impl = reinterpret_cast(impl_); - impl->sm->run(); -} - -void -TaskExecutionStateMachine::fireEvent(const TaskExecutionEvent eventToFire) -{ - // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::fireEvent: %d\n", eventToFire); - - yasmine_data * impl = reinterpret_cast(impl_); - impl->sm->fire_event(sxy::event_impl::create(eventToFire)); -} - -void -TaskExecutionStateMachine::halt() -{ - // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::halt\n"); - - yasmine_data * impl = reinterpret_cast(impl_); - impl->sm->halt_and_join(); -} - -void -TaskExecutionStateMachine::initStateMachine() -{ - std::string nm("TaskExecution"); - const std::string & name = nm; - - // Create the state machine - state_machine_uptr state_machine = SX_MAKE_UNIQUE(name); - - // Create a single "region" to contain the state machine - sxy::composite_state & root_state = state_machine->get_root_state(); - sxy::region & main_region = root_state.add_region("main region"); - - // Add the initial state, required by all state machines - sxy::initial_pseudostate & initial_pseudostate = main_region.add_initial_pseudostate("initial"); - - // Add the states - sxy::simple_state & simple_state_ready = main_region.add_simple_state("Ready", - Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doReadyState)); - - sxy::simple_state & simple_state_executing = main_region.add_simple_state("Executing", - Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doExecutingState)); - - sxy::simple_state & simple_state_canceling = main_region.add_simple_state("Canceling", - Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doCancelingState)); - - sxy::simple_state & simple_state_recovering = main_region.add_simple_state("Recovering", - Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doRecoveringState)); - - sxy::simple_state & simple_state_aborting = main_region.add_simple_state("Aborting", - Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doAbortingState)); - - // Add the state transitions - - // The default state transition to Ready - state_machine->add_transition(sxy::Y_COMPLETION_EVENT_ID, initial_pseudostate, - simple_state_ready); - - // Transitions from Ready - state_machine->add_transition(EVENT_EXECUTE_TASK, simple_state_ready, simple_state_executing); - - // Transitions from Executing - state_machine->add_transition(EVENT_CANCEL_TASK, simple_state_executing, - simple_state_canceling); - state_machine->add_transition(EVENT_EXECUTE_TASK_RECOVERY, simple_state_executing, - simple_state_recovering); - state_machine->add_transition(EVENT_TASK_EXECUTION_FAILED, simple_state_executing, - simple_state_aborting); - state_machine->add_transition(EVENT_TASK_EXECUTED, simple_state_executing, - simple_state_ready); - - // Transitions from Canceling - state_machine->add_transition(EVENT_TASK_CANCELED, simple_state_canceling, simple_state_ready); - - // Transitions from Recovering - state_machine->add_transition(EVENT_TASK_RECOVERY_SUCCEEDED, simple_state_recovering, - simple_state_executing); - state_machine->add_transition(EVENT_TASK_RECOVERY_FAILED, simple_state_recovering, - simple_state_aborting); - - // Transitions from Aborting - state_machine->add_transition(EVENT_TASK_FAILED, simple_state_aborting, - simple_state_ready); - - // Set the handler for any invalid state transitions -#ifndef SX_CPP03_BOOST - state_machine->set_behavior_of_unhandled_event_handler( - Y_BEHAVIOR_FUNCTION2(handleUnhandledEvent)); -#else - state_machine->set_behavior_of_unhandled_event_handler( - sxy::behavior_function(sxe::bind(&handleUnhandledEvent, sxe::_1))); -#endif - - // Save the resulting state machine to our member variable - yasmine_data * impl = reinterpret_cast(impl_); - impl->sm = sxe::move(state_machine); -} - -bool -TaskExecutionStateMachine::isValidStateMachine() -{ - yasmine_data * impl = reinterpret_cast(impl_); - - sxy::state_machine_defects defects; - const bool isValid = impl->sm->check(defects); - - if (!isValid) { - sxy::write_defects_to_log(defects); - } - - return isValid; -} diff --git a/src/mission_execution/CMakeLists.txt b/src/mission_execution/CMakeLists.txt index 7512ac4c172..2685654f475 100644 --- a/src/mission_execution/CMakeLists.txt +++ b/src/mission_execution/CMakeLists.txt @@ -29,11 +29,9 @@ add_executable(mission_execution ament_target_dependencies(mission_execution rclcpp std_msgs - task ) target_link_libraries(mission_execution - task yasmine ) diff --git a/src/mission_execution/include/mission_execution/MissionExecution.hpp b/src/mission_execution/include/mission_execution/MissionExecution.hpp index 3323feaf305..eb33bf4aa20 100644 --- a/src/mission_execution/include/mission_execution/MissionExecution.hpp +++ b/src/mission_execution/include/mission_execution/MissionExecution.hpp @@ -7,10 +7,8 @@ #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" #include "mission_execution/MissionPlan.hpp" -#include "task/TaskExecutionStateMachineBehavior.hpp" -#include "task/TaskExecutionStateMachine.hpp" -class MissionExecution : public rclcpp::Node, public TaskExecutionStateMachineBehavior +class MissionExecution : public rclcpp::Node { public: MissionExecution(); @@ -27,22 +25,10 @@ class MissionExecution : public rclcpp::Node, public TaskExecutionStateMachineBe */ void cancelMission(); - /** @name State Machine Behavior - * Implementation of the TaskExecutionStateMachineBehavior interface - */ - ///@{ - void doReadyState(); - void doExecutingState(); - void doCancelingState(); - void doRecoveringState(); - void doAbortingState(); - ///@} - private: void onCmdReceived(const std_msgs::msg::String::SharedPtr msg); private: - TaskExecutionStateMachine stateMachine_; const MissionPlan * missionPlan_; rclcpp::Subscription::SharedPtr cmdSub_; }; diff --git a/src/mission_execution/package.xml b/src/mission_execution/package.xml index 697d83b5044..f85371b5923 100644 --- a/src/mission_execution/package.xml +++ b/src/mission_execution/package.xml @@ -3,9 +3,9 @@ mission_execution 0.1.0 - Mission execution is a ROS2 node carries out an input navigation command by interfacing with the ROS2 Navigation System. - Michael Jeronimo - Michael Jeronimo + TODO + Oregon Robotics Team + Oregon Robotics Team Apache License 2.0 ament_cmake rclcpp diff --git a/src/mission_execution/src/MissionExecution.cpp b/src/mission_execution/src/MissionExecution.cpp index 6065963a188..b90697670de 100644 --- a/src/mission_execution/src/MissionExecution.cpp +++ b/src/mission_execution/src/MissionExecution.cpp @@ -7,13 +7,10 @@ MissionExecution::MissionExecution() : Node("mission_execution"), - stateMachine_(this), missionPlan_(nullptr) { RCLCPP_INFO(get_logger(), "MissionExecution::MissionExecution"); - stateMachine_.run(); - cmdSub_ = create_subscription("MissionExecutionCmd", std::bind(&MissionExecution::onCmdReceived, this, std::placeholders::_1)); } @@ -21,7 +18,6 @@ MissionExecution::MissionExecution() MissionExecution::~MissionExecution() { RCLCPP_INFO(get_logger(), "MissionExecution::~MissionExecution"); - stateMachine_.halt(); } void @@ -35,8 +31,6 @@ MissionExecution::executeMission(const MissionPlan * missionPlan) // TODO(mjeronimo): Validate the mission plan for syntax and semantics missionPlan_ = missionPlan; - - stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_EXECUTE_TASK); } void @@ -46,64 +40,6 @@ MissionExecution::cancelMission() // We've been told to cancel the currently running mission, so fire the // state transition to cause a transition to the Canceling state - - stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_CANCEL_TASK); -} - -void -MissionExecution::doReadyState() -{ - RCLCPP_INFO(get_logger(), "MissionExecution::doReadyState"); - - // TODO(mjeronimo): Anything we can do while we're waiting for work to do? -} - -void -MissionExecution::doExecutingState() -{ - RCLCPP_INFO(get_logger(), "MissionExecution::doExecutingState"); - - // TODO(mjeronimo): Perform normal processing loop for the mission plan - - // Initiate the state transition - - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_EXECUTED); - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_FAILED); - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_EXECUTE_TASK_RECOVERY); -} - -void -MissionExecution::doCancelingState() -{ - RCLCPP_INFO(get_logger(), "MissionExecution::doCancelingState"); - - // TODO(mjeronimo): Cancel the currently running mission - - // Initiate the state transition - stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_CANCELED); -} - -void -MissionExecution::doRecoveringState() -{ - RCLCPP_INFO(get_logger(), "MissionExecution::doRecoveringState"); - - // TODO(mjeronimo): Attempt to perform local recovery - - // Initiate the state transition - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_RECOVERY_FAILED); - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_RECOVERY_SUCCEEDED); -} - -void -MissionExecution::doAbortingState() -{ - RCLCPP_INFO(get_logger(), "MissionExecution::doAbortingState"); - - // TODO(mjeronimo): Do the work to abort the current mission - - // Initiate the state transition - stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_FAILED); } void diff --git a/src/navigation/include/navigation/NavigateToPose.hpp b/src/navigation/include/navigation/NavigateToPose.hpp deleted file mode 100644 index a103e9f7e9c..00000000000 --- a/src/navigation/include/navigation/NavigateToPose.hpp +++ /dev/null @@ -1,16 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#ifndef NAVIGATION__NAVIGATETOPOSE_HPP_ -#define NAVIGATION__NAVIGATETOPOSE_HPP_ - -#include "navigation/NavigationTask.hpp" - -class NavigateToPose : public NavigationTask -{ -public: - NavigateToPose(); - ~NavigateToPose(); -}; - -#endif // NAVIGATION__NAVIGATETOPOSE_HPP_ diff --git a/src/navigation/include/navigation/Navigation.hpp b/src/navigation/include/navigation/Navigation.hpp deleted file mode 100644 index 2e0ee8da2e3..00000000000 --- a/src/navigation/include/navigation/Navigation.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#ifndef NAVIGATION__NAVIGATION_HPP_ -#define NAVIGATION__NAVIGATION_HPP_ - -#include "rclcpp/rclcpp.hpp" -#include "std_msgs/msg/string.hpp" -#include "task/TaskExecutionStateMachineBehavior.hpp" -#include "task/TaskExecutionStateMachine.hpp" - -class Navigation : public rclcpp::Node, public TaskExecutionStateMachineBehavior -{ -public: - Navigation(); - virtual ~Navigation(); - - /** - * @brief Execute a navigation task - */ - void executeNavigationTask(/*const Task * task*/); - - /** - * @brief Cancel the current, in-flight navigation task, which must have - * been previously starting using executeNavigationTask. - */ - void cancelNavigationTask(); - - /** @name State Machine Behavior - * Implementation of the TaskExecutionStateMachineBehavior interface - */ - ///@{ - void doReadyState(); - void doExecutingState(); - void doCancelingState(); - void doRecoveringState(); - void doAbortingState(); - ///@} - -private: - void onCmdReceived(const std_msgs::msg::String::SharedPtr msg); - -private: - TaskExecutionStateMachine stateMachine_; - // const NavigationTask * navigationTask_; - rclcpp::Subscription::SharedPtr cmdSub_; -}; - -#endif // NAVIGATION__NAVIGATION_HPP_ diff --git a/src/navigation/include/navigation/NavigationTask.hpp b/src/navigation/include/navigation/NavigationTask.hpp deleted file mode 100644 index 628236466cb..00000000000 --- a/src/navigation/include/navigation/NavigationTask.hpp +++ /dev/null @@ -1,19 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#ifndef NAVIGATION__NAVIGATIONTASK_HPP_ -#define NAVIGATION__NAVIGATIONTASK_HPP_ - -#include "robot/Robot.hpp" - -class NavigationTask -{ -public: - NavigationTask(); - ~NavigationTask(); - -protected: - Robot * robot_; -}; - -#endif // NAVIGATION__NAVIGATIONTASK_HPP_ diff --git a/src/navigation/src/Navigation.cpp b/src/navigation/src/Navigation.cpp deleted file mode 100644 index a8727502430..00000000000 --- a/src/navigation/src/Navigation.cpp +++ /dev/null @@ -1,123 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#include "navigation/Navigation.hpp" - -#include - -Navigation::Navigation() -: Node("navigation"), - stateMachine_(this) - // ,missionPlan_(nullptr) -{ - RCLCPP_INFO(get_logger(), "Navigation::Navigation"); - - stateMachine_.run(); - - cmdSub_ = create_subscription("NavigationCmd", - std::bind(&Navigation::onCmdReceived, this, std::placeholders::_1)); -} - -Navigation::~Navigation() -{ - RCLCPP_INFO(get_logger(), "Navigation::~Navigation"); - stateMachine_.halt(); -} - -void -Navigation::executeNavigationTask(/*const NavigationTask * missionPlan*/) -{ - RCLCPP_INFO(get_logger(), "Navigation::executeNavigationTask"); - - // We've been given a task plan to execute. Do any preparatory work - // and start things off by firing a state transition, which will land - // us in the Executing state. - - // TODO(mjeronimo): Validate the task - // missionPlan_ = missionPlan; - - stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_EXECUTE_TASK); -} - -void -Navigation::cancelNavigationTask() -{ - RCLCPP_INFO(get_logger(), "Navigation::cancelNavigationTask"); - - // We've been told to cancel the currently running mission, so fire the - // state transition to cause a transition to the Canceling state - - stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_CANCEL_TASK); -} - -void -Navigation::doReadyState() -{ - RCLCPP_INFO(get_logger(), "Navigation::doReadyState"); - - // TODO(mjeronimo): Anything we can do while we're waiting for work to do? -} - -void -Navigation::doExecutingState() -{ - RCLCPP_INFO(get_logger(), "Navigation::doExecutingState"); - - // TODO(mjeronimo): Perform normal processing loop for the mission plan - - // Initiate the state transition - - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_EXECUTED); - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_FAILED); - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_EXECUTE_TASK_RECOVERY); -} - -void -Navigation::doCancelingState() -{ - RCLCPP_INFO(get_logger(), "Navigation::doCancelingState"); - - // TODO(mjeronimo): Cancel the currently running mission - - // Initiate the state transition - stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_CANCELED); -} - -void -Navigation::doRecoveringState() -{ - RCLCPP_INFO(get_logger(), "Navigation::doRecoveringState"); - - // TODO(mjeronimo): Attempt to perform local recovery - - // Initiate the state transition - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_RECOVERY_FAILED); - // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_RECOVERY_SUCCEEDED); -} - -void -Navigation::doAbortingState() -{ - RCLCPP_INFO(get_logger(), "Navigation::doAbortingState"); - - // TODO(mjeronimo): Do the work to abort the current task - - // Initiate the state transition - stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_FAILED); -} - -void -Navigation::onCmdReceived(const std_msgs::msg::String::SharedPtr msg) -{ - RCLCPP_INFO(get_logger(), "Navigation::onCmdReceived: \"%s\"", msg->data.c_str()) - - if (msg->data.compare("ExecuteNavigationTask") == 0) { - // NavigationTask *task; - executeNavigationTask(/*&missionPlan*/); - } else if (msg->data.compare("CancelNavigationTask") == 0) { - cancelNavigationTask(); - } else { - RCLCPP_INFO(get_logger(), "Navigation::onCmdReceived: invalid command: \"%s\"", - msg->data.c_str()) - } -} diff --git a/src/navigation/src/main.cpp b/src/navigation/src/main.cpp deleted file mode 100644 index 9d72c8302c1..00000000000 --- a/src/navigation/src/main.cpp +++ /dev/null @@ -1,15 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#include -#include "rclcpp/rclcpp.hpp" -#include "navigation/Navigation.hpp" - -int main(int argc, char ** argv) -{ - rclcpp::init(argc, argv); - rclcpp::spin(std::make_shared()); - rclcpp::shutdown(); - - return 0; -} diff --git a/src/robot/include/robot/RosRobot.hpp b/src/robot/include/robot/RosRobot.hpp index e2c6f9ae2b2..d05b7fb7fba 100644 --- a/src/robot/include/robot/RosRobot.hpp +++ b/src/robot/include/robot/RosRobot.hpp @@ -15,7 +15,7 @@ class RosRobot : public Robot * * @param[in] filename The filename of the URDF file describing this robot. */ - RosRobot(std::string & filename); + explicit RosRobot(std::string & filename); RosRobot() = delete; ~RosRobot(); diff --git a/src/robot/src/RosRobot.cpp b/src/robot/src/RosRobot.cpp index 3b7835962b1..c6b8e3fe535 100644 --- a/src/robot/src/RosRobot.cpp +++ b/src/robot/src/RosRobot.cpp @@ -2,6 +2,7 @@ // Copyright 2018 Intel Corporation. All Rights Reserved. #include "robot/RosRobot.hpp" +#include RosRobot::RosRobot(std::string & /*filename*/) { diff --git a/src/navigation/CMakeLists.txt b/src/task/CMakeLists.txt similarity index 74% rename from src/navigation/CMakeLists.txt rename to src/task/CMakeLists.txt index 7486a57d153..c9dcc644e7b 100644 --- a/src/navigation/CMakeLists.txt +++ b/src/task/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.5) -project(navigation) +project(task) # Default to C++14 if(NOT CMAKE_CXX_STANDARD) @@ -16,25 +16,21 @@ find_package(std_msgs REQUIRED) include_directories( include - ../libs/task/include + ../robot/include ) link_directories(${CMAKE_BINARY_DIR}/../libs) -add_executable(navigation - src/main.cpp - src/Navigation.cpp +add_library(task STATIC + src/ControlTask.cpp + src/NavigationTask.cpp + src/PlanningTask.cpp + src/RobotTask.cpp ) -ament_target_dependencies(navigation +ament_target_dependencies(task rclcpp std_msgs - task - ) - -target_link_libraries(navigation - task - yasmine ) install(TARGETS ${PROJECT_NAME} diff --git a/src/task/include/task/ControlTask.hpp b/src/task/include/task/ControlTask.hpp new file mode 100644 index 00000000000..af1d744dce4 --- /dev/null +++ b/src/task/include/task/ControlTask.hpp @@ -0,0 +1,19 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef TASK__CONTROLTASK_HPP_ +#define TASK__CONTROLTASK_HPP_ + +#include "task/RobotTask.hpp" + +class ControlTask : public RobotTask +{ +public: + explicit ControlTask(Robot * robot); + ControlTask() = delete; + ~ControlTask(); + + // executePlan() +}; + +#endif // TASK__CONTROLTASK_HPP_ diff --git a/src/task/include/task/NavigationTask.hpp b/src/task/include/task/NavigationTask.hpp new file mode 100644 index 00000000000..9fca257a849 --- /dev/null +++ b/src/task/include/task/NavigationTask.hpp @@ -0,0 +1,23 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef TASK__NAVIGATIONTASK_HPP_ +#define TASK__NAVIGATIONTASK_HPP_ + +#include "task/RobotTask.hpp" +#include "task/PlanningTask.hpp" +#include "task/ControlTask.hpp" + +class NavigationTask : public RobotTask +{ +public: + explicit NavigationTask(Robot * robot); + NavigationTask() = delete; + ~NavigationTask(); + +protected: + PlanningTask planner_; + ControlTask controller_; +}; + +#endif // TASK__NAVIGATIONTASK_HPP_ diff --git a/src/task/include/task/PlanningTask.hpp b/src/task/include/task/PlanningTask.hpp new file mode 100644 index 00000000000..f6219221863 --- /dev/null +++ b/src/task/include/task/PlanningTask.hpp @@ -0,0 +1,19 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef TASK__PLANNINGTASK_HPP_ +#define TASK__PLANNINGTASK_HPP_ + +#include "task/RobotTask.hpp" + +class PlanningTask : public RobotTask +{ +public: + explicit PlanningTask(Robot * robot); + PlanningTask() = delete; + ~PlanningTask(); + + // getPlan() +}; + +#endif // TASK__PLANNINGTASK_HPP_ diff --git a/src/task/include/task/RobotTask.hpp b/src/task/include/task/RobotTask.hpp new file mode 100644 index 00000000000..3ea48bfb7d6 --- /dev/null +++ b/src/task/include/task/RobotTask.hpp @@ -0,0 +1,21 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef TASK__ROBOTTASK_HPP_ +#define TASK__ROBOTTASK_HPP_ + +#include "task/Task.hpp" +#include "robot/Robot.hpp" + +class RobotTask : public Task +{ +public: + explicit RobotTask(Robot * robot); + RobotTask() = delete; + ~RobotTask(); + +protected: + Robot * robot_; +}; + +#endif // TASK__ROBOTTASK_HPP_ diff --git a/src/task/include/task/Task.hpp b/src/task/include/task/Task.hpp new file mode 100644 index 00000000000..02a177ad65f --- /dev/null +++ b/src/task/include/task/Task.hpp @@ -0,0 +1,18 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef TASK__TASK_HPP_ +#define TASK__TASK_HPP_ + +#include "rclcpp/rclcpp.hpp" + +class Task +{ +public: + virtual ~Task() {} + +protected: + // ROS Action +}; + +#endif // TASK__TASK_HPP_ diff --git a/src/navigation/package.xml b/src/task/package.xml similarity index 58% rename from src/navigation/package.xml rename to src/task/package.xml index 4916e43ed10..4d8e3dfeb05 100644 --- a/src/navigation/package.xml +++ b/src/task/package.xml @@ -1,18 +1,18 @@ - navigation + task 0.1.0 - Navigation a ROS2 node carries out an input navigation command. - Michael Jeronimo - Michael Jeronimo + TODO + Oregon Robotics Team + Oregon Robotics Team Apache License 2.0 ament_cmake rclcpp - task + std_msgs rclcpp + std_msgs ament_cmake - diff --git a/src/navigation/src/NavigateToPose.cpp b/src/task/src/ControlTask.cpp similarity index 52% rename from src/navigation/src/NavigateToPose.cpp rename to src/task/src/ControlTask.cpp index f973e212414..e732283447d 100644 --- a/src/navigation/src/NavigateToPose.cpp +++ b/src/task/src/ControlTask.cpp @@ -1,12 +1,13 @@ // License: Apache 2.0. See LICENSE file in root directory. // Copyright 2018 Intel Corporation. All Rights Reserved. -#include "navigation/NavigateToPose.hpp" +#include "task/ControlTask.hpp" -NavigateToPose::NavigateToPose() +ControlTask::ControlTask(Robot * robot) +: RobotTask(robot) { } -NavigateToPose::~NavigateToPose() +ControlTask::~ControlTask() { } diff --git a/src/task/src/NavigationTask.cpp b/src/task/src/NavigationTask.cpp new file mode 100644 index 00000000000..b86b0a72ebf --- /dev/null +++ b/src/task/src/NavigationTask.cpp @@ -0,0 +1,13 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "task/NavigationTask.hpp" + +NavigationTask::NavigationTask(Robot * robot) +: RobotTask(robot), planner_(robot), controller_(robot) +{ +} + +NavigationTask::~NavigationTask() +{ +} diff --git a/src/task/src/PlanningTask.cpp b/src/task/src/PlanningTask.cpp new file mode 100644 index 00000000000..e1ff32f37e9 --- /dev/null +++ b/src/task/src/PlanningTask.cpp @@ -0,0 +1,13 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "task/PlanningTask.hpp" + +PlanningTask::PlanningTask(Robot * robot) +: RobotTask(robot) +{ +} + +PlanningTask::~PlanningTask() +{ +} diff --git a/src/navigation/src/NavigationTask.cpp b/src/task/src/RobotTask.cpp similarity index 54% rename from src/navigation/src/NavigationTask.cpp rename to src/task/src/RobotTask.cpp index 086a695ea82..30af17498f8 100644 --- a/src/navigation/src/NavigationTask.cpp +++ b/src/task/src/RobotTask.cpp @@ -1,12 +1,13 @@ // License: Apache 2.0. See LICENSE file in root directory. // Copyright 2018 Intel Corporation. All Rights Reserved. -#include "navigation/NavigationTask.hpp" +#include "task/RobotTask.hpp" -NavigationTask::NavigationTask() +RobotTask::RobotTask(Robot * robot) { + robot = robot; } -NavigationTask::~NavigationTask() +RobotTask::~RobotTask() { } From 4e3bf04ef18893c431c40d2851c02ba7e1dbc5f5 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Mon, 23 Jul 2018 12:58:54 -0700 Subject: [PATCH 25/27] Update some comments in Task about our approach --- src/task/include/task/Task.hpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/task/include/task/Task.hpp b/src/task/include/task/Task.hpp index 02a177ad65f..8311c2ca796 100644 --- a/src/task/include/task/Task.hpp +++ b/src/task/include/task/Task.hpp @@ -12,7 +12,14 @@ class Task virtual ~Task() {} protected: - // ROS Action + // Emulate ROS Action for now: + // C++ templates for (Our)SimpleActionServer, (Our)SimpleActionClient + // + // * Subscriber for ROS topic for commands w/ parameters + // * Execute Command + // * Cancel Command + // * Publisher for status updates + // * Publisher for completion }; #endif // TASK__TASK_HPP_ From b850b570762269de84fbcea82c8974bcd2f0f876 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Wed, 25 Jul 2018 10:51:52 -0700 Subject: [PATCH 26/27] Some work on the task class hierarchy --- src/task/CMakeLists.txt | 2 + src/task/include/task/AStarPlanner.hpp | 23 +++++++++ src/task/include/task/ControlTask.hpp | 4 +- src/task/include/task/NavigationTask.hpp | 10 ++-- src/task/include/task/PlanningTask.hpp | 10 ++-- src/task/include/task/RobotTask.hpp | 2 +- src/task/include/task/SpecificController.hpp | 22 ++++++++ src/task/include/task/Task.hpp | 28 ++++++---- src/task/src/AStarPlanner.cpp | 26 ++++++++++ src/task/src/ControlTask.cpp | 4 +- src/task/src/NavigationTask.cpp | 4 +- src/task/src/PlanningTask.cpp | 6 ++- src/task/src/RobotTask.cpp | 3 +- src/task/src/SpecificController.cpp | 24 +++++++++ src/task/src/Task.cpp | 54 ++++++++++++++++++++ 15 files changed, 193 insertions(+), 29 deletions(-) create mode 100644 src/task/include/task/AStarPlanner.hpp create mode 100644 src/task/include/task/SpecificController.hpp create mode 100644 src/task/src/AStarPlanner.cpp create mode 100644 src/task/src/SpecificController.cpp create mode 100644 src/task/src/Task.cpp diff --git a/src/task/CMakeLists.txt b/src/task/CMakeLists.txt index c9dcc644e7b..bc1af7b128b 100644 --- a/src/task/CMakeLists.txt +++ b/src/task/CMakeLists.txt @@ -26,6 +26,8 @@ add_library(task STATIC src/NavigationTask.cpp src/PlanningTask.cpp src/RobotTask.cpp + src/Task.cpp + src/AStarPlanner.cpp ) ament_target_dependencies(task diff --git a/src/task/include/task/AStarPlanner.hpp b/src/task/include/task/AStarPlanner.hpp new file mode 100644 index 00000000000..1566ccdf5de --- /dev/null +++ b/src/task/include/task/AStarPlanner.hpp @@ -0,0 +1,23 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef TASK__ASTARPLANNER_HPP_ +#define TASK__ASTARPLANNER_HPP_ + +#include "task/PlanningTask.hpp" + +class AStarPlanner : public PlanningTask +{ +public: + AStarPlanner(const std::string & name); + AStarPlanner() = delete; + ~AStarPlanner(); + + void createPlan(const geometry_msgs::msg::PoseStamped & start, + const geometry_msgs::msg::PoseStamped & goal); + +protected: + void workerThread() override; +}; + +#endif // TASK__ASTARPLANNER_HPP_ diff --git a/src/task/include/task/ControlTask.hpp b/src/task/include/task/ControlTask.hpp index af1d744dce4..7db4d7a9ebc 100644 --- a/src/task/include/task/ControlTask.hpp +++ b/src/task/include/task/ControlTask.hpp @@ -9,11 +9,11 @@ class ControlTask : public RobotTask { public: - explicit ControlTask(Robot * robot); + explicit ControlTask(const std::string & name, Robot * robot); ControlTask() = delete; ~ControlTask(); - // executePlan() + virtual void executePlan() = 0; }; #endif // TASK__CONTROLTASK_HPP_ diff --git a/src/task/include/task/NavigationTask.hpp b/src/task/include/task/NavigationTask.hpp index 9fca257a849..5e7cc90f35a 100644 --- a/src/task/include/task/NavigationTask.hpp +++ b/src/task/include/task/NavigationTask.hpp @@ -5,19 +5,19 @@ #define TASK__NAVIGATIONTASK_HPP_ #include "task/RobotTask.hpp" -#include "task/PlanningTask.hpp" -#include "task/ControlTask.hpp" +#include "task/AStarPlanner.hpp" +#include "task/SpecificController.hpp" class NavigationTask : public RobotTask { public: - explicit NavigationTask(Robot * robot); + explicit NavigationTask(const std::string & name, Robot * robot); NavigationTask() = delete; ~NavigationTask(); protected: - PlanningTask planner_; - ControlTask controller_; + AStarPlanner planner_; + SpecificController controller_; }; #endif // TASK__NAVIGATIONTASK_HPP_ diff --git a/src/task/include/task/PlanningTask.hpp b/src/task/include/task/PlanningTask.hpp index f6219221863..68d894e8f8f 100644 --- a/src/task/include/task/PlanningTask.hpp +++ b/src/task/include/task/PlanningTask.hpp @@ -4,16 +4,18 @@ #ifndef TASK__PLANNINGTASK_HPP_ #define TASK__PLANNINGTASK_HPP_ -#include "task/RobotTask.hpp" +#include "task/Task.hpp" +#include "geometry_msgs/msg/pose_stamped.hpp" -class PlanningTask : public RobotTask +class PlanningTask : public Task { public: - explicit PlanningTask(Robot * robot); + PlanningTask(const std::string & name); PlanningTask() = delete; ~PlanningTask(); - // getPlan() + virtual void createPlan(const geometry_msgs::msg::PoseStamped & start, + const geometry_msgs::msg::PoseStamped & goal) = 0; }; #endif // TASK__PLANNINGTASK_HPP_ diff --git a/src/task/include/task/RobotTask.hpp b/src/task/include/task/RobotTask.hpp index 3ea48bfb7d6..8a8d30f3021 100644 --- a/src/task/include/task/RobotTask.hpp +++ b/src/task/include/task/RobotTask.hpp @@ -10,7 +10,7 @@ class RobotTask : public Task { public: - explicit RobotTask(Robot * robot); + RobotTask(const std::string & name, Robot * robot); RobotTask() = delete; ~RobotTask(); diff --git a/src/task/include/task/SpecificController.hpp b/src/task/include/task/SpecificController.hpp new file mode 100644 index 00000000000..f05e9586bd9 --- /dev/null +++ b/src/task/include/task/SpecificController.hpp @@ -0,0 +1,22 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef TASK__SPECIFICCONTROLLER_HPP_ +#define TASK__SPECIFICCONTROLLER_HPP_ + +#include "task/ControlTask.hpp" + +class SpecificController : public ControlTask +{ +public: + SpecificController(const std::string & name, Robot * robot); + SpecificController() = delete; + ~SpecificController(); + + void executePlan() override; + +protected: + void workerThread() override; +}; + +#endif // TASK__SPECIFICCONTROLLER_HPP_ diff --git a/src/task/include/task/Task.hpp b/src/task/include/task/Task.hpp index 8311c2ca796..6a69465e232 100644 --- a/src/task/include/task/Task.hpp +++ b/src/task/include/task/Task.hpp @@ -4,22 +4,30 @@ #ifndef TASK__TASK_HPP_ #define TASK__TASK_HPP_ +#include +#include +#include #include "rclcpp/rclcpp.hpp" +#include "std_msgs/msg/string.hpp" -class Task +class Task: public rclcpp::Node { public: - virtual ~Task() {} + Task(const std::string & name); + virtual ~Task(); + + void execute(); + void cancel(); protected: - // Emulate ROS Action for now: - // C++ templates for (Our)SimpleActionServer, (Our)SimpleActionClient - // - // * Subscriber for ROS topic for commands w/ parameters - // * Execute Command - // * Cancel Command - // * Publisher for status updates - // * Publisher for completion + virtual void workerThread() = 0; + + std::thread *workerThread_; + std::atomic stopWorkerThread_; + + void onCmdReceived(const std_msgs::msg::String::SharedPtr msg); + + rclcpp::Subscription::SharedPtr cmdSub_; }; #endif // TASK__TASK_HPP_ diff --git a/src/task/src/AStarPlanner.cpp b/src/task/src/AStarPlanner.cpp new file mode 100644 index 00000000000..8cf64108767 --- /dev/null +++ b/src/task/src/AStarPlanner.cpp @@ -0,0 +1,26 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "task/AStarPlanner.hpp" + +AStarPlanner::AStarPlanner(const std::string & name) +: PlanningTask(name) +{ + RCLCPP_INFO(get_logger(), "AStarPlanner::AStarPlanner"); +} + +AStarPlanner::~AStarPlanner() +{ + RCLCPP_INFO(get_logger(), "AStarPlanner::~AStarPlanner"); +} + +void +AStarPlanner::createPlan(const geometry_msgs::msg::PoseStamped & start, + const geometry_msgs::msg::PoseStamped & goal) +{ +} + +void +AStarPlanner::workerThread() +{ +} diff --git a/src/task/src/ControlTask.cpp b/src/task/src/ControlTask.cpp index e732283447d..fd75eef29e3 100644 --- a/src/task/src/ControlTask.cpp +++ b/src/task/src/ControlTask.cpp @@ -3,8 +3,8 @@ #include "task/ControlTask.hpp" -ControlTask::ControlTask(Robot * robot) -: RobotTask(robot) +ControlTask::ControlTask(const std::string & name, Robot * robot) +: RobotTask(name, robot) { } diff --git a/src/task/src/NavigationTask.cpp b/src/task/src/NavigationTask.cpp index b86b0a72ebf..92b724e35de 100644 --- a/src/task/src/NavigationTask.cpp +++ b/src/task/src/NavigationTask.cpp @@ -3,8 +3,8 @@ #include "task/NavigationTask.hpp" -NavigationTask::NavigationTask(Robot * robot) -: RobotTask(robot), planner_(robot), controller_(robot) +NavigationTask::NavigationTask(const std::string & name, Robot * robot) +: RobotTask(name, robot), planner_(name + "Planner"), controller_(name + "Controller", robot) { } diff --git a/src/task/src/PlanningTask.cpp b/src/task/src/PlanningTask.cpp index e1ff32f37e9..1849b2db045 100644 --- a/src/task/src/PlanningTask.cpp +++ b/src/task/src/PlanningTask.cpp @@ -3,11 +3,13 @@ #include "task/PlanningTask.hpp" -PlanningTask::PlanningTask(Robot * robot) -: RobotTask(robot) +PlanningTask::PlanningTask(const std::string & name) +: Task(name) { + RCLCPP_INFO(get_logger(), "PlanningTask::PlanningTask"); } PlanningTask::~PlanningTask() { + RCLCPP_INFO(get_logger(), "PlanningTask::~PlanningTask"); } diff --git a/src/task/src/RobotTask.cpp b/src/task/src/RobotTask.cpp index 30af17498f8..bbab2b4ee39 100644 --- a/src/task/src/RobotTask.cpp +++ b/src/task/src/RobotTask.cpp @@ -3,7 +3,8 @@ #include "task/RobotTask.hpp" -RobotTask::RobotTask(Robot * robot) +RobotTask::RobotTask(const std::string & name, Robot * robot) +: Task(name) { robot = robot; } diff --git a/src/task/src/SpecificController.cpp b/src/task/src/SpecificController.cpp new file mode 100644 index 00000000000..ad5e42e3f6d --- /dev/null +++ b/src/task/src/SpecificController.cpp @@ -0,0 +1,24 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "task/SpecificController.hpp" + +SpecificController::SpecificController(const std::string & name, Robot * robot) +: ControlTask(name, robot) +{ +} + +SpecificController::~ControlTask() +{ +} + +void +SpecificController::executePlan() +{ +} + +void +SpecificController::workerThread() +{ +} + diff --git a/src/task/src/Task.cpp b/src/task/src/Task.cpp new file mode 100644 index 00000000000..f957ab24da4 --- /dev/null +++ b/src/task/src/Task.cpp @@ -0,0 +1,54 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "task/Task.hpp" + +Task::Task(const std::string & name) +: Node(name), workerThread_(nullptr), stopWorkerThread_(false) +{ + RCLCPP_INFO(get_logger(), "Task::Task"); + + cmdSub_ = create_subscription("TaskCmd", + std::bind(&Task::onCmdReceived, this, std::placeholders::_1)); +} + +Task::~Task() +{ + RCLCPP_INFO(get_logger(), "Task::~Task"); + if (workerThread_ != nullptr) + cancel(); +} + +void +Task::execute() +{ + RCLCPP_INFO(get_logger(), "Task::execute"); + stopWorkerThread_ = false; + workerThread_ = new std::thread(&Task::workerThread, this); +} + +void +Task::cancel() +{ + RCLCPP_INFO(get_logger(), "Task::cancel"); + stopWorkerThread_ = true; + workerThread_->join(); + + delete workerThread_; + workerThread_ = nullptr; +} + +void +Task::onCmdReceived(const std_msgs::msg::String::SharedPtr msg) +{ + RCLCPP_INFO(get_logger(), "Task::onCmdReceived: \"%s\"", msg->data.c_str()) + + if (msg->data.compare("ExecuteTask") == 0) { + execute(); + } else if (msg->data.compare("CancelTask") == 0) { + cancel(); + } else { + RCLCPP_INFO(get_logger(), "Task::onCmdReceived: invalid command: \"%s\"", + msg->data.c_str()) + } +} From 20740e10f908be9b95bddf7107bdf0bfd6b5e0b6 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Wed, 25 Jul 2018 13:32:52 -0700 Subject: [PATCH 27/27] Add DWA shell; add some trace macros --- src/task/CMakeLists.txt | 1 + ...ecificController.hpp => DwaController.hpp} | 8 +++--- src/task/include/task/NavigationTask.hpp | 4 +-- src/task/src/AStarPlanner.cpp | 2 ++ src/task/src/ControlTask.cpp | 2 ++ src/task/src/DwaController.cpp | 27 +++++++++++++++++++ src/task/src/NavigationTask.cpp | 2 ++ src/task/src/RobotTask.cpp | 2 ++ src/task/src/SpecificController.cpp | 24 ----------------- 9 files changed, 42 insertions(+), 30 deletions(-) rename src/task/include/task/{SpecificController.hpp => DwaController.hpp} (68%) create mode 100644 src/task/src/DwaController.cpp delete mode 100644 src/task/src/SpecificController.cpp diff --git a/src/task/CMakeLists.txt b/src/task/CMakeLists.txt index bc1af7b128b..e7d4f7f9ce6 100644 --- a/src/task/CMakeLists.txt +++ b/src/task/CMakeLists.txt @@ -28,6 +28,7 @@ add_library(task STATIC src/RobotTask.cpp src/Task.cpp src/AStarPlanner.cpp + src/DwaController.cpp ) ament_target_dependencies(task diff --git a/src/task/include/task/SpecificController.hpp b/src/task/include/task/DwaController.hpp similarity index 68% rename from src/task/include/task/SpecificController.hpp rename to src/task/include/task/DwaController.hpp index f05e9586bd9..e245fcefb2d 100644 --- a/src/task/include/task/SpecificController.hpp +++ b/src/task/include/task/DwaController.hpp @@ -6,12 +6,12 @@ #include "task/ControlTask.hpp" -class SpecificController : public ControlTask +class DwaController : public ControlTask { public: - SpecificController(const std::string & name, Robot * robot); - SpecificController() = delete; - ~SpecificController(); + DwaController(const std::string & name, Robot * robot); + DwaController() = delete; + ~DwaController(); void executePlan() override; diff --git a/src/task/include/task/NavigationTask.hpp b/src/task/include/task/NavigationTask.hpp index 5e7cc90f35a..4a9bc03df25 100644 --- a/src/task/include/task/NavigationTask.hpp +++ b/src/task/include/task/NavigationTask.hpp @@ -6,7 +6,7 @@ #include "task/RobotTask.hpp" #include "task/AStarPlanner.hpp" -#include "task/SpecificController.hpp" +#include "task/DwaController.hpp" class NavigationTask : public RobotTask { @@ -17,7 +17,7 @@ class NavigationTask : public RobotTask protected: AStarPlanner planner_; - SpecificController controller_; + DwaController controller_; }; #endif // TASK__NAVIGATIONTASK_HPP_ diff --git a/src/task/src/AStarPlanner.cpp b/src/task/src/AStarPlanner.cpp index 8cf64108767..e9694b405db 100644 --- a/src/task/src/AStarPlanner.cpp +++ b/src/task/src/AStarPlanner.cpp @@ -18,9 +18,11 @@ void AStarPlanner::createPlan(const geometry_msgs::msg::PoseStamped & start, const geometry_msgs::msg::PoseStamped & goal) { + RCLCPP_INFO(get_logger(), "AStarPlanner::createPlan"); } void AStarPlanner::workerThread() { + RCLCPP_INFO(get_logger(), "AStarPlanner::workerThread"); } diff --git a/src/task/src/ControlTask.cpp b/src/task/src/ControlTask.cpp index fd75eef29e3..49dc3adce3b 100644 --- a/src/task/src/ControlTask.cpp +++ b/src/task/src/ControlTask.cpp @@ -6,8 +6,10 @@ ControlTask::ControlTask(const std::string & name, Robot * robot) : RobotTask(name, robot) { + RCLCPP_INFO(get_logger(), "ControlTask::ControlTask"); } ControlTask::~ControlTask() { + RCLCPP_INFO(get_logger(), "ControlTask::~ControlTask"); } diff --git a/src/task/src/DwaController.cpp b/src/task/src/DwaController.cpp new file mode 100644 index 00000000000..4c7e54db03a --- /dev/null +++ b/src/task/src/DwaController.cpp @@ -0,0 +1,27 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "task/DwaController.hpp" + +DwaController::DwaController(const std::string & name, Robot * robot) +: ControlTask(name, robot) +{ + RCLCPP_INFO(get_logger(), "DwaController::DwaController"); +} + +DwaController::~DwaController() +{ + RCLCPP_INFO(get_logger(), "DwaController::~DwaController"); +} + +void +DwaController::executePlan() +{ + RCLCPP_INFO(get_logger(), "DwaController::executePlan"); +} + +void +DwaController::workerThread() +{ + RCLCPP_INFO(get_logger(), "DwaController::workerThread"); +} diff --git a/src/task/src/NavigationTask.cpp b/src/task/src/NavigationTask.cpp index 92b724e35de..0419fe21059 100644 --- a/src/task/src/NavigationTask.cpp +++ b/src/task/src/NavigationTask.cpp @@ -6,8 +6,10 @@ NavigationTask::NavigationTask(const std::string & name, Robot * robot) : RobotTask(name, robot), planner_(name + "Planner"), controller_(name + "Controller", robot) { + RCLCPP_INFO(get_logger(), "NavigationTask::NavigationTask"); } NavigationTask::~NavigationTask() { + RCLCPP_INFO(get_logger(), "NavigationTask::~NavigationTask"); } diff --git a/src/task/src/RobotTask.cpp b/src/task/src/RobotTask.cpp index bbab2b4ee39..6e32da1e922 100644 --- a/src/task/src/RobotTask.cpp +++ b/src/task/src/RobotTask.cpp @@ -6,9 +6,11 @@ RobotTask::RobotTask(const std::string & name, Robot * robot) : Task(name) { + RCLCPP_INFO(get_logger(), "RobotTask::RobotTask"); robot = robot; } RobotTask::~RobotTask() { + RCLCPP_INFO(get_logger(), "RobotTask::~RobotTask"); } diff --git a/src/task/src/SpecificController.cpp b/src/task/src/SpecificController.cpp deleted file mode 100644 index ad5e42e3f6d..00000000000 --- a/src/task/src/SpecificController.cpp +++ /dev/null @@ -1,24 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#include "task/SpecificController.hpp" - -SpecificController::SpecificController(const std::string & name, Robot * robot) -: ControlTask(name, robot) -{ -} - -SpecificController::~ControlTask() -{ -} - -void -SpecificController::executePlan() -{ -} - -void -SpecificController::workerThread() -{ -} -

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 YCH~WaBQ9(9Gn?Rb*u}${;^?3JKWqp^MF0Q* diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index d01c927b822..cf2155d6601 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -1,8 +1,8 @@ # ROS 2 Navigation System Requirements -The ROS 2 Navigation System ("Navigation System") is the control system that enables a robot to autonomously reach a goal state, such as a specific position and orientation relative to a given map. Provided with a navigation command to execute, the Navigation System generates a plan to achieve the desired result and outputs control commands to autonomously direct the robot, respecting any safety constraints and avoiding obstacles encountered along the way. +The ROS 2 Navigation System ("Navigation System") is the control system that enables a robot to autonomously reach a goal state, such as a specific position and orientation relative to a given map. Provided with a navigation command to execute, the Navigation System generates a plan to achieve the desired result and outputs control commands to autonomously direct the robot, respecting any safety constraints and avoiding obstacles encountered along the way. -This document lists the requirements for the ROS 2 Navigation System. The ROS 2 Navigation System is intended to be a generalization of the ROS 1 navigation stack and will address some of its known limitations. +This document lists the requirements for the ROS 2 Navigation System. The ROS 2 Navigation System is intended to be a generalization of the ROS 1 navigation stack and will address some of its known limitations. # 1. Introduction @@ -30,48 +30,58 @@ In the requirements specified below, certain keywords have a specific meaning as 4. **SHOULD NOT**: This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label. -5. **MAY**: This word, or the adjective "OPTIONAL", mean that an item is truly optional. One vendor may choose to include the item because a particular marketplace requires it or because the vendor feels that it enhances the product while another vendor may omit the same item. An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein an implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides.) +5. **MAY**: This word, or the adjective "OPTIONAL", mean that an item is truly optional. An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein an implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides). These definitions are derived from the IETF Best Current Practices Document #14. -## 1.3 Use Cases +## 1.3 Terminology -The Navigation System is part of a larger system that includes a person or automated system ("the user") directing the operation of one or more robots. To provide context for the Navigation System, this section lists the expected interactions between the user and the robot system. +Term | Definition +---- | ---------- +Path | A *Path* is an ordered sequence of points in space. +Route | A *Route* is a synonym for Path. +Trajectory | A *Trajectory* is a path for which which timing is specified, e.g., velocities and accelerations for each point. +Path Planning | *Path Planning* finds an optimal path from one node in a graph to another. Algorithms such as A*, D*, and RRT are all path planning algorithms if they don’t consider motion. +Motion Planning | *Motion Planning* specifies the motion of the robot over time. Motion can go along the same path but with different trajectories. -## 1.3.1 Mapping Use Cases +## 1.4 Use Cases -The user will typically create a map of the area in which the robot is to navigate. This map identifies significant features of the environment, such as safety zones, known obstacles, walls, virtual lanes, etc. While the creation of the map itself is outside the scope of the Navigation System, the system is dependent on the map format(s). The map will need to be rich enough to support the Navigation System requirements listed in this document. +The Navigation System is part of a larger system that includes a person or automated system ("the user") directing the operation of one or more robots. To provide context for the Navigation System, this section lists the expected interactions between the user and the robot system. + +## 1.4.1 Mapping Use Cases + +The user will typically create a map of the area in which the robot is to navigate, either manually or using the SLAM algorithm. This map identifies significant features of the environment, including fixed features, such as walls and fixed obstacles, and virtual features, such as navigation lanes and safety zones. While the creation of the map itself is outside the scope of the Navigation System, the system is dependent on the map format(s). The map will need to be rich enough to support the Navigation System requirements listed in this document. The following use case diagram shows an example of the kinds of operations provided by a mapping interface. ![Mapping Use Cases](./images/Mapping-Use-Cases.png) -## 1.3.2 Mission Planning Use Cases +## 1.4.2 Mission Planning Use Cases Another area in which the user interacts with the system is in the creation of a mission plan for the robot. The user composes a sequence of primitive navigation commands, such as **Navigate to Pose**, **Navigate to Area**, **Maintain Pose**, etc., into an overall plan. While mission planning is also outside the scope of the Navigation System, the mission plan format should be sufficient to meet the Navigation System requirements listed in this document. ![Mission Planning Use Cases](./images/Mission-Planning-Use-Cases.png) -## 1.3.3 Mission Execution Use Cases +## 1.4.3 Mission Execution Use Cases The user will be able to initiate the execution of specific mission plans ("missions") and should also be able to view the status of the mission in progress, as well as cancel the mission that is currently in progress. In addition, the user may be required to provide the robot with its initial pose if the robot is not able to determine it automatically. ![Mission Execution Use Cases](./images/Mission-Execution-Use-Cases.png) -## 1.4 Architectural Components +## 1.5 Architectural Components -The Navigation System is part of a larger software system. This document does not specify the architecture for the complete system, but simply gives a conceptual overview for the purpose of requirements definition. +The Navigation System is part of a larger software system. This document does not specify the architecture for the complete system, but simply gives a conceptual overview for the purpose of requirements definition. -The Navigation System has a *command chain*, where each level refines its command input into successively more specific operations for the lext level down, and *support modules* which are used by modules in the command chain. +The Navigation System has a *command chain*, where each level refines its command input into successively more specific operations for the lext level down, and *support modules* which are used by modules in the command chain. -## 1.4.1 Command Chain +## 1.5.1 Command Chain The command chain is the sequence of modules that comprise the chain of command from the user, at the top, to the robot, at the bottom. * **Mission Planning** - Mission Planning provides an interface to the user to allow the user to create mission plans and assign them to robots for execution. A *Mission Plan* is a sequence of *Navigation Commands* along with associated information about how the commands should be carried out. * **Mission Execution** - Mission Execution receives the Mission Plan and is responsible to execute the plan and report progress on its execution. * **Navigation System** - The Navigation System receives a segment of an overall plan to execute (a *Navigation Command*) and generates the control commands to the robot to carry it out. -* **Robot Interface** - The Robot Interface is an abstraction of the robot platform, providing the means for the Navigation System to control the robot, learn about its capabilities, and receive feedback from the robot. +* **Robot Interface** - The Robot Interface is an abstraction of the robot platform, providing the means for the Navigation System to control the robot, learn about its capabilities, and receive feedback from the robot. The following diagram shows the modules in the command chain and the successive refinement of the control commands: @@ -79,8 +89,8 @@ The following diagram shows the modules in the command chain and the successive The Navigation System itself can be decomposed into two general responsibilities, *Planning*, and *Execution*. -* **Planning** - The Planning Module is responsible to execute Navigation Commands. To do so, this module can evaluate input maps and continually assess the robot's environment to plan motion and provide trajectories for the robot to follow to eventually achieve completion of the Navigation Command. -* **Execution** - The Execution Module is responsible to execute the trajectories provided by Planning, generating the control signals required to execute the Trajectory. +* **Planning** - The Planning Module is responsible to execute Navigation Commands. To do so, this module can evaluate input maps and continually assess the robot's environment to plan motion and provide the path for the robot to follow to achieve completion of the Navigation Command. +* **Execution** - The Execution Module is responsible to execute the path provided by Planning, generating the control signals required to follow the path. ![Navigation System](./images/Navigation-System.png) @@ -88,36 +98,36 @@ Decomposing the Navigation System, the overall command chain is as follows: ![Command Pipeline](./images/Command-Pipeline.png) -## 1.4.2 Support Modules +## 1.5.2 Support Modules -In addition to the command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules is outside the scope of the Navigation System. However, the inteface to these components is in scope and the associated requirements should be defined. +In addition to the command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules is outside the scope of the Navigation System. However, the inteface to these components is in scope and the associated requirements should be defined. Together, the support modules provide the robot with a full picture of the robot's environment. * **Mapping** - The Mapping Subsystem generates maps that can be used by the Navigation System to plan the robot's motion. Maps are typically created in advance and are available to the Navigation System. A map can be updated to reflect changes in the environment. The frequency of these updates will vary among implementations. * **Perception** - The Perception Subsystem utilizes sensors to develop an understanding of the dynamic environment around the robot. This information is available to the Navigation System, such as when avoiding obstacles in the robot's path. * **Prediction** - The Prediction Subsystem anticipates future motion trajectories of any perceived objects. -* **Localization** - The Localization Subsystem provides the current location of the robot. +* **Localization** - The Localization Subsystem provides the current location of the robot. In a complete robot system these modules are available to the core navigation modules (the command chain), as shown in the following diagram: ![Command Pipeline with Support](./images/With-Support-Modules.png) -To facilitate error recovery, each module in the command chain, if it is unable to carry out its task, its able to propagate error information to its predecessor in the chain. +To facilitate error recovery, each module in the command chain, if it is unable to carry out its task, should be able to propagate error information to its predecessor in the chain. -## 1.5 Design Goals +## 1.6 Design Goals The Navigation System designers should strive to meet the following high-level design goals: * **Extensibility** - The Navigation System should be a *pluggable framework* to allow for other developers to easily extend the capabilities of the Navigation System, such as adding the ability to handle new navigation commands. * **Modularity** - The Navigation System should allow other developers to *easily replace components* with alternative implementations. * **Generality** - The Navigation System should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. -* **Performance** - *TODO: What are the performance goals?* +* **Performance** - *TODO: What are the performance goals?* * **Scalability** - *TODO: How low should the implementation scale?* *Specify a minimum platform?* * *Other important design goals?* In particular, there are several specific goals for the ROS 2 Navigation System with respect to improving the existing ROS navigation stack: -* The user should be able to plan complex missions which include a series of navigation commands, and the Navigation System should be able to accept those commands and execute them. -* It should be possible to implement navigation components for specific navigation commands. In executing a mission plan, the Navigation System should be able to dynamically use the associated components for each navigation command. For example, a user may want to have components for classic point-A-to-point-B travel, but upon reaching point B, have a special components that control a series of maneuvers such as docking to a charging station or a conveyor belt. +* The user should be able to plan complex missions which include a series of navigation commands, and the Navigation System should be able to accept those commands and execute them. +* It should be possible to implement navigation components for specific navigation commands. In executing a mission plan, the Navigation System should be able to dynamically use the associated components for each navigation command. For example, a user may want to have components for classic point-A-to-point-B travel, but upon reaching point B, have a special components that control a series of maneuvers such as docking to a charging station or a conveyor belt. * The user should be able to specify different types of Robot drive types, such as Ackerman (automobile) steering, and Robot shapes (the current navigation stack is very limited in these areas). * The Navigation System should be able to handle more map types and orientations, including outdoor and 2D+ terrain. @@ -167,9 +177,9 @@ Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- MP001 | Mission Planning.Navigation Commands | 1 | The Mission Plan MUST be able to express the plan as a coordinated sequence of Navigation Commands. | Could include time and policy aspects (*when* and *how*, not just *what*) MP002 | Mission Planning.Navigation Commands.Composition | 1 | The Mission Plan SHOULD allow for the composition and naming of new Navigation Commands from a sequence of previously-defined Navigation Commands. | Build up levels of abstraction. For example, Enter-Elevator could be expressed as Navigate-to-Pose (right outside of elevator), Wait (for door to open), Navigate-to-Pose (inside the elevator). -MP003 | Mission Planning.Navigation Commands.Navigate to Pose | 1 | The Mission Plan MUST be able to convey the information required for a robot to navigate from its current location to a specific destination pose. +MP003 | Mission Planning.Navigation Commands.Navigate to Pose | 1 | The Mission Plan MUST be able to convey the information required for a robot to navigate from its current location to a specific destination pose. MP004 | Mission Planning.Navigation Commands.Navigate to Area | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a specific area. | An "area" could be a rectangular region or a more complex shape. -MP005 | Mission Planning.Navigation Commands.Enqueue | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a position behind another specified robot. +MP005 | Mission Planning.Navigation Commands.Enqueue | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a position behind another specified robot. MP006 | Mission Planning.Navigation Commands.Follow | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to be able to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies additional information such as "follow until destination reached." MP007 | Mission Planning.Navigation Commands.Maintain Pose | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to maintain its current pose. | Could be indefinite or time-based. MP008 | Mission Planning.Navigation Commands.Park | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to park itself. | The implementation of the parking command could interact with the robot to cause it, for example, to shut down or enter a low-power state. @@ -195,59 +205,60 @@ ME007 | Mission Execution.Feedback.Inputs.Error Recovery | 1 | Upon receipt of a ME008 | Mission Execution.Feedback.Outputs.Progress Notification | 1 | The Mission Execution module SHALL provide progress notifications on the execution of the mission. | Intermediate steps of interest. ME009 | Mission Execution.Feedback.Outputs.Mission Completed | 1 | Upon successfull completion of the mission, the Mission Execution module SHALL output a corresponding notification. ME010 | Mission Execution.Feedback.Outputs.Mission Canceled | 1 | Upon receiving a cancellation command and cancelling the mission, the Mission Execution module SHALL output a corresponding notification. -ME011 | Mission Execution.Feedback.Outputs.Mission Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST output a failure notification. | This would be received by the user-level interface and could necessitate user intervention, such as having a remote operating center where the remote operator "rescues" the robot. +ME011 | Mission Execution.Feedback.Outputs.Mission Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST output a failure notification. | This would be received by the user-level interface and could necessitate user intervention, such as having a remote operating center where the remote operator "rescues" the robot. ME012 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST direct the robot to a safe state. | The failure could be for a variety of reasons - sensor failures, algorithmic failure, a collision, etc. ### 2.3.3 Navigation System.Planning -The Planning Module receives the Navigation Command from the Mission Execution module and is responsible to implement that command. To do so, the Planning Module can use information from the Mapping Subsystem to plan a route and use input from the Perception Subsystem to evaluate the dynamic environment and avoid collisions with objects crossing its path. +The Navigation System's Planning Module receives the Navigation Command from the Mission Execution module and is responsible to implement that command. To do so, the Planning Module can use information from the Mapping Subsystem to plan a route and use input from the Perception Subsystem to evaluate the dynamic environment and avoid collisions with objects crossing its path. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -PLN001 | Planning | 1 | The Navigation System SHOULD have a Planning Module that generates trajectories to follow to implement a specified Navigation Command. | Separate the planning phase from execution. +PLN001 | Planning | 1 | The Navigation System SHOULD have a Planning Module that generates the Path for the robot to follow to implement a specified Navigation Command. PLN002 | Planning.Inputs.Navigation Command | 1 | The Planning Module SHALL receive the Navigation Command to execute. -PLN003 | Planning.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Navigation Command to execute | This could be global policy and/or per-command policy. Policy could contain, for example, a list of conventions for the robot to follow (navigate on the right side of a path, for example). -PLN004 | Planning.Inputs.Mapping.Maps | 1 | The Planning Module MUST have access to one or more maps available that describe the robot's environment +PLN003 | Planning.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Navigation Command to execute. | This could be global policy and/or per-command policy. Policy could contain, for example, a list of conventions for the robot to follow (navigate on the right side of a path, for example). +PLN004 | Planning.Inputs.Mapping.Maps | 1 | The Planning Module MUST have access to one or more maps available that describe the robot's environment. PLN005 | Planning.Inputs.Perception.Sensory Input | 1 | The Planning Module MUST have access to data from the Sensory Subsystem. PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MUST have access to predicted trajectories of objects detected by the Sensory Subsystem. -PLN007 | Planning.Inputs.Localization.Current Pose | 1 | The Planning Module MUST have access to the robot's current pose | The pose could be be provided manually or automatically determined (outside of this module) -PLN008 | Planning.Outputs.Trajectory | 1 | The Planning Module MUST output trajectories for the robot to follow to execute the input Navigation Command and MUST respect any associated policy. -PLN009 | Planning.Collision Avoidance.Avoid Stationary Objects | 1 | The Robot MUST avoid colliding into stationary objects in its environment | Fixed parts of the environment, such as walls or shelving. *TODO: How close can it come? Does it depend on the robot's speed?* -PLN010 | Planning.Collision Avoidance.Avoid Moving Objects | 1 | The Robot MUST avoid colliding into moving objects that intercept its path | Such as people and other robots *TODO: How close can it come? Does it depend on the robot speed? Any specific parameters for the collision avoidance? Perhaps different global values for object-specific properties in the environment?* -PLN011 | Planning.Collision Detection | 1 | The Planning Module SHOULD detect if a collision has occurred. -PLN012 | Planning.Collision Detection.Latency | 1 | The Planning Module SHOULD detect collisions within 50ms. | *What is the right latency value?* -PLN013 | Planning.Collision Recovery | 1 | The Planning Module SHOULD recover from collisions. | Recovery behavior could be configurable based on the robot/environment/application. -PLN014 | Planning.Feedback.Inputs | 1 | The Planner MUST receive error input from the downstream Control Module so that it can attempt to recover from control failures. -PLN015 | Planning.Feedback.Inputs.Error Recovery | 1 | Upon receipt of a downstream failure, the Mission Execution module SHOULD attempt to automatically recover from the error | For example, if the robot gets stuck, the Planning Module could have the robot perform a recovery maneuver of some kind. -PLN016 | Planning.Feedback.Outputs.Command Completed | 1 | Upon completing the provided Navigation Command, the Planning Module MUST report this event on its feedback output. -PLN017 | Planning.Feedback.Outputs.Unable to Execute Command | 1 | If the Planning Module is unable to execute the Navigation Command, it SHALL report the error on its feedback output. | It should handle errors if possible, but report back if it can't. -PLN018 | Planning.Feedback.Outputs.Collision Detected | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* -PLN019 | Planning.Feedback.Outputs.Recovered from Collision | 1 | *TODO: What happens in the error/exception reporting chain to report a collision?* -PLN020 | Planning.Dynammic Selection of Planners | 1 | The selection of the Planning Module to use for a given Navigation Command should be dynamic. | There SHOULD be multiple planners available and chosen depending on the command to be executed. -PLN021 | Planning.High-End Planner | 1 | The Navigation System SHOULD implement a state-of-the-art planner | Can serve as an example to others developing planners. -PLN022 | Planning.Low-End Planner | 1 | The Navigation System SHOULD implement a planner for low-compute targets | Can serve as an example to others developing planners. -PLN023 | Planning.Documentation | 1 | The Navigation System SHOULD provided detailed documentation on how to develop a planner. -PLN024 | Planning.Simple Example | 1 | The Navigation System SHOULD provided a simple example of a Planner | An easily understood module that developers and students could use as a starting point. - -### 2.3.4 Navigation System.Control - -*TODO: The Control Module ... Bottom half of the Local Planner (Planning)* +PLN007 | Planning.Inputs.Localization.Current Pose | 1 | The Planning Module MUST have access to the robot's current pose. | The pose could be be provided manually or automatically determined (outside of this module). +PLN008 | Planning.Outputs.Path | 1 | The Planning Module MUST output the Path for the robot to follow to execute the input Navigation Command and MUST respect any associated policy. +PLN009 | Planning.Feedback.Inputs | 1 | The Planning Module MUST receive error input from the downstream Execution Module. | So that it can attempt to recover from execution failures. +PLN010 | Planning.Feedback.Inputs.Error Recovery | 1 | Upon receipt of a downstream failure, the Planning Module SHOULD attempt to automatically recover from the error. | Handling a robot that gets stuck or handling a collision, for example. +PLN011 | Planning.Feedback.Outputs.Command Completed | 1 | Upon completing the provided Navigation Command, the Planning Module MUST report this event on its feedback output. +PLN012 | Planning.Feedback.Outputs.Unable to Execute Command | 1 | If the Planning Module is unable to execute the Navigation Command, it SHALL report the error on its feedback output. | It should handle errors if possible, but report back if it can't. +PLN013 | Planning.Feedback.Outputs.Error Propagation | 1 | The Planning Module SHOULD propagate errors that it can't handle. +PLN014 | Planning.Logging | 1 | The Planning Module SHOULD log significant events. | Commands completed, failures, recoveries, etc. +PLN015 | Planning.Selection of Planners | 1 | The Navigation System should enable the association and use of a given Planning Module with a given Navigation Command. +PLN016 | Planning.Documentation | 1 | The Navigation System SHOULD provided detailed documentation on how to develop a Planning Module. +PLN017 | Planning.Simple Example | 1 | The Navigation System SHOULD provided a simple example of a Planning Module. | An easily understood module that developers and students could use as a starting point. + +### 2.3.4 Navigation System.Execution + +The Navigation System's Execution Module is responsible to execute the Path specified by the Planning Module. It has available to it all of the information from the support modules and must respect any policy guidance. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -CTL001 | Control | 1 | The Control Module MUST... +EXE001 | Execution | 1 | The Navigation System SHOULD have an Execution Module that generates commands to the robot to achieve a specific Path. +EXE002 | Execution.Inputs.Path | 1 | The Execution Module SHALL receive a Path that the robot is to follow. +EXE003 | Execution.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Path to follow. | Could filter down from higher-level policy specification. +EXE004 | Execution.Collision Avoidance.Avoid Stationary Objects | 1 | The Execution Module MUST direct the robot such that it avoids colliding into stationary objects in its environment. +EXE005 | Execution.Collision Avoidance.Avoid Moving Objects | 1 | The Execution Module MUST direct the robot such that it avoids colliding into moving objects that intercept its path. +EXE006 | Execution.Collision Detection | 1 | The Execution Module SHOULD detect if a collision has occurred. +EXE007 | Execution.Collision Detection.Latency | 1 | The Execution Module SHOULD detect collisions within 50ms. | *What is the right value?* +EXE008 | Execution.Feedback.Inputs.Robot Malfunction | 1 | The Execution Module SHOULD receive notifications of any robot malfunctions from the downstream robot interface. | A sensor failure, for example. +EXE009 | Execution.Feedback.Outputs.Collision Detected | 1 | The Execution Module SHOULD report the detection of a collision. | So that the Planning Module can attempt recovery or otherwise respond. +EXE010 | Execution.Feedback.Outputs.Error Propagation | 1 | The Execution Module SHOULD propagate errors that it can't handle. +EXE011 | Execution.Documentation | 1 | The Navigation System SHOULD provided detailed documentation on how to develop an Execution Module. +EXE012 | Execution.Simple Example | 1 | The Navigation System SHOULD provided a simple example of an Execution Module| An easily understood module that developers and students could use as a starting point. ### 2.3.5 Robot Interface -*TODO: What to say about the robot interface?* -* *Should there be a robot abstraction?* -* *Perhaps this would be a convenient place to put some safety-related functionality* - -There should be a uniform interface to the various supported robots. This may require a layer on top of the vendor-specific interface(s). +There should be a uniform interface to the various supported robots. The abstraction of different robots may be handled by current mechanisms, such as UDRF, Twist commands, etc. We should consider if anything else is needed here. +require a layer on top of the vendor-specific interface(s). Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -RI001 | Robot Interface.Attributes | 1 | Holonomicity, max/min speeds and accelerations, etc. +RI001 | Robot Interface.Attributes | 1 | Holonomicity, max/min speeds and accelerations, etc. RI002 | Robot Interface.Dynamic Switching | 1 | Can the robot dynamically change attributes? RI003 | Robot Interface.Safety.Limited Parameters | 1 | A list of parameters used to limit certain circumstances and provide the hooks for users to set those values if they want RI004 | Robot Interface.Safety.Speed Limiting | 1 | TODO @@ -261,29 +272,30 @@ There are a few support modules and subsystems that are not part of the Navigati ### 2.4.1 Mapping -The map data format should be capable of describing common indoor and outdoor environments encoutered by the robots. +The map data format should be capable of describing typical indoor and outdoor environments encoutered by the robots. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System | So that the Mapping System has a basic understanding of its environment. Can be used during planning. -MAP002 | Mapping.Dynamic Updates | 1 | The Mapping System SHALL provide real-time updates of map information, as the environment described by the map changes. -MAP003 | Mapping.Data Model.Obstacles | 1 | Maps provided by Mapping Subsystem MUST indicate the location of known obstacles. -MAP004 | Mapping.Data Model.Confidence Metric | 1 | Each known obstacle in a map SHALL have a confidence metric associated with it. -MAP005 | Mapping.Data Model.Unknown Space | 1 | Maps provided by Mapping Subsystem MUST indicate unmapped/unknown space. | Such as areas beyond the edge of the map, or areas within the map for which we didn't have any observations during map building. -MAP006 | Mapping.Data Model.Surface Planarity | 1 | The map data format SHALL be capable of describing the planarity of traversable surfaces. | Can describe uneven ground. -MAP007 | Mapping.Data Model.Safety Zone | 1 | The map data format SHALL be capable of defining regions where the robot may have to adjust its operations. -MAP008 | Mapping.Data Model.Safety Zone.Name | 1 | The map data format SHOULD allow for naming each safety zone. | *Does it need to be a unique name?* -MAP009 | Mapping.Data Model.Safety Zone.Type | 1 | The map data format SHOULD allow for defining types of safety zones. | To allow for re-use of a safety zone type without redefining policy. Could be an "intersection" type, for example. May want to slot down at all intersections, for example. -MAP010 | Mapping.Data Model.Safety Zone.Policy | 1 | The map data format SHALL be capable of expressing policy associated with each safety zone and safety zone type. | Maximum speed, (increased) distance to people, etc. -MAP011 | Mapping.Data Model.Safety Zone.Policy.Keep Out | 1 | The map data format SHALL be capable of expressing that a robot must not navigate through this zone. -MAP012 | Mapping.Data Model.Lanes | 1 | Able to specify virtual lanes. Prefer the specified lanes (such as in a warehouse). -MAP013 | Mapping.Data Model.Building Levels | 1 | Able to specify single and multi-level buildings. -MAP014 | Mapping.Data Model.Building Levels.Level Connecting Features | 1 | Able to specify level connecting features, such as elevators, stairways, ramps. -MAP015 | Mapping.Multiple Maps Per Environment | 1 | The Mapping System MAY provide multiple maps of the same environment. | Different scales and elevations? -MAP016 | Mapping.Data Model.Extensibility | 1 | The Mapping System SHOULD be extensible, to allow for the description of additional entities in the environment | *TODO: Layers concept?* -MAP017 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information. -MAP018 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information. | *TODO: How is this defined?* -MAP019 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information. | *TODO: Use voxel-based?* +MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System. +MAP002 | Mapping.Data Model.Obstacles | 1 | Maps provided by Mapping Subsystem MUST indicate the location of known obstacles. +MAP003 | Mapping.Data Model.Confidence Metric | 1 | Each known obstacle in a map SHALL have a confidence metric associated with it. +MAP004 | Mapping.Data Model.Unknown Space | 1 | Maps provided by Mapping Subsystem MUST indicate unmapped/unknown space. | Such as areas beyond the edge of the map, or areas within the map for which we didn't have any observations during map building. +MAP005 | Mapping.Data Model.Surface Planarity | 1 | The map data format SHALL be capable of describing the planarity of traversable surfaces. | Can describe uneven ground. +MAP006 | Mapping.Data Model.Safety Zone | 1 | The map data format SHALL be capable of defining regions where the robot may have to adjust its operations. +MAP007 | Mapping.Data Model.Safety Zone.Name | 1 | The map data format SHOULD allow for naming each safety zone. | *Does it need to be a unique name?* +MAP008 | Mapping.Data Model.Safety Zone.Type | 1 | The map data format SHOULD allow for defining types of safety zones. | To allow for re-use of a safety zone type without redefining policy. Could be an "intersection" type, for example. May want to slot down at all intersections, for example. +MAP009 | Mapping.Data Model.Safety Zone.Policy | 1 | The map data format SHALL be capable of expressing policy associated with each safety zone and safety zone type. | Maximum speed, (increased) distance to people, etc. +MAP010 | Mapping.Data Model.Safety Zone.Policy.Keep Out | 1 | The map data format SHALL be capable of expressing that a robot must not navigate through this zone. +MAP011 | Mapping.Data Model.Lanes | 1 | The map data format SHALL be able to specify virtual lanes. | May prefer specified lanes in a warehouse, for example. +MAP012 | Mapping.Data Model.Building Levels | 1 | The map data format SHALL be able to specify single and multi-level buildings. +MAP013 | Mapping.Data Model.Building Levels.Level Connecting Features | 1 | The map data format SHALL be able to specify level-connecting features, such as elevators, stairways, and ramps. +MAP014 | Mapping.Multiple Maps Per Environment | 1 | The Mapping System MAY provide multiple maps of the same environment. | Different scales and elevations? +MAP015 | Mapping.Data Model.Extensibility | 1 | The Mapping System SHOULD be extensible, to allow for the description of additional entities in the environment +MAP016 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information. +MAP017 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information. | *TODO: How is this defined?* +MAP018 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information. +MAP019 | Mapping.Dynamic Updates | 1 | The Mapping System SHOULD provide real-time updates of map information. | Allow for updates to the map to be pushed to clients. +MAP020 | Mapping.Optimization | 1 | The Mapping System SHOULD provide the Navigation System with local map regions, sufficient for navigation. | Could provide relevant map tiles, for example, saving memory in the planners. ### 2.4.2 Perception @@ -291,7 +303,7 @@ The Perception Subsystem provides information about objects detected in the robo Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -PER001 | Perception | 1 | The Sensory Subsystem SHALL provide information about the dynamic environment of the robot | Info sufficient to carry out the Navigation System requirements. +PER001 | Perception | 1 | The Sensory Subsystem SHALL provide information about the dynamic environment of the robot. | Info sufficient to carry out the Navigation System requirements. PER002 | Perception.Latency | 1 | TODO ### 2.4.3 Prediction @@ -300,47 +312,39 @@ The Prediction Subsystem TODO Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -PRD001 | Prediction.Object Prediction | 1 | The Prediction Subsystem SHOULD predict the trajectories of detected objects. | One of the biggest shortcomings of the current system is the inability to model/predict where obstacles will be in the future. This leads to collisions with other moving objects -PRD002 | Prediction.Object Prediction.Time Horizon | 1 | *TODO: How far into the future should the object prediction work?* +PRE001 | Prediction.Object Prediction | 1 | The Prediction Subsystem SHOULD predict the trajectories of detected objects. | One of the biggest shortcomings of the current system is the inability to model/predict where obstacles will be in the future. This leads to collisions with other moving objects +PRE002 | Prediction.Object Prediction.Time Horizon | 1 | *TODO: How far into the future should the object prediction work?* ### 2.4.4 Localization -The Navigation System requires the Robot's current pose, provided by an external Localization module. This section lists the requirements for the information from the Localization module. +The Navigation System requires the Robot's current pose, provided by an external Localization module. This section lists the requirements for the information provided by the the Localization Module. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -LOC001 | Localization.Robot Pose | 1 | The Localization module MUST provide the robot's current pose to the Navigation System | This could be manual or as a result of automatic localization; the Navigation System wouldn't know either way -LOC002 | Localization.Robot Pose.Accuracy | 1 | The Localization Module MUST provide the expected accuracy of its generated poses. | So that Planning modules can determine if a particular Localization module has sufficient accuracy. - +LOC001 | Localization.Robot Pose | 1 | The Localization module MUST provide the robot's current pose to the Navigation System. | This could be manual or as a result of automatic localization; the Navigation System wouldn't know either way. +LOC002 | Localization.Robot Pose.Accuracy | 1 | The Localization Module MUST provide the estimated accuracy of the pose. | So that Planning modules can determine if a particular Localization module has sufficient accuracy. Could use PoseWithCovariance message. **TODO** +* Integrate Matt's section +* Clarify how Recovery Commands work * (mike furgeson) In supporting this, I think you'll find that you also want to make it easy to "reset or disable" a planner. Most of these planners may have large memory usage, and for efficiency may not want to recreate them for each plan -- if you have multiple running at once, each taking up memory, you might actually run out of memory quickly. Having an easy API to say "hey, not using this planner for a while, have it release resources" would be very useful. -* Mapping: (mikefurgeson) Any thoughts around tiling? Especially for out-of-memory situations? Yes, we do this for Automotive - -* Localization: (mikefurgeson) This won't be exact -- so it should also provide an estimate of the accuracy (current navigation stack can't take that into account, but future local planners certainly could). The current message is PoseWithCovariance to accomplish this in ROS1. - -* Turtlebot image: (Carl) - * MP001: (mikefurgeson) I understand the desire to be able to "plan several legs of a trip at once, so if one is impassable you don't start the trip at all", but I feel like that is fairly incongruent with how actions typically are implemented. I know actionlib isn't implemented in ROS2 yet, but the issue I see arising is: how do you cancel part way through? * MP004,MP005: (Carl) This requires a much more complicated understanding of the world than I think we want to incorporate into the navstack. It implies we can identify what things in the environment are robots and distinguish a particular one even as it moves around in traffic, possibly goes out of view etc. (mikefurgeson) I concur -- this should provide a tool for generic navigation, and higher level "applications" would then call into the navigation stack. (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? * MP012: (Carl) How would this work? What if we can't meet the time requirement? Do we need to calculate out the ETA before starting so we can throw an error as soon as the command is given? What happens if the time constraint is much greater than required? Do we slow down or wait somewhere? (Me) Good questions. For me, the first question is whether it is important to introduce time-related requirements into the mission plan or not. If so, we'll have to address the issues that you mention. Would be good to get input from users. -* Mapping Use Cases: (Mohammad) Suggestion: "The user will typically either manually create a map or uses SLAM algorithm to create a map of the area in which the robot is to navigate." -Suggestion: Changing the phrase "known obstacles" to "known static obstacles". - -**DONE** +**DONE** * MP002: (Carl) What if the planner can't find a path? Then we can't meet this requirement. Should be rephrased to allow for failure (and the resulting reporting of failure) * (mikefurgeson) Should we try to move away from calling this "static map" -- a common use case would be running navigation at the same time as mapping -- to explore the environment. In this case, the map isn't "static" but rather slowly changing. In particular, the important part is that the map must have some "constant reference frame" even as it changes over time (for instance, you can arbitrarily move 0,0 and expect things to still work, but if you add onto the map at runtime, the system should be able to handle it). -* Mission Planning Use Cases: (Mohammad) Changing the phrase "Navigate to Position" to either "Navigate to Position and Orientation" or "Navigate to Pose" +* Mission Planning Use Cases: (Mohammad) Changing the phrase "Navigate to Position" to either "Navigate to Position and Orientation" or "Navigate to Pose" * Mission Execution Use Cases: (Mohammad) We might want to change the phrase "initial location" to "initial pose" which includes both position and orientation. * GP003: (Mohammad) The Global Planner "MUST" have the robot's current pose. -* MP005: (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? +* MP005: (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? * MP007: (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. * MP009: (Carl) Why is this a special primitive? Can't "go to area" suffice? (Me) I'm not sure. We'd have to capture that the floor isn't always present, at least. It can't be freely navigated into. * MP010: (Carl) Can't we just use go to location/area to get out of the elevator. (Me) I think we need to consider how to handle elevators and other kinds of lifts, where the mechanism has various states. If there's an external controller that's handling the elevator doors, etc., the Execution mechanism for the robot needs to at least feedback that it's ready to enter (or exit) an elevator and wait for the go-head. I think we should mock up some example mission plans and work through these issues. @@ -348,7 +352,10 @@ Suggestion: Changing the phrase "known obstacles" to "known static obstacles". * MP007: (Carl) Could this just be reduced to not having a specified objective? What would the robot do if it isn't given a wait primitive? (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. HoldPose may also be considered to be out of scope for Nav stack. The robot's base controller should take care of holding the pose. * MP006: (Carl) Orbit what? I can see potentially orbitting a fixed position in the world. Orbitting an object seems outside our scope. * (mikeferguson) Ideally, this module should also be extremely well commented and documented, such that it can be used as a teaching tool -- I presume it will be a fairly straight forward A* implementation, which means it can be easily understood by students and adapted during various coursework. - -**OPENS** -* *TODO: How to handle reverse direction? Does each primitive include this information?* -* PLN003 | Planning.Inputs.Route.Negative Velocity | 1 | To support reverse motion, the Planning Module MUST support negative velocity values +* Remove PLN021 and PLN022. Should we change to express in terms of time? Performance requirements. +* 2.3.4 "Control" -> "Execution" +* Localization: (mikefurgeson) This won't be exact -- so it should also provide an estimate of the accuracy (current navigation stack can't take that into account, but future local planners certainly could). The current message is PoseWithCovariance to accomplish this in ROS1. +* (Mohammad) Suggestion: Changing the phrase "known obstacles" to "known static obstacles". +* Mapping Use Cases: (Mohammad) Suggestion: "The user will typically either manually create a map or uses SLAM algorithm to create a map of the area in which the robot is to navigate." +* Mapping: (mikefurgeson) Any thoughts around tiling? Especially for out-of-memory situations? +* Add Terminology Section (?) \ No newline at end of file From 75048293660ebec1c25c5b3ec52404a9c77bf002 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Tue, 10 Jul 2018 15:04:35 -0700 Subject: [PATCH 09/27] Address more review feedback --- doc/requirements/requirements.md | 76 +++++++------------------------- 1 file changed, 17 insertions(+), 59 deletions(-) diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index cf2155d6601..0490fbbd2c1 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -36,6 +36,8 @@ These definitions are derived from the IETF Best Current Practices Document #14. ## 1.3 Terminology +This section defines some common terminology as used in this document. + Term | Definition ---- | ---------- Path | A *Path* is an ordered sequence of points in space. @@ -90,7 +92,7 @@ The following diagram shows the modules in the command chain and the successive The Navigation System itself can be decomposed into two general responsibilities, *Planning*, and *Execution*. * **Planning** - The Planning Module is responsible to execute Navigation Commands. To do so, this module can evaluate input maps and continually assess the robot's environment to plan motion and provide the path for the robot to follow to achieve completion of the Navigation Command. -* **Execution** - The Execution Module is responsible to execute the path provided by Planning, generating the control signals required to follow the path. +* **Execution** - The Execution Module is responsible to execute the path provided by Planning, generating the control commands required to follow the path. ![Navigation System](./images/Navigation-System.png) @@ -124,13 +126,6 @@ The Navigation System designers should strive to meet the following high-level d * **Scalability** - *TODO: How low should the implementation scale?* *Specify a minimum platform?* * *Other important design goals?* -In particular, there are several specific goals for the ROS 2 Navigation System with respect to improving the existing ROS navigation stack: - -* The user should be able to plan complex missions which include a series of navigation commands, and the Navigation System should be able to accept those commands and execute them. -* It should be possible to implement navigation components for specific navigation commands. In executing a mission plan, the Navigation System should be able to dynamically use the associated components for each navigation command. For example, a user may want to have components for classic point-A-to-point-B travel, but upon reaching point B, have a special components that control a series of maneuvers such as docking to a charging station or a conveyor belt. -* The user should be able to specify different types of Robot drive types, such as Ackerman (automobile) steering, and Robot shapes (the current navigation stack is very limited in these areas). -* The Navigation System should be able to handle more map types and orientations, including outdoor and 2D+ terrain. - # 2.0 Requirements This section lists the requirements for the Navigation System. @@ -171,7 +166,7 @@ This section lists the requirements for the core command chain modules in the Na ### 2.3.1 Mission Planning -A complete system should have some kind of Mission Planning subsystem to convey the user's intentions to the robot. The User interacts with this Mission Planning subsystem to generate a Mission Plan for the robot. The Mission Plan is defined as a sequence of navigation commands, along with any associated information about how and when the plan should be carried out. The design and implementation of a Mission Planning subsystem is outside the scope of the Navigation System. However, in order to understand the larger system context and how Mission Planning interacts with the Navigation System, this section will consider the nature of a mission plan and the kinds of operations it may contain. +A complete system should have some kind of Mission Planning subsystem to convey the user's intentions to the robot. The User interacts with this Mission Planning subsystem to generate a Mission Plan for the robot. The Mission Plan is defined as a sequence of Navigation Commands, along with any associated information about how and when the plan should be carried out. The design and implementation of a Mission Planning subsystem is outside the scope of the Navigation System. However, in order to understand the larger system context and how Mission Planning interacts with the Navigation System, this section will consider the nature of a mission plan and the kinds of operations it may contain. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- @@ -207,6 +202,7 @@ ME009 | Mission Execution.Feedback.Outputs.Mission Completed | 1 | Upon successf ME010 | Mission Execution.Feedback.Outputs.Mission Canceled | 1 | Upon receiving a cancellation command and cancelling the mission, the Mission Execution module SHALL output a corresponding notification. ME011 | Mission Execution.Feedback.Outputs.Mission Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST output a failure notification. | This would be received by the user-level interface and could necessitate user intervention, such as having a remote operating center where the remote operator "rescues" the robot. ME012 | Mission Execution.Safe State Upon Failure | 1 | If the Mission Execution module is unable to execute the mission, it MUST direct the robot to a safe state. | The failure could be for a variety of reasons - sensor failures, algorithmic failure, a collision, etc. +ME013 | Mission Execution.Selection of Planners | 1 | The Navigation System SHOULD allow the association and use of specific Planning and Execution Modules for a given Navigation Command. | For example, a user may want to have components for classic point-A-to-point-B travel, but upon reaching point B, have specialized components that control a series of maneuvers such as docking to a charging station or a conveyor belt. ### 2.3.3 Navigation System.Planning @@ -218,8 +214,8 @@ PLN001 | Planning | 1 | The Navigation System SHOULD have a Planning Module that PLN002 | Planning.Inputs.Navigation Command | 1 | The Planning Module SHALL receive the Navigation Command to execute. PLN003 | Planning.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Navigation Command to execute. | This could be global policy and/or per-command policy. Policy could contain, for example, a list of conventions for the robot to follow (navigate on the right side of a path, for example). PLN004 | Planning.Inputs.Mapping.Maps | 1 | The Planning Module MUST have access to one or more maps available that describe the robot's environment. -PLN005 | Planning.Inputs.Perception.Sensory Input | 1 | The Planning Module MUST have access to data from the Sensory Subsystem. -PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MUST have access to predicted trajectories of objects detected by the Sensory Subsystem. +PLN005 | Planning.Inputs.Perception.Sensory Input | 1 | The Planning Module MUST have access to data from the Perception Subsystem. +PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MUST have access to predicted trajectories of objects detected by the Perception Subsystem. PLN007 | Planning.Inputs.Localization.Current Pose | 1 | The Planning Module MUST have access to the robot's current pose. | The pose could be be provided manually or automatically determined (outside of this module). PLN008 | Planning.Outputs.Path | 1 | The Planning Module MUST output the Path for the robot to follow to execute the input Navigation Command and MUST respect any associated policy. PLN009 | Planning.Feedback.Inputs | 1 | The Planning Module MUST receive error input from the downstream Execution Module. | So that it can attempt to recover from execution failures. @@ -228,9 +224,8 @@ PLN011 | Planning.Feedback.Outputs.Command Completed | 1 | Upon completing the p PLN012 | Planning.Feedback.Outputs.Unable to Execute Command | 1 | If the Planning Module is unable to execute the Navigation Command, it SHALL report the error on its feedback output. | It should handle errors if possible, but report back if it can't. PLN013 | Planning.Feedback.Outputs.Error Propagation | 1 | The Planning Module SHOULD propagate errors that it can't handle. PLN014 | Planning.Logging | 1 | The Planning Module SHOULD log significant events. | Commands completed, failures, recoveries, etc. -PLN015 | Planning.Selection of Planners | 1 | The Navigation System should enable the association and use of a given Planning Module with a given Navigation Command. -PLN016 | Planning.Documentation | 1 | The Navigation System SHOULD provided detailed documentation on how to develop a Planning Module. -PLN017 | Planning.Simple Example | 1 | The Navigation System SHOULD provided a simple example of a Planning Module. | An easily understood module that developers and students could use as a starting point. +PLN015 | Planning.Documentation | 1 | The Navigation System SHOULD provided detailed documentation on how to develop a Planning Module. +PLN016 | Planning.Simple Example | 1 | The Navigation System SHOULD provided a simple example of a Planning Module. | An easily understood module that developers and students could use as a starting point. ### 2.3.4 Navigation System.Execution @@ -253,8 +248,7 @@ EXE012 | Execution.Simple Example | 1 | The Navigation System SHOULD provided a ### 2.3.5 Robot Interface -There should be a uniform interface to the various supported robots. The abstraction of different robots may be handled by current mechanisms, such as UDRF, Twist commands, etc. We should consider if anything else is needed here. -require a layer on top of the vendor-specific interface(s). +There should be a uniform interface to the various supported robots. The abstraction of different robots may be handled by current mechanisms, such as UDRF, Twist commands, etc. We should consider if anything else is needed here. The user should be able to specify different types of robot drive types, such as Ackerman (automobile) steering, and robot shapes. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- @@ -279,23 +273,23 @@ Id | Handle | Priority | Description | Notes MAP001 | Mapping | 1 | The Mapping System SHALL provide map information to the Navigation System. MAP002 | Mapping.Data Model.Obstacles | 1 | Maps provided by Mapping Subsystem MUST indicate the location of known obstacles. MAP003 | Mapping.Data Model.Confidence Metric | 1 | Each known obstacle in a map SHALL have a confidence metric associated with it. -MAP004 | Mapping.Data Model.Unknown Space | 1 | Maps provided by Mapping Subsystem MUST indicate unmapped/unknown space. | Such as areas beyond the edge of the map, or areas within the map for which we didn't have any observations during map building. +MAP004 | Mapping.Data Model.Unknown Space | 1 | Maps provided by the Mapping Subsystem MUST indicate unmapped/unknown space. | Such as areas beyond the edge of the map, or areas within the map for which we didn't have any observations during map building. MAP005 | Mapping.Data Model.Surface Planarity | 1 | The map data format SHALL be capable of describing the planarity of traversable surfaces. | Can describe uneven ground. MAP006 | Mapping.Data Model.Safety Zone | 1 | The map data format SHALL be capable of defining regions where the robot may have to adjust its operations. MAP007 | Mapping.Data Model.Safety Zone.Name | 1 | The map data format SHOULD allow for naming each safety zone. | *Does it need to be a unique name?* MAP008 | Mapping.Data Model.Safety Zone.Type | 1 | The map data format SHOULD allow for defining types of safety zones. | To allow for re-use of a safety zone type without redefining policy. Could be an "intersection" type, for example. May want to slot down at all intersections, for example. MAP009 | Mapping.Data Model.Safety Zone.Policy | 1 | The map data format SHALL be capable of expressing policy associated with each safety zone and safety zone type. | Maximum speed, (increased) distance to people, etc. -MAP010 | Mapping.Data Model.Safety Zone.Policy.Keep Out | 1 | The map data format SHALL be capable of expressing that a robot must not navigate through this zone. +MAP010 | Mapping.Data Model.Safety Zone.Policy.Keep Out Zone | 1 | The map data format SHALL be capable of expressing that a robot must not navigate through this zone. MAP011 | Mapping.Data Model.Lanes | 1 | The map data format SHALL be able to specify virtual lanes. | May prefer specified lanes in a warehouse, for example. MAP012 | Mapping.Data Model.Building Levels | 1 | The map data format SHALL be able to specify single and multi-level buildings. MAP013 | Mapping.Data Model.Building Levels.Level Connecting Features | 1 | The map data format SHALL be able to specify level-connecting features, such as elevators, stairways, and ramps. -MAP014 | Mapping.Multiple Maps Per Environment | 1 | The Mapping System MAY provide multiple maps of the same environment. | Different scales and elevations? -MAP015 | Mapping.Data Model.Extensibility | 1 | The Mapping System SHOULD be extensible, to allow for the description of additional entities in the environment +MAP014 | Mapping.Multiple Maps Per Environment | 1 | The Mapping System MAY provide multiple maps of the same environment. | Such as for different scales and elevations. +MAP015 | Mapping.Data Model.Extensibility | 1 | The Mapping System SHOULD be extensible, to allow for the description of additional entities in the environment. MAP016 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information. MAP017 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information. | *TODO: How is this defined?* MAP018 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information. MAP019 | Mapping.Dynamic Updates | 1 | The Mapping System SHOULD provide real-time updates of map information. | Allow for updates to the map to be pushed to clients. -MAP020 | Mapping.Optimization | 1 | The Mapping System SHOULD provide the Navigation System with local map regions, sufficient for navigation. | Could provide relevant map tiles, for example, saving memory in the planners. +MAP020 | Mapping.Memory Optimization.Tiling | 1 | The Mapping System MAY provide the Navigation System with local map regions, sufficient for navigation. | Could provide relevant map tiles, for example, saving memory in the planners. ### 2.4.2 Perception @@ -303,7 +297,7 @@ The Perception Subsystem provides information about objects detected in the robo Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -PER001 | Perception | 1 | The Sensory Subsystem SHALL provide information about the dynamic environment of the robot. | Info sufficient to carry out the Navigation System requirements. +PER001 | Perception | 1 | The Perception Subsystem SHALL provide information about the dynamic environment of the robot. | Info sufficient to carry out the Navigation System requirements. PER002 | Perception.Latency | 1 | TODO ### 2.4.3 Prediction @@ -322,40 +316,4 @@ The Navigation System requires the Robot's current pose, provided by an external Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- LOC001 | Localization.Robot Pose | 1 | The Localization module MUST provide the robot's current pose to the Navigation System. | This could be manual or as a result of automatic localization; the Navigation System wouldn't know either way. -LOC002 | Localization.Robot Pose.Accuracy | 1 | The Localization Module MUST provide the estimated accuracy of the pose. | So that Planning modules can determine if a particular Localization module has sufficient accuracy. Could use PoseWithCovariance message. - - -**TODO** -* Integrate Matt's section -* Clarify how Recovery Commands work - -* (mike furgeson) In supporting this, I think you'll find that you also want to make it easy to "reset or disable" a planner. Most of these planners may have large memory usage, and for efficiency may not want to recreate them for each plan -- if you have multiple running at once, each taking up memory, you might actually run out of memory quickly. Having an easy API to say "hey, not using this planner for a while, have it release resources" would be very useful. - -* MP001: (mikefurgeson) I understand the desire to be able to "plan several legs of a trip at once, so if one is impassable you don't start the trip at all", but I feel like that is fairly incongruent with how actions typically are implemented. I know actionlib isn't implemented in ROS2 yet, but the issue I see arising is: how do you cancel part way through? - -* MP004,MP005: (Carl) This requires a much more complicated understanding of the world than I think we want to incorporate into the navstack. It implies we can identify what things in the environment are robots and distinguish a particular one even as it moves around in traffic, possibly goes out of view etc. (mikefurgeson) I concur -- this should provide a tool for generic navigation, and higher level "applications" would then call into the navigation stack. (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? - -* MP012: (Carl) How would this work? What if we can't meet the time requirement? Do we need to calculate out the ETA before starting so we can throw an error as soon as the command is given? What happens if the time constraint is much greater than required? Do we slow down or wait somewhere? (Me) Good questions. For me, the first question is whether it is important to introduce time-related requirements into the mission plan or not. If so, we'll have to address the issues that you mention. Would be good to get input from users. - - -**DONE** -* MP002: (Carl) What if the planner can't find a path? Then we can't meet this requirement. Should be rephrased to allow for failure (and the resulting reporting of failure) -* (mikefurgeson) Should we try to move away from calling this "static map" -- a common use case would be running navigation at the same time as mapping -- to explore the environment. In this case, the map isn't "static" but rather slowly changing. In particular, the important part is that the map must have some "constant reference frame" even as it changes over time (for instance, you can arbitrarily move 0,0 and expect things to still work, but if you add onto the map at runtime, the system should be able to handle it). -* Mission Planning Use Cases: (Mohammad) Changing the phrase "Navigate to Position" to either "Navigate to Position and Orientation" or "Navigate to Pose" -* Mission Execution Use Cases: (Mohammad) We might want to change the phrase "initial location" to "initial pose" which includes both position and orientation. -* GP003: (Mohammad) The Global Planner "MUST" have the robot's current pose. -* MP005: (Mohammad) Are we planning to implement object detection and tracking to accomplish this task? Or does the Nav stack gets a series of waypoints from other supporting modules? -* MP007: (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. -* MP009: (Carl) Why is this a special primitive? Can't "go to area" suffice? (Me) I'm not sure. We'd have to capture that the floor isn't always present, at least. It can't be freely navigated into. -* MP010: (Carl) Can't we just use go to location/area to get out of the elevator. (Me) I think we need to consider how to handle elevators and other kinds of lifts, where the mechanism has various states. If there's an external controller that's handling the elevator doors, etc., the Execution mechanism for the robot needs to at least feedback that it's ready to enter (or exit) an elevator and wait for the go-head. I think we should mock up some example mission plans and work through these issues. -* MP008: (Carl) Going to a low power state seems out of scope for the navstack. -* MP007: (Carl) Could this just be reduced to not having a specified objective? What would the robot do if it isn't given a wait primitive? (Mohammad) "Wait" should be changed to "HoldPose". For example: the robot is on an inclined plane and the user wants the robot to stay at its current pose. @crdelsey If the HoldPose primitive is not given the robot would role in this example. HoldPose may also be considered to be out of scope for Nav stack. The robot's base controller should take care of holding the pose. -* MP006: (Carl) Orbit what? I can see potentially orbitting a fixed position in the world. Orbitting an object seems outside our scope. -* (mikeferguson) Ideally, this module should also be extremely well commented and documented, such that it can be used as a teaching tool -- I presume it will be a fairly straight forward A* implementation, which means it can be easily understood by students and adapted during various coursework. -* Remove PLN021 and PLN022. Should we change to express in terms of time? Performance requirements. -* 2.3.4 "Control" -> "Execution" -* Localization: (mikefurgeson) This won't be exact -- so it should also provide an estimate of the accuracy (current navigation stack can't take that into account, but future local planners certainly could). The current message is PoseWithCovariance to accomplish this in ROS1. -* (Mohammad) Suggestion: Changing the phrase "known obstacles" to "known static obstacles". -* Mapping Use Cases: (Mohammad) Suggestion: "The user will typically either manually create a map or uses SLAM algorithm to create a map of the area in which the robot is to navigate." -* Mapping: (mikefurgeson) Any thoughts around tiling? Especially for out-of-memory situations? -* Add Terminology Section (?) \ No newline at end of file +LOC002 | Localization.Robot Pose.Accuracy | 1 | The Localization Module MUST provide the estimated accuracy of the pose. | So that Planning modules can determine if a particular Localization module has sufficient accuracy. Could use PoseWithCovariance message. \ No newline at end of file From a603201a0a81f3aadb52ebab19fd794457b37733 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Tue, 10 Jul 2018 15:48:09 -0700 Subject: [PATCH 10/27] Address Matt's feedback --- doc/requirements/requirements.md | 33 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index 0490fbbd2c1..c4c2b233de2 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -32,7 +32,7 @@ In the requirements specified below, certain keywords have a specific meaning as 5. **MAY**: This word, or the adjective "OPTIONAL", mean that an item is truly optional. An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality. In the same vein an implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides). -These definitions are derived from the IETF Best Current Practices Document #14. +These definitions are derived from the [IETF Best Current Practices Document 14](https://tools.ietf.org/html/bcp14). ## 1.3 Terminology @@ -42,8 +42,8 @@ Term | Definition ---- | ---------- Path | A *Path* is an ordered sequence of points in space. Route | A *Route* is a synonym for Path. -Trajectory | A *Trajectory* is a path for which which timing is specified, e.g., velocities and accelerations for each point. -Path Planning | *Path Planning* finds an optimal path from one node in a graph to another. Algorithms such as A*, D*, and RRT are all path planning algorithms if they don’t consider motion. +Trajectory | A *Trajectory* is a path parameterized by time. +Path Planning | *Path Planning* finds an optimal path from one node in a graph to another. Algorithms such as A*, D*, and RRT are all path planning algorithms if they don't consider motion. Motion Planning | *Motion Planning* specifies the motion of the robot over time. Motion can go along the same path but with different trajectories. ## 1.4 Use Cases @@ -102,7 +102,7 @@ Decomposing the Navigation System, the overall command chain is as follows: ## 1.5.2 Support Modules -In addition to the command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules is outside the scope of the Navigation System. However, the inteface to these components is in scope and the associated requirements should be defined. Together, the support modules provide the robot with a full picture of the robot's environment. +In addition to the command chain, there are several supporting modules and subsystems required for a complete system. The implementation of these modules is outside the scope of the Navigation System. However, the interface to these components is in scope and the associated requirements should be defined. Together, the support modules provide the robot with a full picture of the robot's environment. * **Mapping** - The Mapping Subsystem generates maps that can be used by the Navigation System to plan the robot's motion. Maps are typically created in advance and are available to the Navigation System. A map can be updated to reflect changes in the environment. The frequency of these updates will vary among implementations. * **Perception** - The Perception Subsystem utilizes sensors to develop an understanding of the dynamic environment around the robot. This information is available to the Navigation System, such as when avoiding obstacles in the robot's path. @@ -117,10 +117,10 @@ To facilitate error recovery, each module in the command chain, if it is unable ## 1.6 Design Goals -The Navigation System designers should strive to meet the following high-level design goals: +The Navigation System should meet the following high-level design goals: * **Extensibility** - The Navigation System should be a *pluggable framework* to allow for other developers to easily extend the capabilities of the Navigation System, such as adding the ability to handle new navigation commands. -* **Modularity** - The Navigation System should allow other developers to *easily replace components* with alternative implementations. +* **Modularity** - The Navigation System should allow developers to *easily replace components* with alternative implementations. * **Generality** - The Navigation System should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. * **Performance** - *TODO: What are the performance goals?* * **Scalability** - *TODO: How low should the implementation scale?* *Specify a minimum platform?* @@ -143,20 +143,20 @@ IC004 | Implementation Language.C++.Supported Compilers.g++ | 1 | The Navigation IC005 | Implementation Language.C++.Supported Compilers.Clang | 1 | The Navigation System code SHALL compile with Clang, version *x* IC006 | Implementation Language.C++.Supported Compilers.Intel C++ Compiler | 1 | The Navigation System code SHOULD compile with the Intel C++ Compiler, version *x* | Could be useful for optimization purposes IC007 | Implementation Language.Python.Version | 1 | Any Python code developed for the Navigation System MUST use Python 3 -IC008 | Implementation Language.GUI | 1 | Any GUIs developed as part of the Navigation System MUST use the Qt library, via C++ or Python (PyQt) | *Which version?* +IC008 | Implementation Language.GUI | 1 | Any GUIs developed as part of the Navigation System SHOULD use the Qt library, via C++ or Python (PyQt) | *Which version?* IC009 | Implementation Language.GUI.QML | 1 | Any GUIs developed as part of the Navigation System MAY use QML IC010 | ROS2.Version | 1 | The Navigation System WILL be developed against the latest stable version of the ROS 2 stack | *What is the current latest version?* ## 2.2 Target Platforms -The Navigation System will run on the latest versions of the operating systems supported by the core ROS 2 code. + Navigation System will run on the latest versions of the operating systems supported by the core ROS 2 code. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- TP001 | Target Platforms.Operating Systems.Ubuntu | 1 | The Navigation System MUST support Ubuntu Desktop 16.04 and Ubuntu Desktop 18.04 TP002 | Target Platforms.Operating Systems.MacOS | 1 | The Navigation System MUST support MacOS 10.13 (High Sierra) and MacOS 10.14 (Mohave) TP003 | Target Platforms.Operating Systems.Windows | 1 | The Navigation System MUST support Windows 10 Professional -TP004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation System SHOULD support the latest version of Intel's Clear Linux distribution | What is the latest version number? +TP004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation System SHOULD support the Intel's Clear Linux distribution | Clear Linux uses a continuous deployment model. TP005 | Target Platforms.CPU.Word Size | 1 | The Navigation System SHALL support 64-bit processors | Don't assume a specific pointer size TP006 | Target Platforms.Minimum Platform | 1 | *Should we specify a minimum target platform?* *Or, should this be expressed as minimum platform requirements?* @@ -173,16 +173,17 @@ Id | Handle | Priority | Description | Notes MP001 | Mission Planning.Navigation Commands | 1 | The Mission Plan MUST be able to express the plan as a coordinated sequence of Navigation Commands. | Could include time and policy aspects (*when* and *how*, not just *what*) MP002 | Mission Planning.Navigation Commands.Composition | 1 | The Mission Plan SHOULD allow for the composition and naming of new Navigation Commands from a sequence of previously-defined Navigation Commands. | Build up levels of abstraction. For example, Enter-Elevator could be expressed as Navigate-to-Pose (right outside of elevator), Wait (for door to open), Navigate-to-Pose (inside the elevator). MP003 | Mission Planning.Navigation Commands.Navigate to Pose | 1 | The Mission Plan MUST be able to convey the information required for a robot to navigate from its current location to a specific destination pose. -MP004 | Mission Planning.Navigation Commands.Navigate to Area | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a specific area. | An "area" could be a rectangular region or a more complex shape. +MP004 | Mission Planning.Navigation Commands.Navigate to Area | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a specific area. | An "area" could be a rectangular region or a more complex shape. It may be defined as tolerance to a goal (ie. within +/- 1 meter distance). MP005 | Mission Planning.Navigation Commands.Enqueue | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to navigate from its current location to a position behind another specified robot. MP006 | Mission Planning.Navigation Commands.Follow | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to be able to follow another specified robot. | This one doesn't have a completion state (reaching the goal), unless it specifies additional information such as "follow until destination reached." MP007 | Mission Planning.Navigation Commands.Maintain Pose | 1 | The Mission Plan SHOULD be able to convey the information required for a robot to maintain its current pose. | Could be indefinite or time-based. MP008 | Mission Planning.Navigation Commands.Park | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to park itself. | The implementation of the parking command could interact with the robot to cause it, for example, to shut down or enter a low-power state. -MP009 | Mission Planning.Policy | 1 | The Mission Plan SHOULD be able to express information about how and when the navigation commands are to be carried out. | Time and safety constraints. -MP010 | Mission Planning.Policy.Time.Initiation | 1 | The Mission Plan SHOULD be able to convey when a mission should begin. -MP011 | Mission Planning.Policy.Time.Completion | 1 | The Mission Plan SHOULD be able to convey by when a mission should end. -MP012 | Mission Planning.Policy.Safety.Maximum Speed | 1 | The Mission Plan SHOULD be able to convey a maximum speed for the robot. | The robot would respect this value in carrying out the plan. This could be site-specific policy. -MP013 | Mission Planning.Policy.Safety.Minimum Safety Buffer | 1 | The Mission Plan SHOULD be able to convey a minimum safety buffer distance. | The robot would respect this value and maintain the distance from other objects at all times. Should vary with relative velocities. +MP009 | Mission Planning.Navigation Commands.Dock to Charger | 2 | The Mission Plan SHOULD be able to convey the information required for a robot to dock to a specific charging station. +MP010 | Mission Planning.Policy | 1 | The Mission Plan SHOULD be able to express information about how and when the navigation commands are to be carried out. | Time and safety constraints. +MP011 | Mission Planning.Policy.Time.Initiation | 1 | The Mission Plan SHOULD be able to convey when a mission should begin. +MP012 | Mission Planning.Policy.Time.Completion | 1 | The Mission Plan SHOULD be able to convey by when a mission should end. +MP013 | Mission Planning.Policy.Safety.Maximum Speed | 1 | The Mission Plan SHOULD be able to convey a maximum speed for the robot. | The robot would respect this value in carrying out the plan. This could be site-specific policy. +MP014 | Mission Planning.Policy.Safety.Minimum Safety Buffer | 1 | The Mission Plan SHOULD be able to convey a minimum safety buffer distance. | The robot would respect this value and maintain the distance from other objects at all times. Should vary with relative velocities. ### 2.3.2 Mission Execution @@ -275,7 +276,7 @@ MAP002 | Mapping.Data Model.Obstacles | 1 | Maps provided by Mapping Subsystem M MAP003 | Mapping.Data Model.Confidence Metric | 1 | Each known obstacle in a map SHALL have a confidence metric associated with it. MAP004 | Mapping.Data Model.Unknown Space | 1 | Maps provided by the Mapping Subsystem MUST indicate unmapped/unknown space. | Such as areas beyond the edge of the map, or areas within the map for which we didn't have any observations during map building. MAP005 | Mapping.Data Model.Surface Planarity | 1 | The map data format SHALL be capable of describing the planarity of traversable surfaces. | Can describe uneven ground. -MAP006 | Mapping.Data Model.Safety Zone | 1 | The map data format SHALL be capable of defining regions where the robot may have to adjust its operations. +MAP006 | Mapping.Data Model.Safety Zone | 1 | The map data format SHALL be capable of defining regions where the robot may have to adjust its operations according to specified constraints. MAP007 | Mapping.Data Model.Safety Zone.Name | 1 | The map data format SHOULD allow for naming each safety zone. | *Does it need to be a unique name?* MAP008 | Mapping.Data Model.Safety Zone.Type | 1 | The map data format SHOULD allow for defining types of safety zones. | To allow for re-use of a safety zone type without redefining policy. Could be an "intersection" type, for example. May want to slot down at all intersections, for example. MAP009 | Mapping.Data Model.Safety Zone.Policy | 1 | The map data format SHALL be capable of expressing policy associated with each safety zone and safety zone type. | Maximum speed, (increased) distance to people, etc. From e0d28db017151fcc353d934771d07f9bcb04ad9b Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Thu, 12 Jul 2018 09:49:28 -0700 Subject: [PATCH 11/27] Address Matt's feedback --- LICENSE | 201 ------------------------------- doc/README.md | 2 +- doc/requirements/requirements.md | 56 +++++---- 3 files changed, 35 insertions(+), 224 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 261eeb9e9f8..00000000000 --- a/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/doc/README.md b/doc/README.md index 096818d82dc..468481e37a4 100644 --- a/doc/README.md +++ b/doc/README.md @@ -5,4 +5,4 @@ This is where the ROS2 Navigation System documentation is being collected and ve See the [requirements document](requirements/requirements.md) for the current list of requirements. # Contributing -To propose additions or changes to the requirements, modify the requirements document and submit a pull request for review. +To propose additions or changes to the requirements, please file an issue against the requirements document to initiate a discussion of the topic. Then, once the discussion has completed and the group has agreed to move forward on the item, you can submit a pull request and link to the issue. diff --git a/doc/requirements/requirements.md b/doc/requirements/requirements.md index c4c2b233de2..2cdf3f3f1c2 100644 --- a/doc/requirements/requirements.md +++ b/doc/requirements/requirements.md @@ -43,8 +43,8 @@ Term | Definition Path | A *Path* is an ordered sequence of points in space. Route | A *Route* is a synonym for Path. Trajectory | A *Trajectory* is a path parameterized by time. -Path Planning | *Path Planning* finds an optimal path from one node in a graph to another. Algorithms such as A*, D*, and RRT are all path planning algorithms if they don't consider motion. -Motion Planning | *Motion Planning* specifies the motion of the robot over time. Motion can go along the same path but with different trajectories. +Path Planning | *Path Planning* refers to the process of finding an optimal path between multiple locations. Path planning is typically characterized as a graph traversal problem and algorithms such as A*, D*, and RRT are common choices for implementation. +Motion Planning | *Motion Planning* refers to the process of specifying the motion of the robot over time to follow a specific path. ## 1.4 Use Cases @@ -123,8 +123,8 @@ The Navigation System should meet the following high-level design goals: * **Modularity** - The Navigation System should allow developers to *easily replace components* with alternative implementations. * **Generality** - The Navigation System should not introduce inherent limitations in the architectural blocks. For example, it should support multiple kinds of robots, not making assumptions about robot capabilities and limitations and should support various map types and orientations. * **Performance** - *TODO: What are the performance goals?* -* **Scalability** - *TODO: How low should the implementation scale?* *Specify a minimum platform?* -* *Other important design goals?* +* **Scalability** - *TODO: What are the scalability goals?* +* *TODO: Other important design goals to call out?* # 2.0 Requirements @@ -136,7 +136,7 @@ There are various constraints on the development of the ROS 2 Navigation stack. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- -IC001 | Developer's Guide | 1 | The Navigation System SHOULD be developed in accordance with the ROS 2 Devloper's Guide | [ROS 2 Developer's Guide](https://github.com/ros2/ros2/wiki/Developer-Guide) +IC001 | Developer's Guide | 1 | The Navigation System SHOULD be developed in accordance with the ROS 2 Developer's Guide | [ROS 2 Developer's Guide](https://github.com/ros2/ros2/wiki/Developer-Guide) IC002 | Implementation Language.C++.Version | 1 | Developers SHALL assume the availability of C++14 language features | Per the ROS 2 Developer's Guide IC003 | Implementation Language.C++.API Preference | 1 | Developers SHOULD prefer standard C++, then Boost, then custom code, in that order. | Boost may be used if equivalent functionality is not already available in the C++ standard library IC004 | Implementation Language.C++.Supported Compilers.g++ | 1 | The Navigation System code SHALL compile with gcc 5.4 or newer @@ -145,7 +145,7 @@ IC006 | Implementation Language.C++.Supported Compilers.Intel C++ Compiler | 1 | IC007 | Implementation Language.Python.Version | 1 | Any Python code developed for the Navigation System MUST use Python 3 IC008 | Implementation Language.GUI | 1 | Any GUIs developed as part of the Navigation System SHOULD use the Qt library, via C++ or Python (PyQt) | *Which version?* IC009 | Implementation Language.GUI.QML | 1 | Any GUIs developed as part of the Navigation System MAY use QML -IC010 | ROS2.Version | 1 | The Navigation System WILL be developed against the latest stable version of the ROS 2 stack | *What is the current latest version?* +IC010 | ROS2.Version | 1 | The first revision of the Navigation System WILL target the Crystal Clemmys release of ROS2. | We should develop against the latest ROS2 code whenever possible. ## 2.2 Target Platforms @@ -158,7 +158,7 @@ TP002 | Target Platforms.Operating Systems.MacOS | 1 | The Navigation System MUS TP003 | Target Platforms.Operating Systems.Windows | 1 | The Navigation System MUST support Windows 10 Professional TP004 | Target Platforms.Operating Systems.Clear Linux | 1 | The Navigation System SHOULD support the Intel's Clear Linux distribution | Clear Linux uses a continuous deployment model. TP005 | Target Platforms.CPU.Word Size | 1 | The Navigation System SHALL support 64-bit processors | Don't assume a specific pointer size -TP006 | Target Platforms.Minimum Platform | 1 | *Should we specify a minimum target platform?* *Or, should this be expressed as minimum platform requirements?* +TP006 | Target Platforms.Minimum Platform | 1 | *TODO: Should we specify a minimum target platform? Or, should this be expressed as minimum platform requirements?* ## 2.3 Command Chain Modules @@ -216,10 +216,10 @@ PLN002 | Planning.Inputs.Navigation Command | 1 | The Planning Module SHALL rece PLN003 | Planning.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Navigation Command to execute. | This could be global policy and/or per-command policy. Policy could contain, for example, a list of conventions for the robot to follow (navigate on the right side of a path, for example). PLN004 | Planning.Inputs.Mapping.Maps | 1 | The Planning Module MUST have access to one or more maps available that describe the robot's environment. PLN005 | Planning.Inputs.Perception.Sensory Input | 1 | The Planning Module MUST have access to data from the Perception Subsystem. -PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MUST have access to predicted trajectories of objects detected by the Perception Subsystem. +PLN006 | Planning.Inputs.Prediction.Predicted Trajectories | 1 | The Planning Module MAY have access to predicted trajectories of objects detected by the Perception Subsystem. | In simple planners, there is no prediction of moving objects, but in more complex planners, this may be considered. PLN007 | Planning.Inputs.Localization.Current Pose | 1 | The Planning Module MUST have access to the robot's current pose. | The pose could be be provided manually or automatically determined (outside of this module). -PLN008 | Planning.Outputs.Path | 1 | The Planning Module MUST output the Path for the robot to follow to execute the input Navigation Command and MUST respect any associated policy. -PLN009 | Planning.Feedback.Inputs | 1 | The Planning Module MUST receive error input from the downstream Execution Module. | So that it can attempt to recover from execution failures. +PLN008 | Planning.Outputs.Path | 1 | The Planning Module SHOULD output the Path for the robot to follow to execute the input Navigation Command and MUST respect any associated policy. +PLN009 | Planning.Feedback.Inputs | 1 | The Planning Module MAY receive error input from the downstream Execution Module. | So that it can attempt to recover from execution failures. PLN010 | Planning.Feedback.Inputs.Error Recovery | 1 | Upon receipt of a downstream failure, the Planning Module SHOULD attempt to automatically recover from the error. | Handling a robot that gets stuck or handling a collision, for example. PLN011 | Planning.Feedback.Outputs.Command Completed | 1 | Upon completing the provided Navigation Command, the Planning Module MUST report this event on its feedback output. PLN012 | Planning.Feedback.Outputs.Unable to Execute Command | 1 | If the Planning Module is unable to execute the Navigation Command, it SHALL report the error on its feedback output. | It should handle errors if possible, but report back if it can't. @@ -236,11 +236,11 @@ Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- EXE001 | Execution | 1 | The Navigation System SHOULD have an Execution Module that generates commands to the robot to achieve a specific Path. EXE002 | Execution.Inputs.Path | 1 | The Execution Module SHALL receive a Path that the robot is to follow. -EXE003 | Execution.Inputs.Policy | 1 | The Planning Module SHALL receive policy information associated with the Path to follow. | Could filter down from higher-level policy specification. +EXE003 | Execution.Inputs.Policy | 1 | The Execution Module SHALL receive policy information associated with the Path to follow. | Could filter down from higher-level policy specification. EXE004 | Execution.Collision Avoidance.Avoid Stationary Objects | 1 | The Execution Module MUST direct the robot such that it avoids colliding into stationary objects in its environment. EXE005 | Execution.Collision Avoidance.Avoid Moving Objects | 1 | The Execution Module MUST direct the robot such that it avoids colliding into moving objects that intercept its path. EXE006 | Execution.Collision Detection | 1 | The Execution Module SHOULD detect if a collision has occurred. -EXE007 | Execution.Collision Detection.Latency | 1 | The Execution Module SHOULD detect collisions within 50ms. | *What is the right value?* +EXE007 | Execution.Collision Detection.Latency | 1 | The Execution Module SHOULD detect collisions within 50ms. | *TODO: What is the right value?* EXE008 | Execution.Feedback.Inputs.Robot Malfunction | 1 | The Execution Module SHOULD receive notifications of any robot malfunctions from the downstream robot interface. | A sensor failure, for example. EXE009 | Execution.Feedback.Outputs.Collision Detected | 1 | The Execution Module SHOULD report the detection of a collision. | So that the Planning Module can attempt recovery or otherwise respond. EXE010 | Execution.Feedback.Outputs.Error Propagation | 1 | The Execution Module SHOULD propagate errors that it can't handle. @@ -256,10 +256,10 @@ Id | Handle | Priority | Description | Notes RI001 | Robot Interface.Attributes | 1 | Holonomicity, max/min speeds and accelerations, etc. RI002 | Robot Interface.Dynamic Switching | 1 | Can the robot dynamically change attributes? RI003 | Robot Interface.Safety.Limited Parameters | 1 | A list of parameters used to limit certain circumstances and provide the hooks for users to set those values if they want -RI004 | Robot Interface.Safety.Speed Limiting | 1 | TODO -RI005 | Robot Interface.Safety.Force Limiting | 1 | TODO -RI006 | Robot Interface.EMO Button | 1 | TODO -RI007 | Robot Interface.Feedback.Outputs | 1 | TODO +RI004 | Robot Interface.Safety.Speed Limiting | 1 | *TODO* +RI005 | Robot Interface.Safety.Force Limiting | 1 | *TODO* +RI006 | Robot Interface.EMO Button | 1 | *TODO* +RI007 | Robot Interface.Feedback.Outputs | 1 | *TODO* ## 2.4 Support Modules @@ -277,7 +277,7 @@ MAP003 | Mapping.Data Model.Confidence Metric | 1 | Each known obstacle in a map MAP004 | Mapping.Data Model.Unknown Space | 1 | Maps provided by the Mapping Subsystem MUST indicate unmapped/unknown space. | Such as areas beyond the edge of the map, or areas within the map for which we didn't have any observations during map building. MAP005 | Mapping.Data Model.Surface Planarity | 1 | The map data format SHALL be capable of describing the planarity of traversable surfaces. | Can describe uneven ground. MAP006 | Mapping.Data Model.Safety Zone | 1 | The map data format SHALL be capable of defining regions where the robot may have to adjust its operations according to specified constraints. -MAP007 | Mapping.Data Model.Safety Zone.Name | 1 | The map data format SHOULD allow for naming each safety zone. | *Does it need to be a unique name?* +MAP007 | Mapping.Data Model.Safety Zone.Name | 1 | The map data format SHOULD allow for naming each safety zone. | *TODO: Does it need to be a unique name?* MAP008 | Mapping.Data Model.Safety Zone.Type | 1 | The map data format SHOULD allow for defining types of safety zones. | To allow for re-use of a safety zone type without redefining policy. Could be an "intersection" type, for example. May want to slot down at all intersections, for example. MAP009 | Mapping.Data Model.Safety Zone.Policy | 1 | The map data format SHALL be capable of expressing policy associated with each safety zone and safety zone type. | Maximum speed, (increased) distance to people, etc. MAP010 | Mapping.Data Model.Safety Zone.Policy.Keep Out Zone | 1 | The map data format SHALL be capable of expressing that a robot must not navigate through this zone. @@ -287,8 +287,8 @@ MAP013 | Mapping.Data Model.Building Levels.Level Connecting Features | 1 | The MAP014 | Mapping.Multiple Maps Per Environment | 1 | The Mapping System MAY provide multiple maps of the same environment. | Such as for different scales and elevations. MAP015 | Mapping.Data Model.Extensibility | 1 | The Mapping System SHOULD be extensible, to allow for the description of additional entities in the environment. MAP016 | Mapping.Dimensionality.2D | 1 | The Mapping System MUST provide 2D map information. -MAP017 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MUST provide 2D+ map information. | *TODO: How is this defined?* -MAP018 | Mapping.Dimensionality.3D | 1 | The Mapping System SHOULD provide 3D map information. +MAP017 | Mapping.Dimensionality.2D+ | 1 | The Mapping System MAY provide 2D+ map information. +MAP018 | Mapping.Dimensionality.3D | 1 | The Mapping System MAY provide 3D map information. MAP019 | Mapping.Dynamic Updates | 1 | The Mapping System SHOULD provide real-time updates of map information. | Allow for updates to the map to be pushed to clients. MAP020 | Mapping.Memory Optimization.Tiling | 1 | The Mapping System MAY provide the Navigation System with local map regions, sufficient for navigation. | Could provide relevant map tiles, for example, saving memory in the planners. @@ -299,11 +299,11 @@ The Perception Subsystem provides information about objects detected in the robo Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- PER001 | Perception | 1 | The Perception Subsystem SHALL provide information about the dynamic environment of the robot. | Info sufficient to carry out the Navigation System requirements. -PER002 | Perception.Latency | 1 | TODO +PER002 | Perception.Latency | 1 | *TODO* ### 2.4.3 Prediction -The Prediction Subsystem TODO +The Prediction Subsystem uses input from the Perception Subsystem and predicts the trajectories of the detected objects over time. Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- @@ -317,4 +317,16 @@ The Navigation System requires the Robot's current pose, provided by an external Id | Handle | Priority | Description | Notes -- | ------ | -------- | ----------- | ----- LOC001 | Localization.Robot Pose | 1 | The Localization module MUST provide the robot's current pose to the Navigation System. | This could be manual or as a result of automatic localization; the Navigation System wouldn't know either way. -LOC002 | Localization.Robot Pose.Accuracy | 1 | The Localization Module MUST provide the estimated accuracy of the pose. | So that Planning modules can determine if a particular Localization module has sufficient accuracy. Could use PoseWithCovariance message. \ No newline at end of file +LOC002 | Localization.Robot Pose.Accuracy | 1 | The Localization Module MUST provide the estimated accuracy of the pose. | So that Planning modules can determine if a particular Localization module has sufficient accuracy. Could use PoseWithCovariance message. + +## 2.5 Open Issues + +* What are the performance goals for the ROS2 Navigation System? +* What are the scalability for the ROS2 Navigaton System? +* Any other important design goals to call out? +* Should we specify a minimum target platform? Or, should this be expressed as minimum platform requirements? +* What is the right latency value for detecting a collision? +* Should we add any safety-related functionality at the robot interface level? +* Do safety zones need unique names? +* What is the target latency for the perception subsystem? +* How far into the future should the object prediction work? From 9f54af09f28f9a3475eb6f32a8467168684bdd42 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Mon, 16 Jul 2018 14:06:28 -0700 Subject: [PATCH 12/27] Check in an initial sketch of the mission execution code --- src/.gitignore | 0 src/mission_execution/CMakeLists.txt | 36 ++++++++++++ .../mission_execution/MissionExecution.hpp | 58 +++++++++++++++++++ .../MissionExecutionStateMachine.hpp | 39 +++++++++++++ .../MissionExecutionStateMachineBehavior.hpp | 17 ++++++ .../include/mission_execution/MissionPlan.hpp | 14 +++++ .../mission_execution/NavigationCommand.hpp | 14 +++++ src/mission_execution/package.xml | 17 ++++++ .../src/MissionExecution.cpp | 44 ++++++++++++++ .../src/MissionExecutionStateMachine.cpp | 26 +++++++++ .../src/NavigationCommand.cpp | 12 ++++ src/mission_execution/src/main.cpp | 15 +++++ 12 files changed, 292 insertions(+) delete mode 100644 src/.gitignore create mode 100644 src/mission_execution/CMakeLists.txt create mode 100644 src/mission_execution/include/mission_execution/MissionExecution.hpp create mode 100644 src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp create mode 100644 src/mission_execution/include/mission_execution/MissionExecutionStateMachineBehavior.hpp create mode 100644 src/mission_execution/include/mission_execution/MissionPlan.hpp create mode 100644 src/mission_execution/include/mission_execution/NavigationCommand.hpp create mode 100644 src/mission_execution/package.xml create mode 100644 src/mission_execution/src/MissionExecution.cpp create mode 100644 src/mission_execution/src/MissionExecutionStateMachine.cpp create mode 100644 src/mission_execution/src/NavigationCommand.cpp create mode 100644 src/mission_execution/src/main.cpp diff --git a/src/.gitignore b/src/.gitignore deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/mission_execution/CMakeLists.txt b/src/mission_execution/CMakeLists.txt new file mode 100644 index 00000000000..6f1e3dc82d4 --- /dev/null +++ b/src/mission_execution/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.5) +project(mission_execution) + +# Default to C++14 +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) +endif() + +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +find_package(ament_cmake REQUIRED) +find_package(rclcpp REQUIRED) + +include_directories( + include + ) + +add_executable(mission_execution + src/main.cpp + src/MissionExecution.cpp + src/MissionExecutionStateMachine.cpp + src/NavigationCommand.cpp + ) + +ament_target_dependencies(mission_execution + rclcpp + ) + +install(TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin) + +ament_package() diff --git a/src/mission_execution/include/mission_execution/MissionExecution.hpp b/src/mission_execution/include/mission_execution/MissionExecution.hpp new file mode 100644 index 00000000000..828451c9068 --- /dev/null +++ b/src/mission_execution/include/mission_execution/MissionExecution.hpp @@ -0,0 +1,58 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef MISSION_EXECUTION__MISSIONEXECUTION_HPP_ +#define MISSION_EXECUTION__MISSIONEXECUTION_HPP_ + +#include "rclcpp/rclcpp.hpp" +#include "mission_execution/MissionPlan.hpp" +#include "mission_execution/MissionExecutionStateMachineBehavior.hpp" +#include "mission_execution/MissionExecutionStateMachine.hpp" + +class MissionExecution : public rclcpp::Node, public MissionExecutionStateMachineBehavior +{ +public: + MissionExecution(); + virtual ~MissionExecution(); + + /** + * @brief Start Mission Execution. Once the instance is initialized, the state + * machine automatically transitions to the Ready state and is ready to + * execute missions, which can be initiated using executionMission. + */ + void start(); + + /** + * @brief Stop Mission Execution. Any in-flight missions must be canceled first, + * using cancelMission. + */ + void stop(); + + /** + * @brief Execute a Mission Plan + */ + void executeMission(const MissionPlan * missionPlan); + + /** + * @brief Cancel the current, in-flight Mission, which must have been previously + * starting using executeMission. + */ + void cancelMission(); + + /** @name State Machine Behavior + * Implementation of the MissionExecutionStateMachineBehavior interface + */ + ///@{ + void doReadyState(); + void doExecutingState(); + void doCancelingState(); + void doRecoveringState(); + void doAbortingState(); + ///@} + +private: + MissionExecutionStateMachine m_MissionExecutionStateMachine; + const MissionPlan * m_missionPlan; +}; + +#endif // MISSION_EXECUTION__MISSIONEXECUTION_HPP_ diff --git a/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp b/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp new file mode 100644 index 00000000000..a6ff41f92dd --- /dev/null +++ b/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp @@ -0,0 +1,39 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINE_HPP_ +#define MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINE_HPP_ + +#include "mission_execution/MissionExecutionStateMachineBehavior.hpp" + +class MissionExecutionStateMachine +{ +public: + explicit MissionExecutionStateMachine(MissionExecutionStateMachineBehavior * behavior); + virtual ~MissionExecutionStateMachine(); + + // No default constructor + MissionExecutionStateMachine() = delete; + + typedef enum MissionExecutionEvent + { + EVENT_CANCEL_MISSION, + EVENT_EXECUTE_MISSION, + EVENT_EXECUTE_RECOVERY, + EVENT_EXECUTION_FAILED, + EVENT_MISSION_CANCELED, + EVENT_MISSION_EXECUTED, + EVENT_MISSION_FAILED, + EVENT_RECOVERY_FAILED, + EVENT_RECOVERY_SUCCESSFUL + } MissionExecutionEvent; + + void run(); + void fireEvent(const MissionExecutionEvent eventToFire); + void halt(); + +private: + MissionExecutionStateMachineBehavior * m_behavior; +}; + +#endif // MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINE_HPP_ diff --git a/src/mission_execution/include/mission_execution/MissionExecutionStateMachineBehavior.hpp b/src/mission_execution/include/mission_execution/MissionExecutionStateMachineBehavior.hpp new file mode 100644 index 00000000000..897afbe97c3 --- /dev/null +++ b/src/mission_execution/include/mission_execution/MissionExecutionStateMachineBehavior.hpp @@ -0,0 +1,17 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ +#define MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ + +class MissionExecutionStateMachineBehavior +{ +public: + virtual void doReadyState() = 0; + virtual void doExecutingState() = 0; + virtual void doCancelingState() = 0; + virtual void doRecoveringState() = 0; + virtual void doAbortingState() = 0; +}; + +#endif // MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ diff --git a/src/mission_execution/include/mission_execution/MissionPlan.hpp b/src/mission_execution/include/mission_execution/MissionPlan.hpp new file mode 100644 index 00000000000..f21d25bd1c1 --- /dev/null +++ b/src/mission_execution/include/mission_execution/MissionPlan.hpp @@ -0,0 +1,14 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef MISSION_EXECUTION__MISSIONPLAN_HPP_ +#define MISSION_EXECUTION__MISSIONPLAN_HPP_ + +class MissionPlan +{ +public: + MissionPlan(); + virtual ~MissionPlan(); +}; + +#endif // MISSION_EXECUTION__MISSIONPLAN_HPP_ diff --git a/src/mission_execution/include/mission_execution/NavigationCommand.hpp b/src/mission_execution/include/mission_execution/NavigationCommand.hpp new file mode 100644 index 00000000000..32830f75f2c --- /dev/null +++ b/src/mission_execution/include/mission_execution/NavigationCommand.hpp @@ -0,0 +1,14 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef MISSION_EXECUTION__NAVIGATIONCOMMAND_HPP_ +#define MISSION_EXECUTION__NAVIGATIONCOMMAND_HPP_ + +class NavigationCommand +{ +public: + NavigationCommand(); + virtual ~NavigationCommand(); +}; + +#endif // MISSION_EXECUTION__NAVIGATIONCOMMAND_HPP_ diff --git a/src/mission_execution/package.xml b/src/mission_execution/package.xml new file mode 100644 index 00000000000..043b811d109 --- /dev/null +++ b/src/mission_execution/package.xml @@ -0,0 +1,17 @@ + + + + mission_execution + 0.1.0 + Mission execution is a ROS2 node carries out an input navigation command by interfacing with the ROS2 Navigation System. + Michael Jeronimo + Michael Jeronimo + Apache License 2.0 + ament_cmake + rclcpp + rclcpp + + ament_cmake + + + diff --git a/src/mission_execution/src/MissionExecution.cpp b/src/mission_execution/src/MissionExecution.cpp new file mode 100644 index 00000000000..698a944c3a9 --- /dev/null +++ b/src/mission_execution/src/MissionExecution.cpp @@ -0,0 +1,44 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "mission_execution/MissionExecution.hpp" + +MissionExecution::MissionExecution() +: Node("mission_execution"), + m_MissionExecutionStateMachine(this), + m_missionPlan(nullptr) +{ +} + +MissionExecution::~MissionExecution() +{ +} + +void MissionExecution::executeMission(const MissionPlan * missionPlan) +{ + m_missionPlan = missionPlan; +} + +void MissionExecution::cancelMission() +{ +} + +void MissionExecution::doReadyState() +{ +} + +void MissionExecution::doExecutingState() +{ +} + +void MissionExecution::doCancelingState() +{ +} + +void MissionExecution::doRecoveringState() +{ +} + +void MissionExecution::doAbortingState() +{ +} diff --git a/src/mission_execution/src/MissionExecutionStateMachine.cpp b/src/mission_execution/src/MissionExecutionStateMachine.cpp new file mode 100644 index 00000000000..20c8c221764 --- /dev/null +++ b/src/mission_execution/src/MissionExecutionStateMachine.cpp @@ -0,0 +1,26 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "mission_execution/MissionExecutionStateMachine.hpp" + +MissionExecutionStateMachine::MissionExecutionStateMachine( + MissionExecutionStateMachineBehavior * behavior) +: m_behavior(behavior) +{ +} + +MissionExecutionStateMachine::~MissionExecutionStateMachine() +{ +} + +void MissionExecutionStateMachine::run() +{ +} + +void MissionExecutionStateMachine::fireEvent(const MissionExecutionEvent /*eventToFire*/) +{ +} + +void MissionExecutionStateMachine::halt() +{ +} diff --git a/src/mission_execution/src/NavigationCommand.cpp b/src/mission_execution/src/NavigationCommand.cpp new file mode 100644 index 00000000000..418e129d70a --- /dev/null +++ b/src/mission_execution/src/NavigationCommand.cpp @@ -0,0 +1,12 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "mission_execution/NavigationCommand.hpp" + +NavigationCommand::NavigationCommand() +{ +} + +NavigationCommand::~NavigationCommand() +{ +} diff --git a/src/mission_execution/src/main.cpp b/src/mission_execution/src/main.cpp new file mode 100644 index 00000000000..14c52ff40a8 --- /dev/null +++ b/src/mission_execution/src/main.cpp @@ -0,0 +1,15 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include +#include "rclcpp/rclcpp.hpp" +#include "mission_execution/MissionExecution.hpp" + +int main(int argc, char ** argv) +{ + rclcpp::init(argc, argv); + rclcpp::spin(std::make_shared()); + rclcpp::shutdown(); + + return 0; +} From 3cff85adda0a1ff1ef47ff115adc7d5a022d015f Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Mon, 16 Jul 2018 17:09:44 -0700 Subject: [PATCH 13/27] Begin adding some sample state machine implementation code --- src/mission_execution/CMakeLists.txt | 13 ++- .../mission_execution/MissionExecution.hpp | 4 +- .../MissionExecutionStateMachine.hpp | 6 +- .../src/MissionExecution.cpp | 29 ++++++- .../src/MissionExecutionStateMachine.cpp | 81 ++++++++++++++++++- 5 files changed, 124 insertions(+), 9 deletions(-) diff --git a/src/mission_execution/CMakeLists.txt b/src/mission_execution/CMakeLists.txt index 6f1e3dc82d4..7600f112756 100644 --- a/src/mission_execution/CMakeLists.txt +++ b/src/mission_execution/CMakeLists.txt @@ -15,6 +15,13 @@ find_package(rclcpp REQUIRED) include_directories( include + /usr/local/include/yasmine + /usr/local/include/yasmine/include + /usr/local/include/yasmine/include_impl +# /usr/local/include/yasmine/essentials/include +# /usr/local/include/yasmine/essentials/include/essentials +# /usr/local/include/yasmine/essentials/include/essentials/compatibility +# /usr/local/include/yasmine/hermes ) add_executable(mission_execution @@ -24,6 +31,10 @@ add_executable(mission_execution src/NavigationCommand.cpp ) +target_link_libraries(mission_execution + yasmine + ) + ament_target_dependencies(mission_execution rclcpp ) @@ -31,6 +42,6 @@ ament_target_dependencies(mission_execution install(TARGETS ${PROJECT_NAME} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib - RUNTIME DESTINATION bin) + RUNTIME DESTINATION lib/${PROJECT_NAME}) ament_package() diff --git a/src/mission_execution/include/mission_execution/MissionExecution.hpp b/src/mission_execution/include/mission_execution/MissionExecution.hpp index 828451c9068..64198b91084 100644 --- a/src/mission_execution/include/mission_execution/MissionExecution.hpp +++ b/src/mission_execution/include/mission_execution/MissionExecution.hpp @@ -51,8 +51,8 @@ class MissionExecution : public rclcpp::Node, public MissionExecutionStateMachin ///@} private: - MissionExecutionStateMachine m_MissionExecutionStateMachine; - const MissionPlan * m_missionPlan; + MissionExecutionStateMachine missionExecutionStateMachine_; + const MissionPlan * missionPlan_; }; #endif // MISSION_EXECUTION__MISSIONEXECUTION_HPP_ diff --git a/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp b/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp index a6ff41f92dd..0d728c3bbcc 100644 --- a/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp +++ b/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp @@ -33,7 +33,11 @@ class MissionExecutionStateMachine void halt(); private: - MissionExecutionStateMachineBehavior * m_behavior; + void initStateMachine(); + bool checkStateMachineForDefects(); + + MissionExecutionStateMachineBehavior * behavior_; + void * impl_; }; #endif // MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINE_HPP_ diff --git a/src/mission_execution/src/MissionExecution.cpp b/src/mission_execution/src/MissionExecution.cpp index 698a944c3a9..d8750bb46b7 100644 --- a/src/mission_execution/src/MissionExecution.cpp +++ b/src/mission_execution/src/MissionExecution.cpp @@ -5,8 +5,8 @@ MissionExecution::MissionExecution() : Node("mission_execution"), - m_MissionExecutionStateMachine(this), - m_missionPlan(nullptr) + missionExecutionStateMachine_(this), + missionPlan_(nullptr) { } @@ -16,15 +16,34 @@ MissionExecution::~MissionExecution() void MissionExecution::executeMission(const MissionPlan * missionPlan) { - m_missionPlan = missionPlan; + missionPlan_ = missionPlan; } void MissionExecution::cancelMission() { + // TODO: Do the work to cancel the in-flight mission + + // Initiate the state transition + missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_CANCELED); } void MissionExecution::doReadyState() { + // TODO: Wait for a mission to execute + + // TODO: Once we receive a mission plan, we may want to do some work, such as validating its syntax and semantics + + // TODO: Now that we know the mission plan is ready for execution, get started + + // TODO: Normal processing loop for the mission plan + + + // Initiate the state transition + missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_EXECUTED); + // Or: + missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_FAILED); + // Or: + missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_EXECUTE_RECOVERY); } void MissionExecution::doExecutingState() @@ -41,4 +60,8 @@ void MissionExecution::doRecoveringState() void MissionExecution::doAbortingState() { + // TODO: Do the work to abort the current mission + + // Initiate the state transition + missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_FAILED); } diff --git a/src/mission_execution/src/MissionExecutionStateMachine.cpp b/src/mission_execution/src/MissionExecutionStateMachine.cpp index 20c8c221764..c8f5a1ec436 100644 --- a/src/mission_execution/src/MissionExecutionStateMachine.cpp +++ b/src/mission_execution/src/MissionExecutionStateMachine.cpp @@ -3,10 +3,32 @@ #include "mission_execution/MissionExecutionStateMachine.hpp" +#include +#include "yasmine.hpp" + +typedef sxe::SX_UNIQUE_PTR state_machine_uptr; + +typedef struct yasmine_data { + state_machine_uptr sm; +} yasmine_data; + +static void +handleUnhandledEvent(const sxy::event& event) +{ + std::cout << "Unhandled state machine event: '" << event.get_name() << "'" << std::endl; +} + MissionExecutionStateMachine::MissionExecutionStateMachine( MissionExecutionStateMachineBehavior * behavior) -: m_behavior(behavior) +: behavior_(behavior) { + impl_ = new yasmine_data; + sxy::version::log_version(); + + initStateMachine(); + + if (checkStateMachineForDefects()) + throw("MissionExecution state machine has defects"); } MissionExecutionStateMachine::~MissionExecutionStateMachine() @@ -15,12 +37,67 @@ MissionExecutionStateMachine::~MissionExecutionStateMachine() void MissionExecutionStateMachine::run() { + //RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::run()\n"); + std::cout << "MissionExecutionStateMachine::run()\n"; } -void MissionExecutionStateMachine::fireEvent(const MissionExecutionEvent /*eventToFire*/) +void MissionExecutionStateMachine::fireEvent(const MissionExecutionEvent eventToFire) { + //RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::fireEvent: %d\n", eventToFire); + std::cout << "MissionExecutionStateMachine::fireEvent: " << eventToFire << "\n"; } void MissionExecutionStateMachine::halt() { + //RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::halt\n"); + std::cout << "MissionExecutionStateMachine::halt\n"; +} + +void MissionExecutionStateMachine::initStateMachine() +{ + std::string nm("MissionExecution"); + const std::string& name = nm; + + // Create the state machine + state_machine_uptr state_machine = SX_MAKE_UNIQUE(name); + + // Create a single "region" to contain the state machine + sxy::composite_state& root_state = state_machine->get_root_state(); + sxy::region& main_region = root_state.add_region("main region"); + + // Add the initial state, required by all state machines + sxy::initial_pseudostate& initial_pseudostate = main_region.add_initial_pseudostate("initial"); + + // Add the states + sxy::simple_state& simple_state_ready = main_region.add_simple_state("Ready", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doReadyState)); + + sxy::simple_state& simple_state_executing = main_region.add_simple_state("Executing", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doExecutingState)); + + sxy::simple_state& simple_state_canceling = main_region.add_simple_state("Canceling", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doCancelingState)); + + sxy::simple_state& simple_state_recovering = main_region.add_simple_state("Recovering", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doRecoveringState)); + + sxy::simple_state& simple_state_aborting = main_region.add_simple_state("Aborting", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doAbortingState)); + + // Add the state transitions + + state_machine->add_transition(sxy::Y_COMPLETION_EVENT_ID, initial_pseudostate, simple_state_ready); +} + +bool MissionExecutionStateMachine::checkStateMachineForDefects() +{ + yasmine_data *impl = (yasmine_data *) impl_; + + sxy::state_machine_defects defects; + const bool state_machine_has_no_defects = impl->sm->check(defects); + + if (!state_machine_has_no_defects) + sxy::write_defects_to_log(defects); + + return state_machine_has_no_defects; } From 602138e771073947b131ad6ea17c939803a63472 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Tue, 17 Jul 2018 15:51:54 -0700 Subject: [PATCH 14/27] Add the state machine transitions --- src/mission_execution/CMakeLists.txt | 4 +--- .../src/MissionExecutionStateMachine.cpp | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/mission_execution/CMakeLists.txt b/src/mission_execution/CMakeLists.txt index 7600f112756..7620cdca69a 100644 --- a/src/mission_execution/CMakeLists.txt +++ b/src/mission_execution/CMakeLists.txt @@ -18,9 +18,7 @@ include_directories( /usr/local/include/yasmine /usr/local/include/yasmine/include /usr/local/include/yasmine/include_impl -# /usr/local/include/yasmine/essentials/include -# /usr/local/include/yasmine/essentials/include/essentials -# /usr/local/include/yasmine/essentials/include/essentials/compatibility + /usr/local/include/yasmine/essentials/include # /usr/local/include/yasmine/hermes ) diff --git a/src/mission_execution/src/MissionExecutionStateMachine.cpp b/src/mission_execution/src/MissionExecutionStateMachine.cpp index c8f5a1ec436..ff21fd51de6 100644 --- a/src/mission_execution/src/MissionExecutionStateMachine.cpp +++ b/src/mission_execution/src/MissionExecutionStateMachine.cpp @@ -86,7 +86,27 @@ void MissionExecutionStateMachine::initStateMachine() // Add the state transitions + // The default state transition to Ready state_machine->add_transition(sxy::Y_COMPLETION_EVENT_ID, initial_pseudostate, simple_state_ready); + + // Transitions from Ready + state_machine->add_transition(EVENT_EXECUTE_MISSION, simple_state_ready, simple_state_executing); + + // Transitions from Executing + state_machine->add_transition(EVENT_CANCEL_MISSION, simple_state_executing, simple_state_canceling); + state_machine->add_transition(EVENT_EXECUTE_RECOVERY, simple_state_executing, simple_state_recovering); + state_machine->add_transition(EVENT_EXECUTION_FAILED, simple_state_executing, simple_state_aborting); + state_machine->add_transition(EVENT_MISSION_EXECUTED, simple_state_executing, simple_state_ready); + + // Transitions from Canceling + state_machine->add_transition(EVENT_MISSION_CANCELED, simple_state_canceling, simple_state_ready); + + // Transitions from Recovering + state_machine->add_transition(EVENT_RECOVERY_SUCCESSFUL, simple_state_recovering, simple_state_executing); + state_machine->add_transition(EVENT_RECOVERY_FAILED, simple_state_recovering, simple_state_aborting); + + // Transitions from Aborting + state_machine->add_transition(EVENT_MISSION_FAILED, simple_state_aborting, simple_state_ready); } bool MissionExecutionStateMachine::checkStateMachineForDefects() From ba6c8644eee74439a5745984a609a49fa3748b25 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Wed, 18 Jul 2018 17:19:01 -0700 Subject: [PATCH 15/27] Add some ROS messaging input to the MissionExecution --- src/mission_execution/CMakeLists.txt | 2 + .../mission_execution/MissionExecution.hpp | 20 +--- .../MissionExecutionStateMachine.hpp | 2 +- .../include/mission_execution/MissionPlan.hpp | 4 +- .../src/MissionExecution.cpp | 70 ++++++++--- .../src/MissionExecutionStateMachine.cpp | 113 ++++++++++++------ 6 files changed, 141 insertions(+), 70 deletions(-) diff --git a/src/mission_execution/CMakeLists.txt b/src/mission_execution/CMakeLists.txt index 7620cdca69a..1a0a8c3834b 100644 --- a/src/mission_execution/CMakeLists.txt +++ b/src/mission_execution/CMakeLists.txt @@ -12,6 +12,7 @@ endif() find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) +find_package(std_msgs REQUIRED) include_directories( include @@ -35,6 +36,7 @@ target_link_libraries(mission_execution ament_target_dependencies(mission_execution rclcpp + std_msgs ) install(TARGETS ${PROJECT_NAME} diff --git a/src/mission_execution/include/mission_execution/MissionExecution.hpp b/src/mission_execution/include/mission_execution/MissionExecution.hpp index 64198b91084..d337d62325b 100644 --- a/src/mission_execution/include/mission_execution/MissionExecution.hpp +++ b/src/mission_execution/include/mission_execution/MissionExecution.hpp @@ -5,6 +5,7 @@ #define MISSION_EXECUTION__MISSIONEXECUTION_HPP_ #include "rclcpp/rclcpp.hpp" +#include "std_msgs/msg/string.hpp" #include "mission_execution/MissionPlan.hpp" #include "mission_execution/MissionExecutionStateMachineBehavior.hpp" #include "mission_execution/MissionExecutionStateMachine.hpp" @@ -15,19 +16,6 @@ class MissionExecution : public rclcpp::Node, public MissionExecutionStateMachin MissionExecution(); virtual ~MissionExecution(); - /** - * @brief Start Mission Execution. Once the instance is initialized, the state - * machine automatically transitions to the Ready state and is ready to - * execute missions, which can be initiated using executionMission. - */ - void start(); - - /** - * @brief Stop Mission Execution. Any in-flight missions must be canceled first, - * using cancelMission. - */ - void stop(); - /** * @brief Execute a Mission Plan */ @@ -51,8 +39,12 @@ class MissionExecution : public rclcpp::Node, public MissionExecutionStateMachin ///@} private: - MissionExecutionStateMachine missionExecutionStateMachine_; + void onCmdReceived(const std_msgs::msg::String::SharedPtr msg); + +private: + MissionExecutionStateMachine stateMachine_; const MissionPlan * missionPlan_; + rclcpp::Subscription::SharedPtr cmdSub_; }; #endif // MISSION_EXECUTION__MISSIONEXECUTION_HPP_ diff --git a/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp b/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp index 0d728c3bbcc..ecba3c6e648 100644 --- a/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp +++ b/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp @@ -34,7 +34,7 @@ class MissionExecutionStateMachine private: void initStateMachine(); - bool checkStateMachineForDefects(); + bool isValidStateMachine(); MissionExecutionStateMachineBehavior * behavior_; void * impl_; diff --git a/src/mission_execution/include/mission_execution/MissionPlan.hpp b/src/mission_execution/include/mission_execution/MissionPlan.hpp index f21d25bd1c1..2c9ab30e800 100644 --- a/src/mission_execution/include/mission_execution/MissionPlan.hpp +++ b/src/mission_execution/include/mission_execution/MissionPlan.hpp @@ -7,8 +7,8 @@ class MissionPlan { public: - MissionPlan(); - virtual ~MissionPlan(); + MissionPlan(){} + virtual ~MissionPlan(){} }; #endif // MISSION_EXECUTION__MISSIONPLAN_HPP_ diff --git a/src/mission_execution/src/MissionExecution.cpp b/src/mission_execution/src/MissionExecution.cpp index d8750bb46b7..b67f384ff4d 100644 --- a/src/mission_execution/src/MissionExecution.cpp +++ b/src/mission_execution/src/MissionExecution.cpp @@ -3,65 +3,99 @@ #include "mission_execution/MissionExecution.hpp" +#include + MissionExecution::MissionExecution() : Node("mission_execution"), - missionExecutionStateMachine_(this), + stateMachine_(this), missionPlan_(nullptr) { + RCLCPP_INFO(get_logger(), "MissionExecution::MissionExecution"); + + stateMachine_.run(); + + cmdSub_ = create_subscription("MissionExecutionCmd", + std::bind(&MissionExecution::onCmdReceived, this, std::placeholders::_1)); } MissionExecution::~MissionExecution() { + RCLCPP_INFO(get_logger(), "MissionExecution::~MissionExecution"); + stateMachine_.halt(); } void MissionExecution::executeMission(const MissionPlan * missionPlan) { + RCLCPP_INFO(get_logger(), "MissionExecution::executeMission"); + missionPlan_ = missionPlan; + stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_EXECUTE_MISSION); } void MissionExecution::cancelMission() { - // TODO: Do the work to cancel the in-flight mission - - // Initiate the state transition - missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_CANCELED); + RCLCPP_INFO(get_logger(), "MissionExecution::cancelMission"); + stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_CANCEL_MISSION); } void MissionExecution::doReadyState() { - // TODO: Wait for a mission to execute - - // TODO: Once we receive a mission plan, we may want to do some work, such as validating its syntax and semantics + // This is the starting state. Do any work to reset operations. - // TODO: Now that we know the mission plan is ready for execution, get started + RCLCPP_INFO(get_logger(), "MissionExecution::doReadyState"); +} - // TODO: Normal processing loop for the mission plan +void MissionExecution::doExecutingState() +{ + // TODO(mjeronimo): Validate input for syntax and semantics + // TODO(mjeronimo): Perform normal processing loop for the mission plan // Initiate the state transition - missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_EXECUTED); + // stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_EXECUTED); // Or: - missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_FAILED); + // stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_FAILED); // Or: - missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_EXECUTE_RECOVERY); -} + // stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_EXECUTE_RECOVERY); -void MissionExecution::doExecutingState() -{ + RCLCPP_INFO(get_logger(), "MissionExecution::doExecutingState"); } void MissionExecution::doCancelingState() { + // TODO(mjeronimo): Cancel the currently running mission + + RCLCPP_INFO(get_logger(), "MissionExecution::doCancelingState"); } void MissionExecution::doRecoveringState() { + // TODO(mjeronimo): Attempt to perform local recovery + + RCLCPP_INFO(get_logger(), "MissionExecution::doRecoveringState"); } void MissionExecution::doAbortingState() { - // TODO: Do the work to abort the current mission + RCLCPP_INFO(get_logger(), "MissionExecution::doAbortingState"); + + // TODO(mjeronimo): Do the work to abort the current mission // Initiate the state transition - missionExecutionStateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_FAILED); + stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_FAILED); +} + +void MissionExecution::onCmdReceived(const std_msgs::msg::String::SharedPtr msg) +{ + RCLCPP_INFO(get_logger(), "MissionExecution::onCmdReceived: \"%s\"", msg->data.c_str()) + + if (msg->data.compare("ExecuteMission") == 0) { + MissionPlan missionPlan; + executeMission(&missionPlan); + } else if (msg->data.compare("CancelMission") == 0) { + cancelMission(); + } else { + RCLCPP_INFO(get_logger(), "MissionExecution::onCmdReceived: invalid command: \"%s\"", + msg->data.c_str()) + } } diff --git a/src/mission_execution/src/MissionExecutionStateMachine.cpp b/src/mission_execution/src/MissionExecutionStateMachine.cpp index ff21fd51de6..13764c1e88e 100644 --- a/src/mission_execution/src/MissionExecutionStateMachine.cpp +++ b/src/mission_execution/src/MissionExecutionStateMachine.cpp @@ -4,16 +4,18 @@ #include "mission_execution/MissionExecutionStateMachine.hpp" #include +#include #include "yasmine.hpp" typedef sxe::SX_UNIQUE_PTR state_machine_uptr; -typedef struct yasmine_data { +typedef struct yasmine_data +{ state_machine_uptr sm; } yasmine_data; static void -handleUnhandledEvent(const sxy::event& event) +handleUnhandledEvent(const sxy::event & event) { std::cout << "Unhandled state machine event: '" << event.get_name() << "'" << std::endl; } @@ -23,101 +25,142 @@ MissionExecutionStateMachine::MissionExecutionStateMachine( : behavior_(behavior) { impl_ = new yasmine_data; + +#if 0 + // Initialize the yasmine log manager + hermes::log_manager_template & log_manager = + hermes::log_manager::get_instance(); + log_manager.set_log_level(hermes::log_level::LL_DEBUG); + log_manager.add_logger(SX_MAKE_UNIQUE()); + log_manager.run(); sxy::version::log_version(); +#endif initStateMachine(); - if (checkStateMachineForDefects()) + if (!isValidStateMachine()) { throw("MissionExecution state machine has defects"); + } } MissionExecutionStateMachine::~MissionExecutionStateMachine() { + // log_manager.halt(); } void MissionExecutionStateMachine::run() { - //RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::run()\n"); + // RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::run()\n"); std::cout << "MissionExecutionStateMachine::run()\n"; + + yasmine_data * impl = reinterpret_cast(impl_); + impl->sm->run(); } void MissionExecutionStateMachine::fireEvent(const MissionExecutionEvent eventToFire) { - //RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::fireEvent: %d\n", eventToFire); - std::cout << "MissionExecutionStateMachine::fireEvent: " << eventToFire << "\n"; + // RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::fireEvent: %d\n", eventToFire); + + yasmine_data * impl = reinterpret_cast(impl_); + impl->sm->fire_event(sxy::event_impl::create(eventToFire)); } void MissionExecutionStateMachine::halt() { - //RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::halt\n"); + // RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::halt\n"); std::cout << "MissionExecutionStateMachine::halt\n"; + + yasmine_data * impl = reinterpret_cast(impl_); + impl->sm->halt_and_join(); } void MissionExecutionStateMachine::initStateMachine() { std::string nm("MissionExecution"); - const std::string& name = nm; + const std::string & name = nm; // Create the state machine state_machine_uptr state_machine = SX_MAKE_UNIQUE(name); - // Create a single "region" to contain the state machine - sxy::composite_state& root_state = state_machine->get_root_state(); - sxy::region& main_region = root_state.add_region("main region"); + // Create a single "region" to contain the state machine + sxy::composite_state & root_state = state_machine->get_root_state(); + sxy::region & main_region = root_state.add_region("main region"); // Add the initial state, required by all state machines - sxy::initial_pseudostate& initial_pseudostate = main_region.add_initial_pseudostate("initial"); + sxy::initial_pseudostate & initial_pseudostate = main_region.add_initial_pseudostate("initial"); // Add the states - sxy::simple_state& simple_state_ready = main_region.add_simple_state("Ready", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doReadyState)); + sxy::simple_state & simple_state_ready = main_region.add_simple_state("Ready", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doReadyState)); - sxy::simple_state& simple_state_executing = main_region.add_simple_state("Executing", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doExecutingState)); + sxy::simple_state & simple_state_executing = main_region.add_simple_state("Executing", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doExecutingState)); - sxy::simple_state& simple_state_canceling = main_region.add_simple_state("Canceling", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doCancelingState)); + sxy::simple_state & simple_state_canceling = main_region.add_simple_state("Canceling", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doCancelingState)); - sxy::simple_state& simple_state_recovering = main_region.add_simple_state("Recovering", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doRecoveringState)); + sxy::simple_state & simple_state_recovering = main_region.add_simple_state("Recovering", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doRecoveringState)); - sxy::simple_state& simple_state_aborting = main_region.add_simple_state("Aborting", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doAbortingState)); + sxy::simple_state & simple_state_aborting = main_region.add_simple_state("Aborting", + Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doAbortingState)); // Add the state transitions // The default state transition to Ready - state_machine->add_transition(sxy::Y_COMPLETION_EVENT_ID, initial_pseudostate, simple_state_ready); + state_machine->add_transition(sxy::Y_COMPLETION_EVENT_ID, initial_pseudostate, + simple_state_ready); // Transitions from Ready state_machine->add_transition(EVENT_EXECUTE_MISSION, simple_state_ready, simple_state_executing); // Transitions from Executing - state_machine->add_transition(EVENT_CANCEL_MISSION, simple_state_executing, simple_state_canceling); - state_machine->add_transition(EVENT_EXECUTE_RECOVERY, simple_state_executing, simple_state_recovering); - state_machine->add_transition(EVENT_EXECUTION_FAILED, simple_state_executing, simple_state_aborting); - state_machine->add_transition(EVENT_MISSION_EXECUTED, simple_state_executing, simple_state_ready); + state_machine->add_transition(EVENT_CANCEL_MISSION, simple_state_executing, + simple_state_canceling); + state_machine->add_transition(EVENT_EXECUTE_RECOVERY, simple_state_executing, + simple_state_recovering); + state_machine->add_transition(EVENT_EXECUTION_FAILED, simple_state_executing, + simple_state_aborting); + state_machine->add_transition(EVENT_MISSION_EXECUTED, simple_state_executing, + simple_state_ready); // Transitions from Canceling state_machine->add_transition(EVENT_MISSION_CANCELED, simple_state_canceling, simple_state_ready); // Transitions from Recovering - state_machine->add_transition(EVENT_RECOVERY_SUCCESSFUL, simple_state_recovering, simple_state_executing); - state_machine->add_transition(EVENT_RECOVERY_FAILED, simple_state_recovering, simple_state_aborting); + state_machine->add_transition(EVENT_RECOVERY_SUCCESSFUL, simple_state_recovering, + simple_state_executing); + state_machine->add_transition(EVENT_RECOVERY_FAILED, simple_state_recovering, + simple_state_aborting); // Transitions from Aborting - state_machine->add_transition(EVENT_MISSION_FAILED, simple_state_aborting, simple_state_ready); + state_machine->add_transition(EVENT_MISSION_FAILED, simple_state_aborting, + simple_state_ready); + + // Set the handler for any invalid state transitions +#ifndef SX_CPP03_BOOST + state_machine->set_behavior_of_unhandled_event_handler( + Y_BEHAVIOR_FUNCTION2(handleUnhandledEvent)); +#else + state_machine->set_behavior_of_unhandled_event_handler( + sxy::behavior_function(sxe::bind(&handleUnhandledEvent, sxe::_1))); +#endif + + // Save the resulting state machine to our member variable + yasmine_data * impl = reinterpret_cast(impl_); + impl->sm = sxe::move(state_machine); } -bool MissionExecutionStateMachine::checkStateMachineForDefects() +bool MissionExecutionStateMachine::isValidStateMachine() { - yasmine_data *impl = (yasmine_data *) impl_; + yasmine_data * impl = reinterpret_cast(impl_); sxy::state_machine_defects defects; - const bool state_machine_has_no_defects = impl->sm->check(defects); + const bool isValid = impl->sm->check(defects); - if (!state_machine_has_no_defects) + if (!isValid) { sxy::write_defects_to_log(defects); + } - return state_machine_has_no_defects; + return isValid; } From e1eace5a15c2d7d1d4c905706721f8de6fb524a3 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Thu, 19 Jul 2018 10:55:59 -0700 Subject: [PATCH 16/27] Begin sketching other levels of the stack --- src/libs/task/CMakeLists.txt | 21 +++++++ ....TaskExecutionStateMachineBehavior.hpp.swp | Bin 0 -> 12288 bytes .../task/TaskExecutionStateMachine.hpp | 43 +++++++++++++ .../TaskExecutionStateMachineBehavior.hpp} | 8 +-- src/libs/task/package.xml | 19 ++++++ .../task/src/TaskExecutionStateMachine.cpp} | 58 +++++++++--------- src/mission_execution/CMakeLists.txt | 19 +++--- .../mission_execution/MissionExecution.hpp | 10 +-- .../MissionExecutionStateMachine.hpp | 43 ------------- .../include/mission_execution/MissionPlan.hpp | 4 +- src/mission_execution/package.xml | 1 + .../src/MissionExecution.cpp | 20 +++--- .../include/navigation/NavigationTask.hpp | 13 ++++ src/navigation/src/NavigationTask.cpp | 12 ++++ src/robot/include/robot/Robot.hpp | 13 ++++ src/robot/src/Robot.cpp | 12 ++++ 16 files changed, 194 insertions(+), 102 deletions(-) create mode 100644 src/libs/task/CMakeLists.txt create mode 100644 src/libs/task/include/task/.TaskExecutionStateMachineBehavior.hpp.swp create mode 100644 src/libs/task/include/task/TaskExecutionStateMachine.hpp rename src/{mission_execution/include/mission_execution/MissionExecutionStateMachineBehavior.hpp => libs/task/include/task/TaskExecutionStateMachineBehavior.hpp} (56%) create mode 100644 src/libs/task/package.xml rename src/{mission_execution/src/MissionExecutionStateMachine.cpp => libs/task/src/TaskExecutionStateMachine.cpp} (59%) delete mode 100644 src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp create mode 100644 src/navigation/include/navigation/NavigationTask.hpp create mode 100644 src/navigation/src/NavigationTask.cpp create mode 100644 src/robot/include/robot/Robot.hpp create mode 100644 src/robot/src/Robot.cpp diff --git a/src/libs/task/CMakeLists.txt b/src/libs/task/CMakeLists.txt new file mode 100644 index 00000000000..d98d45dc1eb --- /dev/null +++ b/src/libs/task/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.5) +project(task) + +# Default to C++14 +if(NOT CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 14) +endif() + +include_directories( + include + /usr/local/include/yasmine + /usr/local/include/yasmine/include + /usr/local/include/yasmine/include_impl + /usr/local/include/yasmine/essentials/include + ) + +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "../libs/") + +add_library(task STATIC + src/TaskExecutionStateMachine.cpp + ) diff --git a/src/libs/task/include/task/.TaskExecutionStateMachineBehavior.hpp.swp b/src/libs/task/include/task/.TaskExecutionStateMachineBehavior.hpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..4d084f1ec581e7f761b0243d9f4f37fb7a89592b GIT binary patch literal 12288 zcmeI&zi-n(6bJAZn9I){9%P|NwbOtEDq?VrrI8n z8$7cB3$OqSumB6N01L1H3;YKHwrIc$dd^deXFb1|8^6qpB~L8C0xZA+EWiRRzyd75 z0xZA+EWiT)pg@uVyj}zNOsW6>U%vmpI}7lN@{$r$E>kX1zMcX2LitE}PkBQ*qC}Jp z%5};*rM}*$`kFjgfCX591z3OuSbzmsfCX591^$jeQ>aXi5nUH!FWMOn>(Agp;P1!b zUN4HhIOuwQC+r2=LB~4?_XfjGzdrSHi5U^AnYdd}Z098+`R$lWg|W7b~WtT&7!a1Zkd>C9Z5Or#9J4jH%cBWK>N# zR&?IUP6GNtd|k|pJe*i;w>EEMsI188peeMOH_AKc($xj?DVXl*f*Mx<7onFHSeGtlay literal 0 HcmV?d00001 diff --git a/src/libs/task/include/task/TaskExecutionStateMachine.hpp b/src/libs/task/include/task/TaskExecutionStateMachine.hpp new file mode 100644 index 00000000000..bb529a459fb --- /dev/null +++ b/src/libs/task/include/task/TaskExecutionStateMachine.hpp @@ -0,0 +1,43 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef TASK__TASKEXECUTIONSTATEMACHINE_HPP_ +#define TASK__TASKEXECUTIONSTATEMACHINE_HPP_ + +#include "task/TaskExecutionStateMachineBehavior.hpp" + +class TaskExecutionStateMachine +{ +public: + explicit TaskExecutionStateMachine(TaskExecutionStateMachineBehavior * behavior); + virtual ~TaskExecutionStateMachine(); + + // No default constructor + TaskExecutionStateMachine() = delete; + + typedef enum TaskExecutionEvent + { + EVENT_CANCEL_TASK, + EVENT_EXECUTE_TASK, + EVENT_EXECUTE_TASK_RECOVERY, + EVENT_TASK_EXECUTION_FAILED, + EVENT_TASK_CANCELED, + EVENT_TASK_EXECUTED, + EVENT_TASK_FAILED, + EVENT_TASK_RECOVERY_FAILED, + EVENT_TASK_RECOVERY_SUCCESSFUL + } TaskExecutionEvent; + + void run(); + void fireEvent(const TaskExecutionEvent eventToFire); + void halt(); + +private: + void initStateMachine(); + bool isValidStateMachine(); + + TaskExecutionStateMachineBehavior * behavior_; + void * impl_; +}; + +#endif // TASK__TASKEXECUTIONSTATEMACHINE_HPP_ diff --git a/src/mission_execution/include/mission_execution/MissionExecutionStateMachineBehavior.hpp b/src/libs/task/include/task/TaskExecutionStateMachineBehavior.hpp similarity index 56% rename from src/mission_execution/include/mission_execution/MissionExecutionStateMachineBehavior.hpp rename to src/libs/task/include/task/TaskExecutionStateMachineBehavior.hpp index 897afbe97c3..d3db4d5f7bb 100644 --- a/src/mission_execution/include/mission_execution/MissionExecutionStateMachineBehavior.hpp +++ b/src/libs/task/include/task/TaskExecutionStateMachineBehavior.hpp @@ -1,10 +1,10 @@ // License: Apache 2.0. See LICENSE file in root directory. // Copyright 2018 Intel Corporation. All Rights Reserved. -#ifndef MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ -#define MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ +#ifndef TASK__TASKEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ +#define TASK__TASKEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ -class MissionExecutionStateMachineBehavior +class TaskExecutionStateMachineBehavior { public: virtual void doReadyState() = 0; @@ -14,4 +14,4 @@ class MissionExecutionStateMachineBehavior virtual void doAbortingState() = 0; }; -#endif // MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ +#endif // TASK__TASKEXECUTIONSTATEMACHINEBEHAVIOR_HPP_ diff --git a/src/libs/task/package.xml b/src/libs/task/package.xml new file mode 100644 index 00000000000..0230af4575d --- /dev/null +++ b/src/libs/task/package.xml @@ -0,0 +1,19 @@ + + + + task + 0.1.0 + TODO + Michael Jeronimo + Michael Jeronimo + Apache License 2.0 + ament_cmake + + + ament_cmake + + diff --git a/src/mission_execution/src/MissionExecutionStateMachine.cpp b/src/libs/task/src/TaskExecutionStateMachine.cpp similarity index 59% rename from src/mission_execution/src/MissionExecutionStateMachine.cpp rename to src/libs/task/src/TaskExecutionStateMachine.cpp index 13764c1e88e..8f5fd41c86b 100644 --- a/src/mission_execution/src/MissionExecutionStateMachine.cpp +++ b/src/libs/task/src/TaskExecutionStateMachine.cpp @@ -1,7 +1,7 @@ // License: Apache 2.0. See LICENSE file in root directory. // Copyright 2018 Intel Corporation. All Rights Reserved. -#include "mission_execution/MissionExecutionStateMachine.hpp" +#include "task/TaskExecutionStateMachine.hpp" #include #include @@ -20,8 +20,8 @@ handleUnhandledEvent(const sxy::event & event) std::cout << "Unhandled state machine event: '" << event.get_name() << "'" << std::endl; } -MissionExecutionStateMachine::MissionExecutionStateMachine( - MissionExecutionStateMachineBehavior * behavior) +TaskExecutionStateMachine::TaskExecutionStateMachine( + TaskExecutionStateMachineBehavior * behavior) : behavior_(behavior) { impl_ = new yasmine_data; @@ -39,44 +39,42 @@ MissionExecutionStateMachine::MissionExecutionStateMachine( initStateMachine(); if (!isValidStateMachine()) { - throw("MissionExecution state machine has defects"); + throw("TaskExecution state machine has defects"); } } -MissionExecutionStateMachine::~MissionExecutionStateMachine() +TaskExecutionStateMachine::~TaskExecutionStateMachine() { // log_manager.halt(); } -void MissionExecutionStateMachine::run() +void TaskExecutionStateMachine::run() { - // RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::run()\n"); - std::cout << "MissionExecutionStateMachine::run()\n"; + // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::run()\n"); yasmine_data * impl = reinterpret_cast(impl_); impl->sm->run(); } -void MissionExecutionStateMachine::fireEvent(const MissionExecutionEvent eventToFire) +void TaskExecutionStateMachine::fireEvent(const TaskExecutionEvent eventToFire) { - // RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::fireEvent: %d\n", eventToFire); + // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::fireEvent: %d\n", eventToFire); yasmine_data * impl = reinterpret_cast(impl_); impl->sm->fire_event(sxy::event_impl::create(eventToFire)); } -void MissionExecutionStateMachine::halt() +void TaskExecutionStateMachine::halt() { - // RCLCPP_INFO(this->get_logger(), "MissionExecutionStateMachine::halt\n"); - std::cout << "MissionExecutionStateMachine::halt\n"; + // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::halt\n"); yasmine_data * impl = reinterpret_cast(impl_); impl->sm->halt_and_join(); } -void MissionExecutionStateMachine::initStateMachine() +void TaskExecutionStateMachine::initStateMachine() { - std::string nm("MissionExecution"); + std::string nm("TaskExecution"); const std::string & name = nm; // Create the state machine @@ -91,19 +89,19 @@ void MissionExecutionStateMachine::initStateMachine() // Add the states sxy::simple_state & simple_state_ready = main_region.add_simple_state("Ready", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doReadyState)); + Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doReadyState)); sxy::simple_state & simple_state_executing = main_region.add_simple_state("Executing", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doExecutingState)); + Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doExecutingState)); sxy::simple_state & simple_state_canceling = main_region.add_simple_state("Canceling", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doCancelingState)); + Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doCancelingState)); sxy::simple_state & simple_state_recovering = main_region.add_simple_state("Recovering", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doRecoveringState)); + Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doRecoveringState)); sxy::simple_state & simple_state_aborting = main_region.add_simple_state("Aborting", - Y_BEHAVIOR_METHOD2(behavior_, &MissionExecutionStateMachineBehavior::doAbortingState)); + Y_BEHAVIOR_METHOD2(behavior_, &TaskExecutionStateMachineBehavior::doAbortingState)); // Add the state transitions @@ -112,29 +110,29 @@ void MissionExecutionStateMachine::initStateMachine() simple_state_ready); // Transitions from Ready - state_machine->add_transition(EVENT_EXECUTE_MISSION, simple_state_ready, simple_state_executing); + state_machine->add_transition(EVENT_EXECUTE_TASK, simple_state_ready, simple_state_executing); // Transitions from Executing - state_machine->add_transition(EVENT_CANCEL_MISSION, simple_state_executing, + state_machine->add_transition(EVENT_CANCEL_TASK, simple_state_executing, simple_state_canceling); - state_machine->add_transition(EVENT_EXECUTE_RECOVERY, simple_state_executing, + state_machine->add_transition(EVENT_EXECUTE_TASK_RECOVERY, simple_state_executing, simple_state_recovering); - state_machine->add_transition(EVENT_EXECUTION_FAILED, simple_state_executing, + state_machine->add_transition(EVENT_TASK_EXECUTION_FAILED, simple_state_executing, simple_state_aborting); - state_machine->add_transition(EVENT_MISSION_EXECUTED, simple_state_executing, + state_machine->add_transition(EVENT_TASK_EXECUTED, simple_state_executing, simple_state_ready); // Transitions from Canceling - state_machine->add_transition(EVENT_MISSION_CANCELED, simple_state_canceling, simple_state_ready); + state_machine->add_transition(EVENT_TASK_CANCELED, simple_state_canceling, simple_state_ready); // Transitions from Recovering - state_machine->add_transition(EVENT_RECOVERY_SUCCESSFUL, simple_state_recovering, + state_machine->add_transition(EVENT_TASK_RECOVERY_SUCCESSFUL, simple_state_recovering, simple_state_executing); - state_machine->add_transition(EVENT_RECOVERY_FAILED, simple_state_recovering, + state_machine->add_transition(EVENT_TASK_RECOVERY_FAILED, simple_state_recovering, simple_state_aborting); // Transitions from Aborting - state_machine->add_transition(EVENT_MISSION_FAILED, simple_state_aborting, + state_machine->add_transition(EVENT_TASK_FAILED, simple_state_aborting, simple_state_ready); // Set the handler for any invalid state transitions @@ -151,7 +149,7 @@ void MissionExecutionStateMachine::initStateMachine() impl->sm = sxe::move(state_machine); } -bool MissionExecutionStateMachine::isValidStateMachine() +bool TaskExecutionStateMachine::isValidStateMachine() { yasmine_data * impl = reinterpret_cast(impl_); diff --git a/src/mission_execution/CMakeLists.txt b/src/mission_execution/CMakeLists.txt index 1a0a8c3834b..117a762f6da 100644 --- a/src/mission_execution/CMakeLists.txt +++ b/src/mission_execution/CMakeLists.txt @@ -16,27 +16,26 @@ find_package(std_msgs REQUIRED) include_directories( include - /usr/local/include/yasmine - /usr/local/include/yasmine/include - /usr/local/include/yasmine/include_impl - /usr/local/include/yasmine/essentials/include -# /usr/local/include/yasmine/hermes + ../libs/task/include ) +link_directories(${CMAKE_BINARY_DIR}/../libs) + add_executable(mission_execution src/main.cpp src/MissionExecution.cpp - src/MissionExecutionStateMachine.cpp src/NavigationCommand.cpp ) -target_link_libraries(mission_execution - yasmine - ) - ament_target_dependencies(mission_execution rclcpp std_msgs + task + ) + +target_link_libraries(mission_execution + task + yasmine ) install(TARGETS ${PROJECT_NAME} diff --git a/src/mission_execution/include/mission_execution/MissionExecution.hpp b/src/mission_execution/include/mission_execution/MissionExecution.hpp index d337d62325b..3323feaf305 100644 --- a/src/mission_execution/include/mission_execution/MissionExecution.hpp +++ b/src/mission_execution/include/mission_execution/MissionExecution.hpp @@ -7,10 +7,10 @@ #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" #include "mission_execution/MissionPlan.hpp" -#include "mission_execution/MissionExecutionStateMachineBehavior.hpp" -#include "mission_execution/MissionExecutionStateMachine.hpp" +#include "task/TaskExecutionStateMachineBehavior.hpp" +#include "task/TaskExecutionStateMachine.hpp" -class MissionExecution : public rclcpp::Node, public MissionExecutionStateMachineBehavior +class MissionExecution : public rclcpp::Node, public TaskExecutionStateMachineBehavior { public: MissionExecution(); @@ -28,7 +28,7 @@ class MissionExecution : public rclcpp::Node, public MissionExecutionStateMachin void cancelMission(); /** @name State Machine Behavior - * Implementation of the MissionExecutionStateMachineBehavior interface + * Implementation of the TaskExecutionStateMachineBehavior interface */ ///@{ void doReadyState(); @@ -42,7 +42,7 @@ class MissionExecution : public rclcpp::Node, public MissionExecutionStateMachin void onCmdReceived(const std_msgs::msg::String::SharedPtr msg); private: - MissionExecutionStateMachine stateMachine_; + TaskExecutionStateMachine stateMachine_; const MissionPlan * missionPlan_; rclcpp::Subscription::SharedPtr cmdSub_; }; diff --git a/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp b/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp deleted file mode 100644 index ecba3c6e648..00000000000 --- a/src/mission_execution/include/mission_execution/MissionExecutionStateMachine.hpp +++ /dev/null @@ -1,43 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#ifndef MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINE_HPP_ -#define MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINE_HPP_ - -#include "mission_execution/MissionExecutionStateMachineBehavior.hpp" - -class MissionExecutionStateMachine -{ -public: - explicit MissionExecutionStateMachine(MissionExecutionStateMachineBehavior * behavior); - virtual ~MissionExecutionStateMachine(); - - // No default constructor - MissionExecutionStateMachine() = delete; - - typedef enum MissionExecutionEvent - { - EVENT_CANCEL_MISSION, - EVENT_EXECUTE_MISSION, - EVENT_EXECUTE_RECOVERY, - EVENT_EXECUTION_FAILED, - EVENT_MISSION_CANCELED, - EVENT_MISSION_EXECUTED, - EVENT_MISSION_FAILED, - EVENT_RECOVERY_FAILED, - EVENT_RECOVERY_SUCCESSFUL - } MissionExecutionEvent; - - void run(); - void fireEvent(const MissionExecutionEvent eventToFire); - void halt(); - -private: - void initStateMachine(); - bool isValidStateMachine(); - - MissionExecutionStateMachineBehavior * behavior_; - void * impl_; -}; - -#endif // MISSION_EXECUTION__MISSIONEXECUTIONSTATEMACHINE_HPP_ diff --git a/src/mission_execution/include/mission_execution/MissionPlan.hpp b/src/mission_execution/include/mission_execution/MissionPlan.hpp index 2c9ab30e800..bde21a0abca 100644 --- a/src/mission_execution/include/mission_execution/MissionPlan.hpp +++ b/src/mission_execution/include/mission_execution/MissionPlan.hpp @@ -7,8 +7,8 @@ class MissionPlan { public: - MissionPlan(){} - virtual ~MissionPlan(){} + MissionPlan() {} + virtual ~MissionPlan() {} }; #endif // MISSION_EXECUTION__MISSIONPLAN_HPP_ diff --git a/src/mission_execution/package.xml b/src/mission_execution/package.xml index 043b811d109..697d83b5044 100644 --- a/src/mission_execution/package.xml +++ b/src/mission_execution/package.xml @@ -9,6 +9,7 @@ Apache License 2.0 ament_cmake rclcpp + task rclcpp ament_cmake diff --git a/src/mission_execution/src/MissionExecution.cpp b/src/mission_execution/src/MissionExecution.cpp index b67f384ff4d..0e717478c62 100644 --- a/src/mission_execution/src/MissionExecution.cpp +++ b/src/mission_execution/src/MissionExecution.cpp @@ -24,18 +24,20 @@ MissionExecution::~MissionExecution() stateMachine_.halt(); } -void MissionExecution::executeMission(const MissionPlan * missionPlan) +void +MissionExecution::executeMission(const MissionPlan * missionPlan) { RCLCPP_INFO(get_logger(), "MissionExecution::executeMission"); missionPlan_ = missionPlan; - stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_EXECUTE_MISSION); + stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_EXECUTE_TASK); } -void MissionExecution::cancelMission() +void +MissionExecution::cancelMission() { RCLCPP_INFO(get_logger(), "MissionExecution::cancelMission"); - stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_CANCEL_MISSION); + stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_CANCEL_TASK); } void MissionExecution::doReadyState() @@ -52,11 +54,11 @@ void MissionExecution::doExecutingState() // TODO(mjeronimo): Perform normal processing loop for the mission plan // Initiate the state transition - // stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_EXECUTED); + // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_EXECUTED); // Or: - // stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_FAILED); + // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_FAILED); // Or: - // stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_EXECUTE_RECOVERY); + // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_EXECUTE_TASK_RECOVERY); RCLCPP_INFO(get_logger(), "MissionExecution::doExecutingState"); } @@ -66,6 +68,8 @@ void MissionExecution::doCancelingState() // TODO(mjeronimo): Cancel the currently running mission RCLCPP_INFO(get_logger(), "MissionExecution::doCancelingState"); + + stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_CANCELED); } void MissionExecution::doRecoveringState() @@ -82,7 +86,7 @@ void MissionExecution::doAbortingState() // TODO(mjeronimo): Do the work to abort the current mission // Initiate the state transition - stateMachine_.fireEvent(MissionExecutionStateMachine::EVENT_MISSION_FAILED); + stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_FAILED); } void MissionExecution::onCmdReceived(const std_msgs::msg::String::SharedPtr msg) diff --git a/src/navigation/include/navigation/NavigationTask.hpp b/src/navigation/include/navigation/NavigationTask.hpp new file mode 100644 index 00000000000..01feba2444e --- /dev/null +++ b/src/navigation/include/navigation/NavigationTask.hpp @@ -0,0 +1,13 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef NAVIGATION__NAVIGATIONTASK_HPP_ +#define NAVIGATION__NAVIGATIONTASK_HPP_ + +class NavigationTask +{ + NavigationTask(); + ~NavigationTask(); +}; + +#endif // NAVIGATION__NAVIGATIONTASK_HPP_ diff --git a/src/navigation/src/NavigationTask.cpp b/src/navigation/src/NavigationTask.cpp new file mode 100644 index 00000000000..086a695ea82 --- /dev/null +++ b/src/navigation/src/NavigationTask.cpp @@ -0,0 +1,12 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "navigation/NavigationTask.hpp" + +NavigationTask::NavigationTask() +{ +} + +NavigationTask::~NavigationTask() +{ +} diff --git a/src/robot/include/robot/Robot.hpp b/src/robot/include/robot/Robot.hpp new file mode 100644 index 00000000000..78f77852b83 --- /dev/null +++ b/src/robot/include/robot/Robot.hpp @@ -0,0 +1,13 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#ifndef ROBOT__ROBOT_HPP_ +#define ROBOT__ROBOT_HPP_ + +class Robot +{ + Robot(); + ~Robot(); +}; + +#endif // ROBOT__ROBOT_HPP_ diff --git a/src/robot/src/Robot.cpp b/src/robot/src/Robot.cpp new file mode 100644 index 00000000000..680d5578a10 --- /dev/null +++ b/src/robot/src/Robot.cpp @@ -0,0 +1,12 @@ +// License: Apache 2.0. See LICENSE file in root directory. +// Copyright 2018 Intel Corporation. All Rights Reserved. + +#include "robot/Robot.hpp" + +Robot::Robot() +{ +} + +Robot::~Robot() +{ +} From 6a0c774771b30478b49dc1a6a5396e91122241ec Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Thu, 19 Jul 2018 11:00:44 -0700 Subject: [PATCH 17/27] Remove include directory at the top level --- include/.gitignore | 0 .../.TaskExecutionStateMachineBehavior.hpp.swp | Bin 12288 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 include/.gitignore delete mode 100644 src/libs/task/include/task/.TaskExecutionStateMachineBehavior.hpp.swp diff --git a/include/.gitignore b/include/.gitignore deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/libs/task/include/task/.TaskExecutionStateMachineBehavior.hpp.swp b/src/libs/task/include/task/.TaskExecutionStateMachineBehavior.hpp.swp deleted file mode 100644 index 4d084f1ec581e7f761b0243d9f4f37fb7a89592b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&zi-n(6bJAZn9I){9%P|NwbOtEDq?VrrI8n z8$7cB3$OqSumB6N01L1H3;YKHwrIc$dd^deXFb1|8^6qpB~L8C0xZA+EWiRRzyd75 z0xZA+EWiT)pg@uVyj}zNOsW6>U%vmpI}7lN@{$r$E>kX1zMcX2LitE}PkBQ*qC}Jp z%5};*rM}*$`kFjgfCX591z3OuSbzmsfCX591^$jeQ>aXi5nUH!FWMOn>(Agp;P1!b zUN4HhIOuwQC+r2=LB~4?_XfjGzdrSHi5U^AnYdd}Z098+`R$lWg|W7b~WtT&7!a1Zkd>C9Z5Or#9J4jH%cBWK>N# zR&?IUP6GNtd|k|pJe*i;w>EEMsI188peeMOH_AKc($xj?DVXl*f*Mx<7onFHSeGtlay From f037cfea76b3cb02b1e3704f83f665203694287d Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Thu, 19 Jul 2018 11:13:52 -0700 Subject: [PATCH 18/27] Remove NavigationCommand in favor of NavigationTask --- src/mission_execution/CMakeLists.txt | 1 - .../mission_execution/NavigationCommand.hpp | 14 -------------- src/mission_execution/src/NavigationCommand.cpp | 12 ------------ 3 files changed, 27 deletions(-) delete mode 100644 src/mission_execution/include/mission_execution/NavigationCommand.hpp delete mode 100644 src/mission_execution/src/NavigationCommand.cpp diff --git a/src/mission_execution/CMakeLists.txt b/src/mission_execution/CMakeLists.txt index 117a762f6da..7512ac4c172 100644 --- a/src/mission_execution/CMakeLists.txt +++ b/src/mission_execution/CMakeLists.txt @@ -24,7 +24,6 @@ link_directories(${CMAKE_BINARY_DIR}/../libs) add_executable(mission_execution src/main.cpp src/MissionExecution.cpp - src/NavigationCommand.cpp ) ament_target_dependencies(mission_execution diff --git a/src/mission_execution/include/mission_execution/NavigationCommand.hpp b/src/mission_execution/include/mission_execution/NavigationCommand.hpp deleted file mode 100644 index 32830f75f2c..00000000000 --- a/src/mission_execution/include/mission_execution/NavigationCommand.hpp +++ /dev/null @@ -1,14 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#ifndef MISSION_EXECUTION__NAVIGATIONCOMMAND_HPP_ -#define MISSION_EXECUTION__NAVIGATIONCOMMAND_HPP_ - -class NavigationCommand -{ -public: - NavigationCommand(); - virtual ~NavigationCommand(); -}; - -#endif // MISSION_EXECUTION__NAVIGATIONCOMMAND_HPP_ diff --git a/src/mission_execution/src/NavigationCommand.cpp b/src/mission_execution/src/NavigationCommand.cpp deleted file mode 100644 index 418e129d70a..00000000000 --- a/src/mission_execution/src/NavigationCommand.cpp +++ /dev/null @@ -1,12 +0,0 @@ -// License: Apache 2.0. See LICENSE file in root directory. -// Copyright 2018 Intel Corporation. All Rights Reserved. - -#include "mission_execution/NavigationCommand.hpp" - -NavigationCommand::NavigationCommand() -{ -} - -NavigationCommand::~NavigationCommand() -{ -} From 24807de4395fdecebb2d4603d6d14f9bc0154509 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Thu, 19 Jul 2018 11:39:54 -0700 Subject: [PATCH 19/27] Add mission_planning directory and a few minor edits --- .../task/TaskExecutionStateMachine.hpp | 2 +- .../task/src/TaskExecutionStateMachine.cpp | 17 ++++--- .../src/MissionExecution.cpp | 50 +++++++++++++------ .../include/mission_planning/.gitignore | 0 src/mission_planning/src/.gitignore | 0 5 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 src/mission_planning/include/mission_planning/.gitignore create mode 100644 src/mission_planning/src/.gitignore diff --git a/src/libs/task/include/task/TaskExecutionStateMachine.hpp b/src/libs/task/include/task/TaskExecutionStateMachine.hpp index bb529a459fb..3a56399ea5d 100644 --- a/src/libs/task/include/task/TaskExecutionStateMachine.hpp +++ b/src/libs/task/include/task/TaskExecutionStateMachine.hpp @@ -25,7 +25,7 @@ class TaskExecutionStateMachine EVENT_TASK_EXECUTED, EVENT_TASK_FAILED, EVENT_TASK_RECOVERY_FAILED, - EVENT_TASK_RECOVERY_SUCCESSFUL + EVENT_TASK_RECOVERY_SUCCEEDED, } TaskExecutionEvent; void run(); diff --git a/src/libs/task/src/TaskExecutionStateMachine.cpp b/src/libs/task/src/TaskExecutionStateMachine.cpp index 8f5fd41c86b..4c14fec9b46 100644 --- a/src/libs/task/src/TaskExecutionStateMachine.cpp +++ b/src/libs/task/src/TaskExecutionStateMachine.cpp @@ -48,7 +48,8 @@ TaskExecutionStateMachine::~TaskExecutionStateMachine() // log_manager.halt(); } -void TaskExecutionStateMachine::run() +void +TaskExecutionStateMachine::run() { // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::run()\n"); @@ -56,7 +57,8 @@ void TaskExecutionStateMachine::run() impl->sm->run(); } -void TaskExecutionStateMachine::fireEvent(const TaskExecutionEvent eventToFire) +void +TaskExecutionStateMachine::fireEvent(const TaskExecutionEvent eventToFire) { // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::fireEvent: %d\n", eventToFire); @@ -64,7 +66,8 @@ void TaskExecutionStateMachine::fireEvent(const TaskExecutionEvent eventToFire) impl->sm->fire_event(sxy::event_impl::create(eventToFire)); } -void TaskExecutionStateMachine::halt() +void +TaskExecutionStateMachine::halt() { // RCLCPP_INFO(this->get_logger(), "TaskExecutionStateMachine::halt\n"); @@ -72,7 +75,8 @@ void TaskExecutionStateMachine::halt() impl->sm->halt_and_join(); } -void TaskExecutionStateMachine::initStateMachine() +void +TaskExecutionStateMachine::initStateMachine() { std::string nm("TaskExecution"); const std::string & name = nm; @@ -126,7 +130,7 @@ void TaskExecutionStateMachine::initStateMachine() state_machine->add_transition(EVENT_TASK_CANCELED, simple_state_canceling, simple_state_ready); // Transitions from Recovering - state_machine->add_transition(EVENT_TASK_RECOVERY_SUCCESSFUL, simple_state_recovering, + state_machine->add_transition(EVENT_TASK_RECOVERY_SUCCEEDED, simple_state_recovering, simple_state_executing); state_machine->add_transition(EVENT_TASK_RECOVERY_FAILED, simple_state_recovering, simple_state_aborting); @@ -149,7 +153,8 @@ void TaskExecutionStateMachine::initStateMachine() impl->sm = sxe::move(state_machine); } -bool TaskExecutionStateMachine::isValidStateMachine() +bool +TaskExecutionStateMachine::isValidStateMachine() { yasmine_data * impl = reinterpret_cast(impl_); diff --git a/src/mission_execution/src/MissionExecution.cpp b/src/mission_execution/src/MissionExecution.cpp index 0e717478c62..8f2f42e11ab 100644 --- a/src/mission_execution/src/MissionExecution.cpp +++ b/src/mission_execution/src/MissionExecution.cpp @@ -29,7 +29,13 @@ MissionExecution::executeMission(const MissionPlan * missionPlan) { RCLCPP_INFO(get_logger(), "MissionExecution::executeMission"); + // We've been given a mission plan to execute. Do an preparatory work + // and start things off by firing a state transition, which will land + // us in the Executing state. + + // TODO(mjeronimo): Validate the mission plan for syntax and semantics missionPlan_ = missionPlan; + stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_EXECUTE_TASK); } @@ -37,49 +43,60 @@ void MissionExecution::cancelMission() { RCLCPP_INFO(get_logger(), "MissionExecution::cancelMission"); + + // We've been told to cancel the currently running mission, so fire the + // state transition to cause a transition to the Canceling state + stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_CANCEL_TASK); } -void MissionExecution::doReadyState() +void +MissionExecution::doReadyState() { - // This is the starting state. Do any work to reset operations. - RCLCPP_INFO(get_logger(), "MissionExecution::doReadyState"); + + // TODO(mjeronimo): Anything we can do while we're waiting for work to do? } -void MissionExecution::doExecutingState() +void +MissionExecution::doExecutingState() { - // TODO(mjeronimo): Validate input for syntax and semantics + RCLCPP_INFO(get_logger(), "MissionExecution::doExecutingState"); // TODO(mjeronimo): Perform normal processing loop for the mission plan // Initiate the state transition + // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_EXECUTED); - // Or: // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_FAILED); - // Or: // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_EXECUTE_TASK_RECOVERY); - - RCLCPP_INFO(get_logger(), "MissionExecution::doExecutingState"); } -void MissionExecution::doCancelingState() +void +MissionExecution::doCancelingState() { - // TODO(mjeronimo): Cancel the currently running mission - RCLCPP_INFO(get_logger(), "MissionExecution::doCancelingState"); + // TODO(mjeronimo): Cancel the currently running mission + + // Initiate the state transition stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_CANCELED); } -void MissionExecution::doRecoveringState() +void +MissionExecution::doRecoveringState() { + RCLCPP_INFO(get_logger(), "MissionExecution::doRecoveringState"); + // TODO(mjeronimo): Attempt to perform local recovery - RCLCPP_INFO(get_logger(), "MissionExecution::doRecoveringState"); + // Initiate the state transition + // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_RECOVERY_FAILED); + // stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_RECOVERY_SUCCEEDED); } -void MissionExecution::doAbortingState() +void +MissionExecution::doAbortingState() { RCLCPP_INFO(get_logger(), "MissionExecution::doAbortingState"); @@ -89,7 +106,8 @@ void MissionExecution::doAbortingState() stateMachine_.fireEvent(TaskExecutionStateMachine::EVENT_TASK_FAILED); } -void MissionExecution::onCmdReceived(const std_msgs::msg::String::SharedPtr msg) +void +MissionExecution::onCmdReceived(const std_msgs::msg::String::SharedPtr msg) { RCLCPP_INFO(get_logger(), "MissionExecution::onCmdReceived: \"%s\"", msg->data.c_str()) diff --git a/src/mission_planning/include/mission_planning/.gitignore b/src/mission_planning/include/mission_planning/.gitignore new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/mission_planning/src/.gitignore b/src/mission_planning/src/.gitignore new file mode 100644 index 00000000000..e69de29bb2d From 98a8e87eaecebb671af3d33f1c9857892857c123 Mon Sep 17 00:00:00 2001 From: Michael Jeronimo Date: Thu, 19 Jul 2018 13:16:31 -0700 Subject: [PATCH 20/27] Add a Doxyfile; add RosRobot class --- Doxyfile | 2427 +++++++++++++++++ doc/images/ros2-logo.png | Bin 7010 -> 0 bytes .../include/navigation/NavigationTask.hpp | 1 + src/robot/include/robot/Robot.hpp | 7 +- src/robot/include/robot/RosRobot.hpp | 14 + src/robot/src/{Robot.cpp => RosRobot.cpp} | 6 +- 6 files changed, 2450 insertions(+), 5 deletions(-) create mode 100644 Doxyfile delete mode 100644 doc/images/ros2-logo.png create mode 100644 src/robot/include/robot/RosRobot.hpp rename src/robot/src/{Robot.cpp => RosRobot.cpp} (63%) diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 00000000000..70ea929dbae --- /dev/null +++ b/Doxyfile @@ -0,0 +1,2427 @@ +# Doxyfile 1.8.11 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "ROS2 Navigation System" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = 0.1 + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = doc + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 2 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = actuation can decision-making highway-pilot localization mission-planning navigation-maps route-planning sensing sensor-fusion trajectory-execution util vehicle virtual-bus world-model dash-sign + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, +# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the +# cost of reduced performance. This can be particularly helpful with template +# rich C++ code for which doxygen's built-in parser lacks the necessary type +# information. +# Note: The availability of this option depends on whether or not doxygen was +# generated with the -Duse-libclang=ON option for CMake. +# The default value is: NO. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: http://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = YES + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /)RYKTb31OclUf5?AwH}e-pw!PRIke7H5!soha<@gs{&O!hTN(`#vG;|Ag>8KnULlgz&vU z2;UEc@I65Y-xq}Ny+H`yAB6lP+@pjLzF7$28-@_RX)L{l-~YQbO>4uCHtWgu{`Y^2 z2sIxQgaLF2cxfHrOY04Q1`}Xr2saNtwX~NR5dgCYz$yj^MFGMk0FhFFqB4Nua)4+B zKuIM)X%#?OH2_UW@v@3qfXW#FRdoQ>^#C;u0JSp#X3PSpn+;Guhi=ok0D2>UF%Q6O z0B1ZsEhaPvm0D2t2NC2390M;3RP!b^A4-mN(plAS~cn}~u1W=L!C>;hUyA7Z`4N#E* zsLTRXu0nncdV4MRm?*OpI0Yc{i!hZq~`BQ+R=K&Ny zA0T=GpyW<~(iZ@fy%3=ME`W*`0aU&ipz0+6)h`98c^N?M%jv=W3IP3;0LH5T%vS?g zuK@_X79jjOfXM3sitYv|egi=CjQ}NY0w}!)pzL0N^7{ZP-V9Lr7J#a^0#yGQK+W3# zYTphpLO%cq{}3SZFhJ3d z0E&MM5dBwxl79mz{da(}p8%Bq6rkci04o0zpz0BT>YoAB{1-s&&jDuq0-)}f0QJ8D zX!vh>{r(z2{|$igTLANS0M_pTLjMC0{sTbde*udA2vGcg0MUy8B@+Op<9O(?&k(|X zL&z&onmQruKZLLk5yE~%2>TKtuLX0M5cVlT*slm--y($lixBoPLf(W_e0BCUqOiXa z!ahd``yCT%+?2Cl3KN7+|NeKHTA?%xkuzwQ5K1vAtDIx5ugs{I7 z!ahp~`z;|Kg4fYkgUUQ0?8k(#FB8K4ObGilA?(+Lux}H>{!Iw`I3a(5OVkp= zzD@}HJ0a}zgs|Te!oE)k`#&Lk4-mrl0U>-Z5W@EZA$(5|!uJIsd~aC#R{eRJrtQYh zwHa1XWm5~7o@$6I50^w?00Rtnml2`^DJKM^yDJDWfzY=s1qJS|A|wQ)nvgJ%8bTsK zsL+feAoQtc6a%RvBnqUSkP;vbgp|@3Ga+R_=x#I0ff$5T05J)v1Y!|V1tdhsVjy(4 z8B2iB$GWi;ND(2+fRI-j%Yj4*SpkGT^^BE3=x#Gs0pSd;2ErL!1B5fU76@l>9T3jo zdLW#^W+0rwYk+VDHvr)bZUn*^ycP&&a1#*D;AW}`&_%BU!WrBGgfqAm2xo8`5YFIs zAe_M+KsbXtfp7*}fN%y|fp7+Q0pSe7N8iX9Yy-j>YzM*_+yjI&cs&r#;0-`1gXTE(Ai# zn~Q*u@+QjbUQ*sfdEHCOn<%e)NqH0HbuTGzqP*@Ut0qK<#jKWj*0TRmrBP(dEHB;W1_t7<$R&M?qlUqUiY!`D6jiid6d_EtUSu%K2~)r z%tGa5Qd!I-gvw$TAygK#38Au>LkN|{TtcWU8VNyJ+{4LH7WZ&+l*K)q9A$A2Cr4S_ z!^u$=_i%EQ#XX$71IRp*^DH1ugxm;ZJ|TO7EFfebkcEWoht6!(13=iS2Z69vpACeq zdI$(x^)L{&>JcDp)ti8@RgVH;s~!WwRy_`ct$G3oTlFLmw(2P$Y}K2Au(zBB!rpQV z5cZZ%&D_ie?*hUGj{#wWcLQOA_W)sU=>@{x5(mOXkO0E@>I1_0Is=6Bl?1~1>IcI4 zx)liLYXAu6YY+(MYX}JED+Pq}H4KFFbsG@QR~iWCD+7e{l?B52dWB|Q$2z|q2upqk zq6}OF?*zg{@Gewhxdh*hiVBzMdtd}E%J%}{qI@3&GUfe1nDPN2T(}>EWLEVle z17TG^0)$olC=gclV?bEdj{{*bABKR~A_QU%TE5VH&Y>(0cs{h}M zbVtB`>P#2r_oG2n+|W9H{td52oWS2y{rfc8zt5CBhGl|6{rl`5e-?O3sehl{pkFso}HJhbAXWU~;^aVp7Fi7H#Q|RrKbM(Nw=>`Ss5HQdU3f5s{oo-ODj)oE%6s)5Wga!rcXyBkh!8#f*Xi!Lvh6x%J z0izC_21USVP@q8(Fd7SJPy~#I02&klqmh3GMZjplpFt5Y8ro%01dN9F859AdQGEtQ zz-XYJK@l(-pJz}cR-3IE4|8_r0O9P+1wtV{^e!|Wrm&L+rwf2^ zP8R~wIb95dbGifw=X5C$&gn8BoYUn%IHxOsa86eN;S8<@!WrC-ATy_G2f`V= z0jD@$9Y8o=&jP~vx)D5lYA+BzwGRlN+7E=Yd;kaqpS6QPDEO>B8_D_9Ay6n{sT~GF zF-+|U5DHXkHvyqQrFIku1uC^uKo%2nGms^OoCdO#kXwK(BLq?39m@&1UNaA~oiB%I z!4_B`us~peC$R-o{Qox`=@*L1_&C@;*p>Bm1Mbp*ze~#;8{6FH~ zs(k=qaEiLSX9N)K1MV3CkRTdD8r41k3CpzT!8A?Roju#pR@^=ir@`hOZAFS0I@-GT zruNYO14r5qtC8KvldE-r;_vSNF!FnlnhBtdo9@FSVEZLy0h#ihavv6f?bpP{UmR0% z7K4q;f!i-U`naVY#GfH@;`D zvKCEO`TBf$^qIZ-+Y??I^a&npfdwAB1uT8g_|RlAS1A5}C5I18R`Rh>D3FW0=%S4O zYZp0Sj_U744w$2Ee31j@As`$uMRww+RTFZZi-z-E~0NbX$P1>9zu4(`^I7rrQpLO}7IG zn{Fo%HeCx4HeD+aHr*~DY`Wb**mP|`*mUT&d2u0G4E@_La`OSA3m3Wh0R7u9a`VBB zU}mfC1;WhxfGna^`+;z(1Df%7Z196X*x+cz_&YZEAs}qJM}V-wZvw&wKMI5m zeoVuHnHK;i8wq&>kWGZV5y)mj z-UQ@2Lhb>wg^+uJY$fDAAlnFeGm!0syamV(Lf%UKY6AZ(Vm0b#SC$NL^O%bx>b zv%CWco8_HA*eve?!e)6l5H`zufv`2u<9!c%FM7Q1VYB=N5O$=`0AWY^OCan>pM^d< zNsZ5e!XEVi5ca6g17VN)B9QsS^B@r1kiiyM;0dyTrN27-w#nD>zW*nmf67znZo~Wk z5B!9{_xm6C34!XybPcFw zf#@1g%csyapq5WnXl5IqD%Z@O;Pd?{?>|8X0t*Bd2rTeaw}5K@|B5Rk`%Sb3Q!_lj zA~9YLd;HWEB?L{>JnqlX47AzPk!sgBG#cdxI*XvOfq1=w(wfVjNu_y?_(Q3Ict#A^ zgQSUx6gOQ{v$Job!NAW(@?v#uS39&Gr50WmnhBb8Z36{JV1d8_fdv8!1Qsa30=nMG zef%tL|NrfmZ{wo^5(X@R1p*5M76>d5Sl}vJ0F}dFdkhw^^m$>-S?J$dFktPx)}rB` zm;XYnyHYdGgI0u!{nKC@@9G}yzrBC-9P;u>ZMd5SRk-KV1Y>% zQ1SnJaRy`bc-v3meEO5|e@wfn<433I$MJtUC1d-|TFLHMx;Hr#8%So)azLNPSmphv ziQW(410rugzZ?Pm9!F9T)aTL&KwyEu0)Yhr3j`Lp@)ii<|5x6ofyBT9fdv8!1QvMw zEr5>Nk9~VmM6|Dt61x7;2-ep?#r_YGUq}8k@^IvPk$;H%bp(}vOKZU&g#lx9F7kCkf&NK~Ba}i|Bj{ zfhH#7L2g4BN%m)$(@^wGIycIc5EU6tbD%ARwXVxUXLaiHoWQCrT6Kf(L^?;*nTkp! zIeIQ5^qi%riS9n)nyrreQ<=d8wa~BoiF2+Z+08Q5jb2hN(KXnAhq%r> z?V!=&{E*o^1INv4?oUx@h%c9M$QgX3qjn>Q#r;j^SvQ0BPlc0{I$8y{>)NCrT zBV#F%-DX*M*;OEovIUx@OJrBcV_A~fRb$=Ae6GKnRBX1(@b>dm;k zn_N_QI2s4L(CWuB<$dL180|Vk%E?;-C&u7)IcDbD!9W`&J&Fdq&ZWnwnXj7jXz+dC z8zTZ2wlR)!O?BnY^$+)vm8vSiCm~ zu3NKaJ(Gcm^Xr(tf}o{;FN`&m@@-FRhZ$ef)qUdF=~!oXWACxV@y3%Uj>j6iZaLB0 z80$KE^i=Q7u@l|LV(TztTz5X(1hl{cfdv8!1QrM^@RYWIYXASKD;N7|K|Wfdk89^N zak{4Cr#6cas=-tHKRN_hH2#k&_^L<1FpvM!z2pB%J?s9Fi0JNEHr|&?W6oa7wTvH4 z(hK<$6MYjCp^1qs_apF(3k*S-BgPb+2uipUfe?&Kg4M(?=u1Er54OMpfdv8!1QrM^ zAT6Nl&&CvYG|~TaBEJpa7Jei|v;PL>2`ms;Ah1ASfhVU0p4Oq+C#T7urdnD0hr)k3 zId4TRno)UPvzj;xF!}sbo-&TM(WBJ1`Z0&L}l6f6id^B%vmwrwFwey_wJu zqo)ZCGkOc5G(IBO0t*Bd2rLj-Ah5ub-U2HAf09D@a@${w@p+ik7Kcp5Yf`6IrQCe; z|Iyrj)EZ#N|1F|;=Km|wnrU4>(WqdL8jRA+0+?S{j3cZho)C`hb^U6I62>uR+!Z_x zM2X-S(-ElAhqzV|j!9jXJO@|j=7iD%>Au)dG84-tQ$yi{XHrA)^?8F2bBxv$M6Nb2Hs1KQZ~=g9c{u8|gnY3_CoCwgAt}fDc;Z z7~?aHnE)ko&~@Tz=`KO00t*Bd2rTflvw({KHzCp=mbu$cp?vY?=eIvv!FBxTwEO3q z2heENENTZ(BLlFO9!3W2P7MwZ#K$l(VA=lMU_71dITla$oykJv#9J3NZl;ED%^Aus~pezyePn3+Vc{UH$)m`(;`I=#iij`}8T`ASZzZ0t*Bd zctR|2{t3B?`ywswgGY^HqPeTTT@@vC{k0M5@E+EF5&2Q%A0uChd^+-8^kPSi`bjtc z-+2vf63`5Lo<8ugjDiW~{|n~-%dQIM{|n~-!^6Zq(;uFN%}d5SRk-KV1d8_umJV{`yqk_jaVpt4~}UT zoBap0YqSGe8BqFZod}WPM;o1{&A+G61Z^9{jyvQLs_6c`O25s=PxI$oc79@VS1-U2(M}-DqHH6|N>ElQN()g|fwEdr+K93mlr@TS11QlopsbY? z+}7~kwXpI!hoWoIb+Gb!hXS7UuyV6Qfp0X!%GY=(*TBjfJd_Qv@!yA5a4MJXiPO^Xr2=j3>4|4DW#XWH01@b+Y*AZ0lO>)gA%dfXP3j`JjED%^Aus~per=ZO(lZ{7D-*QXi$r5Q&?TmGvxVdv3 zGV{;c_?na5Hy`Uhk+``rcKZ0S#*@doPB+H-Vka7J?(FRCJ9RYHeX>{Z>f>upbsax_ zbL`m3#@^$n!F%FZUt`zJC$P*gsHaYyKHhiBalvcQ8pOv=b#-=~XuRe4Y3PtRnP}|l zf;PubKy0Gx#HrZH6Rd+dzNWkP`0+$dh>OFzOU<)h|SRk-KV1d8_PeBV%{r`7QLA?W&0}BKe2rLj-Ah1AS zfk$rvdjJ3N(I*d51{Me`5Lh6vKwyEu0#88;(EA_LJp@}|fxrTR1p*5M76>fx46*>d z|IOh2{|qYeAgh4|0t*Bd2rLj-0F&+F{a+Nk{{vSDED%^Aus~pezyi-G3()(&>>2p} zA3smiZ=3s`QH333Hn2cofxrTR1p*653()(&>KXX{4;&z{KwyEu0)Yhr3p|r8K=1$h z;Qjwhc7Y)8fdv8!1QrM^@C>v7t^Z5ee#rF=u%8yrrJu$>Z3v-q{HEIEd^lo-S|q|6 zpCk;6Tgo+S4Xj3K;D~-=6mVFd!PC`87 zPfTbN`L+nOJ%*)|ikT-L2h)nc_9L;v5=7b3Ak*_-47NvzP5td5SRk-KV1dh7 zK-YKj3oB}`|NF?7=ufNye7V%Y`M?5!1p*6PH48i$W+=VvlB`$WI_Iyv$Ux#V(gGC! zpY5vqKO>D0WIC`wV1d8_fdv8!Ji{zN@Bewh`~MkM>Opn`3j`JjED%`WnQj3KE&G4W z^ZrL$cN4XE>sk^1&_rMmVA6SN@g{&DVqXTRP0XjaXf2vWXIgNg3BMK%0XqDX6o3|u z{&8%Pq)HZ|6}8Y_&`DM$rz;{NC#nRE&f-{aqNLQZ06U8~ERB-jd#(n9cWc|SFX2zxNER~^c-Y*vAC4xFK+9j`EstBA*`|4#N_jZkT*@SW;^mm=f z(b7ly#R}(euzz@fHLi4M>DaB%o2gX})fQGwv~>4a3N|2VH8@Um_Yqo4XkTACH)?aw z0I9EkP?)6-2WJw)=?o{Vr=!92$VitkZ3B*zqp3lXG!uA#iWhd$FV5lv*jQb1HW5Zf z#)Q;4I2!C95gO0ML5j-U)}WCn36ya!37#j8a{b*lLla0M&%`j_KJpgR0-G*!NW2Se znw`Z(HVN0nRoIM+Z6em9iXk6NUE-!@61mZSk)NeDJ(tLi^<(KOy4ErmbtFBO>n4Yv zAcq&a=lVyuBqzwvWf68KhP!h8X-Ypqt}e)<31O=Va(79}J(qaM*(E{x+ywc1noD;MpgwpLB0(dd37!=TycUt8#FSzecMiu zYfGEkiOId8EnA#3LQYP`wmHbfNv_9VCdk)wqjXzLkfQ_5B{H}(h(Mm688c!ow!jqdy>ZE>!&iHS`dqBYL@u9)h5h(#t*MP&6$XLYlBcS*Aq~ zrc=Z5boOjVTXFk9d@w$g?Px1f#L&^!y*IUo_8&OXemD}3b@t_w^eFfB?{go9k}WY4F8Fd z*g!5`;qKE2`6z2-&%_TI54OMpfdv8!1QvMQEuiby@N1*Q)BjKO{`-!3n9n`#N(2`O zED%_r01MC;-PPV&uC@YneZ&y2{)X`6)!MG&rLR_&gX=yX7SQz+s_0ZFd=Bp)k81=n z0}BKe2rLj-Ah1ASflFI} zbaFVGOkuhjG;$ZK=55P`Q`4`B3*8JW6pM=hx*DacJdMVXn+Y0=Z94@>V1d8_fdv8! z1QsaV0=nKACT@${|9|`C+xV#P^Z{pJfxrTR1p*5M7Pu-FxMDp)xL5R5$%5;mPq-4g ze%`{s2UP5T9QjJ*BazodMk4zot0I+=KZJh}{&M(Z;d{cjhmVG@4cCRW@FSsbhdvW} zSLnH+L!oO!O`)RDe^~!yeHo1wP#m>(Mq0EMO=}_&dZ_@#KM+GZ&r}}zN6`Y10qLJd z^5HE0NkR*D;xs2?8V?7=d6YI10D_Nx;IM4zAQilggEKVV)tl-c23B1){&MWbY3y59 zcXwiBB!dxTWS8n9=S&PEg_x!b8iuRUxFxN+SRAL)y<%vNRvi_TTmmCcFu-Oc*`Hxf zL(yqK4^v76MGVApA+mMhvZVR zW)k%{rLT3!E~%D7&5k80)8n`0;zK?0!*X9$Ow>d1*g!H9BT+82zLd^k^iej|lNvaZjtym!#4?$(xW>(i zU}++i9*p5Kiq%D0TFbn#o?DTXgJLIgc%ZuZD9vjLg*#e#eb)GXsnJ4u+ME=y_ zyh@UBeS9dMh8b^XA>O086~xg#mW{)NsUaH?Wzv3#@+M$eggD#c!vm?aH2llKge7ns zAL>O3o^>#FW+2{<`(Uy~sHXpG~I*NNX1=N)`kW)ZU#M98RHZ<4rbcE_(}34CaQC zJ)EV3vFw>igoV|l@9xyVK&(5JWuwQE?lj;%Hb)iBF5aNT~183D<=-rCZ)07=p z%Z17maQt+vhtD}EpR@Fz>;HvY%eNU;QDsxhc};)vB0i0$c_`NZ)qbWCVrbgWbcGlS zF%@DdB&3kALLw6RwdB$3WGa0?A$O`%Ka+@YhdgE6VN;}J;|?j=xI;=dH%JZ54N^mM zgVfO6Amx}FWO8$ZOm1$llNSpO%?(kBY*KPIDLI>zoJ~?6bCVLdNeSGf1a2x)a+Kul zO2h3+@^&S8yOO+JN#3p`Z&#AHE6LlHOelc~7KpJvKVvn3{F+k{!l?-1 zR9JK34o2|p{cBE+5yHP_H3;E+5yJVxaMn7OLkPsl>wyl%FZ)pD}YWD9l3$ zOD@*T7M2`E!Esp-A}MAIr;37yFF^p9I3j`JjED%`Ws#_pv|G(-*5GW8>Ah1ASfxrTf#sW=`CQ-gLSF9sJKH-JZo^T~} zy*qL{w2NpDN4^>PeB=X>H%49@xjn+o@-5UB&u#QHlWr5Y%yauaH@o8uPE#v9vrrVB zaZc4lRIq^q|J;y&UV{j*09?uTe~53QYsgLkT47tz{vWjeXE9N5(EiU|1fJsU|L7V} zF8V#>GNaktInga(IE@|{cpNlW*yk|qYBzfE*k>yJXPBRR1L@dP`^zZw?<&swZC%Pujl>BO~W*&W6=r?}QEd&3Z2O)Rc8%bqZ< z*~PVH*$*bq6ysX6>QZ9o_QikT-`oAMKqOLUJazw0jn1*{}+1PqNq1jKk z#!uMbCv0>nK74CmvR6oE?W3{-S0^T{Mr)Q(q%wD#vVh2FL^FPllEiPJW&wuqTcm{n zBls=ViU5o8!vxrXCHSq0H^saf&G3H zFARaIa)mPzZrvV33uXe7UXeD$VLwbuA2KkoX7kuYW&U)9g) zXIt0mKh$2Y9nh+l>iFlNL4~gEe)l!csru0mTV8hU$6xl1`+nR)md(mAXEr@%>Z=W{ zMQ;`v-n@D9DzUAYS2EF}RV}pTygJ>?a?ZW#!;|G;;A+Oy-)3no7!FNW(6(&ZvPNvH zgrs@4q~)Jl&ywaW{@^4@nV$GiES*e2+AB$~bwb*X9Xp!EwoXW!ZA*K2tC04f_1;O+ z(#g!NkaQO$X;PA3ubQx-RaM#2${$+Gx;;Dc(aF*<^f;N0L*W0K5V%&Twtf5d^S)ojBHI>VHCoDAn=ju!?f{FSfL%tN!4J_qo#c4Wu%eSo*A~e~DaBs<3I(rj=q_F6{ADTTI>h?!TT0 zKis1BIDxG6#fMVESyPt|f*tvYrd2&;Csc*8x<2uPSAAJIn)LtYp)jne3gZj5jC;<_ z<2)?6<;|`<#1k0BuUzA6a1Bjn!|!JmWRd%AY2RKf+~bZr-sY0lo9fBY2z^t3A(S#3 zM4?Qw$j5ClfAW&Ktkh37zuhe+8SBGR*wSHtMaEq$L~Y%=b**1E%*7r@;YXCD7K$KJjJJJQ^ z^)@^C`+nNMy3C#ZuF1(wy@lfI3q+2tz4qD_Vq3;JDknSNVN2SzR!I8QbKG9*JgcOQ z?x%Y|`hfq1rt8ZiB+%0SCi417cVuhCS^Mv6Mu+jBzEi(n+XxP46S_Ia0Tx&wus~pe zzyg5|E|YCa_4MS@^XC`orU|zAYP^$s zc`B&ZCX8NB(=1GcU;-g0O?SKrANFh4mUE(1ChJNy)PzZlE|sW)5_JrXpbm?9nfNL! zJl-U}ZiHH~fzjC6OcSn@99pv`iZqt~1^rr7SbW=)ciJEC#6&)|3qKq`Pa_8O3Z4^# z5S|l*5S~(l5S|=^5S|=^5T0A38VJv=K?u)tLI_WsLI}@_QwxOW+aaWcu0=?xLU^{8 z22gmm7D9No79g`&A3|6kLRcR{SRX=IA3|6kLRcR{SRX=IA3|6kLRcR{SRX=IA3~Hq zvy?uwSf9n3zMl0Vg!LhW^&y1yA%yiIg!LhW^&y1yA%yiIg!LhW^&y1yA%yiIg!LhW z^&y1yS*Gb?dK^MnA3|6kLRcR{SRX=IA3|6kLRcR{SRX=IA3|6kLRcR{SRX=IA3|6k zLXzK7_Dhgs@_F17XDoVZ{hx#qQS3 zG+*M4ps>EKy*V-Bqo@s?(TQjsPTn35?~9G?jSoez!`Ea_ z5%!0BVgvDLTRaiV4P+O)=pbi{K8$Z~>mo2|RO{r`+b5 zn3!vU?LLYe!7o@&BlBQb2YP7=$@4%7f$i;rZSwF2`cCCxh=9Z^26|J!w15V@aIB9q2-}}vEF1Iv#PAWHD73MGk;~g z$2e(}8ec$|akc&f?RDB-t>wJ4MnLuDw5H;2YukJH*?SMi(>%SzQF8Bl6ua>(nAD%lI$c?AQZ{)=roubil0U6O`6t>*y&Yk z3K=$ere7F(R^dP17f)|PFD7g%gLaZBkcLT;s4r4?5}g#!ZucrhwsLpSaN{Js-Y+UK zkcwf%Jb=$u%2k(8GP$`6wGK3ot$O1<=p!{CcP;2KhON*n&X^<(?P1v@X1l=t2==?s z%?O*4NBL}-C)L8v{}ikB%Oh`~-xhSE!KUOm67pj;emULAYRWQX%(F^Zp+z!)4pBphlX;4-SPAm zbn(QdGDudU{$y%%<3tPNXUo~M_dx3reh~S*horb4|IL)twNb-^EoJ}F)l4)uCv)V{kDs@U!kI|$tOy@Wp;_( zZuES|R;WPoYnSm(#54O--q%*4hFkBIv^$l<6F%J|c00t!N1?LTd1bYwau_bq%TPXF z{gPadSfrKn4`II+KUe+^qc_YzoF5)r#a-bSM2YilYd~}f+KU$ty?i!{2U(#~R(qv% zh_5{Pu{TX4t@O%L-#_Y6oyYGl)k?9#D{WtV5L0Z7WqtXhXM?+`!~a-Z?v-)`68Nz= zJu58}Qk*Y-|Le?ud}tSM>Z^#fbbs^twOs0#j|ZiAd)r7Gx`ksaR3d%*!aE#|<)c^b zrumJ#*e?y$fwOQDxtpf6MU$lsVgyudaF{-u8S&*72`;%U#92>n$y4Yz&2Q!femNOb z3kJ9<#h_I@%Tys;QYW08pI030#$vJeRShmDuPLuQb$_Y-^%w(%txzSYD&nzS8jC{G z&u2UJ2{l!%s?je8A69XUgOWR+kI)@)sn3VGlcY({Ri8&*)9Ly(^8No|y#K2rUk;xO zZwUWu=rvg3w>xEXEbf1nuL|+nxK4cft}gIpeZVD#-xGVN%DYK?_ZBK-ze@;R@jZ-G_BI% z645O`p{6O~1}S3q%9S}R6WTWv?`@(ox{1IJ@j14tKxer=k1V#ah(T--a*WIR?w&ky zVCI|f+a^9=3)QGSk0i3S$k%m+D%9qP8A&C3Pg6MXRTts_WPB`+tu1@yKvwW#r$& zZwMa@mxLb(JvY=G`nmNUD{jrPzH7e1ywNN-zizzT*lR>ED)4#y1@KwzIk?)R+%Eep z9fV-|4%ofWd1`DF_x#ENAL|sL5F*sAc8$1M3l(syEg(ma9e%Y;Q-^+AgnDpIQ-`E2 zAcuzzy-KDj;EXK*X{D2H6q6(rYKJ~sM2;VxH!+ma%|eAFY$47Ac$&tH+alCQ!!&Kt zYYWJb1o=J`Ik@}-smD%DFHjmP+^1PloW<7UQZVR>a5w9>=rJ3ffdDtr?md1#^*uXUHbI2ov z0?YK9rY6t!3h{)My@jr0iSFltdy)1RkNlf295T z_CrY#F}O}t0SguLd|OQ0ftz;iZ5Opk_5C2tN|7>(s?kqvA%$R1jw(v1t$laLzSh06 z@% zGjV}(Zg zLH?E6`1{~eEq!mtl|*YxljuCy)Qq|t+BQ7ReOE|K`fNuFZ<}0iCThP?Kgu?}73hsc z+uQJ)tev+ZryX-IVN)VG-6g=E%+4Rvb@O zRywQPO;g#o2$B2F9=>hhNc-_4^r4}m`2~J6z1bx~eZl!e(0ke4^4*MM_jVr+kTKT6 z+XqLrv`Af8kSnGC1%Izgkm@&+N0+cmgde@fC1UdT4Qo`Qk6GmT@)70mU zE)moZjC4{BpWDS3gVM&I760)Ye4dx}g=CE~R%5#lSi>EIz`?r_I}{o)C{TXZ*4hE|!I zO5kfI2^3;fL#XTF1Wv7iK%VW@psCx!>2jyq4GX+IU*!_w{$BOzlIQXs(koqJ_O-Wl z+_Vp0zJu}JWNr{2zrNeTlQPf2D_p|7wG&_A=Sk}!z1$_}FzOY1Ax(8PnC8v#GMA_$ z9s5r}lI-j;O`Trq613~UfxYw{fG)_JW#hB!$L4ds-(U7yML@LB8r>I#po5sZsV^Nz7a~!m6L6aSy&n*=AjJK> zQSJ?5cAqaWxQO$%}k8uQ<;jiZ;>t=TZ`- zFy4JeNThG@G&*g@sYIJHx$aIH&fm0-4%@`n*?QMaK+`#?&Hr6+zmVvZ3%;AEJxK0+ zJ#3VesrH}tOT&YUMtI2GG^Kq?NQ3h^k7m^-BD1Gn6Ft(m(Aj&ps$nN+|`}OH*2C%cZ$}P;PG<-QV}k zne)=w)voQ>4n9ZP-S2!e^P6wJGv~~inQy+)3nwd~X3r*dM{=#0!0cD}g94BH2;I81 z{~9ktc90L)gp%(H@>iQZ8o0lrzEY1>|w%x6PW}&_>1T*UIs*2Yp zZisTtMgP_gsJ+l>KenedSL0KLMD{B4J%Og*7V<9LFS>H&R+hiE!C2ecUG!35YikXW zoT--uqOJPzjbWGr9~RF$`7CipGPr-~h-rSgs_?1&7Xr|9aZykzY!TDlVlD4?>^Rmz z6o+eSeodikY(Bn?6U!r0UR0Y@lcgCt#bpSmpuLyp-%0p*<`=Ma(~?!QmbyZHkE`k zx1(m7!u|xG)$&opDqbTrOR;iqtFH+-*@dEcW@}efcA)GJBYS=MV*#W;jI1@q)_xIK zskg*03ox-pRj%!8mT!mJyneC8boN`}j|7;lCi6OR{&MK-n3Zm(fuwxN5st0X_{#x~ zk`+7t5CN;Nr+l%IzZKpTzwZc&R|@T|!ruOG(#HQk8JrH@gwg+>4~z!Z1wQT1`LFZ; znePeTUf(}@f8IObRlOg<*#8x<{y&9z|G!b*qmY%sszbE+Cbs=4M_a*Ap-;rnw+prQ zb%?iX@x4YT*xzOb*qfwBtb)cUm;5cZP( zhaF8yWo!Km1ZV31+HvH4B!6w!(iz3z{<|HI8y5*Ce=A%&^ndK2#=DWNf*680Q$MjI zv3Letg)6WA%?@{(-L@awahyB8N3F~KoQr61|J9CaJbGW9KM!?=<@_?IEwKH*@>H4fFq>49*6x4*q%Iu|QkkC;kunmYzef=A;oT!f(9N&A zX0tQ74DkHJG5A#tj_U1LP zsm4g?3Kg=c2sG)KEBKjQNV-jJw-1SFb0HufTp?6Cd5=_?XxiP8z|-z=u*%EiHsk!E?UHlz+N8{`xh$z!JJe7zNmCk~AXoZH11 zs}zh9lsahVPLrYx9Gjv_VNh6|6{io@5UpMNw0@sM0ZZZ4I$>#0nhANi#e+L|bMY`E zzE6zZX(oE*;=seW8OJ_Z>)y1<9tKwcu|k0xuhFtL(P7FQhG5J!$K0(*sSfo)TPEQ~APC zq3my51HQz|-CB}gR|Fa_bxu{L_b4CbR{3j7qg!=e;R_yZQ|_d5O>%2xsSx{`(%5Ew zSNO_%b!lYNyY!uHd`MLzUCAmKDgvx`yXGWYKQlGo|oYNXQStfm;u;}J+*#Sv5yElUq4g--#NmaQhZp=<+Qgj?MJS? zDAOwN4jYp8qN({Sk+Vk5QW)G$8_FICbBonqrV-hhI%W7m@(ueNQD@; zTQCSjGXan)LAaun5aKOn02(_CVL($@z&ZHEEroQ@jwDbjyd`h5pzumbOCM5}%c{!N zX9vtUQFx7_J3#)*#g1h@Y~C!f#2};Y3R$}o%5Bv4TVdqdmkK*N`)nw~{T)Kl6?U@s zT5;rJ9-B0Xq?p%o^LUL(+q9*usiE%DEW4;8YL6SK9Y!*xY&OwE-eN_P1_5$n*4F8_ zqshBng6^@RSr-X8bO&krwb-%SibWk%UJ4unD$M?mP+>cSp_8SsrarH|u+3IT!#>eA z5X8ka;n<70%Zj6mMj}~_<5l$lxBr(a&tdJ~%YnyX`~OcE`;YkRF#_;2zUzEn^DcTf zc|Y#y_tbcPQ=L|~sGm7KzkgDXYrYP|g!ERUja!OYFs=y~b%e9dTvce*6LEx;O}zZA z&~PK{2#WSzYx1pz8*3JO!V#{7(H!EJY!b!=VCNjYJXojtD{Ljl%t*RjWoR*-pUM>S zA>xGY!!`_hP`*!0p_KcSA1$7N6MC;0)h`!)qy+j*2KzEPvz;g<_N7Wd4v5Evnx{`Hnzyhop_t@Tr2%^++w;7`! zbD)XPorx2=_F9BL3@K45Bns;{qlqO)1lM!uj*hl|x*CUsxwgck5-z``IBK66Pqu3E z*Y-lP7S?eK7Cr3Q?nthvFY~qLE;EW@NKzq6uNj3LpV12>iDae^i+K{MtKwP`Aw8=w zrJ@*Ao*Wg1+2x{kuR^8wT}C9L!uoN{j7CpxSOUz1P9&n)P(BlaI`dP`+>y%e;x5O0 z;?Wb7O)fEsr6qbk7OpiPRqfK+|6d7?1gnC-5lF!M&+lRnz{~w#^xfyX+4l|a!`@rH z|I_o7XRqhG>ci>*^}Dnq@L4>#DXT64ctVy{yl7*prsMcPYgb54xbyIjEUm-PNh$25 zHLxiU32hxZS+fOR6wtQ!n5EenvQT`BWf{hrSPPC=XJI*D!4cSKd8K1<+ghR$SBr!4 zj_Q5tJwyhbwtCXO4y_7gsu2URdOBKy^gQ~Q*_HJT(L0k2v~I0 zCdpUI$eQf0&_A9ivl_ax+ejr_H(x?BZiW27CCC7ArRU24KG8^4=r z3Y&5SEx8iG3}L1TF69Vk7dt#hVPM`?a4 zO;D*0$+3Lo^3IRW0Hw?j9~Mwf2X&$@*XUAYT>9xaAV4=jmH^c`Z_PvRn(W!levjo&74 zJLhcgXL7dBJc%pcrPeTvuxIf|ku1c7pHl`7h7qOS10P;91Cf=K-!^-`mWtk51b($) zgv_8q`5#&{gOc)-zDud+=hlQ5C6UrssGbLlz}syXiomZW{r|THyj3+eyNk8Je|8OU zt70kyUtR;86eN{m>z*KG$-DMc5onv$g+zCl?k-hfex@|KRpS-**-n<3C? zoAvErbx}$q_m@V7+NG*(Ru^kk!25~->sAq#{;{L%mh~K6d`SorKbS{gis|e!q~-+R@mjH()wZ zVgKqE9bwO)fAu~`z@q&tQTpQFzu*jq;@X?qJ1g^{^504VpJvDHz0RN{YOz(a#fy%P zrz2dEj$0`p3j42)U=E6OcxNe9F<&Z$tHE1emDys|3~BEWzQ+-gv`8OYhY)dP9v-8UakFqUvMC}5_o^0E1(2E>>u@4`+wV)^M!nW?JZ@ZeaZpN;t=tWa6Mcu-fueKnfDXcs!+Lb|J?!3 zx~Xu5+WVvfV7qB&VYy>gndX`A?cqlv|CJDcEl~Ky`|{ zSi6}kRNTiL0OgJ;auic;iCw0QA9a9iN2Aw|w-ni$RtWhK2S~Y#u}y=BY4P@EpWgX( z2dI9`zR?Sr4Qj0i*RKgETTdpH$nXkf+`GD~ta4v)ezh1P-tn>w*d}(QEf?@t908}& zi7dT>o=C?@$ir4=;cFH9!;YAzH;MTnN363kDfr8d$Y)`C^n;GTXFNUn0Y}(klbCB= zqhE4F)BDzPWLI>Ltz*V2l0FFht;+u&Tng?9en0S1;I4ot@EiW4{;&F`e2VWkVf%lB z_hruup1ZK~-|u4ef1~#Ek`==SV%{;E!)dA(fFnf zsP*pl&Ysf&`ZF_7UwcpZNJr1{);`!1QUzxVFrorF}#rf(A) zN|uZCH8avs`ym79fYox!u}Ybke{2Ra|MlaSUlHRM1zl%to#3uv1Dk{L#~ywS#pt)sZ15_U#B zcp~u$TIQ=|qx_*`K8_YXR%-Ra9Ig_4C2nSbp3b*Lx z0{<^FFz?zywTWK93bWLvR4C^USHaPuCjm#*yh6BtFu~Doha?;Iwn;LZ4{7@au%G|E z4T|IDR%y1QizY2PQbw5v~8PIZG?|I)2{-BHt?8db+w`x(VJ7zR=b=y1JdXAk=5B1x2pq@5{sc?Dqw`?#2 zo$Vb?J!VzCL2LhiCzuc382nD)`9NQw7Q6rDu>0TFVF7Tt?~~q)_j>Q2W8dGyo_|&U ztJNmGYWZqb#x=P&?N_{SJV@)cV*GMUP&D@Yzu;^JJQ9@N&VttH7d@(Re&ND}Ee& znHG_X*&aLEWICRuPleu#RXYw|*)S=Tu)|7hS#Mmw6?W-Dv9;XShmi-^}(LdmP~`?UZeqh^252C%YXH@hH%`fL41B zv+^Cl6s6f2ZZ?|YjrMHI=NutS%w3LXXEx)w(-BklBk2-XI4%07Vt^%QZp~&{W|~UB z!x7OKe6-a;#9p-$$b6x;JHnM*=7QV0r1@ZzGbA4R)F73#%UcWj=918-YeIKZNmTg? zVKdmGYfo#4r&Pw_|Ceui8(AukIUGp+)mkm<^t)@U>>W9VeDq z!heN*oOO1TnOq`8p9-a^TZMyO1dTpgaa46HxBpiu9||51dV?Pf^uzw|{r+Kpo&V#$ z7(4)f6np=8y&v*~J>k!o|F&W$;CHBZssZ&km1yzmZhp==#%hJ@a9WDY`vJ-O-1>kL zXLpE(z1$I*7AIVZzfXI)D;Ml`I~W1&(IyZi2;HP+r&#t^jklOVjpC?^QBN(D9TqVk zR-Lvv!kz^at3!^!)ZamU(tavbZ)*|ASxkRLXXoh^hzXkt=ms{g!!XmNkCvjaglK!6 zSfxN4<925-yx!6)ZiQfPaRfUXmURc6k!PbbGu*4;uQJxsn@fLNaZFtDBF6b<04MrD zaZvfxm%m-sHCKdYe#1A@6!vCEV3~pS722m( z1<69pJzNdA8gMn>YQWWitAUG01FHJlo(ECfChY%L-rt9UhlBqXcwb;7&=B~N{~`Z= z|Mz`Q`#OC8qh8wvLHhuK`O?e60P z9c%}OrA`Y8^3!>CPylrE>eW(b6Z>ppRj&lau9}t$V>>y=+B&