NTT Data Japan is a Japanese system integration company and a subsidiary of Nippon Telegraph and Telephone (NTT). NTT Data is a company that focusses heavily on research and development to contribute to the growth and continuity of society. It produces and uses innovative technology to solve problems that we face today through projects such as the Vatican Apostolic Library Digital Archive Project, the Smart Shirt project and the Sota nursing care support services.
NTT Data is looking for new, innovative ways to develop its Sota robot further and expand its presence different industries. Our project involves researching the capabilities of Sota (voice recognition, translation, WiFi connectable) and the available software and APIs compatible with Sota then use this research to develop a new program for Sota.
The client/organisation are extremely technically proficient, so running the service (that our team will provide) will be relatively easy to maintain. The users themselves should also be relatively technically capable due to them most likely having several software developing/programming skills in the field.
There is an increasing amount of competitors in this area of sociable robots, such as Jibo and Buddy. Sota is currently used in healthcare to interact with patients and remind them when to take their medicine. We are using Sota to for different purposes, which are mentioned in the research part of the website.
The client wanted us to build a system for Sota in a suitable use case. We each came up with three use cases and then met with the client to discuss our findings. The client helped us narrow down the nine use cases to three which were the most viable in their perspective. The client also introduced us to the three pillars of NTT Data - Agent AI, Voice UI and Internet of Things. We further researched the three use cases according to the three pillars and finally decided to implement Sota as a household robot that assists with cooking. This is useful for users who are not familiar with cooking or want to learn how to cook quickly and frequently. Sota will help users manage their household tasks, making cooking more convenient for users.
Our requirements were gathered by discussion with our client. Since our project involved starting from the very beginning, with designing the problem statement, we included our client in our decision making to ultimately pick a problem statement and build a list of requirements on our idea.
Based on our requirements, we did a MoSCoW analysis and identified functional and non-functional requirements.
Requirement | Type |
---|---|
The robot should incorporate voice UI by allowing the user to create and update a grocery list by speaking to it. | Functional |
The robot should verbally respond to user input. | Functional |
The robot should update grocery lists which should be accessible to the user. | Functional |
Sota should also incorporate Image recognition by being able to identify ingredients that the user might not know. | Functional |
Sota should be intelligent enough to recommend a recipe to the user depending on the ingredients the user has suggested to Sota. | Functional |
Sota should also be able to walk the user through recipes using voice UI. | Functional |
Sota should be able to carry out basic conversions e.g ounces to grams. | Functional |
Sota should be able to set alarms and timers. | Functional |
Sota should be able to recognize ingredients under various light conditions. | Non-Functional |
The instructions provided by the robot should be vivid and easy to understand for the user. | Non-Functional |
Sota should have a quick response time. | Non-Functional |
Sota should be dependable i.e deliver services when requested. | Non-Functional |
Sota should be able to work normally without threat to life or environment. | Non-Functional |
The following are brief descriptions of the use cases we have chosen to research deeper into and potentially use for our project
A more complete version of our research into our use cases can be found here.
For each of these use cases, we have looked into how we could implement it, the value it would have, the advantages and disadvantages and its competitors. Furthermore, we have analysed it against the three pillars of research that NTT Data has specified:
As a team, and with our client, we decided to use our second use case (Cooking Assistant) as the use case that we are going to implement.
Use Case Name | Find Recipe UC1 |
---|---|
Description | A user asks LeChefu to find a recipe that contains several ingredients. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Recipe for” 2. User says list of required ingredients 3. System parses ingredients - Go to Alternative Flow if no ingredients found - Continue with Main Flow if at least one ingredient found 4. System reads out steps in recipe |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Convert Measurements UC2 |
---|---|
Description | A user asks LeChefu to convert an amount of one measurement to another. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Convert” followed by a quantity and two measurements 2. System parses query to find required fields 3. System parses query - Go to Alternative Flow if either less than two measurement units are found or measurement units are not supported by our system. - Continue with Main Flow if two measurement units are found. 4. System tells user the converted value. |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Identify an Ingredient UC3 |
---|---|
Description | LeChefu attempts to identify an ingredient that the user shows it and tell the user what it is. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Identify this ingredient” 2. System takes a picture of its view 3.** System queries the Clarifai API with the image 4. System picks the food item of highest probability identified in the picture - Go to Alternative Flow if no items found - Continue with Main Flow if at least one ingredient found 5. System reads out the item name |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Create Grocery List UC4 |
---|---|
Description | User attempts to create a new grocery list of a specified name. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Create” followed by a name 2. System parses query for the name and converts it into our chosen file name format 3. System checks validity of grocery list name - Go to Alternative Flow if grocery list already exists or is not found in the query - Continue with Main Flow if a valid name is found 4. System creates the grocery list 5. System notifies user of completion |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Select Grocery List UC5 |
---|---|
Description | User selects a grocery list to use as their current default list. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Open” followed by a name 2. System parses query for the name and converts it into our chosen file name format 3. System checks validity of grocery list name - Go to Alternative Flow if grocery list does not exist or is not found in the query - Continue with Main Flow if a valid name is found 4. System selects the grocery list 5. System notifies user of completion |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Update Grocery List UC6 |
---|---|
Description | User updates a selected grocery list by saying items to add or delete. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Update” followed by names of items with either “add” or “delete” in front of them 2. System checks if a grocery list is currently selected - Go to Alternative Flow if no grocery list is selected - Continue with Main Flow if there is a selected grocery list to update 3. System parses query for the items to delete and items to add 4. System updates grocery list 5. System notifies user of completion |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Delete Grocery List UC7 |
---|---|
Description | User deletes a grocery list from the system. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Delete” followed by the name of the grocery list that they want to delete 2. System parses query for the grocery list name 3. System checks if the grocery list exists - Go to Alternative Flow if no grocery list of specified name exists - Continue with Main Flow if there is a grocery list to delete 4. System deletes grocery list from folder 5. System notifies user of completion |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Access Grocery List UC8 |
---|---|
Description | User asks LeChefu to read a grocery list from the system. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Read” [OPTIONAL: followed by the name of the grocery list that they want to access] 2. System parses query for the grocery list name. If no list name is found, currently selected list is used. 3. System checks if the grocery list exists - Go to Alternative Flow if no grocery list of specified name exists - Continue with Main Flow if there is a grocery list to read 4. System reads each item from the grocery list 5. System notifies user of completion |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Set Timer UC9 |
---|---|
Description | User asks LeChefu to set a timer for a specified amount of time. |
Primary Actors | User |
Secondary Actors | System |
Pre-conditions | User has switched Sota on and loaded this system |
Main Flow | 1. User says “Timer” followed by the name of the grocery list that they want to access 2. System parses query for time in hours, minutes and seconds. 3. System checks if the grocery list exists - Go to Alternative Flow if no grocery list of specified name exists - Continue with Main Flow if there is a grocery list to read 4. System reads each item from the grocery list 5. System notifies user of completion 6. a) System concurrently carries on with other tasks if user continues b) System exits use case if user cancels timer c) System remains idle 7. When timer time runs out, timer stops and Sota notifies user |
Post-Conditions | None |
Alternative Flow | ERROR |
Use Case Name | Error ERROR |
---|---|
Description | System notifies user of an error that has occurred due to incorrect usage. |
Primary Actors | Robot |
Secondary Actors | System |
Pre-conditions | User has given system an invalid request. |
Main Flow | 1. System says that request is invalid and gives tells user about the nature of the error 2. System waits for the next query. |
Post-Conditions | None |
Alternative Flow | None |