Files

73 lines
2.4 KiB
Python

import csv
import matplotlib.pyplot as plotter
base_path = "/home/caperren/catkin_ws/src/rob456_hw3/logging_outputs"
odom_path = base_path + "/" + "odomlogfile.txt"
slam_path = base_path + "/" + "slamlogfile.txt"
if __name__ == '__main__':
odom_file = open(odom_path, "r")
slam_path = open(slam_path, "r")
odom_csv = csv.reader(odom_file, delimiter=',')
slam_csv = csv.reader(slam_path, delimiter=',')
odom_time = []
odom_x_error = []
odom_y_error = []
odom_theta_error = []
for line in odom_csv:
odom_time.append(line[0])
odom_x_error.append(line[1])
odom_y_error.append(line[2])
odom_theta_error.append(line[3])
slam_time = []
slam_x_error = []
slam_y_error = []
slam_theta_error = []
for line in slam_csv:
slam_time.append(line[0])
slam_x_error.append(line[1])
slam_y_error.append(line[2])
slam_theta_error.append(line[3])
# Plot for odometry
figure_object_odom, axes_object_odom = plotter.subplots()
axes_object_odom.plot(odom_time, odom_x_error, label="X Error")
axes_object_odom.plot(odom_time, odom_y_error, label="Y Error")
axes_theta = axes_object_odom.twinx()
axes_theta.plot(odom_time, odom_theta_error, label="Theta Error", color="r")
axes_theta.legend()
axes_object_odom.set_title("Odometery Error Graphs")
axes_object_odom.set_xlabel("Time")
axes_object_odom.set_ylabel("Error")
axes_object_odom.legend(loc=4)
axes_object_odom.autoscale(enable=True, axis='x', tight=True)
figure_object_odom.savefig("odom_error_graphs.pdf", bbox_inches="tight")
# Plot for slam
figure_object_slam, axes_object_slam = plotter.subplots()
axes_object_slam.plot(slam_time, slam_x_error, label="X Error")
axes_object_slam.plot(slam_time, slam_y_error, label="Y Error")
axes_theta = axes_object_slam.twinx()
axes_theta.plot(slam_time, slam_theta_error, label="Theta Error", color="r")
axes_theta.legend()
# axes_theta.plot(slam_time, slam_theta_error, label="Theta Error")
axes_object_slam.set_title("Slam Error Graphs")
axes_object_slam.set_xlabel("Time")
axes_object_slam.set_ylabel("Error")
axes_object_slam.legend(loc=4)
axes_object_slam.autoscale(enable=True, axis='x', tight=True)
figure_object_slam.savefig("slam_error_graphs.pdf", bbox_inches="tight")
plotter.show()