From 58554e749ccea3ba42baf4348dcf236b0e44e2ee Mon Sep 17 00:00:00 2001 From: wangWking <842749351@qq.com> Date: Sat, 9 Sep 2023 19:06:05 +0800 Subject: [PATCH] Update pro600 ros to support python3 --- mycobot_pro/mycobot_600/launch/test.launch | 12 +- mycobot_pro/mycobot_600/scripts/slider_600.py | 247 +---------------- .../mycobot_600_moveit/scripts/sync_plan.py | 250 +----------------- 3 files changed, 21 insertions(+), 488 deletions(-) mode change 100644 => 100755 mycobot_pro/mycobot_600/launch/test.launch diff --git a/mycobot_pro/mycobot_600/launch/test.launch b/mycobot_pro/mycobot_600/launch/test.launch old mode 100644 new mode 100755 index ae303988..49988169 --- a/mycobot_pro/mycobot_600/launch/test.launch +++ b/mycobot_pro/mycobot_600/launch/test.launch @@ -2,17 +2,15 @@ - + - - - - ["joint_states"] - + + + - + \ No newline at end of file diff --git a/mycobot_pro/mycobot_600/scripts/slider_600.py b/mycobot_pro/mycobot_600/scripts/slider_600.py index cc76fa27..12d50565 100755 --- a/mycobot_pro/mycobot_600/scripts/slider_600.py +++ b/mycobot_pro/mycobot_600/scripts/slider_600.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python3 # -*- coding: utf-8 -*- from socket import * import math @@ -9,239 +9,9 @@ import rospy from sensor_msgs.msg import JointState -global mc -mutex = Lock() - - -class ElephantRobot(object): - def __init__(self, host, port): - # setup connection - # 建立连接 - self.BUFFSIZE = 2048 - self.ADDR = (host, port) - self.tcp_client = socket(AF_INET, SOCK_STREAM) - - def start_client(self): - try: - self.tcp_client.connect(self.ADDR) - return "" - except error, e: - return e - - def stop_client(self): - self.tcp_client.close() - - def send_command(self, command): - with mutex: - self.tcp_client.send(command.encode()) - recv_data = self.tcp_client.recv(self.BUFFSIZE).decode() - res_str = str(recv_data) - print "recv = " + res_str - res_arr = res_str.split(":") - if len(res_arr) == 2: - return res_arr[1] - else: - return "" - - def string_to_coords(self, data): - data = data.replace("[", "") - data = data.replace("]", "") - data_arr = data.split(",") - if len(data_arr) == 6: - try: - coords_1 = float(data_arr[0]) - coords_2 = float(data_arr[1]) - coords_3 = float(data_arr[2]) - coords_4 = float(data_arr[3]) - coords_5 = float(data_arr[4]) - coords_6 = float(data_arr[5]) - coords = [coords_1, coords_2, coords_3, coords_4, coords_5, coords_6] - return coords - except: - return invalid_coords() - return invalid_coords() - - def string_to_double(self, data): - try: - val = float(data) - return val - except: - return -9999.99 - - def string_to_int(self, data): - try: - val = int(data) - return val - except: - return -9999 - - def invalid_coords(self): - coords = [-1, -2, -3, -4, -1, -1] - return coords - - def get_angles(self): - command = "get_angles()\n" - res = self.send_command(command) - return self.string_to_coords(res) - - def get_coords(self): - command = "get_coords()\n" - res = self.send_command(command) - return self.string_to_coords(res) - - def get_speed(self): - command = "get_speed()\n" - res = self.send_command(command) - return self.string_to_double(res) - - def power_on(self): - command = "power_on()\n" - res = self.send_command(command) - return True - - def power_off(self): - command = "power_off()\n" - res = self.send_command(command) - return True - - def check_running(self): - command = "check_running()\n" - res = self.send_command(command) - return res == "1" - - def state_check(self): - command = "state_check()\n" - res = self.send_command(command) - return res == "1" - - def program_open(self, file_path): - command = "program_open(" + file_path + ")\n" - res = self.send_command(command) - return self.string_to_int(res) - - def program_run(self, start_line): - """run program,运行程序""" - command = "program_run(" + str(start_line) + ")\n" - res = self.send_command(command) - return self.string_to_int(res) - - def read_next_error(self): - command = "read_next_error()\n" - res = self.send_command(command) - return res - - def write_coords(self, coords, speed): - """set coords,设置坐标""" - command = "set_coords(" - for item in coords: - command += str(item) + "," - command += str(speed) + ")\n" - self.send_command(command) - - def write_coord(self, axis, value, speed): - coords = self.get_coords() - if coords != self.invalid_coords(): - coords[axis] = value - self.write_coords(coords, speed) - - def write_angles(self, angles, speed): - """set angles,设置角度""" - command = "set_angles(" - for item in angles: - command += str(item) + "," - command += str(speed) + ")\n" - self.send_command(command) - - def write_angle(self, joint, value, speed): - angles = self.get_angles() - if angles != self.invalid_coords(): - angles[joint] = value - self.write_angles(angles, speed) - - def set_speed(self, percentage): - command = "set_speed(" + str(percentage) + ")\n" - self.send_command(command) - - def set_carte_torque_limit(self, axis_str, value): - command = "set_torque_limit(" + axis_str + "," + str(value) + ")\n" - self.send_command(command) - - def set_upside_down(self, up_down): - up = "1" - if up_down: - up = "0" - command = "set_upside_down(" + up + ")\n" - self.send_command(command) - - def set_payload(self, payload): - command = "set_speed(" + str(payload) + ")\n" - self.send_command(command) - - def state_on(self): - command = "state_on()\n" - self.send_command(command) - - def state_off(self): - command = "state_off()\n" - self.send_command(command) - - def task_stop(self): - command = "task_stop()\n" - self.send_command(command) - - def jog_angle(self, joint_str, direction, speed): - command = ( - "jog_angle(" + joint_str + "," + str(direction) + "," + str(speed) + ")\n" - ) - self.send_command(command) - - def jog_coord(self, axis_str, direction, speed): - command = ( - "jog_coord(" + axis_str + "," + str(direction) + "," + str(speed) + ")\n" - ) - self.send_command(command) - - def get_digital_in(self, pin_number): - command = "get_digital_in(" + str(pin_number) + ")\n" - self.send_command(command) - - def get_digital_out(self, pin_number): - command = "get_digital_out(" + str(pin_number) + ")\n" - self.send_command(command) - - def set_digital_out(self, pin_number, pin_signal): - command = "set_digital_out(" + str(pin_number) + "," + str(pin_signal) + ")\n" - self.send_command(command) - - def set_analog_out(self, pin_number, pin_signal): - command = "set_analog_out(" + str(pin_number) + "," + str(pin_signal) + ")\n" - self.send_command(command) - - def get_acceleration(self): - command = "get_acceleration()\n" - res = self.send_command(command) - return self.string_to_int(res) - - def set_acceleration(self, acceleration): - command = "set_acceleration(" + str(acceleration) + ")\n" - self.send_command(command) - - def command_wait_done(self): - command = "wait_command_done()\n" - self.send_command(command) - - def wait(self, seconds): - command = "wait(" + str(seconds) + ")\n" - self.send_command(command) - - def assign_variable(self, var_name, var_value): - command = 'assign_variable("' + str(var_name) + '",' + str(var_value) + ")\n" - self.send_command(command) - - def get_variable(self, var_name): - command = 'get_variable("' + str(var_name) + '")\n' - return self.send_command(command) +from pymycobot.elephantrobot import ElephantRobot +global mc old_list = [] @@ -251,7 +21,7 @@ def callback(data): satrt_time=time.time() global old_list # rospy.loginfo(rospy.get_caller_id() + "%s", data.position) - print ("position", data.position) + print("position:", data.position) data_list = [] for index, value in enumerate(data.position): value = value * 180 / math.pi @@ -276,21 +46,18 @@ def listener(): global mc rospy.init_node("control_slider", anonymous=True) - ip = rospy.get_param("~ip", "192.168.10.159") + ip = rospy.get_param("~ip", "192.168.1.159") print (ip) mc = ElephantRobot(ip, 5001) # START CLIENT,启动客户端 res = mc.start_client() if res != "": sys.exit(1) - # print ep.wait(5) - # print mc.get_angles() - # print mc.get_coords() + mc.set_speed(90) - # print mc.get_speed() rospy.Subscriber("joint_states", JointState, callback) - end_time=time.time() + # spin() simply keeps python from exiting until this node is stopped # spin()只是阻止python退出,直到该节点停止 print ("sping ...") diff --git a/mycobot_pro/mycobot_600_moveit/scripts/sync_plan.py b/mycobot_pro/mycobot_600_moveit/scripts/sync_plan.py index 6c450143..12d50565 100755 --- a/mycobot_pro/mycobot_600_moveit/scripts/sync_plan.py +++ b/mycobot_pro/mycobot_600_moveit/scripts/sync_plan.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python2 +#!/usr/bin/env python3 # -*- coding: utf-8 -*- from socket import * import math @@ -9,239 +9,9 @@ import rospy from sensor_msgs.msg import JointState -global mc -mutex = Lock() - - -class ElephantRobot(object): - def __init__(self, host, port): - # setup connection - # 建立连接 - self.BUFFSIZE = 2048 - self.ADDR = (host, port) - self.tcp_client = socket(AF_INET, SOCK_STREAM) - - def start_client(self): - try: - self.tcp_client.connect(self.ADDR) - return "" - except error, e: - return e - - def stop_client(self): - self.tcp_client.close() - - def send_command(self, command): - with mutex: - self.tcp_client.send(command.encode()) - recv_data = self.tcp_client.recv(self.BUFFSIZE).decode() - res_str = str(recv_data) - print "recv = " + res_str - res_arr = res_str.split(":") - if len(res_arr) == 2: - return res_arr[1] - else: - return "" - - def string_to_coords(self, data): - data = data.replace("[", "") - data = data.replace("]", "") - data_arr = data.split(",") - if len(data_arr) == 6: - try: - coords_1 = float(data_arr[0]) - coords_2 = float(data_arr[1]) - coords_3 = float(data_arr[2]) - coords_4 = float(data_arr[3]) - coords_5 = float(data_arr[4]) - coords_6 = float(data_arr[5]) - coords = [coords_1, coords_2, coords_3, coords_4, coords_5, coords_6] - return coords - except: - return invalid_coords() - return invalid_coords() - - def string_to_double(self, data): - try: - val = float(data) - return val - except: - return -9999.99 - - def string_to_int(self, data): - try: - val = int(data) - return val - except: - return -9999 - - def invalid_coords(self): - coords = [-1, -2, -3, -4, -1, -1] - return coords - - def get_angles(self): - command = "get_angles()\n" - res = self.send_command(command) - return self.string_to_coords(res) - - def get_coords(self): - command = "get_coords()\n" - res = self.send_command(command) - return self.string_to_coords(res) - - def get_speed(self): - command = "get_speed()\n" - res = self.send_command(command) - return self.string_to_double(res) - - def power_on(self): - command = "power_on()\n" - res = self.send_command(command) - return True - - def power_off(self): - command = "power_off()\n" - res = self.send_command(command) - return True - - def check_running(self): - command = "check_running()\n" - res = self.send_command(command) - return res == "1" - - def state_check(self): - command = "state_check()\n" - res = self.send_command(command) - return res == "1" - - def program_open(self, file_path): - command = "program_open(" + file_path + ")\n" - res = self.send_command(command) - return self.string_to_int(res) - - def program_run(self, start_line): - """run program,运行程序""" - command = "program_run(" + str(start_line) + ")\n" - res = self.send_command(command) - return self.string_to_int(res) - - def read_next_error(self): - command = "read_next_error()\n" - res = self.send_command(command) - return res - - def write_coords(self, coords, speed): - """set coords,设置坐标""" - command = "set_coords(" - for item in coords: - command += str(item) + "," - command += str(speed) + ")\n" - self.send_command(command) - - def write_coord(self, axis, value, speed): - coords = self.get_coords() - if coords != self.invalid_coords(): - coords[axis] = value - self.write_coords(coords, speed) - - def write_angles(self, angles, speed): - """set angles,设置角度""" - command = "set_angles(" - for item in angles: - command += str(item) + "," - command += str(speed) + ")\n" - self.send_command(command) - - def write_angle(self, joint, value, speed): - angles = self.get_angles() - if angles != self.invalid_coords(): - angles[joint] = value - self.write_angles(angles, speed) - - def set_speed(self, percentage): - command = "set_speed(" + str(percentage) + ")\n" - self.send_command(command) - - def set_carte_torque_limit(self, axis_str, value): - command = "set_torque_limit(" + axis_str + "," + str(value) + ")\n" - self.send_command(command) - - def set_upside_down(self, up_down): - up = "1" - if up_down: - up = "0" - command = "set_upside_down(" + up + ")\n" - self.send_command(command) - - def set_payload(self, payload): - command = "set_speed(" + str(payload) + ")\n" - self.send_command(command) - - def state_on(self): - command = "state_on()\n" - self.send_command(command) - - def state_off(self): - command = "state_off()\n" - self.send_command(command) - - def task_stop(self): - command = "task_stop()\n" - self.send_command(command) - - def jog_angle(self, joint_str, direction, speed): - command = ( - "jog_angle(" + joint_str + "," + str(direction) + "," + str(speed) + ")\n" - ) - self.send_command(command) - - def jog_coord(self, axis_str, direction, speed): - command = ( - "jog_coord(" + axis_str + "," + str(direction) + "," + str(speed) + ")\n" - ) - self.send_command(command) - - def get_digital_in(self, pin_number): - command = "get_digital_in(" + str(pin_number) + ")\n" - self.send_command(command) - - def get_digital_out(self, pin_number): - command = "get_digital_out(" + str(pin_number) + ")\n" - self.send_command(command) - - def set_digital_out(self, pin_number, pin_signal): - command = "set_digital_out(" + str(pin_number) + "," + str(pin_signal) + ")\n" - self.send_command(command) - - def set_analog_out(self, pin_number, pin_signal): - command = "set_analog_out(" + str(pin_number) + "," + str(pin_signal) + ")\n" - self.send_command(command) - - def get_acceleration(self): - command = "get_acceleration()\n" - res = self.send_command(command) - return self.string_to_int(res) - - def set_acceleration(self, acceleration): - command = "set_acceleration(" + str(acceleration) + ")\n" - self.send_command(command) - - def command_wait_done(self): - command = "wait_command_done()\n" - self.send_command(command) - - def wait(self, seconds): - command = "wait(" + str(seconds) + ")\n" - self.send_command(command) - - def assign_variable(self, var_name, var_value): - command = 'assign_variable("' + str(var_name) + '",' + str(var_value) + ")\n" - self.send_command(command) - - def get_variable(self, var_name): - command = 'get_variable("' + str(var_name) + '")\n' - return self.send_command(command) +from pymycobot.elephantrobot import ElephantRobot +global mc old_list = [] @@ -251,7 +21,7 @@ def callback(data): satrt_time=time.time() global old_list # rospy.loginfo(rospy.get_caller_id() + "%s", data.position) - print ("position", data.position) + print("position:", data.position) data_list = [] for index, value in enumerate(data.position): value = value * 180 / math.pi @@ -266,8 +36,9 @@ def callback(data): # if mc.check_running(): # mc.task_stop() # time.sleep(0.05) - + mc.write_angles(data_list, 1999) + end_time=time.time() print('loop_time:',end_time-satrt_time) @@ -275,21 +46,18 @@ def listener(): global mc rospy.init_node("control_slider", anonymous=True) - ip = rospy.get_param("~ip", "192.168.10.158") + ip = rospy.get_param("~ip", "192.168.1.159") print (ip) mc = ElephantRobot(ip, 5001) # START CLIENT,启动客户端 res = mc.start_client() if res != "": - print ('start_client->',res) sys.exit(1) - # print ep.wait(5) - # print mc.get_angles() - # print mc.get_coords() + mc.set_speed(90) - # print mc.get_speed() rospy.Subscriber("joint_states", JointState, callback) + # spin() simply keeps python from exiting until this node is stopped # spin()只是阻止python退出,直到该节点停止 print ("sping ...")