SDK快速Q&A


二次开发介绍

Elite机器人的二次开发端口见下图:

端口介绍

8055

Elite 8055端口是通过socket通讯向控制器发送指定格式的json字符串来实现的,其中机器人侧为服务器,上位机为客户端。通过8055端口,几乎示教器上的所有功能都可以实现,同时在表现形式和控制方式上也有了更多的可能性。

8055的报文示例

// 发送示例

{"jsonrpc": "2.0", "method": "方法名称", "params": 参数, "id":id}


// 接受示例
// 正常
{"jsonrpc": "2.0", "result":结果, "id":id}

// 出错
{"jsonrpc": "2.0", "error":{"code":错误代码, "message":"出错信息"}, "id":id}

8056

8056是一个监控接口,同样的,机器人侧为服务器,上位机为客户端。该接口定时(8ms/125hz)发布机器人的状态信息,包括但不限于机器人的状态,关节位置等等信息。

8058

8058为日志接口,通过该接口可以得到示教器上的一些日志信息。该接口功能简易,上位机建立一个客户端,连接该端口后,按照手册示例发送指定数据即可。

快速体验

常见Q&A

SDK基础使用

Q:8055都可以通过什么语言使用呢?

A:8055接口本身基于socket实现,只要编程语言支持socket,可以建立TCP客户端,即可使用。包括但不限于 c、c++、c#、python、labview、plc等等

Q:8055都可以实现什么功能?

A:可以通过8055实现示教器上的所有功能,通过借助上位机的便利性,可以实现更多样性的控制和显示,例如 重新实现一个示教器界面,Ros,透传等等。

Q:从手册上复制过去的指令发送过去后,没有回复。

A:首先需要检查网络联通,其次就是报文的内容啦,没有回复的话,大概率是报文末尾没有添加换行符,可以 在报文最后加上一个回车即可。如果上次发送未带回车,此时建议断开本次链接,重新连接8055端口。或者 连续两次发送正确格式的报文,即可看到回复。

Q:手册上面的内容发送过去后,没有获取到指定的信息?显示NO command等信息

A:检查报文内容,发送的报文中,逗号之间可以添加空格,但是字符串内的格式需要和手册保持一致(基本上 字符串内是没有空格的),id号必须为数字,并且是双引号,最后需要添加换行符。

Q:从示教器上获取的直角坐标系数据作为机器人的运动位置点,运动姿态很奇怪?

A: 如果需要检查接口传入的数据类型为关节数据还是位置数据,其次示教器上界面显示的姿态数据为角度值, 实际接口接收可能为弧度值,需要详细检查传入的参数类型。

Q:为什么连续发几条运动指令后,运动的效果和预期不同?

A:首先SDK的移动指令不是阻塞执行,在前后连续接收到几条移动指令后,会执行后面的移动指令,所以在执 行单条移动指令后,需要不断判断机器人的运动状态再继续下一条运动指令,同时,如果运动的点位过多, 可以采用路点运动2.0接口进行实现。

Q:是否可以连续发多条移动指令呢?然后等待运行结束?

A:如需连续运行多条移动指令,请参见接口路点运动2.0。

透传使用

Q:透传初始化成功后,发送数据下去后,显示转速过大,如果解决?

A:首先需要判断下发的数据是否异常,如果数据正常的话,请检查机器人的当前点是否和透传的第一个点是否一致,如果不一致,在开始透传前,需要先使用移动指令mov到透传数据队列的第一个点,然后在开启透传即可。

Q:有时候透传初始化显示初始化失败?

A:是因为上次透传初始化后,透传结束后没有即使清理透传的buffer,可以在下次开启透传前先判断透传的状态,如果处于透传状态的话,可以先清除一下buffer,然后在初始化即可。

监控接口使用

Q:为什么我无法链接到8056端口?

A:首先需要检查机器人是否已经打开了远程的功能,点击示教器界面左上角的系统->系统配置->机器人配置, 然后勾选远程。同时需要排查一下,上位机是否与机器人处于同一网段。以上步骤基本可以排除问题。


Q:8056端口上发的数据,上一个版本还可以使用,但是版本更新后数据错乱啦?

A:是因为每个版本机器人上发的数据长度不一样,导致接收和解析的时候数据错乱。常规做法是,先连接一次8056端口,最少接收4个字节的数据长度,解析出当前版本机器人上发的数据包长度,然后重新连接8056,按照这个长度接收并解析即可。即使新版本增加了反馈的数据,只要接收的长度符合要求,按照旧版本的数据进行解析也是没有问题的,多余的没有用的数据直接丢弃即可。在2.17及以后版本都已经默认为1024字节长度,多余字节留空。

Q:1024字节的8056端口,接收一段时间数据后,数据错乱?

A:这是因为接收一段时间后,socket的本地缓存溢出,导致数据的丢失从而解析数据出错。因socket不好直接清除缓存区数据,可以根据解析出来的数据包长度来判断数据是否已经溢出,如果溢出,直接断开当前的链接重新建立链接接收即可。


点击显示全文
赞同0
发表评论
分享

手机扫码分享
2
2.86K
收藏
举报
收起
登录
  • 密码登录
  • 验证码登录
还没有账号,立即注册
还没有账号,立即注册
注册
已有账号,立即登录
选择发帖板块
举报
请选择举报理由
举报
举报说明