in robots/LoCoBot/locobot_control/scripts/locobot_control/teleoperation.py [0:0]
def run(self):
rospy.sleep(1)
while True:
key = copy.deepcopy(self.cmd)
if key is None:
if (
self.is_robot_moving
and time.time() - self.start_time > self.cfg["WAIT_TIME"]
):
if self.cmd_prev in [
self.cfg["KEY_POS_J5"],
self.cfg["KEY_NEG_J5"],
]:
self.pub_stop_j5.publish()
elif self.cmd_prev in [
self.cfg["KEY_POS_J4"],
self.cfg["KEY_NEG_J4"],
]:
self.pub_stop_j4.publish()
else:
pass
self.move_base(0, 0)
self.is_robot_moving = False
continue
if key != self.cmd_prev:
if self.cmd_prev in [
self.cfg["KEY_POS_J5"],
self.cfg["KEY_NEG_J5"],
self.cfg["KEY_POS_J4"],
self.cfg["KEY_NEG_J4"],
]:
self.update_alpha()
delta = np.zeros(3)
if not self.status:
rospy.logerr(
"Arm has been shutdown, " "there is some error, check logs"
)
self.exit()
if key == self.cfg["KEY_POS_X"]:
delta[0] += self.cfg["DELTA_POS_X"]
self.move_arm(delta, key)
elif key == self.cfg["KEY_NEG_X"]:
delta[0] += self.cfg["DELTA_NEG_X"]
self.move_arm(delta, key)
elif key == self.cfg["KEY_POS_Y"]:
delta[1] += self.cfg["DELTA_POS_Y"]
self.move_arm(delta, key)
elif key == self.cfg["KEY_NEG_Y"]:
delta[1] += self.cfg["DELTA_NEG_Y"]
self.move_arm(delta, key)
elif key == self.cfg["KEY_POS_Z"]:
delta[2] += self.cfg["DELTA_POS_Z"]
self.move_arm(delta, key)
elif key == self.cfg["KEY_NEG_Z"]:
delta[2] += self.cfg["DELTA_NEG_Z"]
self.move_arm(delta, key)
elif key == self.cfg["KEY_POS_J5"]:
self.move_joint_individual(5)
elif key == self.cfg["KEY_NEG_J5"]:
self.move_joint_individual(5, False)
elif key == self.cfg["KEY_POS_J4"]:
self.move_joint_individual(4)
elif key == self.cfg["KEY_NEG_J4"]:
self.move_joint_individual(4, False)
elif key == KEY_CTRL_C:
self.exit()
elif key == self.cfg["KEY_POS_PAN"]:
self.move_pan()
elif key == self.cfg["KEY_NEG_PAN"]:
self.move_pan(False)
elif key == self.cfg["KEY_POS_TILT"]:
self.move_tilt()
elif key == self.cfg["KEY_NEG_TILT"]:
self.move_tilt(False)
elif key == self.cfg["KEY_OPEN_GRIPPER"]:
self.bot.gripper.open(wait=False)
elif key == self.cfg["KEY_CLOSE_GRIPPER"]:
self.bot.gripper.close(wait=False)
elif key == KEY_BASE_FORWARD:
self.move_base(self.base_linear_speed, 0)
elif key == KEY_BASE_BACKWARD:
self.move_base(-self.base_linear_speed, 0)
elif key == KEY_BASE_TURNLEFT:
self.move_base(0, self.base_angular_speed)
elif key == KEY_BASE_TURNRIGHT:
self.move_base(0, -self.base_angular_speed)
elif key == self.cfg["KEY_RESET"]:
self.reset()
else:
continue
if key.isdigit():
key_int = int(copy.deepcopy(key))
if key_int in range(1, 6):
self.move_joint_individual(int(key))
if key_int in range(6, 10):
self.move_joint_individual(int(key) % 5, False)
if key_int == 0:
self.move_joint_individual(5, False)
else:
print("Pressed invalid key: {}".format(key))
self.cmd_prev = copy.deepcopy(key)
self.cmd = None