Hi, thanks for releasing LoGoPlanner and the NavDP benchmark.
I want to clarify the simulation evaluation protocol. The paper/project page describes LoGoPlanner as using implicit localization without an
external localization/odometry module. From the released code, I agree that the LoGoPlanner policy/server itself does not seem to take GT pose
as input.
Policy/server side
logoplanner_server.py only receives goal/RGB/depth and returns trajectories:
goal_data = json.loads(request.form.get('goal_data'))
image_file = request.files['image']
depth_file = request.files['depth']
execute_trajectory, all_trajectory, all_values, trajectory_mask, sub_pointgoal_pd = \
logoplanner_navigator.step_pointgoal(goal, image, depth)
return jsonify({
'trajectory': execute_trajectory.tolist(),
'all_trajectory': all_trajectory.tolist(),
'all_values': all_values.tolist(),
'sub_pointgoal_pd': sub_pointgoal_pd.tolist()
})
Isaac simulation evaluator side
In eval_startgoal_wheeled.py, the low-level MPC tracker appears to use simulator GT pose as feedback. x0 is built from Isaac camera/root state:
camera_pos = env.unwrapped.scene.sensors['camera_sensor'].data.pos_w.cpu().numpy()
camera_rot_quat = env.unwrapped.scene.sensors['camera_sensor'].data.quat_w_world.cpu().numpy()
camera_rot = R.from_quat(camera_rot_quat[:, [1, 2, 3, 0]]).as_matrix()
robot_vel = env.unwrapped.scene.articulations['robot'].data.root_lin_vel_w[0, :2].norm().cpu().numpy()
robot_ang_vel = env.unwrapped.scene.articulations['robot'].data.root_ang_vel_w[0, 2].cpu().numpy()
x0 = np.stack([
camera_pos[:, 0],
camera_pos[:, 1],
np.arctan2(camera_rot[:, 1, 0], camera_rot[:, 0, 0]),
[robot_vel],
[robot_ang_vel],
], axis=-1)
Then this state is passed to MPC:
opt_u_controls, opt_x_states = mpc.solve(x0[i, :3])
And tracking_utils.py sets it as the MPC initial state:
self.opti.set_value(self.opt_x0, x00)
My understanding
- LoGoPlanner policy/server does not use GT pose as input.
- The released Isaac simulation evaluator does use simulator GT pose for low-level MPC tracking.
- This GT feedback may correct tracking/odometry errors during simulation, even though it is not part of the policy input.
Could you clarify whether the reported simulation results use this GT-pose MPC feedback?
Thanks.
Hi, thanks for releasing LoGoPlanner and the NavDP benchmark.
I want to clarify the simulation evaluation protocol. The paper/project page describes LoGoPlanner as using implicit localization without an
external localization/odometry module. From the released code, I agree that the LoGoPlanner policy/server itself does not seem to take GT pose
as input.
Policy/server side
logoplanner_server.pyonly receives goal/RGB/depth and returns trajectories:Isaac simulation evaluator side
In
eval_startgoal_wheeled.py, the low-level MPC tracker appears to use simulator GT pose as feedback. x0 is built from Isaac camera/root state:Then this state is passed to MPC:
And tracking_utils.py sets it as the MPC initial state:
My understanding
Could you clarify whether the reported simulation results use this GT-pose MPC feedback?
Thanks.