Skip to content

Commit 3e27204

Browse files
authored
Merge pull request #41 from elephantrobotics/ultraArm_demo
Ultra arm demo
2 parents 9f90213 + 6e5dfa6 commit 3e27204

File tree

7 files changed

+446
-5
lines changed

7 files changed

+446
-5
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
from pymycobot.ultraArm import ultraArm
2+
import time
3+
import serial
4+
import serial.tools.list_ports
5+
6+
#以上需写在代码开头,意为导入项目包
7+
8+
# ultraArm 类初始化需要两个参数:串口和波特率
9+
# 第一个是串口字符串, 如:
10+
# linux: "/dev/ttyUSB0"
11+
# windows: "COM3"
12+
# 第二个是波特率:115200
13+
# 以下为如:
14+
# linux:
15+
# ua = ultraArm("/dev/USB0", 115200)
16+
# windows:
17+
# ua = ultraArm("COM3", 115200)
18+
19+
# 获取串口列表
20+
plist = [
21+
str(x).split(" - ")[0].strip() for x in serial.tools.list_ports.comports()
22+
]
23+
24+
# 初始化一个ultraArm对象
25+
# 下面为 windows版本创建对象代码
26+
27+
ua = ultraArm(plist[0], 115200)
28+
# ultraArm进行坐标运动/角度运动之前必须进行回零,否则无法获取到正确的角度/坐标
29+
ua.go_zero()
30+
time.sleep(0.5)
31+
32+
# 通过传递角度参数,让机械臂每个关节移动到对应[0, 0, 0]的位置
33+
ua.set_angles([0, 0, 0], 50)
34+
35+
# 设置等待时间,确保机械臂已经到达指定位置
36+
time.sleep(2.5)
37+
38+
# 让关节1移动到90这个位置
39+
ua.set_angle(1, 90, 50)
40+
# 设置等待时间,确保机械臂已经到达指定位置
41+
time.sleep(2)
42+
43+
# 以下代码可以让机械臂左右摇摆
44+
# 设置循环次数
45+
num = 7
46+
47+
while num > 0:
48+
# 让关节2移动到45这个位置
49+
ua.send_angle(2, 45, 50)
50+
51+
# 设置等待时间,确保机械臂已经到达指定位置
52+
time.sleep(3)
53+
54+
# 让关节2移动到-15这个位置
55+
ua.set_angle(2, -15, 50)
56+
57+
# 设置等待时间,确保机械臂已经到达指定位置
58+
time.sleep(3)
59+
60+
num -= 1
61+
62+
# 让机械臂缩起来。你可以手动摆动机械臂,然后使用get_angles()函数获得坐标数列,
63+
# 通过该函数让机械臂到达你所想的位置。
64+
ua.set_angles([88.68, 60, 30], 50)
65+
66+
# 设置等待时间,确保机械臂已经到达指定位置
67+
time.sleep(2.5)
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
from pymycobot.ultraArm import ultraArm
2+
import time
3+
import serial
4+
import serial.tools.list_ports
5+
6+
#以上需写在代码开头,意为导入项目包
7+
8+
# ultraArm 类初始化需要两个参数:串口和波特率
9+
# 第一个是串口字符串, 如:
10+
# linux: "/dev/ttyUSB0"
11+
# windows: "COM3"
12+
# 第二个是波特率:115200
13+
# 以下为如:
14+
# linux:
15+
# ua = ultraArm("/dev/USB0", 115200)
16+
# windows:
17+
# ua = ultraArm("COM3", 115200)
18+
#
19+
# 获取串口列表
20+
plist = [
21+
str(x).split(" - ")[0].strip() for x in serial.tools.list_ports.comports()
22+
]
23+
24+
# 初始化一个ultraArm对象
25+
# 下面为 windows版本创建对象代码
26+
ua = ultraArm(plist[0], 115200)
27+
28+
# ultraArm进行坐标运动/角度运动之前必须进行回零,否则无法获取到正确的角度/坐标
29+
ua.go_zero()
30+
time.sleep(0.5)
31+
32+
# 获取当前头部的坐标以及姿态
33+
coords = ua.get_coords_info()
34+
time.sleep(2)
35+
print(coords)
36+
37+
# # 让机械臂到达[57.0,-10,30]这个坐标,速度为80mm/s
38+
ua.set_coords([57.0,-10,30], 80)
39+
40+
# 设置等待时间2秒
41+
time.sleep(2)
42+
43+
# 让机械臂到达[-13.7, 40, 20]这个坐标,速度为80mm/s
44+
ua.set_coords([-13.7, 40, 20], 80)
45+
46+
# 设置等待时间2秒
47+
time.sleep(2)
48+
49+
# 仅改变头部的x坐标,设置头部的x坐标为-40,速度为70mm/s
50+
ua.set_coord(1, -40, 70)
Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
from pymycobot.ultraArm import ultraArm
2+
import serial
3+
import serial.tools.list_ports
4+
5+
# 被搬运的木块的坐标位置
6+
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]]
7+
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]]
8+
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]]
9+
10+
# 木块到达的坐标位置
11+
cube_pos_g = [[200, -75, 120], [200, -75, 15], [200, -75, 55], [200, -75, 95]]
12+
cube_pos_r = [[150.63, -75, 15], [150.63, -75, 55], [150.63, -75, 95]]
13+
cube_pos_y = [[109.63, -75, 15], [109.63, -75, 55], [109.63, -75, 95]]
14+
15+
# 被搬运的木块所在的方向
16+
block_high = [60, 5, 0]
17+
18+
# 木块到达的位置所在方向
19+
cube_high = [-30, 10, 10]
20+
21+
# 获取串口列表
22+
plist = [
23+
str(x).split(" - ")[0].strip() for x in serial.tools.list_ports.comports()
24+
]
25+
26+
# 连接串口
27+
ua = ultraArm(plist[0],115200)
28+
29+
# ultraArm进行坐标运动/角度运动之前必须进行回零,否则无法获取到正确的角度/坐标
30+
ua.go_zero()
31+
ua.sleep(0.5)
32+
33+
34+
# Yellow
35+
# 搬运第一个木块
36+
# 移动到木块所在方向
37+
ua.set_angles(block_high, 50)
38+
ua.sleep(0.5)
39+
40+
ua.set_coords(yellow_pos[0], 50)
41+
ua.sleep(1)
42+
43+
# 到达木块所在位置
44+
ua.set_coords(yellow_pos[1], 50)
45+
ua.sleep(1)
46+
# 打开吸泵
47+
ua.set_gpio_state(0)
48+
ua.sleep(0.5)
49+
50+
# 移动到需要到达的位置上方
51+
ua.set_angles(cube_high, 50)
52+
ua.sleep(0.5)
53+
54+
# 下降到需要到达的位置
55+
ua.set_coords(cube_pos_y[0], 50)
56+
ua.sleep(0.5)
57+
# 关闭吸泵
58+
ua.set_gpio_state(1)
59+
ua.sleep(0.5)
60+
61+
# 移动到木块所在位置上方,一次搬运动作完成,后续搬运动作跟此次搬运动作一致
62+
ua.set_angles(cube_high, 50)
63+
ua.sleep(0.5)
64+
65+
#2
66+
ua.set_angles(block_high, 50)
67+
ua.sleep(0.5)
68+
69+
ua.set_coords(yellow_pos[0], 50)
70+
ua.sleep(1)
71+
72+
ua.set_coords(yellow_pos[2], 50)
73+
ua.sleep(1)
74+
ua.set_gpio_state(0)
75+
ua.sleep(0.5)
76+
77+
ua.set_angles(cube_high, 50)
78+
ua.sleep(0.5)
79+
80+
ua.set_coords(cube_pos_y[1], 50)
81+
ua.sleep(0.5)
82+
ua.set_gpio_state(1)
83+
ua.sleep(0.5)
84+
85+
ua.set_angles(cube_high, 50)
86+
ua.sleep(0.5)
87+
88+
# Red
89+
# 1
90+
ua.set_angles(block_high, 50)
91+
ua.sleep(0.5)
92+
93+
ua.set_coords(red_pos[0], 50)
94+
ua.sleep(1)
95+
96+
ua.set_coords(red_pos[1], 50)
97+
ua.sleep(1)
98+
ua.set_gpio_state(0)
99+
ua.sleep(0.5)
100+
101+
ua.set_angles(cube_high, 50)
102+
ua.sleep(0.5)
103+
104+
ua.set_coords(cube_pos_r[0], 50)
105+
ua.sleep(0.5)
106+
ua.set_gpio_state(1)
107+
ua.sleep(0.5)
108+
109+
ua.set_angles(cube_high, 50)
110+
ua.sleep(0.5)
111+
112+
#2
113+
ua.set_angles(block_high, 50)
114+
ua.sleep(0.5)
115+
116+
ua.set_coords(red_pos[0], 50)
117+
ua.sleep(1)
118+
119+
ua.set_coords(red_pos[2], 50)
120+
ua.sleep(1)
121+
ua.set_gpio_state(0)
122+
ua.sleep(0.5)
123+
124+
ua.set_angles(cube_high, 50)
125+
ua.sleep(0.5)
126+
127+
ua.set_coords(cube_pos_r[1], 50)
128+
ua.sleep(0.5)
129+
ua.set_gpio_state(1)
130+
ua.sleep(0.5)
131+
132+
ua.set_angles(cube_high, 50)
133+
ua.sleep(0.5)
134+
135+
136+
# Green
137+
# 1
138+
ua.set_angles(block_high, 50)
139+
ua.sleep(0.5)
140+
141+
ua.set_coords(green_pos[0], 50)
142+
ua.sleep(1)
143+
144+
ua.set_coords(green_pos[1], 50)
145+
ua.sleep(1)
146+
ua.set_gpio_state(0)
147+
ua.sleep(0.5)
148+
149+
ua.set_angles(cube_high, 50)
150+
ua.sleep(0.5)
151+
152+
ua.set_coords(cube_pos_g[0], 50)
153+
ua.sleep(0.5)
154+
155+
ua.set_coords(cube_pos_g[1], 50)
156+
ua.sleep(0.5)
157+
ua.set_gpio_state(1)
158+
ua.sleep(0.5)
159+
160+
ua.set_angles(cube_high, 50)
161+
ua.sleep(0.5)
162+
163+
#2
164+
ua.set_angles(block_high, 50)
165+
ua.sleep(0.5)
166+
167+
ua.set_coords(green_pos[0], 50)
168+
ua.sleep(1)
169+
170+
ua.set_coords(green_pos[2], 50)
171+
ua.sleep(1)
172+
ua.set_gpio_state(0)
173+
ua.sleep(0.5)
174+
175+
ua.set_angles(cube_high, 50)
176+
ua.sleep(0.5)
177+
178+
ua.set_coords(cube_pos_g[0], 50)
179+
ua.sleep(0.5)
180+
181+
ua.set_coords(cube_pos_g[2], 50)
182+
ua.sleep(0.5)
183+
ua.set_gpio_state(1)
184+
ua.sleep(0.5)
185+
186+
ua.set_angles(cube_high, 50)
187+
ua.sleep(0.5)

