As soon as I launch this code I get C204A protective stop safety message on the robot. I don’t even understand why the robot starts to move, I can’t see any move commands in the script?
#!/usr/bin/env python
import argparse
import logging
import sys
sys.path.append('..')
import rtde.rtde as rtde
import rtde.rtde_config as rtde_config
import time
# parameters
parser = argparse.ArgumentParser()
parser.add_argument('--host', default='169.254.63.28',help='name of host to connect to (localhost)')
parser.add_argument('--port', type=int, default=30004, help='port number (30004)')
parser.add_argument('--samples', type=int, default=0,help='number of samples to record')
parser.add_argument('--frequency', type=int, default=125, help='the sampling frequency in Herz')
parser.add_argument('--config', default='configuration.xml', help='data configuration file to use (configuration.xml)')
parser.add_argument("--verbose", help="increase output verbosity", action="store_true")
parser.add_argument("--buffered", help="Use buffered receive which doesn't skip data", action="store_true")
parser.add_argument("--binary", help="save the data in binary format", action="store_true")
args = parser.parse_args()
if args.verbose:
logging.basicConfig(level=logging.INFO)
conf = rtde_config.ConfigFile(args.config)
output_names, output_types = conf.get_recipe('out')
con = rtde.RTDE(args.host, args.port)
con.connect()
# settings
con.get_controller_version()
con.send_output_setup(output_names, output_types, frequency=args.frequency)
con.send_start()
# initialize variables
X = 0
Y = 0
Z = 0
RX = 0
RY = 0
RZ = 0
# main loop
i = 1
for i in range(3):
if args.samples > 0 and i >= args.samples:
keep_running = False
try:
if args.buffered:
state = con.receive_buffered(args.binary)
else:
state = con.receive(args.binary)
if state is not None:
X,Y,Z,RX,RY,RZ = state.actual_TCP_pose
date_and_time = state.timestamp
i += 1
analog_IN = [state.standard_analog_output0, state.standard_analog_output1, state.tool_analog_input0, state.tool_analog_input1]
print(str(analog_IN))
print(str(date_and_time)+" TCP: pos ["+str(X)+", "+str(Y)+", "+str(Z)+"] m, rot ["+str(RX)+", "+str(RY)+", "+str(RZ)+"] rad")
time.sleep(0.1)
except KeyboardInterrupt:
break
except rtde.RTDEException:
break
con.send_pause()
con.disconnect()
<?xml version="1.0"?>
<rtde_config>
<recipe key="out">
<field name="timestamp" type="DOUBLE"/>
<field name="target_q" type="VECTOR6D"/>
<field name="target_qd" type="VECTOR6D"/>
<field name="target_qdd" type="VECTOR6D"/>
<field name="target_current" type="VECTOR6D"/>
<field name="target_moment" type="VECTOR6D"/>
<field name="actual_q" type="VECTOR6D"/>
<field name="actual_qd" type="VECTOR6D"/>
<field name="actual_current" type="VECTOR6D"/>
<field name="joint_control_output" type="VECTOR6D"/>
<field name="actual_TCP_pose" type="VECTOR6D"/>
<field name="actual_TCP_speed" type="VECTOR6D"/>
<field name="actual_TCP_force" type="VECTOR6D"/>
<field name="target_TCP_pose" type="VECTOR6D"/>
<field name="target_TCP_speed" type="VECTOR6D"/>
<field name="actual_digital_input_bits" type="UINT64"/>
<field name="joint_temperatures" type="VECTOR6D"/>
<field name="actual_execution_time" type="DOUBLE"/>
<field name="robot_mode" type="INT32"/>
<field name="joint_mode" type="VECTOR6INT32"/>
<field name="safety_mode" type="INT32"/>
<field name="actual_tool_accelerometer" type="VECTOR3D"/>
<field name="speed_scaling" type="DOUBLE"/>
<field name="target_speed_fraction" type="DOUBLE"/>
<field name="actual_momentum" type="DOUBLE"/>
<field name="actual_main_voltage" type="DOUBLE"/>
<field name="actual_robot_voltage" type="DOUBLE"/>
<field name="actual_robot_current" type="DOUBLE"/>
<field name="actual_joint_voltage" type="VECTOR6D"/>
<field name="actual_digital_output_bits" type="UINT64"/>
<field name="runtime_state" type="UINT32"/>
<field name="standard_analog_input0" type="DOUBLE"/>
<field name="standard_analog_input1" type="DOUBLE"/>
<field name="standard_analog_output0" type="DOUBLE"/>
<field name="standard_analog_output1" type="DOUBLE"/>
<field name="tool_analog_input0" type="DOUBLE"/>
<field name="tool_analog_input1" type="DOUBLE"/>
<!--
<field name="payload" type="DOUBLE"/>
<field name="payload_cog" type="VECTOR3D"/>
<field name="script_control_line" type="UINT32"/>
<field name="output_bit_registers0_to_31" type="UINT32"/>
<field name="output_bit_registers32_to_63" type="UINT32"/>
<field name="output_int_register_0" type="INT32"/>
<field name="output_int_register_1" type="INT32"/>
<field name="output_int_register_2" type="INT32"/>
<field name="output_int_register_3" type="INT32"/>
<field name="output_int_register_4" type="INT32"/>
<field name="output_int_register_5" type="INT32"/>
<field name="output_int_register_6" type="INT32"/>
<field name="output_int_register_7" type="INT32"/>
<field name="output_int_register_8" type="INT32"/>
<field name="output_int_register_9" type="INT32"/>
<field name="output_int_register_10" type="INT32"/>
<field name="output_int_register_11" type="INT32"/>
<field name="output_int_register_12" type="INT32"/>
<field name="output_int_register_13" type="INT32"/>
<field name="output_int_register_14" type="INT32"/>
<field name="output_int_register_15" type="INT32"/>
<field name="output_int_register_16" type="INT32"/>
<field name="output_int_register_17" type="INT32"/>
<field name="output_int_register_18" type="INT32"/>
<field name="output_int_register_19" type="INT32"/>
<field name="output_int_register_20" type="INT32"/>
<field name="output_int_register_21" type="INT32"/>
<field name="output_int_register_22" type="INT32"/>
<field name="output_int_register_23" type="INT32"/>
<field name="output_double_register_0" type="DOUBLE"/>
<field name="output_double_register_1" type="DOUBLE"/>
<field name="output_double_register_2" type="DOUBLE"/>
<field name="output_double_register_3" type="DOUBLE"/>
<field name="output_double_register_4" type="DOUBLE"/>
<field name="output_double_register_5" type="DOUBLE"/>
<field name="output_double_register_6" type="DOUBLE"/>
<field name="output_double_register_7" type="DOUBLE"/>
<field name="output_double_register_8" type="DOUBLE"/>
<field name="output_double_register_9" type="DOUBLE"/>
<field name="output_double_register_10" type="DOUBLE"/>
<field name="output_double_register_11" type="DOUBLE"/>
<field name="output_double_register_12" type="DOUBLE"/>
<field name="output_double_register_13" type="DOUBLE"/>
<field name="output_double_register_14" type="DOUBLE"/>
<field name="output_double_register_15" type="DOUBLE"/>
<field name="output_double_register_16" type="DOUBLE"/>
<field name="output_double_register_17" type="DOUBLE"/>
<field name="output_double_register_18" type="DOUBLE"/>
<field name="output_double_register_19" type="DOUBLE"/>
<field name="output_double_register_20" type="DOUBLE"/>
<field name="output_double_register_21" type="DOUBLE"/>
<field name="output_double_register_22" type="DOUBLE"/>
<field name="output_double_register_23" type="DOUBLE"/>
-->
</recipe>
</rtde_config>