妗堜緥/妯℃澘璇存槑 ============================ 鏈烘鑷備富鎺т富鍑芥暟璇存槑 ++++++++++++++++++++++++++++++++ 杞ㄨ抗绉诲姩鍚屾妯℃澘 -------------------------------- .. 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")