visualize predicted pose result vs. gt pose
(vis_info)
| 31 | return tuple(g_filtered) |
| 32 | |
| 33 | def vis_pose(vis_info): |
| 34 | ''' |
| 35 | visualize predicted pose result vs. gt pose |
| 36 | ''' |
| 37 | pdb.set_trace() |
| 38 | pose = vis_info['pose'] |
| 39 | pose_gt = vis_info['pose_gt'] |
| 40 | theta = vis_info['theta'] |
| 41 | ang_threshold=10 |
| 42 | seq_num = theta.shape[0] |
| 43 | # # create figure object |
| 44 | # plot translation traj. |
| 45 | fig = plt.figure(figsize = (8,6)) |
| 46 | plt.subplots_adjust(left=0, bottom=0, right=1, top=1) |
| 47 | ax1 = fig.add_axes([0, 0.2, 0.9, 0.85], projection='3d') |
| 48 | ax1.scatter(pose[10:,0],pose[10:,1],zs=pose[10:,2], c='r', s=3**2,depthshade=0) # predict |
| 49 | ax1.scatter(pose_gt[:,0], pose_gt[:,1], zs=pose_gt[:,2], c='g', s=3**2,depthshade=0) # GT |
| 50 | ax1.scatter(pose[0:10,0],pose[0:10,1],zs=pose[0:10,2], c='k', s=3**2,depthshade=0) # predict |
| 51 | # ax1.plot(pose[:,0],pose[:,1],zs=pose[:,2], c='r') # predict |
| 52 | # ax1.plot(pose_gt[:,0], pose_gt[:,1], zs=pose_gt[:,2], c='g') # GT |
| 53 | ax1.view_init(30, 120) |
| 54 | ax1.set_xlabel('x (m)') |
| 55 | ax1.set_ylabel('y (m)') |
| 56 | ax1.set_zlabel('z (m)') |
| 57 | # ax1.set_xlim(-10, 10) |
| 58 | # ax1.set_ylim(-10, 10) |
| 59 | # ax1.set_zlim(-10, 10) |
| 60 | |
| 61 | ax1.set_xlim(-1, 1) |
| 62 | ax1.set_ylim(-1, 1) |
| 63 | ax1.set_zlim(-1, 1) |
| 64 | |
| 65 | # ax1.set_xlim(-3, 3) |
| 66 | # ax1.set_ylim(-3, 3) |
| 67 | # ax1.set_zlim(-3, 3) |
| 68 | |
| 69 | # plot angular error |
| 70 | ax2 = fig.add_axes([0.1, 0.05, 0.75, 0.2]) |
| 71 | err = theta.reshape(1, seq_num) |
| 72 | err = np.tile(err, (20, 1)) |
| 73 | ax2.imshow(err, vmin=0,vmax=ang_threshold, aspect=3) |
| 74 | ax2.set_yticks([]) |
| 75 | ax2.set_xticks([0, seq_num*1/5, seq_num*2/5, seq_num*3/5, seq_num*4/5, seq_num]) |
| 76 | fname = './vis_pose.png' |
| 77 | plt.savefig(fname, dpi=50) |
| 78 | |
| 79 | def compute_error_in_q(args, dl, model, device, results, batch_size=1): |
| 80 | use_SVD=True # Turn on for Direct-PN and Direct-PN+U reported result, despite it makes minuscule differences |
nothing calls this directly
no outgoing calls
no test coverage detected