Skip to content

Commit 0d5a29e

Browse files
committed
More version checks
1 parent d37f211 commit 0d5a29e

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

resources/external_control.urscript

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -688,12 +688,14 @@ end
688688
thread PDControlThread():
689689
while control_mode == MODE_PD_CONTROLLER_JOINT or control_mode == MODE_PD_CONTROLLER_TASK:
690690
local q_err = cmd_servo_q - get_actual_joint_positions()
691-
local tau = pd_controller_gains.kp * q_err - pd_controller_gains.kd * get_actual_joint_speeds()
692-
tau = clamp_array(tau, max_joint_torques)
693691
{% if ROBOT_SOFTWARE_VERSION >= v5.23.0 %}
694692
{% if ROBOT_SOFTWARE_VERSION < v6.0.0 %}
693+
local tau = pd_controller_gains.kp * q_err - pd_controller_gains.kd * get_actual_joint_speeds()
694+
tau = clamp_array(tau, max_joint_torques)
695695
torque_command(tau, friction_comp=friction_compensation_enabled)
696696
{% elif ROBOT_SOFTWARE_VERSION >= v10.10.0 %}
697+
local tau = pd_controller_gains.kp * q_err - pd_controller_gains.kd * get_actual_joint_speeds()
698+
tau = clamp_array(tau, max_joint_torques)
697699
torque_command(tau, friction_comp=friction_compensation_enabled)
698700
{% else %}
699701
popup("Torque control is only supported from software 10.10.0 and upwards.", error=True, blocking=True)
@@ -780,8 +782,10 @@ thread script_commands():
780782
friction_compensation_enabled = True
781783
end
782784
elif command == SET_PD_CONTROLLER_GAINS:
785+
{% if ROBOT_SOFTWARE_VERSION > v5.10.0 %}
783786
pd_controller_gains.kp = [raw_command[2] / MULT_jointstate, raw_command[3] / MULT_jointstate, raw_command[4] / MULT_jointstate, raw_command[5] / MULT_jointstate, raw_command[6] / MULT_jointstate, raw_command[7] / MULT_jointstate]
784787
pd_controller_gains.kd = [raw_command[8] / MULT_jointstate, raw_command[9] / MULT_jointstate, raw_command[10] / MULT_jointstate, raw_command[11] / MULT_jointstate, raw_command[12] / MULT_jointstate, raw_command[13] / MULT_jointstate]
788+
{% endif %}
785789
elif command == SET_MAX_JOINT_TORQUES:
786790
max_joint_torques = [raw_command[2] / MULT_jointstate, raw_command[3] / MULT_jointstate, raw_command[4] / MULT_jointstate, raw_command[5] / MULT_jointstate, raw_command[6] / MULT_jointstate, raw_command[7] / MULT_jointstate]
787791
end

src/ur/ur_driver.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,15 @@ void UrDriver::init(const UrDriverConfiguration& config)
147147

148148
const control::PDControllerGains pd_gains = control::getPdGainsFromRobotType(robot_type);
149149
std::stringstream pd_gains_ss;
150-
pd_gains_ss << "struct(kp=" << pd_gains.kp << ", kd=" << pd_gains.kd << ")";
150+
if (robot_version_.major == 5 && robot_version_.minor < 10)
151+
{
152+
// Structs are only available in URScript 5.10 and later. It isn't used pre 5.23, so we can safely set it to 0.
153+
pd_gains_ss << 0;
154+
}
155+
else
156+
{
157+
pd_gains_ss << "struct(kp=" << pd_gains.kp << ", kd=" << pd_gains.kd << ")";
158+
}
151159
data[PD_CONTROLLER_GAINS_REPLACE] = pd_gains_ss.str();
152160

153161
std::stringstream max_torques_ss;

0 commit comments

Comments
 (0)