python 码垛搬运

1 环境搭建

1.1 安装python

1.2 安装myBlockly

2 开始使用

2.1 如何读取机械臂角度和坐标

  • 双击打开软件

  • 打开工具面板

  • 选择对应机器类型和串口号,打开串口

  • 使机械臂回零

  • 回零结束后,通过快速移动面板,控制机械臂进行运动

  • 控制机械臂到达需要的位置,记录此时角度/坐标参数

  • 将记录下来的角度/坐标参数填入api,输入速度参数

2.2 示例

  • 以下为一套简单的码垛搬运动作示例,用到的木块规格为40X40,您可以复制代码进行使用或者修改

from pymycobot.ultraArm import ultraArm

# 被搬运的木块的坐标位置
green_pos = [[74.6, 167.55, 120], [74.6, 167.55, 92.45], [74.6, 167.55, 52.45], [74.6, 167.55, 12.45]]
red_pos = [[112.67, 173.5, 120], [112.67, 173.5, 92.45], [112.67, 173.5, 52.45], [112.67, 173.5, 12.45]]
yellow_pos = [[150.92, 167.61, 120], [150.92, 167.61, 92.45], [150.92, 167.61, 52.45], [150.92, 167.61, 12.45]]

# 木块到达的坐标位置
cube_pos_g = [[200, -75, 120], [200, -75, 15], [200, -75, 55], [200, -75, 95]]
cube_pos_r = [[150.63, -75, 15], [150.63, -75, 55], [150.63, -75, 95]]
cube_pos_y = [[109.63, -75, 15], [109.63, -75, 55], [109.63, -75, 95]]

# 被搬运的木块所在的方向
block_high = [60, 5, 0]

# 木块到达的位置所在方向
cube_high = [-30, 10, 10]


# 连接串口
ua = ultraArm('COM16','115200')

# ultraArm进行坐标运动/角度运动之前必须进行回零,否则无法获取到正确的角度/坐标
ua.go_zero()
ua.sleep(0.5)


# Yellow
# 搬运第一个木块
# 移动到木块所在方向
ua.set_angles(block_high, 50)
ua.sleep(0.5)

ua.set_coords(yellow_pos[0], 50)
ua.sleep(1)

# 到达木块所在位置
ua.set_coords(yellow_pos[1], 50)
ua.sleep(1)
# 打开吸泵
ua.set_gpio_state(0)
ua.sleep(0.5)

# 移动到需要到达的位置上方
ua.set_angles(cube_high, 50)
ua.sleep(0.5)

# 下降到需要到达的位置
ua.set_coords(cube_pos_y[0], 50)
ua.sleep(0.5)
# 关闭吸泵
ua.set_gpio_state(1)
ua.sleep(0.5)

# 移动到木块所在位置上方,一次搬运动作完成,后续搬运动作跟此次搬运动作一致
ua.set_angles(cube_high, 50)
ua.sleep(0.5)

#2
ua.set_angles(block_high, 50)
ua.sleep(0.5)

ua.set_coords(yellow_pos[0], 50)
ua.sleep(1)

ua.set_coords(yellow_pos[2], 50)
ua.sleep(1)
ua.set_gpio_state(0)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

ua.set_coords(cube_pos_y[1], 50)
ua.sleep(0.5)
ua.set_gpio_state(1)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

# Red
# 1
ua.set_angles(block_high, 50)
ua.sleep(0.5)

ua.set_coords(red_pos[0], 50)
ua.sleep(1)

ua.set_coords(red_pos[1], 50)
ua.sleep(1)
ua.set_gpio_state(0)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

ua.set_coords(cube_pos_r[0], 50)
ua.sleep(0.5)
ua.set_gpio_state(1)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

#2
ua.set_angles(block_high, 50)
ua.sleep(0.5)

ua.set_coords(red_pos[0], 50)
ua.sleep(1)

ua.set_coords(red_pos[2], 50)
ua.sleep(1)
ua.set_gpio_state(0)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

ua.set_coords(cube_pos_r[1], 50)
ua.sleep(0.5)
ua.set_gpio_state(1)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)


# Green
# 1
ua.set_angles(block_high, 50)
ua.sleep(0.5)

ua.set_coords(green_pos[0], 50)
ua.sleep(1)

ua.set_coords(green_pos[1], 50)
ua.sleep(1)
ua.set_gpio_state(0)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

ua.set_coords(cube_pos_g[0], 50)
ua.sleep(0.5)

ua.set_coords(cube_pos_g[1], 50)
ua.sleep(0.5)
ua.set_gpio_state(1)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

#2
ua.set_angles(block_high, 50)
ua.sleep(0.5)

ua.set_coords(green_pos[0], 50)
ua.sleep(1)

ua.set_coords(green_pos[2], 50)
ua.sleep(1)
ua.set_gpio_state(0)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

ua.set_coords(cube_pos_g[0], 50)
ua.sleep(0.5)

ua.set_coords(cube_pos_g[2], 50)
ua.sleep(0.5)
ua.set_gpio_state(1)
ua.sleep(0.5)

ua.set_angles(cube_high, 50)
ua.sleep(0.5)

2.3 实际运行效果

此处会有一个动作视频

results matching ""

    No results matching ""