ROS针对的机器人包括AGV小车,无人机,机械臂等等。
相关ROS内容,可以见ROS官网。
在早期的ROS版本(Kinect/Ubuntu 16和Melodic/Ubuntu 18)中提供的abb_driver,实现方式为ROS将规划好的路径队列通过socket一次性发送给机器人,机器人再执行moveabsj指令(后面点位是路径队列中的点)。
该方法需要在机器人侧提前编写RAPID代码并启动程序运行以接受ROS数据和执行轨迹。相关内容参见以下链接:
https://github.com/ros-industrial/abb_driver/tree/kinetic-devel
以上方法对实时控制并不是太好(机器人收完队列再执行,无法进行闭环控制)。目前测试以上方法只能在Ubuntu16和ubuntu18上,在ubuntu20.04未测试。
EGM(external guide motion)为ABB机器人向高级用户提供的低层接口,使得机器人***快能以250Hz接受外部数据(joint和笛卡尔位姿或者纯速度控制)并运动,并以250Hz发送机器人当前位置(joint和笛卡尔位姿)。这样用户就能进行实时闭环控制。
***新的ROS中的ABB Driver,已经将ROS与ABB机器人的控制方式修改为EGM。以下链接详细介绍了部署和使用方法。
https://github.com/ros-industrial/abb_robot_driver
***新的ROS的ABB Driver主要内容如上,包括基于ABB机器人robot web service的机器人控制abb_rws_service_provider(启动停止等)和机器人状态读取abb_rws_state_publisher以及基于EGM控制的abb_egm_hardware_interface。
若机器人没有EGM选项,依旧可以用ROS 的ABB DRIVER来控制机器人启动停止并读取状态(基于web service,机器人无需选项)。要实时控制机器人运动,需要机器人有EGM选项。
以上ABB driver适用于RW6机器人(主要是driver中使用了rws1.0),而RW7机器人使用rws2.0,故该ABB driver暂时无法直接适用于rw7机器人。用户也可以根据rws2.0改造ABB driver或者仅使用其中的egm部分。
为了用户更容易使用,ABB提供了StateMachine Addin插件(可以在robotstudio的addin免费下载,并在制作机器人系统时添加该插件)。该插件已经编写好相关EGM代码和机器人状态机,ROS通过ABB driver控制相关变量改变机器人状态并基于EGM实时控制机器人。
1.机器人端的配置
创建带有EGM选项的机器人,并且添加statemachine addin插件后,修改机器人的communication配置的transmission protocol中的ROB_1的对应Remote地址(即上位机IP地址,如与虚拟机中的ROS通讯,可以在ubuntu终端输入ifconfig –a查看虚拟机IP地址)并重启机器人控制器。
2.可以在TRobEGM代码中修改相关变量,如果ROS使用纯速度控制,位置增益设为0(ROS官网的例子使用纯速度控制)
3.稍后机器人的启动,EGM等均通过ROS控制
ROS端配置
1.在ubuntu20.04中,安装ROS noetic版本。
2.ROS官网例子:https://github.com/ros-industrial/abb_robot_driver
- 下一篇:ABB机器人坐标系详解
- 上一篇:白皮书发布,ABB机器人持续看好物流行业