关节控制
对于串联式多关节机器人,关节空间的控制是针对机器人各个关节的变量进行的控制,目标是让机器人各个关节按照一定速度达到目标位置。
注意: 在设置角度时,不同系列的机械臂限位有所不同,具体可查看对应型号的参数介绍。
单关节控制
send_angle(id, degree, speed)
- 功能: 发送指定的单个关节运动至指定的角度
- 参数说明:
id
: 代表机械臂的关节,用数字1-6来表示。degree
: 表示关节的角度speed
:表示机械臂运动的速度,范围0~100
- 返回值: 1
set_encoder(joint_id, encoder, sp)
- 功能: 发送指定的单个关节运动至指定的电位值
参数说明:
joint_id
: 代表机械臂的关节,用数字1-6来表示。encoder
:表示机械臂的电位值,取值范围是 0 ~ 4096sp
: 表示机械臂运动的速度,范围1~100
- 返回值: 1
多关节控制
get_angles()
功能: 获取所有关节角度
返回值:
list
一个浮点值的列表代,表所有关节的角度
send_angles(degrees, speed)
- 功能: 发送所有角度给机械臂所有关节
- 参数说明:
degrees
:(List[float])
包含所有关节的角度 , 表示方法为:[20,20,20,20,20,20]
speed
: 表示机械臂运动的速度,取值范围是0-100
- 返回值: 1
set_encoders(encoders, sp)
- 功能: 发送电位值给机械臂所有关节
- 参数说明:
encoder
:表示机械臂的电位值,取值范围是 0 ~ 4096,表示方法为:[2048,2048,2048,2048,2048,2048]
sp
: 表示机械臂运动的速度,取值范围是0-100
- 返回值: 1
sync_send_angles(degrees, speed, timeout=15)
- 功能: 同步发送角度,到达目标点返回
- 参数说明:
degrees
: 每个关节的角度值列表List[float]
speed
: (int
)机械臂运动的速度,取值范围是0-100timeout
:时间默认15s
- 返回值: 1
get_radians()
- 功能: 获取所有关节的弧度
- 返回值:
list
包含所有关节弧度值的列表
send_radians(radians, speed)
- 功能: 发送弧度值给机械臂所有关节
- 参数说明:
radians
:list
表示机械臂的弧度值列表,取值范围是 -5~5
- 返回值: 1
案例使用
from pymycobot.mycobot280 import MyCobot280
import time
# MyCobot280 类初始化需要两个参数:串口和波特率
# 初始化一个MyCobot280对象
# 这里为 JN版本创建对象代码
mc = MyCobot280("COM3", 115200)
time.sleep(2)
# 通过传递角度参数,让机械臂每个关节移动到对应[0, 0, 0, 0, 0, 0]的位置
mc.send_angles([0, 0, 0, 0, 0, 0], 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2.5)
# 让关节1移动到90这个位置
mc.send_angle(1, 90, 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2)
# 以下代码可以让机械臂左右摇摆
# 设置循环次数
num=5
while num > 0:
# 让关节2移动到50这个位置
mc.send_angle(2, 50, 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(1.5)
# 让关节2移动到-50这个位置
mc.send_angle(2, -50, 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(1.5)
num -= 1
# 让机械臂缩起来。你可以手动摆动机械臂,然后使用get_angles()函数获得坐标数列,
# 通过该函数让机械臂到达你所想的位置。
mc.send_angles([88.68, -138.51, 155.65, -128.05, -9.93, -15.29], 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2.5)
# 让机械臂放松,可以手动摆动机械臂
mc.release_all_servos()