Skip to content

进阶应用

servo_move 跟踪运动

servo_move() 接收一组点位,根据 timeStamp 平滑处理后下发到伺服进行跟踪运动。

ServoMovePara 参数说明

参数类型说明
robotNumint控制第几个机器人
clearBufferbool是否清除之前发送的、未开始插补计算的点位
targetModeint0-独立点;1-连续轨迹
sendModeint0-一次传输完全部轨迹;1-一次传输部分点位
runModeint0-接收完再运动;1-边接收边运动
sumint总传输次数
countint当前第几次传输
coordint0-关节坐标系;1-直角坐标系
sizeint本次传输的点位数
posvector<vector<double>>二维数组,一维为点位数,二维为 7 个关节角度或笛卡尔坐标
axisvelvector<vector<double>>每个轴的速度
axisaccvector<vector<double>>每个轴的加速度
timeStampvector<double>到达该点位的时间(单位 ms)

使用前提

运行模式下,需要在控制器上运行包含外部点指令的作业文件(外部点指令负责接收 servo_move 传输的数据)。

示例:连续轨迹一次传输

py
def test_7000(socketFd):
    print('开启测试7000.....')
    socket_7000 = aa.connect_robot("192.168.1.13", "7000")
    servomovepara = aa.ServoMovePara()
    pos = aa.VectorVectorDouble()
    time = aa.VectorDouble()

    time_pos = [50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550]
    for value in time_pos:
        time.append(value)

    axis_pos = [
        [0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 1, 0],
        [0, 0, 0, 0, 0, 2, 0],
        [0, 0, 0, 0, 0, 3, 0],
        [0, 0, 0, 0, 0, 4, 0],
        [0, 0, 0, 0, 0, 5, 0],
        [0, 0, 0, 0, 0, 6, 0],
        [0, 0, 0, 0, 0, 7, 0],
        [0, 0, 0, 0, 0, 8, 0],
        [0, 0, 0, 0, 0, 9, 0],
        [0, 0, 0, 0, 0, 10, 0],
    ]
    for value in axis_pos:
        pos.append(value)

    for k in range(11):
        servomovepara.pos = pos
    for j in range(11):
        servomovepara.timeStamp = time

    servomovepara.runMode = 0
    servomovepara.clearBuffer = True
    servomovepara.targetMode = 1
    servomovepara.coord = 0
    servomovepara.size = 11

    result = aa.servo_move(socket_7000, servomovepara)
    print("return ", result)