UR机器人TCP编程实践 - 1

意义:通过在pc机上编程远程控制UR机器人完成预定动作。

步骤:(使用编程工具qt)

1. 将机器人作为服务器,pc机作为客户端与机器人通过QTcpSocket 进行连接:

QTcpSocket *pSocket = new QTcpSocket(this);  //连接机器人

connect(pSocket, &QTcpSocket::connected, this,&Class::onConnected);

connect(pSocket, &QTcpSocket::disconnected, this,&Class::onDisconnected);

connect(pSocket, &QTcpSocket::readyRead, this,&Class::onData);  //接受机器人发送数据

connect(pSocket,static_cast(&QAbstractSocket::error),this,&Class::onError);

// 30001 30002 非实时端口 (在同一个局域网下应该连上了)

pSocket->connectToHost(“IP”, 30003);

/// 重写onData函数,解析接收到底数据,用于监控机器人状态

void Class::onData() {

QByteArray ba = pSocket->readAll();

if (ba.size())

/// 解析数据
else
///接收数据出错
}
///用于与机器人断开连接

pSocket->disconnectFromHost();


2. 通过pSocket发送字符命令控制机器人运动

机器人运动命令主要有movej movel movep,赋值格式分别为:

//j1~j6 为关节臂角度,a,v为关节运动加速度和速度

string strJ = "movej([j1,j2,j3,j4,j5,j6],a=0.8,v=0.5)\n";

//x y z rx ry rz 为工具tcpa,v为工具运动加速度和速度

string strL = "movel(p[x,y,z,rx,ry,rz],a=0.5,v=0.3)\n";

string strP = "movep(p[x,y,z,rx,ry,rz],a=0.5,v=0.3)\n";

发送控制命令格式:

pSocket->write(strMoveJ.c_str(), qint64(strMoveJ.length()));

注意:使用movej机器人能正常达到设定的位置,movelmovep指令能使机器人工具移动到相应的x y z,但是工具方向会改变。


结论:给机器人设定关节角,通过movej控制机器人遍历设定的位置完成预定运动;但是设定机器人tcp,不能完成预定运动。

下一章内容:引入 Kinematics and Dynamics Library (KDL)库完成机器人tcp joint的逆解,使设定机器人tcp也能完成预定运动。

本人第一次写博客,不喜勿喷,欢迎交流,共同进步。




你可能感兴趣的:(UR机器人TCP编程实践 - 1)