logging.getLogger('integration.control_server').setLevel(logging.ERROR)
logging.getLogger('integration.master').setLevel(logging.INFO)
logging.getLogger('planning.control').setLevel(logging.INFO)

import json
apc_order = json.load(open(os.path.join(os.path.dirname(__file__), 'top_shelf.json')))

from klampt import se3

master = Master(apc_order)
from time import sleep

for request in master.order:
    print request['bin'], request['item']

master._set_target('bin_A', 'crayola_64_ct')
# master._set_target('bin_B', 'kong_duck_dog_toy')
master._localize_shelf_and_order_bin()
# master._localize_object('unused')
master.knowledge_base.active_limb = 'left'
# master.knowledge_base.grasped_object = 'crayola_64_ct'
# master.knowledge_base.active_grasp = [[0.8449032475481839, 0.5332477717385703, -0.0422530024777488, -0.053105482443014856, 0.005018582272109273, -0.9985762973185823, -0.532276535286903, 0.8459442226103591, 0.03255859663963079], [0.1039670743637746, -0.1590815806021303, 0.07642602363877261]]

task = master.manager.control.update()
while not task.done: sleep(0.1)

while True:
    print '{} {} {} >'.format(
        master.knowledge_base.active_limb or '-',
        master.knowledge_base.target_bin or '-',
        master.knowledge_base.target_object or '-',
# allow importing from the repository root
import sys, os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from integration.master import Master

import json
apc_order = json.load(open(os.path.join(os.path.dirname(__file__), 'all_bins_order.json')))

master = Master(apc_order)
from time import sleep

for request in master.order:
    print '  {}: {}'.format(request['bin'], request['item'])

task = master.manager.control.update()
while not task.done: sleep(0.1)

master._move_initial()

while master.order:
    request = master.order.pop(0)

    master._set_target(request['bin'], request['item'])
    master._move_vantage_point(master.knowledge_base.bin_vantage_points[request['bin']][0])
    master._localize_object(master.knowledge_base.bin_vantage_points[request['bin']][0])

    task = master.manager.control.update()
    while not task.done: sleep(0.1)
from integration.io import pcd

import json
apc_order = json.load(open(os.path.join(os.path.dirname(__file__), 'example2.json')))

from klampt import se3, so3, vectorops

master = Master(apc_order)
from time import sleep

for request in master.order:
    print '  {}: {}'.format(request['bin'], request['item'])

# master._set_target('bin_B', 'genuine_joe_plastic_stir_sticks')
#master._set_target('bin_F','stanley_66_052')
master._set_target('bin_C','champion_copper_plus_spark_plug')
#master._set_target('bin_E','mead_index_cards')
#master._set_target('bin_A', 'elmers_washable_no_run_school_glue')
# master._set_target('bin_B', 'kong_duck_dog_toy')
# master._set_target('bin_F', 'mead_index_cards')
#master._set_target('bin_F', 'kong_sitting_frog_dog_toy')
#master._set_target('bin_F', 'champion_copper_plus_spark_plug')
# master._set_target('bin_C', 'first_years_take_and_toss_straw_cups')
# master.knowledge_base.object_xforms['crayola_64_ct'] = ( so3.mul(so3.rotation([1,0,0], 3.1415), so3.rotation([0,0,1], 3.1415/4+3.1415)), (0.995, 0.27, 0.84))
master.knowledge_base.active_limb = 'right'
master._localize_shelf_and_order_bin()
#master._localize_object('unused')
# master.knowledge_base.grasped_object = 'champion_copper_plus_spark_plug'
# master.knowledge_base.object_xforms['first_years_take_and_toss_straw_cups'] = se3.identity()
# master.knowledge_base.object_clouds['first_years_take_and_toss_straw_cups'] = pcd.read(open('/tmp/first_years_take_and_toss_straw_cups_bin_C.pcd'))[1]
# master.knowledge_base.object_xforms['safety_works_safety_glasses'] = se3.identity()