diff --git a/design/use_cases/_template_use_case.md b/design/use_cases/_template_use_case.md index 3ac20b98970..a7c3fcb3dd3 100644 --- a/design/use_cases/_template_use_case.md +++ b/design/use_cases/_template_use_case.md @@ -8,9 +8,14 @@ As a \ I want the robot to \ so # Example: -# Warehouse Navigation -As a warehouse robot operator, I want the robot to navigate without colliding into people or objects so that it doesn't hurt anyone or damage anything +# Collision Avoidance +As a robot user, I want the robot to navigate without colliding into people or objects so that it doesn't hurt anyone or damage anything ## More details - - I want this so that I know the robot won't damage itself, damage property or hurt anyone - - I shouldn't have to interact with the robot to prevent it from crashing into people or things + - Why is this needed? + - I want this so that I know the robot won't damage itself, damage property or hurt anyone + - Example: a logistics robot in a warehouse must avoid shelves, people, forklifts, and other robots + - What is the expected user interaction? + - I shouldn't have to interact with the robot to prevent it from crashing into people or things +- Are there any non-functional requirements? (build system, tools, performance, etc) + - The performance needs to be fast enough to avoid moving objects such as people walking or other moving robots diff --git a/design/use_cases/collision_avoidance_use_case.md b/design/use_cases/collision_avoidance_use_case.md new file mode 100644 index 00000000000..3af0998c798 --- /dev/null +++ b/design/use_cases/collision_avoidance_use_case.md @@ -0,0 +1,14 @@ +# Collision Avoidance +As a Robot user I want to my robot to avoid colliding with people or objects so that it won't damage anything or hurt anyone + +## More details +- Why is this needed? + - This is needed for indoor and outdoor robot navigation in most (all?) cases + - Example: a robot in a warehouse should avoid colliding into the walls or shelving, and dynamically avoid people that cross its path + +- What is the expected user interaction? + - The user should be able to walk in front of a robot and it should avoid crashing into that person + +- Are there any non-functional requirements? (build system, tools, performance, etc) + + diff --git a/design/use_cases/indoor_localization_use_case.md b/design/use_cases/indoor_localization_use_case.md new file mode 100644 index 00000000000..cee2149d89f --- /dev/null +++ b/design/use_cases/indoor_localization_use_case.md @@ -0,0 +1,15 @@ +# Indoor Localization +As a Robot user I want my robot to know its location on a given map of an indoor area so that it can move around the area + +## More details +- Why is this needed? + - This is needed for indoor robot navigation in most (all?) cases + - Example: a courier robot in a logistics warehouse + +- What is the expected user interaction? + - The user should be able to specify a map to use and a location on that map for the robot + - The robot should be able to deduce it's own position on a map autonomously + +- Are there any non-functional requirements? (build system, tools, performance, etc) + + diff --git a/design/use_cases/indoor_navigation_use_case.md b/design/use_cases/indoor_navigation_use_case.md new file mode 100644 index 00000000000..81a0824485f --- /dev/null +++ b/design/use_cases/indoor_navigation_use_case.md @@ -0,0 +1,14 @@ +# Indoor Navigation +As a Robot user I want my robot to autonomously navigate to a given location on a given map so that it can help me at that location + +## More details +- Why is this needed? + - This is needed for indoor robot navigation in most (all?) cases + - Example: a courier robot in a logistics warehouse + +- What is the expected user interaction? + - The user should be able to specify a map to use and a location on that map for the robot to move to. + +- Are there any non-functional requirements? (build system, tools, performance, etc) + + diff --git a/design/use_cases/keep_out_zones_use_case.md b/design/use_cases/keep_out_zones_use_case.md new file mode 100644 index 00000000000..448d38267f9 --- /dev/null +++ b/design/use_cases/keep_out_zones_use_case.md @@ -0,0 +1,14 @@ +# Keep Out Zones +As a Robot user I want to be able to designate keep-out zones or areas on a map so that my robot will go around those areas instead of through them + +## More details +- Why is this needed? + - This is needed for indoor/outdoor robot navigation in areas where there may be safety issues or hazards + - Example: a courier robot in a logistics warehouse may be required to avoid areas where the forklift is unloading pallets from trucks + +- What is the expected user interaction? + - The user should be able to specify keep out zones for the robot to avoid + +- Are there any non-functional requirements? (build system, tools, performance, etc) + + diff --git a/design/use_cases/multi-story-building_use_case.md b/design/use_cases/multi-story-building_use_case.md new file mode 100644 index 00000000000..e86b3a77c68 --- /dev/null +++ b/design/use_cases/multi-story-building_use_case.md @@ -0,0 +1,15 @@ +# Multi-story Building Navigation (2D+) +As a Robot user I want my robot to be able to navigate stairways, ramps or elevators to move to another portion of the multi-story building so that it can do something useful + +## More details +- Why is this needed? + - Example: a delivery robot in an office building + +- What is the expected user interaction? + - The user should be able to specify stairways, ramps and elevators on a map for a robot to use or not use + - via a GUI + - via a config file or API so that it can be done by another program + +- Are there any non-functional requirements? (build system, tools, performance, etc) + + diff --git a/design/use_cases/outdoor_localization_use_case.md b/design/use_cases/outdoor_localization_use_case.md new file mode 100644 index 00000000000..f9f9e926fc0 --- /dev/null +++ b/design/use_cases/outdoor_localization_use_case.md @@ -0,0 +1,15 @@ +# Outdoor Localization +As a Robot user I want my robot to know its location on a given map of an outdoor area, such as a street or college campus, so that it can move around the area + +## More details +- Why is this needed? + - This is needed for outdoor robot navigation in most (all?) cases + - Example: a delivery robot on a college campus + +- What is the expected user interaction? + - The user should be able to specify a map to use and a location on that map for the robot + - The robot should be able to deduce it's own position on a map autonomously + +- Are there any non-functional requirements? (build system, tools, performance, etc) + + diff --git a/design/use_cases/outdoor_navigation_use_case.md b/design/use_cases/outdoor_navigation_use_case.md new file mode 100644 index 00000000000..8eb8da7cba5 --- /dev/null +++ b/design/use_cases/outdoor_navigation_use_case.md @@ -0,0 +1,14 @@ +# Outdoor Navigation +As a Robot user I want my robot to autonomously navigate to a given location on a given outdoor map, such as a college campus or street, so that it can do something useful at that location + +## More details +- Why is this needed? + - This is needed for outdoor robot navigation in most (all?) cases + - Example: a delivery robot on a college campus + +- What is the expected user interaction? + - The user should be able to specify a map to use and a location on that map for the robot to move to. + +- Are there any non-functional requirements? (build system, tools, performance, etc) + +