妗堜緥/妯℃澘璇存槑
============================

鏈烘鑷備富鎺т富鍑芥暟璇存槑
++++++++++++++++++++++++++++++++

杞ㄨ抗绉诲姩鍚屾妯℃澘
--------------------------------

.. code-block::

    import os
    import sys

    JAKA_PYTHONPATH = os.path.join(os.path.dirname(__file__)) # 娣诲姞褰撳墠璺緞鍒扮幆澧冨彉閲�
    sys.path.append(JAKA_PYTHONPATH)
    import socket

    import const
    import jkrc
    import xyz_master_object

    jk = xyz_master_object.jk_master("192.168.37.100") # 鍒涘缓鏈烘鑷傚璞★紝浼犲叆鏈烘鑷� ip 鍦板潃
    server_address = ("127.0.0.1", 11111) # 鎸囧畾 robot server 鐨� ip 鍜岀鍙�
    jk.socketConnect(server_address)
    try:
        err_code = jk.xyzSwitchFlow("traj_sync.t") # 鍒囨崲浠诲姟
        if err_code != 0:
            os.system("pause") # 閿欒浠g爜涓嶄负闆讹紝鏆傚仠绋嬪簭
        ws_id = 0
        err_code = jk.xyzSwitchItem(ws_id,"item1") # 鍒囨崲宸ヤ欢
        if err_code != 0:
            os.system("pause")
        IO_CABINET = 0
        IO_TOOL = 1 #
        IO_EXTEND = 2
        jk.robot.set_digital_output(IO_CABINET, 0, 0) # 璁剧疆鏁板瓧杈撳嚭
        home_joints = [0,0,0,0,-90,0]
        move_mode = 0
        is_block = True
        speed = 0.1 # unit: rad/s
        jk.robot.joint_move(home_joints, move_mode, is_block, speed) # 绉诲姩鍒板垵濮嬩綅缃�
        while True:
            ws_id = 0
            err_code = jk.xyzReqPickPlace(ws_id) # 璇锋眰璁$畻鎶撳彇鏀剧疆杞ㄨ抗
            if err_code != 0:
                os.system("pause")

            err_code, pipeline_num, register_num, traj_num, wp_type, wp = jk.xyzGetPickin(0) # 鑾峰彇鎶撳彇鍏ョ瓙杞ㄨ抗
            if err_code != 0:
                os.system("pause")
            if traj_num < 1: # 濡傛灉娌℃湁杞ㄨ抗锛岄€€鍑哄惊鐜�
                break

            jk.xyzExecutePickinTraj(traj_num, wp_type, wp) # 鎵ц鎶撳彇鍏ョ瓙杞ㄨ抗
            jk.robot.set_digital_output(IO_CABINET, 0, 1) # 鎶撳彇

            err_code, pipeline_num, register_num, traj_num, wp_type, wp = jk.xyzGetPickout(0) # 鑾峰彇鎶撳彇鍑虹瓙杞ㄨ抗
            if err_code != 0:
                os.system("pause")
            jk.xyzExecutePickoutTraj(traj_num, wp_type, wp) # 鎵ц鎶撳彇鍑虹瓙杞ㄨ抗

            err_code, pipeline_num, register_num, traj_num, wp_type, wp = jk.xyzGetPlacein(0) # 鑾峰彇鏀剧疆鍏ョ瓙杞ㄨ抗
            if err_code != 0:
                os.system("pause")
            jk.xyzExecuteTraj(traj_num, wp_type, wp) # 鎵ц鏀剧疆鍏ョ瓙杞ㄨ抗
            jk.robot.set_digital_output(IO_CABINET, 0, 0) # 鏀剧疆

            err_code, pipeline_num, register_num, traj_num, wp_type, wp = jk.xyzGetPlaceout(0) # 鑾峰彇鏀剧疆鍑虹瓙杞ㄨ抗
            if err_code != 0:
                os.system("pause")
            jk.xyzExecuteTraj(traj_num, wp_type, wp) # 鎵ц鏀剧疆鍑虹瓙杞ㄨ抗

    finally:
        jk.robot.logout()
        print("robot disconnected")


