遥操控制机械臂案例
案例都基于 exoskeleton_api.py 文件
1 串口通信
# 例子
from exoskeleton_api import Exoskeleton
# 连接串口
obj = Exoskeleton(port="COM5")
# 获取双臂数据
all_data = obj.get_all_data()
print(all_data)
# 获取左臂数据
left_data = obj.get_arm_data(1)
print(left_data)
# 获取右臂数据
right_data = obj.get_arm_data(2)
print(right_data)
# 获取单臂单关节数据
joint_data = obj.get_joint_data(1, 1)
print(joint_data)
# 设置当前位置为右臂J7零点
obj.set_zero(2, 7)
# 设置左臂atom屏幕颜色
obj.set_color(1, 0, 255, 0)
2 socket通信
# 例子
from exoskeleton_api import ExoskeletonSocket
# 连接服务端
obj = ExoskeletonSocket()
# 获取双臂数据
all_data = obj.get_all_data()
print(all_data)
# 获取左臂数据
left_data = obj.get_arm_data(1)
print(left_data)
# 获取右臂数据
right_data = obj.get_arm_data(2)
print(right_data)
# 获取单臂单关节数据
joint_data = obj.get_joint_data(1, 1)
print(joint_data)
# 设置当前位置为右臂J7零点
obj.set_zero(2, 7)
# 设置左臂atom屏幕颜色
obj.set_color(1, 0, 255, 0)
3 mercury X1(7轴)
pymycobot 版本为 3.5.0b66(及以上版本)
双臂协同控制
import threading
from pymycobot import Mercury
from exoskeleton_api import exoskeleton
obj = exoskeleton(port="/dev/ttyACM4")
ml = Mercury("/dev/left_arm")
mr = Mercury("/dev/right_arm")
# 设置双臂为速度融合模式
ml.set_movement_type(2)
mr.set_movement_type(2)
# 设置夹爪运行模式
ml.set_gripper_mode(0)
mr.set_gripper_mode(0)
# 0 左臂,1 右臂
def control_arm(arm):
while True:
if arm == 0:
arm_data = obj.get_data(0)
print("l: ", arm_data)
mc = ml
elif arm == 1:
arm_data = obj.get_data(1)
print("r: ", arm_data)
mc = mr
else:
raise ValueError("error arm")
# 由于外骨骼各关节转向、零点与部分机械臂构型不同,在此设置映射关系(根据各关节实际控制转向、位置设置)
mercury_list = [
arm_data[0], -arm_data[1], arm_data[2], -arm_data[3], arm_data[4],
135 + arm_data[5], arm_data[6]
]
# 按键按下控制夹爪开闭
if arm_data[7] == 0:
mc.set_gripper_state(1, 100)
elif arm_data[8] == 0:
mc.set_gripper_state(0, 100)
mc.send_angles(mercury_list, 6)
# 左臂
threading.Thread(target=control_arm, args=(0, )).start()
# 右臂
threading.Thread(target=control_arm, args=(1, )).start()