Our project does not depend on complex navigation. In a realistic scenario, it would be expected that the towel, the person, and the fluid to be applied would all be quite close to one another. Therefore, our robot only really needs to be able to navigate around a single room.
For our navigation needs, we will use very simple global mapping, localization, and planning using Nav2. Using Nav2 we will be able to define 2D pose estimates and nav goals programmatically, which will allow us to define a simple route to take the robot from its resting location, to where it will pick up the towel, to where it will apply fluid to the towel, to place where the person will be. In addition, to simplify this process, we could combine some of these locations (e.g. by having the towel and the fluid right next to each other).
Furthermore, we might consider having some of the required items attached to the robot itself. For example, we could have some container attached to the robot which holds the towel. This also would simplify navigation.
We will not be doing local servoing to adjust the robot pose. The only application we could think of for local servoing would be to follow the user if their arm moved during the application of the fluid. However, we decided against doing this since we judged that allowing the user to move their arm freely without the robot responding to this movement would better enable the user’s ability to pull away or adjust how much pressure is being put on the area by themselves, giving them more control.
The video below shows the robot's navigational capabilities in the context of this project. The robot is able to grab the towel from a specific location and head over to the patient in a smooth and correct path.