杞ㄨ抗绉诲姩寮傛妯℃澘
---------------------------------
.. code-block::

    import os
    import sys

    JAKA_PYTHONPATH = os.path.join(os.path.dirname(__file__)) # 娣诲姞褰撳墠璺緞鍒扮幆澧冨彉閲�
    sys.path.append(JAKA_PYTHONPATH)
    import socket

    import const
    import jkrc
    import xyz_master_object

    jk = xyz_master_object.jk_master("192.168.37.100") # 鍒涘缓鏈烘鑷傚璞★紝浼犲叆鏈烘鑷� ip 鍦板潃
    server_address = ("127.0.0.1", 11111) # 鎸囧畾 robot server 鐨� ip 鍜岀鍙�
    jk.socketConnect(server_address)
    try:
        err_code = jk.xyzSwitchFlow("traj_async.t")  # 鍒囨崲浠诲姟
        if err_code != 0:
            os.system("pause")
        ws_id = 0
        err_code = jk.xyzSwitchItem(ws_id,"item1") # 鍒囨崲宸ヤ欢
        if err_code != 0:
            os.system("pause")
        IO_CABINET = 0
        IO_TOOL = 1 #
        IO_EXTEND = 2
        jk.robot.set_digital_output(IO_CABINET, 0, 0) # 璁剧疆鏁板瓧杈撳嚭
        home_joints = [0,0,0,0,-90,0]
        move_mode = 0
        is_block = True
        speed = 0.1 # unit: rad/s
        jk.robot.joint_move(home_joints, move_mode, is_block, speed) # 绉诲姩鍒板垵濮嬩綅缃�
        while True:
            ws_id = 0
            err_code = jk.xyzReqPickPlace(ws_id) # 璇锋眰璁$畻鎶撳彇鏀剧疆杞ㄨ抗
            if err_code != 0:
                os.system("pause")

            ws_id = 0
            err_code, pipeline_num, register_num, traj_num, wp_type, wp = jk.xyzGetPickin(ws_id) # 鑾峰彇鎶撳彇鍏ョ瓙杞ㄨ抗
            if err_code != 0:
                os.system("pause")
            if traj_num < 1: # 濡傛灉娌℃湁杞ㄨ抗锛岄€€鍑哄惊鐜�
                break

            jk.xyzExecutePickinTraj(traj_num, wp_type, wp) # 鎵ц鎶撳彇鍏ョ瓙杞ㄨ抗
            jk.robot.set_digital_output(IO_CABINET, 0, 1) # 鎶撳彇

            ws_id = 0
            err_code, pipeline_num, register_num, traj_num, wp_type, wp = jk.xyzGetPickout(ws_id) # 鑾峰彇鎶撳彇鍑虹瓙杞ㄨ抗
            if err_code != 0:
                os.system("pause")
            jk.xyzExecutePickoutTraj(traj_num, wp_type, wp) # 鎵ц鎶撳彇鍑虹瓙杞ㄨ抗

            ws_id = 0
            err_code = jk.xyzReqPickPlace(ws_id) # 鎻愬墠璇锋眰涓嬩竴娆℃姄鍙栨斁缃建杩�
            if err_code != 0:
                os.system("pause")

            ws_id = 0
            err_code, pipeline_num, register_num, traj_num, wp_type, wp = jk.xyzGetPlacein(ws_id) # 鑾峰彇鏀剧疆鍏ョ瓙杞ㄨ抗
            if err_code != 0:
                os.system("pause")
            jk.xyzExecuteTraj(traj_num, wp_type, wp)    # 鎵ц鏀剧疆鍏ョ瓙杞ㄨ抗
            jk.robot.set_digital_output(IO_CABINET, 0, 0) # 鏀剧疆

            ws_id = 0
            err_code, pipeline_num, register_num, traj_num, wp_type, wp = jk.xyzGetPlaceout(ws_id) # 鑾峰彇鏀剧疆鍑虹瓙杞ㄨ抗
            if err_code != 0:
                os.system("pause")
            jk.xyzExecuteTraj(traj_num, wp_type, wp) # 鎵ц鏀剧疆鍑虹瓙杞ㄨ抗

    finally:
        jk.robot.logout()
        print("robot disconnected")

搴ф爣绉诲姩鍩虹妯℃澘
--------------------------------

