NVlabs / curobo

CUDA Accelerated Robot Library
https://curobo.org
Other
796 stars 125 forks source link

Add use_link_poses to motion_gen warmup #266

Open tylerlum opened 6 months ago

tylerlum commented 6 months ago

Related to Issue #264. View that for more detail. This is one suggested solution, but it is a breaking change because it changes the default behavior of warmup for certain cases. However, there is certainly a need for this type of change so that warmup works when we have link_poses to use

At a high level, motion_gen.warmup results in breaking cuda graph when using link_poses when planning with plan_batch

balakumar-s commented 6 months ago

This might also need an argument to specify which links to omit.

Instead if you want to only plan for end-effector, you should load the robot yaml file and then set robot_dict['robot_cfg']['kinematics']['link_names']=None.

Is there a situation where changing the robot_dict will not work?

tylerlum commented 6 months ago

I see. I believe that should work. Are you suggesting that we don't add the use_link_poses argument, and just always pass in link_poses to all plan_*? And then the user can control if they want to actually use link_poses by modifying robot_dict['robot_cfg']['kinematics']['link_names'] (eg. set it to None or ["palm", "fingertip"] or leave as is)?

I think this suggestion works, but it would be very helpful to have 1 tutorial page and/or getting started example that shows how to use link_poses and shows exactly how link_names is connected to link_poses. If it's not documented, then the dict modifications you describe will be very non-obvious and could result in frustrating "break cuda graph" errors