机械臂关节控制

以大象机器人mechArm pi 270为例。

机械臂关节控制_第1张图片

1 产品简介

mechArm Pi 270隶属于大象机器人"mechArm"系列小六轴机械臂,采用树莓派微处理器,支持ROS仿真模拟软件,是大象机器人面向创客创新和机器人产学研服务推出的仿工业构型小六轴机械臂

mechArmPi270本体重量1kg, 负载250g,工作半径270mm,设计紧凑便携,小巧但功能强大,操作简单,能与人协同、安全工作。作为大象机器人首款小六轴机械臂,具有易用性、安全性和经济性三大优势,是高性价比之选。

2、关节控制

对于串联式多关节机器人,关节空间的控制是针对机器人各个关节的变量进行的控制,目标是让机器人各个关节按照一定速度达到目标位置。

机械臂关节控制_第2张图片

2.1单关节控制

对于关节角度的取值范围:六轴机器人约-170 ~ 170,四轴机器人每个关节限值各不相同,详见上方表格图

1、send_angle(id, degree, speed)

  • 功能: 发送指定的单个关节运动至指定的角度
  • 参数说明:
    • id: 代表机械臂的关节,六轴有六个关节,四轴有四个关节,有特定的表示方法。 关节一的表示法:Angle.J1.value。(也可以用数字1-6来表示)
    • degree: 表示关节的角度
    • speed:表示机械臂运动的速度,范围0~100。
  • 返回值: 无

2、set_encoder(joint_id, encoder)

  • 功能: 发送指定的单个关节运动至指定的电位值。
  • 参数说明:

    • joint_id: 代表机械臂的关节,六轴有六个关节,四轴有四个关节,有特定的表示方法。 关节一的表示法:Angle.J1.value。(也可以用数字1-6来表示)
    • encoder:表示机械臂的电位值,取值范围是 0 ~ 4096
  • 返回值: 无

2.2 多关节控制

1、get_angles()

  • 功能: 获取所有关节角度。

  • 返回值: list一个浮点值的列表代,表所有关节的角度.

2、send_angles(degrees, speed)

  • 功能: 发送所有角度给机械臂所有关节
  • 参数说明:
    • degrees: (List[float])包含所有关节的角度 , 六轴机器人有六个关节所以长度为 6,四轴长度为4,表示方法为:[20,20,20,20,20,20],取值范围:约-170 ~ 170,四轴机器人每个关节各不相同,详见上方表格图
    • speed: 表示机械臂运动的速度,取值范围是0-100。
  • 返回值: 无

3、set_encoders(encoders, sp)

  • 功能: 发送电位值给机械臂所有关节
  • 参数说明:
    • encoder:表示机械臂的电位值,取值范围是 0 ~ 4096,六轴长度为6,四轴长度为4,表示方法为:[2048,2048,2048,2048,2048,2048]
    • sp: 表示机械臂运动的速度,取值范围是0-100。
  • 返回值: 无

4、sync_send_angles(degrees, speed, timeout=7)

  • 功能: 同步发送角度,到达目标点返回
  • 参数说明:
    • degrees: 每个关节的角度值列表 List[float]
    • speed: ( int)机械臂运动的速度,取值范围是0-100。
    • timeout:时间默认7s。

5、get_radians()

  • 功能: 获取所有关节的弧度。
  • 返回值: list包含所有关节弧度值的列表.

6、send_radians(radians, speed)

  • 功能: 发送弧度值给机械臂所有关节
  • 参数说明:
    • radians:表示机械臂的弧度值,取值范围是 -5~5。
  • 返回值: list包含所有关节弧度值的列表.

2.3 案例

from pymycobot.mycobot import MyCobot
from pymycobot.genre import Angle
from pymycobot import PI_PORT, PI_BAUD  # 当使用树莓派版本的mycobot时,可以引用这两个变量进行MyCobot初始化
import time

# MyCobot 类初始化需要两个参数:
#   第一个是串口字符串, 如:
#       linux: "/dev/ttyUSB0"
#       windows: "COM3"
#   第二个是波特率:
#       M5版本为: 115200
#
#    如:
#       mycobot-M5:
#           linux:
#              mc = MyCobot("/dev/ttyUSB0", 115200)
#           windows:
#              mc = MyCobot("COM3", 115200)
#       mycobot-raspi:
#           mc = MyCobot(PI_PORT, PI_BAUD)
#
# 初始化一个MyCobot对象
# 这里为 windows版本创建对象代码
mc = MyCobot("COM3", 115200)

# 通过传递角度参数,让机械臂每个关节移动到对应[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(Angle.J1.value, 90, 50)
# 设置等待时间,确保机械臂已经到达指定位置
time.sleep(2)

# 以下代码可以让机械臂左右摇摆
# 设置循环次数
while num > 0:
    # 让关节2移动到50这个位置
    mc.send_angle(Angle.J2.value, 50, 50)

    # 设置等待时间,确保机械臂已经到达指定位置
    time.sleep(1.5)

    # 让关节2移动到-50这个位置
    mc.send_angle(Angle.J2.value, -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()

你可能感兴趣的:(人工智能,机器学习,python,算法,动态规划)