Skip to main content

BC03 4DoF, 1 Sphere, PN++ SVD Pointwise 6D flow, ee2flow, 100 demos

Finally moving towards 4D manipulation. NOTE: will also put some ablations here. This will focus on 6D flow, to be clear.
Created on May 19|Last edited on June 13


6D Flow Introduction

To clarify, we are learning from 4DoF data v04 using the older version. "bc_data_dir": "/data/dseita/softgym_mm/data_demo/MMOneSphere_v01_BClone_filtered_ladle_algorithmic_v04_nVars_2000_obs_combo_act_translation_axis_angle",
We are testing these things:
  • (Group 1) 5X runs with PN++ SVD Pointwise with 6D Flow, using ee2flow to handle the action repeat issue, without the Brian/Chuer consistency loss.
  • (Group 2) 5X runs with PN++ SVD Pointwise with 6D Flow, using ee2flow to handle the action repeat issue, WITH the Brian/Chuer consistency loss.
  • Use SVD_POINTWISE_6D_EE2FLOW_SVD in our configuration file.
  • These do not have separate MLPs for the translation and rotation, the only thing that does the decoupling is thus the last layer.
  • NOTE: the flow visualizations will only contain translation information. We have 6D flow but are using the first 3 dimensions for visualization purposes, so we are missing the rotational portion.
(05/27/2022) we now have results with "separate MLPs" for translation and rotation. These experiments were run 05/22/2022 and 05/23/2022:
  • (Group 3) 5X with 6D flow, without consistency.
  • (Group 4) 5X with 6D flow, with consistency.
These are looking very good! See results / GIFs below. Actually as of 06/02/2022 I'd avoid focusin on the "separate MLPs" since the results don't seem that different.
(06/03/2022) More ablations!
  • (Group 5) Running 5X on the cluster, 6D Tool Flow and SVD, MSe afteer SVD, with consistency loss. See the bottom of the report for more.

Quick Results


4DoF, no consistency
5
4DoF, consistency
5
4DoF, no consistency, separate MLPs
5
4DoF, consistency, separate MLPs
5


Results (without consistency)

These are looking way better than I expected! The learned policy is often able to cleanly rotate back to the ladle's neutral position (the one it begins with).






Results (with consistency)

The 5 seeds, after 300 each. Failures tend to be when the ball ends up stuck (also kind of unavoidable. Even then some failures are just because of the ball falling out. I was hoping we can frame this in terms of an assistive feeding task where we have to get the right "angle" ... and thus this method does quite well at it? I wish there was a highly natural way to get this data.




The above didn't do that well, but again, could have been due to issues with the physics (but we filter those starting states... right).
I like the below one, though. :)





Results, Ablation: 6D Tool Flow and SVD, MSE after SVD (with Consistency)

Note: the consistency makes sense here as that is applied per-point, while the SVD (and later MSE) is something that compresses the signals.
SVD_6D_FLOW_EEPOSE_MSE_LOSS = dict(
obs_type='point_cloud',
act_type='eepose',
encoder_type='pointnet_svd_6d_flow_mse_loss',
method_flow2act='svd', # this should be a duplicate of the forward pass
use_consistency_loss=True, # actually this makes sense to use
lambda_consistency=0.1,
scale_targets=True,
lambda_pos=1.0,
lambda_rot=100.0, # 100 for MixedMedia, 1 for PourWater?
)
Compare that with the 'proposed method':
# 6D flow, but using SVD to extract actions, learning from >= 4DoF demos.
# As of 06/01/2022 this is serving as our 'proposed' method, WITH the
# consistency loss and WITHOUT the separate MLPs for (R,t).
SVD_POINTWISE_6D_EE2FLOW_SVD = dict(
obs_type='point_cloud',
act_type='ee2flow',
encoder_type='pointnet_svd_pointwise_6d_flow',
method_flow2act='svd',
use_consistency_loss=True,
lambda_consistency=0.1,
scale_pcl_flow=True,
scale_pcl_val=250,
separate_MLPs_R_t=False,
)

6D Tool Flow SVD, MSE after SVD (w/Consistency)
5
6D Tool Flow SVD, Pointwise after SVD (w/Consistency)
5