Пример #1
0
def add_imu_bias_tester_velocities(pdf, imu_bias_tester_velocities):
  plt.figure()
  plot_helpers.plot_vector3ds(imu_bias_tester_velocities.velocities, imu_bias_tester_velocities.times, 'Vel.')
  plt.xlabel('Time (s)')
  plt.ylabel('Velocities')
  plt.title('IMU Bias Tester Velocities')
  plt.legend(prop={'size': 6})
  pdf.savefig()
  plt.close()
Пример #2
0
def add_imu_bias_tester_velocities(pdf, imu_bias_tester_velocities):
    plt.figure()
    plot_helpers.plot_vector3ds(imu_bias_tester_velocities.velocities,
                                imu_bias_tester_velocities.times, "Vel.")
    plt.xlabel("Time (s)")
    plt.ylabel("Velocities")
    plt.title("IMU Bias Tester Velocities")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()
Пример #3
0
def plot_imu_measurements(pdf, imu_measurements, prefix=''):
    # Acceleration
    plt.figure()
    plot_helpers.plot_vector3ds(imu_measurements.accelerations,
                                imu_measurements.times, 'Acc.')
    plt.xlabel('Time (s)')
    plt.ylabel('Acceleration (m/s^2)')
    plt.title(prefix + 'Acceleration')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Angular Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(imu_measurements.angular_velocities,
                                imu_measurements.times, 'Ang. Vel.')
    plt.xlabel('Time (s)')
    plt.ylabel('Angular Velocities')
    plt.title(prefix + 'Angular Velocities')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()
Пример #4
0
def plot_imu_measurements(pdf, imu_measurements, prefix=""):
    # Acceleration
    plt.figure()
    plot_helpers.plot_vector3ds(imu_measurements.accelerations,
                                imu_measurements.times, "Acc.")
    plt.xlabel("Time (s)")
    plt.ylabel("Acceleration (m/s^2)")
    plt.title(prefix + "Acceleration")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Angular Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(imu_measurements.angular_velocities,
                                imu_measurements.times, "Ang. Vel.")
    plt.xlabel("Time (s)")
    plt.ylabel("Angular Velocities")
    plt.title(prefix + "Angular Velocities")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()
Пример #5
0
def add_graph_plots(pdf, sparse_mapping_poses, ar_tag_poses,
                    graph_localization_states,
                    imu_augmented_graph_localization_poses):
    colors = ['r', 'b', 'g']
    position_plotter = vector3d_plotter.Vector3dPlotter(
        'Time (s)', 'Position (m)', 'Graph vs. Sparse Mapping Position', True)
    position_plotter.add_pose_position(sparse_mapping_poses,
                                       linestyle='None',
                                       marker='o',
                                       markeredgewidth=0.1,
                                       markersize=1.5)
    if ar_tag_poses.times:
        position_plotter.add_pose_position(ar_tag_poses,
                                           linestyle='None',
                                           marker='x',
                                           markeredgewidth=0.1,
                                           markersize=1.5)
    position_plotter.add_pose_position(graph_localization_states)
    position_plotter.plot(pdf)

    # orientations
    orientation_plotter = vector3d_plotter.Vector3dPlotter(
        'Time (s)', 'Orientation (deg)',
        'Graph vs. Sparse Mapping Orientation', True)
    orientation_plotter.add_pose_orientation(sparse_mapping_poses,
                                             linestyle='None',
                                             marker='o',
                                             markeredgewidth=0.1,
                                             markersize=1.5)
    if ar_tag_poses.times:
        orientation_plotter.add_pose_orientation(ar_tag_poses,
                                                 linestyle='None',
                                                 marker='x',
                                                 markeredgewidth=0.1,
                                                 markersize=1.5)
    orientation_plotter.add_pose_orientation(graph_localization_states)
    orientation_plotter.plot(pdf)

    # Imu Augmented Loc vs. Loc
    position_plotter = vector3d_plotter.Vector3dPlotter(
        'Time (s)', 'Position (m)', 'Graph vs. IMU Augmented Graph Position',
        True)
    position_plotter.add_pose_position(graph_localization_states,
                                       linestyle='None',
                                       marker='o',
                                       markeredgewidth=0.1,
                                       markersize=1.5)

    position_plotter.add_pose_position(imu_augmented_graph_localization_poses,
                                       linewidth=0.5)
    position_plotter.plot(pdf)

    # orientations
    orientation_plotter = vector3d_plotter.Vector3dPlotter(
        'Time (s)', 'Orientation (deg)',
        'Graph vs. IMU Augmented Graph Orientation', True)
    orientation_plotter.add_pose_orientation(graph_localization_states,
                                             marker='o',
                                             markeredgewidth=0.1,
                                             markersize=1.5)
    orientation_plotter.add_pose_orientation(
        imu_augmented_graph_localization_poses, linewidth=0.5)
    orientation_plotter.plot(pdf)

    # Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(graph_localization_states.velocities,
                                graph_localization_states.times, 'Vel.')
    plt.xlabel('Time (s)')
    plt.ylabel('Velocities')
    plt.title('Graph Velocities')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Integrated Velocities
    position_plotter = vector3d_plotter.Vector3dPlotter(
        'Time (s)', 'Position (m)',
        'Integrated Graph Velocities vs. Sparse Mapping Position', True)
    position_plotter.add_pose_position(sparse_mapping_poses,
                                       linestyle='None',
                                       marker='o',
                                       markeredgewidth=0.1,
                                       markersize=1.5)
    if ar_tag_poses.times:
        position_plotter.add_pose_position(ar_tag_poses,
                                           linestyle='None',
                                           marker='x',
                                           markeredgewidth=0.1,
                                           markersize=1.5)

    integrated_graph_localization_states = utilities.integrate_velocities(
        graph_localization_states)
    position_plotter.add_pose_position(integrated_graph_localization_states)
    position_plotter.plot(pdf)