.. code-block::

    import os
    import sys

    JAKA_PYTHONPATH = os.path.join(os.path.dirname(__file__)) # 娣诲姞褰撳墠璺緞鍒扮幆澧冨彉閲�
    sys.path.append(JAKA_PYTHONPATH)
    import socket

    import const
    import jkrc
    import xyz_master_object

    jk = xyz_master_object.jk_master("192.168.37.100") # 鍒涘缓鏈烘鑷傚璞★紝浼犲叆鏈烘鑷� ip 鍦板潃
    server_address = ("127.0.0.1", 11111) # 鎸囧畾 robot server 鐨� ip 鍜岀鍙�
    jk.socketConnect(server_address)
    try:
        err_code = jk.xyzSwitchFlow("catr_basic.t") # 鍒囨崲浠诲姟
        if err_code != 0:
            os.system("pause")
        ws_id = 0
        err_code = jk.xyzSwitchItem(ws_id,"item1") # 鍒囨崲宸ヤ欢
        if err_code != 0:
            os.system("pause")
        IO_CABINET = 0
        IO_TOOL = 1 #
        IO_EXTEND = 2
        jk.robot.set_digital_output(IO_CABINET, 0, 0) # 璁剧疆鏁板瓧杈撳嚭
        home_joints = [0,0,0,0,-90,0]
        move_mode = 0
        is_block = True
        speed = 0.1 # unit: rad/s
        jk.robot.joint_move(home_joints, move_mode, is_block, speed) # 绉诲姩鍒板垵濮嬩綅缃�

        is_eye_in_hand = True

        while True:

            if is_eye_in_hand:
                scan_pose = [400,0,400,0,0,0]
                speed = 10 # unit: mm/s
                jk.robot.linear_move(scan_pose, move_mode, is_block, speed) # 绉诲姩鍒版媿鐓т綅濮�
                err_code = jk.xyzSendCurrentPose() # 鍙戦€佸綋鍓嶄綅濮�
                if err_code != 0:
                    os.system("pause")

            err_code, grasp_token = jk.xyzReqGraspPose(ws_id) # 璇锋眰璁$畻鎶撳彇浣嶅Э
            if err_code != 0:
                os.system("pause")
            err_code, grasp_pose, grasp_pose_num, pipeline_num, register_num = jk.xyzGetGraspPose(grasp_token) # 鑾峰彇鎶撳彇浣嶅Э
            if err_code != 0:
                os.system("pause")

            if grasp_pose_num < 1: # 濡傛灉娌℃湁浣嶅Э锛岀户缁姹�
                print("No grasp pose, continure requesting...")
                continue

            speed = 10 # unit: mm/s
            jk.robot.linear_move(grasp_pose, move_mode, is_block, speed) # 绉诲姩鍒版姄鍙栦綅濮�
            jk.robot.set_digital_output(IO_CABINET, 0, 1) # 鎶撳彇

            place_pose = [400,0,400,0,0,0]
            speed = 10 # unit: mm/s
            jk.robot.linear_move(place_pose, move_mode, is_block, speed) # 绉诲姩鍒版斁缃綅濮�
            jk.robot.set_digital_output(IO_CABINET, 0, 0) # 鏀剧疆

    finally:
        jk.robot.logout()
        print("robot disconnected")

搴ф爣绉诲姩浜屾瀹氫綅妯℃澘
-------------------------------------

