关节控制
对于串联式多关节机器人,关节空间的控制是针对机器人各个关节的变量进行的控制,目标是让机器人各个关节按照一定速度达到目标位置。
注意:在设置角度时,不同系列的机械臂限位有所不同,具体可查看对应型号的参数介绍。
1 单关节控制
1.1 set_angle(id, degree, speed)
- 功能: 发送指定的单个关节运动至指定的角度
- 参数说明:
id
: 代表机械臂的关节,三轴有三个关节,可以用数字1-3来表示。degree
: 表示关节的角度speed
:表示机械臂运动的速度,范围0~100 (单位:mm/s)。
- 返回值: 无
2 多关节控制
2.1 get_angles_info()
- 功能: 获取机械臂当前角度。
- 返回值:
list
一个浮点值的列表,表示所有关节的角度.
2.2 set_angles(degrees, speed)
- 功能: 发送所有角度给机械臂所有关节
- 参数说明:
degrees
: (List[float])包含所有关节的角度 ,三轴机器人有三个关节,所以长度为3,表示方法为:[20,20,20]speed
: 表示机械臂运动的速度,取值范围是0-100 (单位:mm/s)。
- 返回值: 无
2.5 get_radians_info()
- 功能: 获取机械臂当前弧度值。
- 返回值:
list
包含所有关节弧度值的列表.
2.6 set_radians(radians, speed)
- 功能: 发送弧度值给机械臂所有关节
- 参数说明:
radians
: 每个关节的弧度值列表(List[float]
)speed
: 表示机械臂运动的速度,范围是0-100 (单位:mm/s)。
- 返回值: 无
3 案例
以下是ultraArm相应代码。
- ultraArm:
from pymycobot.ultraArm import ultraArm
import time
#以上需写在代码开头,意为导入项目包
# ultraArm 类初始化需要两个参数:串口和波特率
# 第一个是串口字符串, 如:
# linux: "/dev/ttyUSB0"
# windows: "COM3"
# 第二个是波特率:115200
# 以下为如:
# linux:
# ua = ultraArm("/dev/USB0", 115200)
# windows:
# ua = ultraArm("COM3", 115200)
#
# 初始化一个ultraArm对象
# 下面为 windows版本创建对象代码
ua = ultraArm("COM3", 115200)
# ultraArm进行坐标运动/角度运动之前必须进行回零,否则无法获取到正确的角度/坐标
ua.go_zero()
time.sleep(0.5)
# 通过传递角度参数,让机械臂每个关节移动到对应[0, 0, 0]的位置
ua.set_angles([0, 0, 0], 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2.5)
# 让关节1移动到90这个位置
ua.set_angle(1, 90, 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2)
# 以下代码可以让机械臂左右摇摆
# 设置循环次数
while num > 0:
# 让关节2移动到45这个位置
ua.send_angle(2, 45, 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(3)
# 让关节2移动到-15这个位置
ua.set_angle(2, -15, 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(3)
num -= 1
# 让机械臂缩起来。你可以手动摆动机械臂,然后使用get_angles()函数获得坐标数列,
# 通过该函数让机械臂到达你所想的位置。
ua.set_angles([88.68, 60, 30], 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2.5)