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

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)
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])
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

var = CobottaVarManager()
var.P11 = client.get_current_position()
var.save('save_name.json')

Loading values from a file into internal variables

var = CobottaVarManager()
var.load('save_name.json')
print(var.P10)

Reading COBOTTA values into the variable manager

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)
var = CobottaVarManager()
var.attach_robot(client)  # Attach the COBOTTA instance

# Read P10–P20 from the robot instance
var.read_var_from_robot("P", 10)
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

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)
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)
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")
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

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

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)
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])
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

var = CobottaVarManager()
var.P11 = client.get_current_position()
var.save('save_name.json')

Loading values from a file into internal variables

var = CobottaVarManager()
var.load('save_name.json')
print(var.P10)

Reading COBOTTA values into the variable manager

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)
var = CobottaVarManager()
var.attach_robot(client)  # Attach the COBOTTA instance

# Read P10–P20 from the robot instance
var.read_var_from_robot("P", 10)
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

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)
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)
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")
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