V1.0.0 sentry follows properly
This commit is contained in:
parent
685c1db246
commit
9b8f4d60c0
|
@ -14,7 +14,7 @@ class BBoxProcessor:
|
||||||
"""
|
"""
|
||||||
new_boxes = self.process_next(new_boxes)
|
new_boxes = self.process_next(new_boxes)
|
||||||
closest_box = self.get_box_closest_to_center(new_boxes)
|
closest_box = self.get_box_closest_to_center(new_boxes)
|
||||||
if closest_box is None:
|
if closest_box == []:
|
||||||
return [0, 0]
|
return [0, 0]
|
||||||
print("Closest box: ", closest_box, "All: ", new_boxes)
|
print("Closest box: ", closest_box, "All: ", new_boxes)
|
||||||
return self.get_normalized_box_position(closest_box)
|
return self.get_normalized_box_position(closest_box)
|
||||||
|
@ -49,7 +49,7 @@ class BBoxProcessor:
|
||||||
closest = None
|
closest = None
|
||||||
for new_box in new_boxes:
|
for new_box in new_boxes:
|
||||||
new_distance = self.bbox_distance(box, new_box)
|
new_distance = self.bbox_distance(box, new_box)
|
||||||
if new_distance < min_distance and new_distance < distance:
|
if (new_distance < min_distance and new_distance < distance):
|
||||||
distance = new_distance
|
distance = new_distance
|
||||||
closest = new_box
|
closest = new_box
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ class BBoxProcessor:
|
||||||
and timestamp < self.last_timestamps[index] + time_to_live
|
and timestamp < self.last_timestamps[index] + time_to_live
|
||||||
):
|
):
|
||||||
new_boxes_list.append(box)
|
new_boxes_list.append(box)
|
||||||
new_timestamps_list.append(timestamp)
|
new_timestamps_list.append(self.last_timestamps[index])
|
||||||
|
|
||||||
self.last_boxes = new_boxes_list
|
self.last_boxes = new_boxes_list
|
||||||
self.last_timestamps = new_timestamps_list
|
self.last_timestamps = new_timestamps_list
|
||||||
|
|
|
@ -205,19 +205,19 @@ class ModbusTCP:
|
||||||
|
|
||||||
if mbap[0] != self.__transaction_id:
|
if mbap[0] != self.__transaction_id:
|
||||||
print("Modbus: Transaction ID mismatch"
|
print("Modbus: Transaction ID mismatch"
|
||||||
"\n - Send: {} \n - Response: {}".format(self.__transaction_id, mbap[0]))
|
"\t - Send: {} \t - Response: {}".format(self.__transaction_id, mbap[0]))
|
||||||
return True
|
return True
|
||||||
elif mbap[1] != self.__protocol_id:
|
elif mbap[1] != self.__protocol_id:
|
||||||
print("Modbus: Protocol ID mismatch"
|
print("Modbus: Protocol ID mismatch"
|
||||||
"\n - Send: {} \n - Response: {}".format(self.__protocol_id, mbap[1]))
|
"\t - Send: {} \t - Response: {}".format(self.__protocol_id, mbap[1]))
|
||||||
return True
|
return True
|
||||||
elif mbap[3] != self.__unit_id:
|
elif mbap[3] != self.__unit_id:
|
||||||
print("Modbus: Unit ID mismatch"
|
print("Modbus: Unit ID mismatch"
|
||||||
"\n - Send: {} \n - Response: {}".format(self.__unit_id, mbap[3]))
|
"\t - Send: {} \t - Response: {}".format(self.__unit_id, mbap[3]))
|
||||||
return True
|
return True
|
||||||
elif mbap[2] != len(response[6:]):
|
elif mbap[2] != len(response[6:]):
|
||||||
print("Modbus: Length mismatch"
|
print("Modbus: Length mismatch"
|
||||||
"\n - Length: {} \n - Remaining: {}".format(mbap[2], len(response[6:])))
|
"\t - Length: {} \t - Remaining: {}".format(mbap[2], len(response[6:])))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
function_code = struct.unpack(">B", function_code)
|
function_code = struct.unpack(">B", function_code)
|
||||||
|
|
|
@ -66,11 +66,10 @@ class URModbusServer:
|
||||||
packet_signs = self.modbusTCP.read_holding_registers(320, quantity=6)
|
packet_signs = self.modbusTCP.read_holding_registers(320, quantity=6)
|
||||||
|
|
||||||
if (packet is None) or (packet_signs is None):
|
if (packet is None) or (packet_signs is None):
|
||||||
time.sleep(0.01)
|
time.sleep(0.05)
|
||||||
print(f"Modbus Error #{tries}: retrying")
|
print(f"Modbus Error #{tries}: retrying")
|
||||||
return self.get_joint_angles(tries+1)
|
return self.get_joint_angles(tries+1)
|
||||||
else:
|
else:
|
||||||
#print(f"Packet: {packet_signs.hex()}")
|
|
||||||
base = self._format_sign(packet[9:11], packet_signs[9:11])
|
base = self._format_sign(packet[9:11], packet_signs[9:11])
|
||||||
shoulder = self._format_sign(packet[11:13], packet_signs[11:13])
|
shoulder = self._format_sign(packet[11:13], packet_signs[11:13])
|
||||||
elbow = self._format_sign(packet[13:15], packet_signs[13:15])
|
elbow = self._format_sign(packet[13:15], packet_signs[13:15])
|
||||||
|
@ -86,8 +85,8 @@ class URModbusServer:
|
||||||
|
|
||||||
def get_joint_speeds(self, tries=0):
|
def get_joint_speeds(self, tries=0):
|
||||||
"""
|
"""
|
||||||
Connects with the Modbus server to requests the speed of each joint, in radians
|
Connects with the Modbus server to requests the speed of each joint, in radians per second
|
||||||
:return: Readable angle values of each joint in radials
|
:return: Readable angle speeds of each joint in radians per second
|
||||||
"""
|
"""
|
||||||
if tries>10:
|
if tries>10:
|
||||||
print("Modbus Error: Failed")
|
print("Modbus Error: Failed")
|
||||||
|
@ -96,11 +95,10 @@ class URModbusServer:
|
||||||
packet = self.modbusTCP.read_holding_registers(280, quantity=6)
|
packet = self.modbusTCP.read_holding_registers(280, quantity=6)
|
||||||
|
|
||||||
if (packet is None):
|
if (packet is None):
|
||||||
time.sleep(0.01)
|
time.sleep(0.05)
|
||||||
print(f"Modbus Error #{tries}: retrying")
|
print(f"Modbus Error #{tries}: retrying")
|
||||||
return self.get_joint_speeds(tries+1)
|
return self.get_joint_speeds(tries+1)
|
||||||
else:
|
else:
|
||||||
#print(f"Packet: {packet_signs.hex()}")
|
|
||||||
base = self._format(packet[9:11]) / 1000
|
base = self._format(packet[9:11]) / 1000
|
||||||
shoulder = self._format(packet[11:13]) / 1000
|
shoulder = self._format(packet[11:13]) / 1000
|
||||||
elbow = self._format(packet[13:15]) / 1000
|
elbow = self._format(packet[13:15]) / 1000
|
||||||
|
|
|
@ -79,7 +79,7 @@ class URSentry:
|
||||||
|
|
||||||
# print("Base Speed: ", self.robot_speed[0])
|
# print("Base Speed: ", self.robot_speed[0])
|
||||||
|
|
||||||
ticks_to_wait = 10
|
ticks_to_wait = 3
|
||||||
if self.await_stop:
|
if self.await_stop:
|
||||||
print("Awaiting stop --------------------")
|
print("Awaiting stop --------------------")
|
||||||
joint_speeds = self.robot.get_joint_speeds()
|
joint_speeds = self.robot.get_joint_speeds()
|
||||||
|
@ -95,6 +95,7 @@ class URSentry:
|
||||||
self.await_stop = True
|
self.await_stop = True
|
||||||
self.send_to_zero_on_stop = False
|
self.send_to_zero_on_stop = False
|
||||||
self.forward_position_to_base_angle_degrees(0)
|
self.forward_position_to_base_angle_degrees(0)
|
||||||
|
return
|
||||||
|
|
||||||
# Cancel smooth stopping due to no input
|
# Cancel smooth stopping due to no input
|
||||||
if self.smooth_stop_delayed_call is not None:
|
if self.smooth_stop_delayed_call is not None:
|
||||||
|
@ -113,8 +114,8 @@ class URSentry:
|
||||||
vertical_dead_zone_radius = 0.1
|
vertical_dead_zone_radius = 0.1
|
||||||
|
|
||||||
# Speeds for the base and neck joints
|
# Speeds for the base and neck joints
|
||||||
base_max_speed = 1.1
|
base_max_speed = 1.5
|
||||||
base_min_speed = 0.2
|
base_min_speed = 0.1
|
||||||
|
|
||||||
base_acceleration = 1.5
|
base_acceleration = 1.5
|
||||||
|
|
||||||
|
@ -156,7 +157,7 @@ class URSentry:
|
||||||
)
|
)
|
||||||
self.smooth_stop_delayed_call.start()
|
self.smooth_stop_delayed_call.start()
|
||||||
|
|
||||||
print("Robot speed: ", self.robot_speed)
|
print("Base speed: ", self.robot_speed[0], " Joystick: ", joystick_pos_x)
|
||||||
self.robot.speedj(self.robot_speed, base_acceleration, 1)
|
self.robot.speedj(self.robot_speed, base_acceleration, 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
9
main.py
9
main.py
|
@ -25,8 +25,13 @@ class CameraJoystick(threading.Thread):
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while self.keep_running:
|
while self.keep_running:
|
||||||
bb = b.get_joystick_position_from_new_set_of_bboxes(q.get())
|
q_val = []
|
||||||
|
try:
|
||||||
|
q_val = q.get_nowait()
|
||||||
|
except queue.Empty:
|
||||||
|
pass
|
||||||
#print(bb)
|
#print(bb)
|
||||||
|
bb = b.get_joystick_position_from_new_set_of_bboxes(q_val)
|
||||||
self.joystick_queue.put(bb)
|
self.joystick_queue.put(bb)
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
|
@ -62,7 +67,7 @@ ur.forward_position()
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
ur.move_robot_base(-current_joystick[0])
|
ur.move_robot_base(-current_joystick[0])
|
||||||
print("Setting robot base velocity to: ", current_joystick[0])
|
#print("Setting robot base velocity to: ", current_joystick[0])
|
||||||
time.sleep(0.2)
|
time.sleep(0.2)
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
camera_joystick.stop()
|
camera_joystick.stop()
|
||||||
|
|
Loading…
Reference in New Issue