基于WebService的Python控制ABB机器人

2022年7月26日 367点热度 0人点赞 0条评论

更多内容请点击上方 ABB机器人实战技巧 关注

也可点击公众号下方 往期经典 浏览更多内容

转载请先后台留言,大家一起支持原创,推动机器人使用和发展

本公众号对各类ABB机器人应用,仿真,毕业设计提供技术支持,详细后台留言

本公众号诚挚希望与各机器人培训机构,机器人使用单元合作,提供技术支持,详细后台留言

点击文末的阅读原文,获取完整python代码和机器人工作站代码

图片

1. Python控制ABB机器人运动 一文介绍了python通过socket通讯,发送数据给机器人并控制机器人运动。
2. python 使用socket通讯时,需要在机器人侧编写对应接受和处理的rapid代码。同时对于启动停止等操作,也比较麻烦
3. Robot Web Service(RWS)为ABB机器人提供的基于URL的二次开发接口,具体参见通过网页查看与设置机器人变量
通过RWS,可以方便的对机器人数据、IO进行读写,也可以实现对机器人的重置指针,启动暂停等。以上操作,均不需要在RAPID中编写相关代码
4.  例如针对机器人motor on,根据rws中的定义,可以在python编写如下代码
def motors_on(self):    """Turns the robot's motors on.    Operation mode has to be AUTO.    """
payload = {'ctrl-state': 'motoron'} resp = self.session.post(self.base_url + "/rw/panel/ctrlstate?action=setctrlstate", data=payload)
if resp.status_code == 204: print("Robot motors turned on") else: print("Could not turn on motors. The controller might be in manual mode")
5.  例如修改机器人变量值,根据rws中的定义,可以在python编写如下代码
def set_rapid_variable(self, var, value):    """Sets the value of any RAPID variable.    Unless the variable is of type 'num', 'value' has to be a string.    """
payload = {'value': value} resp = self.session.post(self.base_url + '/rw/rapid/symbol/data/RAPID/T_ROB1/' + var + '?action=set', data=payload) return resp

6. 将以上代码整理成类,并在python中引用,即可实现对机器人的控制

import PYRWS as RWSclass robtarget:    trans=[0,0,0]    rot = [1,0,0,0]robot = RWS.RWS(base_url='http://127.0.0.1', username='Default User', password='robotics')robot.reset_pp()robot.motors_on()robot.start_RAPID()p1 = robtarget()while True:    robot.wait_for_rapid1('state', '0')    p1.trans, p1.rot = robot.get_robot_position()    #获取当前位置    print('当前位置',p1.trans)    numbers = input('输入相对坐标x,y,z, 例如 100,20,300\n')    numbers = list(map(float, numbers.split(',')))    robot.set_robtarget_translation('ptmp', numbers)    robot.set_rapid_variable('state',1)

点击阅读原文,获取完整python代码和机器人工作站代码

55440基于WebService的Python控制ABB机器人

这个人很懒,什么都没留下

文章评论