# Variable Manager ## Managing COBOTTA internal variables with a manager The standard COBOTTA Python control library provides access to COBOTTA internal variables. Python can read and write their values. ## COBOTTA Variable Manager Methods such as `client.move("P110")` already support references to internal variables, but COBOTTA itself remains responsible for managing those variables. The manager is designed to make coordinates easier to use as local objects, for example `move(var.P110)`, and to simplify batch exchange of internal variable values with COBOTTA. ## Using the coordinate manager without attaching to a COBOTTA instance ```python from cobotta2 import Config, CobottaCtrl, RobotVarManager from x_logger import XLogger Config.load_yaml("config_cobotta1.yaml") logger = XLogger(log_level="info", logger_name=Config.CLIENT_LOGGER_NAME) client = CobottaCtrl(cobotta_ip=Config.COBOTTA_IP, logger=logger) var = RobotVarManager() client.turn_on_motor() client.take_arm() client.move("P110") # Assign a value to an internal variable var.P10 = [0, 0, 0, 0, 0, 0] var["P11"] = client.get_current_position() var.P12 = [0, 0, 0, 0, 0, 0] print(var.P10) print(var["P11"]) print(var["P12"]) client.move(var.P10) client.move(var.P11) client.move(var.P12) ``` ```python var = CobottaVarManager() # Set internal variables P10–P20 to [0,0,0,0,0,0] var.set_vars("P", 10, 20, [0,0,0,0,0,0]) ``` ```python var = CobottaVarManager() # Assign a value to internal variable P10 var.set_var("P", 10,[0,0,0,0,0,0]) ``` ### Saving internal variable values to a file ```python var = CobottaVarManager() var.P11 = client.get_current_position() var.save('save_name.json') ``` ### Loading values from a file into internal variables ```python var = CobottaVarManager() var.load('save_name.json') print(var.P10) ``` ### Reading COBOTTA values into the variable manager ```python var = CobottaVarManager() var.attach_robot(client) # Attach the COBOTTA instance # Read P10–P20 from the robot instance var.read_vars_from_robot("P", 10, 20) ``` ```python var = CobottaVarManager() var.attach_robot(client) # Attach the COBOTTA instance # Read P10–P20 from the robot instance var.read_var_from_robot("P", 10) ``` ```python var = CobottaVarManager() var.attach_robot(client) # Attach the COBOTTA instance # Read P10 from the robot instance var.read_var_from_robot("P10") ``` ### Writing internal variable values to COBOTTA ```python from cobotta2 import CobottaVarmanager var = CobottaVarManager(cobotta) # Modify internal variables var.P10 = [0,0,0,0,0,0] var.P11 = [0,0,0,0,0,0] # Write internal variables P10–P20 to the robot instance var.write_vars_to_cobotta("P", 10, 20) ``` ```python from cobotta2 import CobottaVarmanager var = CobottaVarManager(cobotta) # Modify internal variables var.P10 = [0, 0, 0, 0, 0, 0] # Write internal variable P10 to the robot instance var.write_var_to_robot("P", 10) ``` ```python from cobotta2 import CobottaVarmanager var = CobottaVarManager(cobotta) # Modify internal variables var.P10 = [0, 0, 0, 0, 0, 0] # Write internal variable P10 to the robot instance var.write_var_to_robot("P10") ``` ```python from cobotta2 import CobottaVarmanager var = CobottaVarManager(cobotta) var.load('save_name.json') # Write all managed internal variables to the robot instance var.write_all_to_robot() ``` ## Controlling COBOTTA with CobottaCtrl alone ```python from cobotta2 import Config, CobottaCtrl from x_logger import XLogger async def main(): Config.load_yaml("config_cobotta1.yaml") logger = XLogger(log_level="info", logger_name=Config.CLIENT_LOGGER_NAME) client = CobottaCtrl(cobotta_ip=Config.COBOTTA_IP, logger=logger) result = client.current_position() print(result) client.disconnect() if __name__ == "__main__": main() ``` ### Using the coordinate manager without attaching to a COBOTTA instance ```python from cobotta2 import Config, CobottaCtrl, RobotVarManager from x_logger import XLogger Config.load_yaml("config_cobotta1.yaml") logger = XLogger(log_level="info", logger_name=Config.CLIENT_LOGGER_NAME) client = CobottaCtrl(cobotta_ip=Config.COBOTTA_IP, logger=logger) var = RobotVarManager() client.turn_on_motor() client.take_arm() client.move("P110") # Assign a value to an internal variable var.P10 = [0, 0, 0, 0, 0, 0] var["P11"] = client.get_current_position() var.P12 = [0, 0, 0, 0, 0, 0] print(var.P10) print(var["P11"]) print(var["P12"]) client.move(var.P10) client.move(var.P11) client.move(var.P12) ``` ```python var = CobottaVarManager() # Set internal variables P10–P20 to [0,0,0,0,0,0] var.set_vars("P", 10, 20, [0,0,0,0,0,0]) ``` ```python var = CobottaVarManager() # Assign a value to internal variable P10 var.set_var("P", 10,[0,0,0,0,0,0]) ``` ### Saving internal variable values to a file ```python var = CobottaVarManager() var.P11 = client.get_current_position() var.save('save_name.json') ``` ### Loading values from a file into internal variables ```python var = CobottaVarManager() var.load('save_name.json') print(var.P10) ``` ### Reading COBOTTA values into the variable manager ```python var = CobottaVarManager() var.attach_robot(client) # Attach the COBOTTA instance # Read P10–P20 from the robot instance var.read_vars_from_robot("P", 10, 20) ``` ```python var = CobottaVarManager() var.attach_robot(client) # Attach the COBOTTA instance # Read P10–P20 from the robot instance var.read_var_from_robot("P", 10) ``` ```python var = CobottaVarManager() var.attach_robot(client) # Attach the COBOTTA instance # Read P10 from the robot instance var.read_var_from_robot("P10") ``` ### Writing internal variable values to COBOTTA ```python from cobotta2 import CobottaVarmanager var = CobottaVarManager(cobotta) # Modify internal variables var.P10 = [0,0,0,0,0,0] var.P11 = [0,0,0,0,0,0] # Write internal variables P10–P20 to the robot instance var.write_vars_to_cobotta("P", 10, 20) ``` ```python from cobotta2 import CobottaVarmanager var = CobottaVarManager(cobotta) # Modify internal variables var.P10 = [0, 0, 0, 0, 0, 0] # Write internal variable P10 to the robot instance var.write_var_to_robot("P", 10) ``` ```python from cobotta2 import CobottaVarmanager var = CobottaVarManager(cobotta) # Modify internal variables var.P10 = [0, 0, 0, 0, 0, 0] # Write internal variable P10 to the robot instance var.write_var_to_robot("P10") ``` ```python from cobotta2 import CobottaVarmanager var = CobottaVarManager(cobotta) var.load('save_name.json') # Write all managed internal variables to the robot instance var.write_all_to_robot() ``` --- ## Author - Kengo NAKADA