Camera
When using CobottaCtrl directly in local mode, always call disconnect() on exit, including when interrupted by KeyboardInterrupt or another exception.
Basic usage from Python
from cobotta2 import Config, CobottaCtrl, MotionMode
Config.load_yaml("config_cobotta2.yaml")
logger = XLogger(log_level="info", logger_name=Config.CLIENT_LOGGER_NAME)
cobotta = CobottaCtrl(cobotta_ip=Config.COBOTTA_IP, arm_name="Arm", logger=logger)
try:
cobotta.reset_error()
# Number of objects recognized by the camera (used to determine success or failure)
cobotta.I2 = 0
# Work coordinates that receive the camera recognition result
# Save the current position as a safe initial position
cobotta.P10 = cobotta.get_current_position()
# take_script() and take_camera() are mutually exclusive
# Release the arm before take_camera() if take_arm() was called
cobotta.release_arm()
while True:
logger.info("---------- Camera recognition -------------------")
# Select the camera recognition model created with EVP2 Guidance
evp_script_name = "try_camera"
# The filename EVP2_03.pcs is arbitrary, but may overwrite an existing script on COBOTTA
cobotta.take_camera(evp_script_name, "EVP2_03.pcs")
cobotta.run_script()
cobotta.wait_for_complete()
logger.info(f"Result(num): {cobotta.I2}")
if cobotta.I2 == 1:
break
logger.error(f"*** Target not found ***")
logger.error(f"*** Retrying in 3 seconds ***")
time.sleep(3)
logger.error(f"***")
logger.info(f"Result(pos): {cobotta.P10}")
logger.error(f"***")
logger.info("----------- Move to the center of the recognized image --------------")
cobotta.take_arm()
cobotta.move("P10", motion_mode=MotionMode.LINE, offset=(0,0,0), path_blend="@E", speed=50)
cobotta.wait_for_complete()
except KeyboardInterrupt as e:
logger.error(e)
except Exception as e:
loggger.error(e)
finally:
cobotta.disconnect()