Пример #6
0
def add_other_vector3d_plots(pdf, imu_augmented_graph_localization_states,
                             sparse_mapping_poses, ar_tag_poses):
    colors = ['r', 'b', 'g']

    # Acceleration
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.accelerations,
        imu_augmented_graph_localization_states.times, 'Acc.')
    plt.xlabel('Time (s)')
    plt.ylabel('Acceleration (m/s^2)')
    plt.title('Acceleration')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Biases
    # Plot Accelerometer Biases on different pages since they can start with quite different
    # values, plotting on the same page will lead to a large y axis scale and hide subtle changes.
    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.accelerometer_biases.xs,
             'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Accelerometer Biases (X)')
    plt.title('Accelerometer Biases (X)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.accelerometer_biases.ys,
             'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Accelerometer Biases (Y)')
    plt.title('Accelerometer Biases (Y)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.accelerometer_biases.zs,
             'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Accelerometer Biases (Z)')
    plt.title('Accelerometer Biases (Z)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.gyro_biases.xs, 'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Gyro Biases (X)')
    plt.title('Gyro Biases (X)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.gyro_biases.ys, 'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Gyro Biases (Y)')
    plt.title('Gyro Biases (Y)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.gyro_biases.zs, 'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Gyro Biases (Z)')
    plt.title('Gyro Biases (Z)')
    pdf.savefig()
    plt.close()

    # Angular Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.angular_velocities,
        imu_augmented_graph_localization_states.times, 'Ang. Vel.')
    plt.xlabel('Time (s)')
    plt.ylabel('Angular Velocities')
    plt.title('Angular Velocities')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.velocities,
        imu_augmented_graph_localization_states.times, 'Vel.')
    plt.xlabel('Time (s)')
    plt.ylabel('Velocities')
    plt.title('IMU Augmented Graph Velocities')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Integrated Velocities
    plt.figure()
    plot_helpers.plot_positions(sparse_mapping_poses,
                                colors,
                                linestyle='None',
                                marker='o',
                                markeredgewidth=0.1,
                                markersize=1.5)
    if ar_tag_poses.times:
        plot_helpers.plot_positions(ar_tag_poses,
                                    colors,
                                    linestyle='None',
                                    marker='x',
                                    markeredgewidth=0.1,
                                    markersize=1.5)
    integrated_imu_augmented_graph_localization_states = utilities.integrate_velocities(
        imu_augmented_graph_localization_states)
    plot_helpers.plot_positions(
        integrated_imu_augmented_graph_localization_states,
        colors,
        linewidth=0.5)
    plt.xlabel('Time (s)')
    plt.ylabel('Position (m)')
    plt.title(
        'Integrated IMU Augmented Graph Velocities vs. Sparse Mapping Position'
    )
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Position covariance
    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             l2_map(
                 imu_augmented_graph_localization_states.position_covariances),
             'r',
             linewidth=0.5,
             label='Position Covariance')
    plt.title('Position Covariance')
    plt.xlabel('Time (s)')
    plt.ylabel('Position Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Orientation covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(
            imu_augmented_graph_localization_states.orientation_covariances),
        'r',
        linewidth=0.5,
        label='Orientation Covariance')
    plt.title('Orientation Covariance (Quaternion)')
    plt.xlabel('Time (s)')
    plt.ylabel('Orientation Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Velocity covariance
    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             l2_map(
                 imu_augmented_graph_localization_states.velocity_covariances),
             'r',
             linewidth=0.5,
             label='Velocity Covariance')
    plt.title('Velocity Covariance')
    plt.xlabel('Time (s)')
    plt.ylabel('Velocity Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Accel Bias covariance
    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             l2_map(imu_augmented_graph_localization_states.
                    accelerometer_bias_covariances),
             'r',
             linewidth=0.5,
             label='Accelerometer Bias Covariance')
    plt.title('Accelerometer Bias Covariance')
    plt.xlabel('Time (s)')
    plt.ylabel('Accelerometer Bias Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Gyro Bias covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(imu_augmented_graph_localization_states.gyro_bias_covariances),
        'r',
        linewidth=0.5,
        label='Gyro Bias Covariance')
    plt.title('Gyro Bias Covariance')
    plt.xlabel('Time (s)')
    plt.ylabel('Gyro Bias Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()
Пример #7
0
def add_graph_plots(
    pdf,
    sparse_mapping_poses,
    ar_tag_poses,
    graph_localization_states,
    imu_augmented_graph_localization_poses,
):
    colors = ["r", "b", "g"]
    position_plotter = vector3d_plotter.Vector3dPlotter(
        "Time (s)", "Position (m)", "Graph vs. Sparse Mapping Position", True)
    position_plotter.add_pose_position(
        sparse_mapping_poses,
        linestyle="None",
        marker="o",
        markeredgewidth=0.1,
        markersize=1.5,
    )
    if ar_tag_poses.times:
        position_plotter.add_pose_position(
            ar_tag_poses,
            linestyle="None",
            marker="x",
            markeredgewidth=0.1,
            markersize=1.5,
        )
    position_plotter.add_pose_position(graph_localization_states)
    position_plotter.plot(pdf)

    # orientations
    orientation_plotter = vector3d_plotter.Vector3dPlotter(
        "Time (s)", "Orientation (deg)",
        "Graph vs. Sparse Mapping Orientation", True)
    orientation_plotter.add_pose_orientation(
        sparse_mapping_poses,
        linestyle="None",
        marker="o",
        markeredgewidth=0.1,
        markersize=1.5,
    )
    if ar_tag_poses.times:
        orientation_plotter.add_pose_orientation(
            ar_tag_poses,
            linestyle="None",
            marker="x",
            markeredgewidth=0.1,
            markersize=1.5,
        )
    orientation_plotter.add_pose_orientation(graph_localization_states)
    orientation_plotter.plot(pdf)

    # Imu Augmented Loc vs. Loc
    position_plotter = vector3d_plotter.Vector3dPlotter(
        "Time (s)", "Position (m)", "Graph vs. IMU Augmented Graph Position",
        True)
    position_plotter.add_pose_position(
        graph_localization_states,
        linestyle="None",
        marker="o",
        markeredgewidth=0.1,
        markersize=1.5,
    )

    position_plotter.add_pose_position(imu_augmented_graph_localization_poses,
                                       linewidth=0.5)
    position_plotter.plot(pdf)

    # orientations
    orientation_plotter = vector3d_plotter.Vector3dPlotter(
        "Time (s)",
        "Orientation (deg)",
        "Graph vs. IMU Augmented Graph Orientation",
        True,
    )
    orientation_plotter.add_pose_orientation(graph_localization_states,
                                             marker="o",
                                             markeredgewidth=0.1,
                                             markersize=1.5)
    orientation_plotter.add_pose_orientation(
        imu_augmented_graph_localization_poses, linewidth=0.5)
    orientation_plotter.plot(pdf)

    # Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(graph_localization_states.velocities,
                                graph_localization_states.times, "Vel.")
    plt.xlabel("Time (s)")
    plt.ylabel("Velocities")
    plt.title("Graph Velocities")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Integrated Velocities
    integrated_graph_localization_states = utilities.integrate_velocities(
        graph_localization_states)
    plot_positions(pdf, integrated_graph_localization_states,
                   sparse_mapping_poses, ar_tag_poses)
