当前位置:   article > 正文

用python计算机械臂工作区间(workspace)_机械臂工作空间计算

机械臂工作空间计算

如今最主流的机械臂分为串联式和并联式机械臂,本文主要举例为六轴串联式机械臂工作区间的计算方法

为什么要计算工作空间,工作空间和使用目的相关,当确定机械臂确定要完成某项任务,比如夹取1m外的小苹果时,就需要根据需求,设计或选购能满足该任务的机械臂,机械臂的工作空间就是其中一项指标。这里我提到的工作空间区别于灵巧度空间(dexterity space),只要求机械臂末端执行器能到达该坐标点即可。

可以参考工业中KUKA机械臂的表示方法,该六轴机械臂的工作空间分为左视图和俯视图,分别表示X-Z二维平面的最大运动轨迹,和Y-X二维平面的最大旋转角度,通过三个维度的信息就可以计算工作体积(volume):

相信大家可以看出,一般工业机械臂的旋转轴都在J1,所以图右非常显而易见,和J1的旋转角有关

而左边这张图呢,我这边是通过python枚举末端点坐标的方式,获得的,直接上代码显而易见,值得一提的是,在设计计算的时候需要对关节进行简化,只有在X-Z平面内做旋转(或者直线)运动的关节才被显示,否则可以根据设计做融合简化:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import pandas as pd
  4. d12 = 91
  5. d23 = 92
  6. d35 = 160.7
  7. d56 = 155
  8. theta23_min = -90
  9. theta23_max = 76
  10. theta35_min = -109
  11. theta35_max = 109
  12. theta56_min = -124
  13. theta56_max = 124
  14. angleinterval23 = np.linspace(theta23_min, theta23_max, 8)
  15. angleinterval35 = np.linspace(theta35_min, theta35_max, 8)
  16. angleinterval56 = np.linspace(theta56_min, theta56_max, 8)
  17. result = []
  18. origin = [91, 0] # [x, y]
  19. num = 0
  20. # Press the green button in the gutter to run the script.
  21. if __name__ == '__main__':
  22. print("the value of angle 23 is: \n", angleinterval23)
  23. print("the value of angle 35 is: \n", angleinterval35)
  24. print("the value of angle 56 is: \n", angleinterval56)
  25. for i in range(len(angleinterval23)):
  26. x23 = origin[0]+d23*np.cos(angleinterval23[i]*np.pi/180)
  27. y23 = origin[1]+d23*np.sin(angleinterval23[i]*np.pi/180)
  28. for j in range(len(angleinterval35)):
  29. x35 = x23+d35*np.cos(angleinterval35[j]*np.pi/180)
  30. y35 = y23+d35*np.sin(angleinterval35[j]*np.pi/180)
  31. for k in range(len(angleinterval56)):
  32. x56 = x35+d56*np.cos(angleinterval56[k]*np.pi/180)
  33. y56 = y35+d56*np.sin(angleinterval56[k]*np.pi/180)
  34. result.append([x56, y56])
  35. plt.figure()
  36. plt.plot([x23, x35], [y23, y35], linewidth =2)
  37. plt.plot([x35, x56], [y35, y56], linewidth =2)
  38. plt.plot([0, 95], [0,0], linewidth=2)
  39. plt.plot([95, x23], [0, y23], linewidth=2)
  40. plt.plot(x23, y23, "ko")
  41. plt.plot(x35, y35, "ko")
  42. plt.plot(x56, y56, "ko")
  43. plt.xlim(-100, 600)
  44. plt.ylim(-500, 500)
  45. # filename = "{i}_{j}_{j}".format(i=i,j=j,k=k)
  46. filename = num
  47. num += 1
  48. plt.savefig("C:/Users/liuy93/PycharmProjects/MazorXworkspace/jepg/"+str(filename))
  49. result = pd.DataFrame(result)
  50. result.to_csv("coordinate.csv")

得到的奇怪的图如下(左侧角度没有做充分的线性规划,所以显得有些不规则): 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/993226
推荐阅读
相关标签
  

闽ICP备14008679号