.. code-block::

    import os
    import sys

    JAKA_PYTHONPATH = os.path.join(os.path.dirname(__file__)) # 娣诲姞褰撳墠璺緞鍒扮幆澧冨彉閲�
    sys.path.append(JAKA_PYTHONPATH)
    import socket

    import const
    import jkrc
    import xyz_master_object

    jk = xyz_master_object.jk_master("192.168.37.100") # 鍒涘缓鏈烘鑷傚璞★紝浼犲叆鏈烘鑷� ip 鍦板潃
    server_address = ("127.0.0.1", 11111) # 鎸囧畾 robot server 鐨� ip 鍜岀鍙�
    jk.socketConnect(server_address)
    try:
        err_code = jk.xyzSwitchFlow("cart_repo.t") # 鍒囨崲浠诲姟
        if err_code != 0:
            os.system("pause")

        IO_CABINET = 0
        IO_TOOL = 1 #
        IO_EXTEND = 2
        jk.robot.set_digital_output(IO_CABINET, 0, 0) # 璁剧疆鏁板瓧杈撳嚭0鐘舵€�
        jk.robot.set_digital_output(IO_CABINET, 1, 0) # 璁剧疆鏁板瓧杈撳嚭1鐘舵€�
        home_joints = [0,0,0,0,-90,0]
        move_mode = 0
        is_block = True
        speed = 0.1 # unit: rad/s
        jk.robot.joint_move(home_joints, move_mode, is_block, speed) # 绉诲姩鍒板垵濮嬩綅缃�

        ws_id = 0
        err_code = jk.xyzSwitchItem(ws_id,"item1") # 鍒囨崲宸ヤ欢
        if err_code != 0:
            os.system("pause")
        err_code, rough_grasp_token = jk.xyzReqGraspPose(ws_id) # 璇锋眰璁$畻鎶撳彇浣嶅Э
        if err_code != 0:
            os.system("pause")

        while True:
            # camera 1 get rough grasp pose 鐩告満1鑾峰彇绮楁姄鍙栦綅濮�
            err_code, rough_grasp_pose, rough_grasp_pose_num, rough_pipeline_num, rough_register_num = jk.xyzGetGraspPose(rough_grasp_token)
            if err_code != 0:
                os.system("pause")

            # no item, grasp board 娌℃湁宸ヤ欢锛屾姄鍙栭殧鏉�
            if rough_grasp_pose_num < 1:
                ws_id = 0
                err_code = jk.xyzSwitchItem(ws_id,"board") # 鍒囨崲宸ヤ欢
                if err_code != 0:
                    os.system("pause")
                err_code, board_grasp_token = jk.xyzReqGraspPose(ws_id) # 璇锋眰璁$畻鎶撳彇浣嶅Э
                if err_code != 0:
                    os.system("pause")
                # 鑾峰彇闅旀澘鎶撳彇浣嶅Э
                err_code, board_grasp_pose, board_grasp_pose_num, board_pipeline_num, board_register_num = jk.xyzGetGraspPose(board_grasp_token)
                if err_code != 0:
                    os.system("pause")

                if board_grasp_pose_num < 1:
                    # no board, you can change tote # 娌℃湁闅旀澘锛屽彲浠ュ垏鎹㈡枡绠�
                    break

                speed = 10 # unit: mm/s
                jk.robot.linear_move(board_grasp_pose, move_mode, is_block, speed)   # 绉诲姩鍒伴殧鏉挎姄鍙栦綅濮�
                jk.robot.set_digital_output(IO_CABINET, 0, 1) # 鎶撳彇
                # place board 鏀剧疆闅旀澘
                board_place_pose = [400,0,400,0,0,0]
                speed = 10 # unit: mm/s
                jk.robot.linear_move(board_place_pose, move_mode, is_block, speed) # 绉诲姩鍒伴殧鏉挎斁缃綅濮�
                jk.robot.set_digital_output(IO_CABINET, 0, 0) # 鏀剧疆

                ws_id = 0
                err_code = jk.xyzSwitchItem(ws_id,"item1") # 鍒囨崲宸ヤ欢
                if err_code != 0:
                    os.system("pause")
                err_code, rough_grasp_token = jk.xyzReqGraspPose(ws_id) # 璇锋眰绮楁姄鍙栦綅濮�
                if err_code != 0:
                    os.system("pause")
                continue

            # move to rough grasp pose 绉诲姩鍒扮矖鎶撳彇浣嶅Э
            speed = 10 # unit: mm/s
            jk.robot.linear_move(rough_grasp_pose, move_mode, is_block, speed)
            err_code = jk.xyzSendCurrentPose() # 鍙戦€佸綋鍓嶄綅濮�

            # camera2 get grasp pose 鐩告満2鑾峰彇绮剧‘鎶撳彇浣嶅Э
            ws_id = 1
            err_code = jk.xyzSwitchItem(ws_id,"item1")
            if err_code != 0:
                os.system("pause")
            err_code, fine_grasp_token = jk.xyzReqGraspPose(ws_id) # 璇锋眰绮剧‘鎶撳彇浣嶅Э
            if err_code != 0:
                os.system("pause")
            # 鑾峰彇绮剧‘鎶撳彇浣嶅Э
            err_code, fine_grasp_pose, fine_grasp_pose_num, fine_pipeline_num, fine_register_num = jk.xyzGetGraspPose(fine_grasp_token)
            if err_code != 0:
                os.system("pause")
            if fine_grasp_pose_num < 1: # 濡傛灉娌℃湁浣嶅Э锛岄€€鍑哄惊鐜�
                break

            # move to fine grasp pose 绉诲姩鍒扮簿纭姄鍙栦綅濮�
            speed = 10 # unit: mm/s
            jk.robot.linear_move(fine_grasp_pose, move_mode, is_block, speed) # 绉诲姩鍒扮簿纭姄鍙栦綅濮�
            jk.robot.set_digital_output(IO_CABINET, 1, 1) # 鎶撳彇

            # place item 鏀剧疆宸ヤ欢
            item_place_pose = [400,0,400,0,0,0]
            speed = 10 # unit: mm/s
            jk.robot.linear_move(item_place_pose, move_mode, is_block, speed) # 绉诲姩鍒版斁缃綅濮�
            jk.robot.set_digital_output(IO_CABINET, 1, 0) # 鏀剧疆

            ws_id = 0
            err_code = jk.xyzSwitchItem(ws_id,"item1") # 鍒囨崲宸ヤ欢
            err_code, rough_grasp_token = jk.xyzReqGraspPose(ws_id) # 璇锋眰鐩告満1绮楁姄鍙栦綅濮�


    finally:
        jk.robot.logout()
        print("robot disconnected")