The Hamster Robot and Coverage Path Planning:
Hamster Robot:
The Hamster robot is a small and lovely robot for software
education. It includes various devices as shown in the following figures.
The Hamster robot can be programmed and controlled over
various languages such as Python, C, Processing IDE etc. For our implementation, we plan to program the robot using python.
The Hamster robot will be used in three ways:
The references below provide more information about the
Hamster robot Python class and how to read/write data to the robot.
- For locomotion i.e. to push objects to their slots during cleaning and moving during Coverage Path Planning (CPP). This will require control of the DC motors.
- For detecting the edge of the workspace (desk in our case). It is crucial that during robot locomotion we do not fall off the desk. As a safety measure for this purpose the Infrared Floor Sensors will be constantly polled to look for the edge of the workspace to stop the robot.
- For detecting, if there exists a contact between the robot and the object. The proximity sensors will be used and will be polled when pushing objects to keep track of contact between robot and object.
Coverage Path Planning:
DeskBot is capable of cleaning a table environment
using coverage path planning (CPP). Coverage Path Planning (CPP) [1] is
the task of determining a path that passes overall points of an area or volume
of interest while avoiding obstacles. This task is integral to many robotic
applications, such as vacuum cleaning robots, painter robots etc. A
grid-based coverage path planning method is to be implemented where the robot
cleans the entire desk surface.
As an initial algorithm and experiment, we made a simulation robot agent on MATLAB. A grid map is used and two points on the grid map are defined as Start and Goal. The algorithm used is a Heuristic Breadth-First Search (BFS). It is essentially a modified BFS algorithm suited for coverage path planning. In our algorithm, the heuristic dictates which child node to explore out of the available options in the path. The condition itself is that the child node with the lesser index value will be explored if it was unexplored previously. An example video of this implementation is shown below,
To go from that simulation to the real robot we need to define every node/grid to the size of the robot itself so that it can traverse along with every point on the table. Hence the table will be divided into nodes/grids with the dimensions of that of a robot. The dimension of the map itself will be obtained from the Scene Segmentation module that estimates the size of the table/desk. Under these conditions, the same algorithm BFS can be applied to perform CPP.
While the Heuristic BFS is a novel method, it is a very trivial method for tackling CPP. Furthermore, our current Heuristic BFS Coverage Path Planning algorithm does not account for obstacles that are left on the table. Over the next week, we intend to implement cellular decomposition algorithms. The most commonly used algorithm for CPP is the Boustrophedon Decomposition which accounts for obstacles as well. An example output image of the Boustrophedon Decomposition is shown below [2].
References:
[1] http://hamster.school/en/reference/python/
[2] Galceran, E., & Carreras, M. (2013). A survey on coverage path planning for robotics. Robotics and Autonomous systems, 61(12), 1258-1276.
[2] Galceran, E., & Carreras, M. (2013). A survey on coverage path planning for robotics. Robotics and Autonomous systems, 61(12), 1258-1276.
[3]
https://github.com/horverno/sze-academic-robotics projects/tree/master/RobotGridCoveragePathPlanning
Comments
Post a Comment