Пример #8
0
def add_other_vector3d_plots(pdf, imu_augmented_graph_localization_states,
                             sparse_mapping_poses, ar_tag_poses):
    colors = ["r", "b", "g"]

    # Acceleration
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.accelerations,
        imu_augmented_graph_localization_states.times,
        "Acc.",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Acceleration (m/s^2)")
    plt.title("Acceleration")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Biases
    # Plot Accelerometer Biases on different pages since they can start with quite different
    # values, plotting on the same page will lead to a large y axis scale and hide subtle changes.
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        imu_augmented_graph_localization_states.accelerometer_biases.xs,
        "r",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Accelerometer Biases (X)")
    plt.title("Accelerometer Biases (X)")
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        imu_augmented_graph_localization_states.accelerometer_biases.ys,
        "r",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Accelerometer Biases (Y)")
    plt.title("Accelerometer Biases (Y)")
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        imu_augmented_graph_localization_states.accelerometer_biases.zs,
        "r",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Accelerometer Biases (Z)")
    plt.title("Accelerometer Biases (Z)")
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        imu_augmented_graph_localization_states.gyro_biases.xs,
        "r",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Gyro Biases (X)")
    plt.title("Gyro Biases (X)")
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        imu_augmented_graph_localization_states.gyro_biases.ys,
        "r",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Gyro Biases (Y)")
    plt.title("Gyro Biases (Y)")
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        imu_augmented_graph_localization_states.gyro_biases.zs,
        "r",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Gyro Biases (Z)")
    plt.title("Gyro Biases (Z)")
    pdf.savefig()
    plt.close()

    # Angular Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.angular_velocities,
        imu_augmented_graph_localization_states.times,
        "Ang. Vel.",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Angular Velocities")
    plt.title("Angular Velocities")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.velocities,
        imu_augmented_graph_localization_states.times,
        "Vel.",
    )
    plt.xlabel("Time (s)")
    plt.ylabel("Velocities")
    plt.title("IMU Augmented Graph Velocities")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Integrated Velocities
    plt.figure()
    plot_helpers.plot_positions(
        sparse_mapping_poses,
        colors,
        linestyle="None",
        marker="o",
        markeredgewidth=0.1,
        markersize=1.5,
    )
    if ar_tag_poses.times:
        plot_helpers.plot_positions(
            ar_tag_poses,
            colors,
            linestyle="None",
            marker="x",
            markeredgewidth=0.1,
            markersize=1.5,
        )
    integrated_imu_augmented_graph_localization_states = utilities.integrate_velocities(
        imu_augmented_graph_localization_states)
    plot_helpers.plot_positions(
        integrated_imu_augmented_graph_localization_states,
        colors,
        linewidth=0.5)
    plt.xlabel("Time (s)")
    plt.ylabel("Position (m)")
    plt.title(
        "Integrated IMU Augmented Graph Velocities vs. Sparse Mapping Position"
    )
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Position covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(imu_augmented_graph_localization_states.position_covariances),
        "r",
        linewidth=0.5,
        label="Position Covariance",
    )
    plt.title("Position Covariance")
    plt.xlabel("Time (s)")
    plt.ylabel("Position Covariance")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Orientation covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(
            imu_augmented_graph_localization_states.orientation_covariances),
        "r",
        linewidth=0.5,
        label="Orientation Covariance",
    )
    plt.title("Orientation Covariance (Quaternion)")
    plt.xlabel("Time (s)")
    plt.ylabel("Orientation Covariance")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Velocity covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(imu_augmented_graph_localization_states.velocity_covariances),
        "r",
        linewidth=0.5,
        label="Velocity Covariance",
    )
    plt.title("Velocity Covariance")
    plt.xlabel("Time (s)")
    plt.ylabel("Velocity Covariance")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Accel Bias covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(imu_augmented_graph_localization_states.
               accelerometer_bias_covariances),
        "r",
        linewidth=0.5,
        label="Accelerometer Bias Covariance",
    )
    plt.title("Accelerometer Bias Covariance")
    plt.xlabel("Time (s)")
    plt.ylabel("Accelerometer Bias Covariance")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()

    # Gyro Bias covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(imu_augmented_graph_localization_states.gyro_bias_covariances),
        "r",
        linewidth=0.5,
        label="Gyro Bias Covariance",
    )
    plt.title("Gyro Bias Covariance")
    plt.xlabel("Time (s)")
    plt.ylabel("Gyro Bias Covariance")
    plt.legend(prop={"size": 6})
    pdf.savefig()
    plt.close()