demo/ultraArm_demo/6-laser_use.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from pymycobot.ultraArm import ultraArm
2+
import time
3+
import serial
4+
import serial.tools.list_ports
5+
6+
#以上需写在代码开头,意为导入项目包
7+
8+
# ultraArm 类初始化需要两个参数:串口和波特率
9+
# 第一个是串口字符串, 如:
10+
# linux: "/dev/ttyUSB0"
11+
# windows: "COM3"
12+
# 第二个是波特率:115200
13+
# 以下为如:
14+
# linux:
15+
# ua = ultraArm("/dev/USB0", 115200)
16+
# windows:
17+
# ua = ultraArm("COM3", 115200)
18+
#
19+
20+
plist = [
21+
str(x).split(" - ")[0].strip() for x in serial.tools.list_ports.comports()
22+
]
23+
24+
# 初始化一个ultraArm对象
25+
# 下面为 windows版本创建对象代码
26+
ua = ultraArm(plist[0], 115200)
27+
ua.go_zero()
28+
29+
time.sleep(2)
30+
31+
ua.set_pwm(128)
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import time
2+
import platform
3+
import serial
4+
import serial.tools.list_ports
5+
from pymycobot.ultraArm import ultraArm
6+
7+
plist = [
8+
str(x).split(" - ")[0].strip() for x in serial.tools.list_ports.comports()
9+
]
10+
11+
# 自动选择系统并连接机械臂
12+
if platform.system() == "Windows":
13+
ua = ultraArm(plist[0], 115200)
14+
ua.go_zero()
15+
elif platform.system() == "Linux":
16+
ua = ultraArm('/dev/ttyUSB0', 115200)
17+
ua.go_zero()
18+
19+
# 机械臂运动的位置
20+
angles = [
21+
[-81.71, 0.0, 0.0],
22+
[-90.53, 21.77, 47.56],
23+
[-90.53, 0.0, 0.0],
24+
[-59.01, 21.77, 45.84],
25+
[-59.01, 0.0, 0.0]
26+
]
27+
28+
ua.set_angles(angles[0], 50)
29+
time.sleep(3)
30+
31+
i = 5
32+
# 循环5次
33+
while i > 0:
34+
# 张开夹爪
35+
ua.set_gripper_state(0)
36+
time.sleep(2)
37+
# 闭合夹爪
38+
ua.set_gripper_state(1)
39+
time.sleep(2)
40+
i -= 1

0 commit comments

Comments
 (0)