Links

project website: link

The Task

The task was pretty open-ended for this one, we had a week to come up with an idea for a system which:

  1. Solved a real world problem
  2. Solve it using a bit of hardware

Those were all of our constraints, the ones we were told about anyway.

We had a few ideas and run them all through the supervisors, in the end this one seemed the most suitable for the task, although it was quite ambitious (with all the features that were needed for this to make any sense in the market - i.e. door opening).

So yeah, the ideal scenario was that we make a robot which:

  • Can be laid on the floor
  • Autonomously travel around, opening doors as needed and mapping the entire area
  • Detecting the positions of all handles present
  • Then on a certain schedule automatically disinfecting all of those handles

In the end we managed most of this apart from the opening door part (well, we opened some simple push/pull doors in the simulation but not very reliably)

Solution

Localization

In order for the robot to get anywhere, it needs to be able to both:

  • Create a map of its environment
  • Then localize itself somewhere within the map on the fly

We used the SLAM algorithm to create maps while localizing the first time, and then AMCL to just localize the robot based on an existing map.

Autonomous Exploration

The way we tackled exploration of any room, was with simple Frontier Exploration, the robot simply identified parts of the map which were unexplored, drove there, spun around and repeated until some finishing criterion was reached

Here is a video of Dr. Phil automatically exploring a simple room:

Obstacle Avoidance

Because the robot was to be deployed possibly near to people and other obstacles, It had to also be equipped with top notch obstacle avoidance:

Handle Classification

In order to disinfect door surfaces, the robot had to first be taught to recognize handles, and then find them in the room. This was accomplished via machine learning + a simple exploration algorithm. Once handles were recognized and localized, their position was remembered for future disinfection runs:

Handle Disinfection

Finally with everything mapped out, the robot carried out the actual disinfection procedure once scheduled, on every door within its reach:

Door Opening

As a bonus we experimented with the capability to open doors, which went... somewhat successful? ;)