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

[FEATURE] setJointStiffness() #34

Closed
acf986 opened this issue Oct 6, 2023 · 9 comments · Fixed by #72
Closed

[FEATURE] setJointStiffness() #34

acf986 opened this issue Oct 6, 2023 · 9 comments · Fixed by #72
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@acf986
Copy link

acf986 commented Oct 6, 2023

Is your feature request related to a problem? Please describe.
Would like to introduce some mechanical compliance during the joint control mode.

Describe the solution you'd like
Add a setJointStiffness() API similarly to the current setCartesianStiffness()

Describe alternatives you've considered
NA

Additional context
NA

@acf986 acf986 added the enhancement New feature or request label Oct 6, 2023
@pzhu-flexiv
Copy link
Collaborator

pzhu-flexiv commented Oct 7, 2023

@acf986 Joint position control is purely rigid joint control and cannot set stiffness. Joint torque control is using flexible joint, the stiffness can be changed to whatever values per your own joint impedance control implementation. For how to implement a joint impedance controller, please see https://github.com/flexivrobotics/flexiv_rdk/blob/main/example/intermediate2_realtime_joint_torque_control.cpp.

Simply change k_impedanceKp and k_impedanceKd to tailor the joint impedance behavior to your need.

@acf986
Copy link
Author

acf986 commented Oct 7, 2023

@pzhu-flexiv Thanks very much for your fast response.
The example given above requires a realtime loop to control the robot arm through the streamJointTorque() interface.
However, in many situations of a service industry, it is also nice to have access to a joint impedance controller through a non-realtime method (like sendJointPosition()).

@pzhu-flexiv
Copy link
Collaborator

@acf986 I see, I will talk to our product team to evaluate this feature. Thanks for the bringing it up.

@acf986
Copy link
Author

acf986 commented Nov 9, 2023

@pzhu-flexiv, even in RealTime mode, it would be very helpful to have a joint compliance mode that does not use the torque streaming interface.
Because when streaming torque command, the stability of the controller is easily affected by the communication delay. However, if we stream a joint angle command instead of the torque command (in other words, the joint space close loop control is done inside the QNX computer), the stability will be less affected by the delay.

@pzhu-flexiv
Copy link
Collaborator

@acf986 The introduction of this new control mode is confirmed to be included in release v1.4, which should happen in June.

@smeng9
Copy link

smeng9 commented Apr 18, 2024

@pzhu-flexiv Will this also be available as a primitive? So we can perform different joint stiffness level in primitive commands like MoveJComp ?

@pzhu-flexiv
Copy link
Collaborator

@smeng9 For now there's no plan for a joint impedance primitive. You need to use the RDK API instead.

@gohlaysiong
Copy link

python err

the python example run into error on "import flexivsdk " using visual studio code on window pc.

@pzhu-flexiv
Copy link
Collaborator

@gohlaysiong Please open a new issue report and post the complete error log.

@pzhu-flexiv pzhu-flexiv added this to the v1.4 milestone Jun 25, 2024
@pzhu-flexiv pzhu-flexiv linked a pull request Jul 15, 2024 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants