|  | #!/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() |