-
Notifications
You must be signed in to change notification settings - Fork 85
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
Torque sensing #13
Comments
The torque on the joint in Newton meters (Τ) is the difference between the STEPPER_ANGLE and the MEASURED_ANGLE (Δ θ), times a "stiffness" constant (k) in Newton meters / degree. Τ = k ⋅ Δθ The STEPPER_ANGLE corresponds to the Move all Joints command in DDE. Using the BASE (Joint 1) as an example, is BASE_POSITION_AT + BASE_POSITION_PID_DELTA + BASE_POSITION_FORCE_DELTA + PLAYBACK_BASE_POSITION + FINE_ADJUST_BASE. FINE_ADJUST_BASE is a value that we set in via DexRun BASE_MEASURED_ANGLE will be returned in place of PLAYBACK_BASE_POSITION. |
It is critical to understand that the output of the PID is NOT a drive "strength" signal as one might have with a PWM output to a DC motor drive or a ESC driving a BLDC motor. The output is some number of step pulses per second telling the stepper motor to move to a new location, which then applies force to correct the error. The "_DELTA" positions are always going to be run all the way to zero if the stepper driver has the strength to do so. There is NO remaining error, unlike what there would be in a more traditional PID servo system using only the P term. |
Note: Ensure FPGA address 78 bit0 is ZERO via the write oplet to allow the PID_DELTA values to change and indicate how much corrective position adjustment is being applied. If we know how much it has corrected to hold position, we can calculate the torque. |
The gateware added the ability to read the step angles on the "Step Angle" branch, and that was merged into the the "Stable_Conedrive" branch which will be the next standard. An example job showing how to use this should be added here, and then this issue can be closed as soon as the new branch is in production. |
This example shows a method of measuring torques and forces with Dexter from DDE -As of now Dexter's joints can only measure total torque which will include the contribution of robot's own weight and accelerations. -The torque measurement assumes that the torque calibration done at one angle holds true for all angles. A proposed solution to this would be to calibrate the robot's J2, J3, and J4 encoders with the robot on its side so that these joints are not affected by gravity. Right now if J2 was 90 degrees and everything else was at 0 the robot would report 0 torque for J2. |
Added a new setting for the stiffness of each joint:
Example entry from Defaults.make_ins:
|
Kamino cloned this issue to HaddingtonDynamics/OCADO |
If we know the stepper angle (meaning the angle the stepper motor has been told to go), as well as the actually measured angle #12 and there is little to no mechanical backlash #7 then we can accurately measure the torque on each joint. This can give Dexter an accurate sense of touch, which allows sensing collisions, the location of the workspace, and other objects.
Even now, we could move to a point, zero out the error, then move to another point, and watch the error until it exceeds a threshold, indicating a contact. If the two points are fairly close together, backlash, changes in gravitational pull and other issues are unlikely to influence the feedback.
The text was updated successfully, but these errors were encountered: