mirror of
https://gitlab.com/obbart/universal_robots_ros_driver.git
synced 2026-04-10 01:50:46 +02:00
extrapolate on missing packages
This commit is contained in:
@@ -46,39 +46,54 @@ def myProg():
|
|||||||
textmsg("steptime=", steptime)
|
textmsg("steptime=", steptime)
|
||||||
MULT_jointstate = {{JOINT_STATE_REPLACE}}
|
MULT_jointstate = {{JOINT_STATE_REPLACE}}
|
||||||
|
|
||||||
|
SERVO_UNINITIALIZED = -1
|
||||||
SERVO_IDLE = 0
|
SERVO_IDLE = 0
|
||||||
SERVO_RUNNING = 1
|
SERVO_RUNNING = 1
|
||||||
cmd_servo_state = SERVO_IDLE
|
cmd_servo_state = SERVO_UNINITIALIZED
|
||||||
cmd_servo_q = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
|
cmd_servo_q = get_actual_joint_positions()
|
||||||
|
cmd_servo_q_last = get_actual_joint_positions()
|
||||||
def set_servo_setpoint(q):
|
def set_servo_setpoint(q):
|
||||||
enter_critical
|
enter_critical
|
||||||
cmd_servo_state = SERVO_RUNNING
|
cmd_servo_state = SERVO_RUNNING
|
||||||
|
cmd_servo_q_last = cmd_servo_q
|
||||||
cmd_servo_q = q
|
cmd_servo_q = q
|
||||||
exit_critical
|
exit_critical
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def extrapolate():
|
||||||
|
enter_critical
|
||||||
|
diff = [cmd_servo_q[0] - cmd_servo_q_last[0], cmd_servo_q[1] - cmd_servo_q_last[1], cmd_servo_q[2] - cmd_servo_q_last[2], cmd_servo_q[3] - cmd_servo_q_last[3], cmd_servo_q[4] - cmd_servo_q_last[4], cmd_servo_q[5] - cmd_servo_q_last[5]]
|
||||||
|
cmd_servo_q_last = cmd_servo_q
|
||||||
|
cmd_servo_q = [cmd_servo_q[0] + diff[0], cmd_servo_q[1] + diff[1], cmd_servo_q[2] + diff[2], cmd_servo_q[3] + diff[3], cmd_servo_q[4] + diff[4], cmd_servo_q[5] + diff[5]]
|
||||||
|
exit_critical
|
||||||
|
|
||||||
|
return cmd_servo_q
|
||||||
|
end
|
||||||
|
|
||||||
thread servoThread():
|
thread servoThread():
|
||||||
state = SERVO_IDLE
|
state = SERVO_IDLE
|
||||||
while True:
|
while True:
|
||||||
enter_critical
|
enter_critical
|
||||||
q = cmd_servo_q
|
q = cmd_servo_q
|
||||||
do_brake = False
|
do_extrapolate = False
|
||||||
if (state == SERVO_RUNNING) and (cmd_servo_state == SERVO_IDLE):
|
if (cmd_servo_state == SERVO_IDLE):
|
||||||
do_brake = True
|
do_extrapolate = True
|
||||||
end
|
end
|
||||||
state = cmd_servo_state
|
state = cmd_servo_state
|
||||||
cmd_servo_state = SERVO_IDLE
|
cmd_servo_state = SERVO_IDLE
|
||||||
exit_critical
|
exit_critical
|
||||||
if do_brake:
|
if do_extrapolate:
|
||||||
textmsg("No new setpoint received. Stopping robot.")
|
textmsg("No new setpoint received. Extrapolating.")
|
||||||
stopj(1.0)
|
q = extrapolate()
|
||||||
sync()
|
servoj(q, t=steptime, {{SERVO_J_REPLACE}})
|
||||||
elif state == SERVO_RUNNING:
|
elif state == SERVO_RUNNING:
|
||||||
servoj(q, t=steptime, {{SERVO_J_REPLACE}})
|
servoj(q, t=steptime, {{SERVO_J_REPLACE}})
|
||||||
else:
|
else:
|
||||||
|
textmsg("Should not be here")
|
||||||
sync()
|
sync()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
stopj(0.1)
|
||||||
end
|
end
|
||||||
socket_open("{{SERVER_IP_REPLACE}}", {{SERVER_PORT_REPLACE}}, "reverse_socket")
|
socket_open("{{SERVER_IP_REPLACE}}", {{SERVER_PORT_REPLACE}}, "reverse_socket")
|
||||||
|
|
||||||
@@ -87,7 +102,7 @@ def myProg():
|
|||||||
params_mult = socket_read_binary_integer(6+1, "reverse_socket")
|
params_mult = socket_read_binary_integer(6+1, "reverse_socket")
|
||||||
keepalive = params_mult[7]
|
keepalive = params_mult[7]
|
||||||
while keepalive > 0:
|
while keepalive > 0:
|
||||||
params_mult = socket_read_binary_integer(6+1, "reverse_socket", 0.012)
|
params_mult = socket_read_binary_integer(6+1, "reverse_socket", steptime)
|
||||||
if params_mult[0] > 0:
|
if params_mult[0] > 0:
|
||||||
keepalive = params_mult[7]
|
keepalive = params_mult[7]
|
||||||
q = [params_mult[1] / MULT_jointstate, params_mult[2] / MULT_jointstate, params_mult[3] / MULT_jointstate, params_mult[4] / MULT_jointstate, params_mult[5] / MULT_jointstate, params_mult[6] / MULT_jointstate]
|
q = [params_mult[1] / MULT_jointstate, params_mult[2] / MULT_jointstate, params_mult[3] / MULT_jointstate, params_mult[4] / MULT_jointstate, params_mult[5] / MULT_jointstate, params_mult[6] / MULT_jointstate]
|
||||||
@@ -96,9 +111,7 @@ def myProg():
|
|||||||
# TODO: Extrapolation goes here
|
# TODO: Extrapolation goes here
|
||||||
keepalive = keepalive - 1
|
keepalive = keepalive - 1
|
||||||
end
|
end
|
||||||
sync()
|
|
||||||
end
|
end
|
||||||
stopj(1.0)
|
|
||||||
sleep(.1)
|
sleep(.1)
|
||||||
socket_close()
|
socket_close()
|
||||||
kill thread_servo
|
kill thread_servo
|
||||||
@@ -130,6 +143,7 @@ ur_driver::UrDriver::UrDriver(const std::string& ROBOT_IP)
|
|||||||
std::ostringstream out;
|
std::ostringstream out;
|
||||||
out << "lookahead_time=" << servoj_lookahead_time_ << ", gain=" << servoj_gain_;
|
out << "lookahead_time=" << servoj_lookahead_time_ << ", gain=" << servoj_gain_;
|
||||||
prog.replace(prog.find(SERVO_J_REPLACE), SERVO_J_REPLACE.length(), out.str());
|
prog.replace(prog.find(SERVO_J_REPLACE), SERVO_J_REPLACE.length(), out.str());
|
||||||
|
prog.replace(prog.find(SERVO_J_REPLACE), SERVO_J_REPLACE.length(), out.str());
|
||||||
prog.replace(prog.find(SERVER_IP_REPLACE), SERVER_IP_REPLACE.length(), local_ip);
|
prog.replace(prog.find(SERVER_IP_REPLACE), SERVER_IP_REPLACE.length(), local_ip);
|
||||||
prog.replace(prog.find(SERVER_PORT_REPLACE), SERVER_PORT_REPLACE.length(), std::to_string(reverse_port));
|
prog.replace(prog.find(SERVER_PORT_REPLACE), SERVER_PORT_REPLACE.length(), std::to_string(reverse_port));
|
||||||
size_t len = prog.size();
|
size_t len = prog.size();
|
||||||
|
|||||||
Reference in New Issue
Block a user