Definition
set_force_factor(force_factor, time)
Features
In force control, This function sets the force factor based on the global coordinate (refer to set_ref_coord())
Caution
In non-FTS models (A0509, A0912, A0509F, A0912F, E0509), compliance control is only possible in the translation direction, and the control error may be large.
Parameters
|
Parameter Name |
Data Type |
Default Value |
Description |
|---|---|---|---|
|
force_factor |
float[6] |
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0] |
(Translation x, y, z), (Rotation x, y, z) Range: 0.1 - 2.0 |
|
time |
float |
0 |
Force factor varying time [sec] Range: 0 - 1.0 * Linear transition during the specified time |
Caution
In the Non-FTS A & E model, the data type of the force_factor parameter can be either float[6] or float[3] (rotational parameter is automatically set to the default value)
Note
-
When the force factor is set to the default value (1.0), it operates with the default control gain set according to the model.
-
Setting the force factor below 1.0 lowers the response to external force, so it takes longer to reach the target force and vibration is reduced.
-
Setting the force factor above 1.0 raises the response to external force, so the target force is reached faster, but vibration may occur.
-
The force factor can be set only in force control. Once set, it is applied to all axes, both the force-controlled direction and the compliant directions. A call made while only compliance control is active is rejected.
Warning
-
If the force factor is set to greater than 1.0, the robot may vibrate depending on the contact surface. Please use it carefully.
Return
|
Value |
Description |
|---|---|
|
0 |
Success |
|
Negative value |
Error |
Exception
|
Exception |
Description |
|---|---|
|
DR_Error (DR_ERROR_TYPE) |
Parameter data type error occurred |
|
DR_Error (DR_ERROR_VALUE) |
Parameter value is invalid |
|
DR_Error (DR_ERROR_RUNTIME) |
C extension module error occurred |
|
DR_Error (DR_ERROR_STOP) |
Program terminated forcefully |
Example
# Example #1
# Using the force factor alone (set in force control, applied to all axes: force-controlled and compliant directions)
# 1. Move to initial posj
q0 = posj(0.0, 0.0, 90.0, 0.0, 90.0, 0.0)
set_velj(30.0)
set_accj(60.0)
movej(q0)
# 2. Start force control (apply -20N force along Base -z direction, with a contact object below)
k_d = [3000.0, 3000.0, 3000.0, 200.0, 200.0, 200.0]
task_compliance_ctrl(k_d)
force_desired = 20.0
f_d = [0.0, 0.0, -force_desired, 0.0, 0.0, 0.0]
f_dir = [0, 0, 1, 0, 0, 0]
set_desired_force(f_d, f_dir)
# 3. Set the force factor
f_f = [0.8, 0.8, 0.8, 0.8, 0.8, 0.8]
set_force_factor(f_f)
wait(2.0)
release_force()
wait(0.5)
release_compliance_ctrl()
# Example #2
# Using with the damping factor (set_damping_factor)
# Set the damping factor after starting compliance control, and the force factor after starting force control
# 1. Move to initial posj
q0 = posj(0.0, 0.0, 90.0, 0.0, 90.0, 0.0)
set_velj(30.0)
set_accj(60.0)
movej(q0)
# 2. Set the damping factor after starting compliance control
k_d = [3000.0, 3000.0, 3000.0, 200.0, 200.0, 200.0]
task_compliance_ctrl(k_d)
d_f = [1.5, 1.5, 1.5, 1.5, 1.5, 1.5]
set_damping_factor(d_f)
# 3. Start force control and set the force factor (apply -20N force along Base -z direction, with a contact object below)
force_desired = 20.0
f_d = [0.0, 0.0, -force_desired, 0.0, 0.0, 0.0]
f_dir = [0, 0, 1, 0, 0, 0]
set_desired_force(f_d, f_dir)
f_f = [0.8, 0.8, 0.8, 0.8, 0.8, 0.8]
set_force_factor(f_f)
wait(2.0)
release_force()
wait(0.5)
release_compliance_ctrl()
Related commands
Keyword
set / force / factor / set_ / set_force / force_factor