Develop a program (any programming language is allowed) for motion planning of a polygonal robot moving from an initial configuration to a target configuration in the 2D environment populated by polygonal obstacles.  The robot may translate or rotate freely but it must not collide with any obstacle during the entire motion plan.

 

1. The entire environment is the rectangular workspace defined by the following coordinates: (0,0), (100,0), (100,50), (0,50).

 

2. The program must allow the polygonal robot to be defined using an input file containing the number of the polygon's vertices and their coordinates.  It is assumed that the vertices are listed in the counterclockwise order.  Following is an example of the content of such file.

 

3

0 0

10 0

5 5

 

3. The program must allow the polygonal obstacles to be defined using an input file containing the number of obstacles and the definition of each polygonal obstacle (defined in the same manner as in 2). All obstacles must be entirely contained in the environment defined in 1.  Following is an example of the content of such file.

 

2

 

3

1 1

10 0

5 5

 

4

50 50

70 50

70 80

50 80

 

4. The initial and target configuration must be read from an input file.  A configuration has two components. The first part is the coordinates of the location where the first vertex of the robot is located in the environment.  The second part is the orientation of the robot, i.e., angles at which the robot is rotated relative to the original copy (positive angle for counterclockwise rotation, and negative angle for clockwise rotation). Following is an example of the content of input configuration file. The first line defines the initial configuration and the second line defines the target configuration.

 

10 10 20

60 70 -10

 

5. The program must be able to visually show the computed motion plan.