The main question of the project: how to be sure that all the surface I want will be visited by the robot?
When I start the project I didn't know how to solve this so, looking for something that could integrate the motor driver, a laser scanner for mapping purpose and a navigation tool, I found ROS.
Bingo! I said, everithing is done! Not yet really, some time is needed to setup my robot with ROS but following the tutorials and asking on the dedicated answers site the robot is right now at a good point.
Now is the moment to look on how my robot will move inside the field. One way to do this job is give to the robot random goals, that could be given from an input by the kinect or bumper sensor or sending it from a software. This is how the monstly robotmower work, but in my opinion this could not work for large area like mine, or it will take to much time to statistically complete it. What I prefer is somenthing that could create a path that cover all the area I want to mow, possibly visit at least one time each tile of the field.
ROS have enough code to be able to add a little piece that could do this.
In this way my idea on how to improve this on ROS is create a package the could:
- read the map;
- divide it in tiles larger like the robot tool;
- create a list of this tiles, sorted by the travelling salesman problem (TSP);
- send this list of goals to the ROS navigation stack;
This is the idea, and will be improved with other task, but for the moment I'm yet on the first step.