Пример #9
0
def add_other_vector3d_plots(pdf, imu_augmented_graph_localization_states):
    # Acceleration
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.accelerations,
        imu_augmented_graph_localization_states.times, 'Acc.')
    plt.xlabel('Time (s)')
    plt.ylabel('Acceleration (m/s^2)')
    plt.title('Acceleration')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Biases
    # Plot Accelerometer Biases on different pages since they can start with quite different
    # values, plotting on the same page will lead to a large y axis scale and hide subtle changes.
    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.accelerometer_biases.xs,
             'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Accelerometer Biases (X)')
    plt.title('Accelerometer Biases (X)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.accelerometer_biases.ys,
             'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Accelerometer Biases (Y)')
    plt.title('Accelerometer Biases (Y)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.accelerometer_biases.zs,
             'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Accelerometer Biases (Z)')
    plt.title('Accelerometer Biases (Z)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.gyro_biases.xs, 'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Gyro Biases (X)')
    plt.title('Gyro Biases (X)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.gyro_biases.ys, 'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Gyro Biases (Y)')
    plt.title('Gyro Biases (Y)')
    pdf.savefig()
    plt.close()

    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             imu_augmented_graph_localization_states.gyro_biases.zs, 'r')
    plt.xlabel('Time (s)')
    plt.ylabel('Gyro Biases (Z)')
    plt.title('Gyro Biases (Z)')
    pdf.savefig()
    plt.close()

    # Angular Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.angular_velocities,
        imu_augmented_graph_localization_states.times, 'Ang. Vel.')
    plt.xlabel('Time (s)')
    plt.ylabel('Angular Velocities')
    plt.title('Angular Velocities')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Velocity
    plt.figure()
    plot_helpers.plot_vector3ds(
        imu_augmented_graph_localization_states.velocities,
        imu_augmented_graph_localization_states.times, 'Vel.')
    plt.xlabel('Time (s)')
    plt.ylabel('Velocities')
    plt.title('Velocities')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Position covariance
    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             l2_map(
                 imu_augmented_graph_localization_states.position_covariances),
             'r',
             linewidth=0.5,
             label='Position Covariance')
    plt.title('Position Covariance')
    plt.xlabel('Time (s)')
    plt.ylabel('Position Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Orientation covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(
            imu_augmented_graph_localization_states.orientation_covariances),
        'r',
        linewidth=0.5,
        label='Orientation Covariance')
    plt.title('Orientation Covariance (Quaternion)')
    plt.xlabel('Time (s)')
    plt.ylabel('Orientation Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Velocity covariance
    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             l2_map(
                 imu_augmented_graph_localization_states.velocity_covariances),
             'r',
             linewidth=0.5,
             label='Velocity Covariance')
    plt.title('Velocity Covariance')
    plt.xlabel('Time (s)')
    plt.ylabel('Velocity Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Accel Bias covariance
    plt.figure()
    plt.plot(imu_augmented_graph_localization_states.times,
             l2_map(imu_augmented_graph_localization_states.
                    accelerometer_bias_covariances),
             'r',
             linewidth=0.5,
             label='Accelerometer Bias Covariance')
    plt.title('Accelerometer Bias Covariance')
    plt.xlabel('Time (s)')
    plt.ylabel('Accelerometer Bias Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()

    # Gyro Bias covariance
    plt.figure()
    plt.plot(
        imu_augmented_graph_localization_states.times,
        l2_map(imu_augmented_graph_localization_states.gyro_bias_covariances),
        'r',
        linewidth=0.5,
        label='Gyro Bias Covariance')
    plt.title('Gyro Bias Covariance')
    plt.xlabel('Time (s)')
    plt.ylabel('Gyro Bias Covariance')
    plt.legend(prop={'size': 6})
    pdf.savefig()
    plt.close()