Hi Kinova team,
We have successfully implemented low-level position real-time control for the Kinova Gen3 robot arm. Our control pipeline is as follows:
- A high-level controller runs at 10 Hz and continuously updates the desired end-effector pose.
- Using
base.ComputeInverseKinematics(input_IkData), we compute the corresponding desired joint angles.
- These joint angles are sent to a low-level controller running at 1 kHz.
- Before calling
base_cyclic.Refresh(command), we perform necessary interpolation of joint angles to ensure safe actuator execution.
In our experiments, this pipeline works well, and the arm follows the commanded trajectories reliably. We would like to ask two questions:
-
Do you have any comments or suggestions regarding our control pipeline?
Is this method consistent with how you recommend using LOW_LEVEL_SERVOING mode? Are there better or more stable alternatives for low-level position control?
-
Most importantly, we are unable to retrieve base feedback while in LOW_LEVEL_SERVOING mode.
When our high-level controller (running at 10 Hz) attempts to call base_cyclic.RefreshFeedback(), it does not update critical state information, such as the end-effector pose, velocity, external force/torque (wrench), etc. These values, normally available in BaseFeedback, are essential for our robot learning algorithm. Is there any way to retrieve these feedback values?
Thanks for your support and looking forward to your advice!
Hi Kinova team,
We have successfully implemented low-level position real-time control for the Kinova Gen3 robot arm. Our control pipeline is as follows:
base.ComputeInverseKinematics(input_IkData), we compute the corresponding desired joint angles.base_cyclic.Refresh(command), we perform necessary interpolation of joint angles to ensure safe actuator execution.In our experiments, this pipeline works well, and the arm follows the commanded trajectories reliably. We would like to ask two questions:
Do you have any comments or suggestions regarding our control pipeline?
Is this method consistent with how you recommend using
LOW_LEVEL_SERVOINGmode? Are there better or more stable alternatives for low-level position control?Most importantly, we are unable to retrieve base feedback while in
LOW_LEVEL_SERVOINGmode.When our high-level controller (running at 10 Hz) attempts to call
base_cyclic.RefreshFeedback(), it does not update critical state information, such as the end-effector pose, velocity, external force/torque (wrench), etc. These values, normally available in BaseFeedback, are essential for our robot learning algorithm. Is there any way to retrieve these feedback values?Thanks for your support and looking forward to your advice!