| #!/usr/bin/python | 
 | # | 
 | # Plots the results from the 2D pose graph optimization. It will draw a line | 
 | # between consecutive vertices.  The commandline expects two optional filenames: | 
 | # | 
 | #   ./plot_results.py --initial_poses optional --optimized_poses optional | 
 | # | 
 | # The files have the following format: | 
 | #   ID x y yaw_radians | 
 |  | 
 | import matplotlib.pyplot as plot | 
 | import numpy | 
 | import sys | 
 | from optparse import OptionParser | 
 |  | 
 | parser = OptionParser() | 
 | parser.add_option("--initial_poses", dest="initial_poses", | 
 |                   default="", help="The filename that contains the original poses.") | 
 | parser.add_option("--optimized_poses", dest="optimized_poses", | 
 |                   default="", help="The filename that contains the optimized poses.") | 
 | (options, args) = parser.parse_args() | 
 |  | 
 | # Read the original and optimized poses files. | 
 | poses_original = None | 
 | if options.initial_poses != '': | 
 |   poses_original = numpy.genfromtxt(options.initial_poses, usecols = (1, 2)) | 
 |  | 
 | poses_optimized = None | 
 | if options.optimized_poses != '': | 
 |   poses_optimized = numpy.genfromtxt(options.optimized_poses, usecols = (1, 2)) | 
 |  | 
 | # Plots the results for the specified poses. | 
 | plot.figure() | 
 | if poses_original is not None: | 
 |   plot.plot(poses_original[:, 0], poses_original[:, 1], '-', label="Original", | 
 |             alpha=0.5, color="green") | 
 |  | 
 | if poses_optimized is not None: | 
 |   plot.plot(poses_optimized[:, 0], poses_optimized[:, 1], '-', label="Optimized", | 
 |             alpha=0.5, color="blue") | 
 |  | 
 | plot.axis('equal') | 
 | plot.legend() | 
 | # Show the plot and wait for the user to close. | 
 | plot.show() |