Skip to main content

DESKBOT Update 4


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:
  • 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. 


The references below provide more information about the Hamster robot Python class and how to read/write data to the robot.


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. 
[3] https://github.com/horverno/sze-academic-robotics projects/tree/master/RobotGridCoveragePathPlanning


Comments

Popular posts from this blog

DESKBOT Update 7 - Final Update !

Final Overview & Results  The DeskBot system was setup up on an experimental desk testbed. The Intel Real sense camera was mounted directly above the center of the table at a distance of 30 inches. The right corner of the table is the robots initial resting location. Three major modules were used as explained in the updates previously, Scene Segmentation and Object Detection Robot Path Planning and Object Manipulation Coverage Path Planning The results pertaining to each of these modules are detailed below, Scene Segmentation and Object Detection To help the DeskBot system perceive and observe its environment YOLO object detector was implemented to classify 5 classes (pencil, erasers/rubbers, pens, staplers, remotes). YOLO was successfully implemented with an accuracy of 90%. A dataset was also created an annotated for the same calss of objects for training. As a future work more desk/workspace objects could be trained to be seamlessly decluttered an

DESKBOT UPDATE 3

Scene Segmentation and Object Detection The robot has to know its environment before taking an action, a sensor is required is to perceive the environment and know what things exist. In our case, we use a 2D camera to know where and how the objects and the robots are positioned. We use Mask R-CNN to perform instance segmentation and object detection or use YOLO for object detection.  Mask R-CNN is divided into two modules, first, it estimates the regions where the objects can exist on the input image. Second, based on the initial estimation it identifies the class of the object and generates a mask in the pixel level. In the initial step, the RPN (Residual Pooling Network) scans all FPN (Feature Pyramid Network) in a top-bottom approach and estimates where the objects exist on the input image. Once the estimation is done a bounding box is assigned to the anchor (anchors are a set of boxes with predefined locations). RPN helps in the anchor to decide where in the feature map