Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Request to Natively Support PID Joint Controllers in SAPIEN #178

Open
dwaitbhatt opened this issue Oct 26, 2024 · 1 comment
Open

Request to Natively Support PID Joint Controllers in SAPIEN #178

dwaitbhatt opened this issue Oct 26, 2024 · 1 comment

Comments

@dwaitbhatt
Copy link

Currently, SAPIEN only provides a PD joint controller. While using ManiSkill for manipulation tasks, I've often encountered steady-state errors while setting joint angles, particularly noticeable with common edge cases for gripper control (for example, after a collision which forces joint angles to go out of limits). Although there's a basic PID implementation example in the documentation, having native, optimized PID controller support would help improve accuracy and stability in manipulation tasks, and enhance the overall control capabilities of SAPIEN-based robotics libraries.

@fbxiang
Copy link
Collaborator

fbxiang commented Oct 26, 2024

I actually did some investigations on this topic.
The built-in PD controller relies o PhysX's constraint solver, and thus it is more stable than a hand-written explicit PD. A "built-in" PID with similar stability to the PD can be best achieved by accumulating error on the user end and modifying target position based on the error (modify the position target by accu_err * Ki/Kp). An end user should be able to implement this algorithm, so I think it is more suitable for a downstream library to implement this feature to keep SAPIEN simple. I can look into adding it to ManiSkill in the future. For now, I think you can modify your codebase based on the suggestions above.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants