Skip to content

Clarification: does the LogoPlanner startgoal Isaac simulation evaluation use simulator GT pose for MPC tracking? #112

Description

@mhqin1018

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

  1. LoGoPlanner policy/server does not use GT pose as input.
  2. The released Isaac simulation evaluator does use simulator GT pose for low-level MPC tracking.
  3. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions