ROS 之 KUKA iiwa编程

举报
Hermit_Rabbit 发表于 2022/08/02 14:59:16 2022/08/02
【摘要】 ​ 目录背景介绍ROS API说明ROS环境搭建背景介绍目前,市面上大多数的拖动试教机器人是UR的协作机器人和DLR-KUKA的iiwa机器人,相比于UR机器人,iiwa机器人在结构上有一点重要的不同。​编辑UR在每个关节上采取的是双编码器的方式,分别测量电机角度和连杆角度。而iiwa机器人在每个关节上还加入了一个单轴力矩传感器(一般位于减速器输出端与末端连杆间),用于测量每个关节的输出力矩...

 目录


背景介绍

ROS API说明

ROS环境搭建


背景介绍

目前,市面上大多数的拖动试教机器人是UR的协作机器人和DLR-KUKA的iiwa机器人,相比于UR机器人,iiwa机器人在结构上有一点重要的不同。

编辑

UR在每个关节上采取的是双编码器的方式,分别测量电机角度和连杆角度。而iiwa机器人在每个关节上还加入了一个单轴力矩传感器(一般位于减速器输出端与末端连杆间),用于测量每个关节的输出力矩。如图所示,iiwa在牵引拖动时表现更好,同时iiwa机器人拥有更小的运动盲区。用户可以施加更小的力就可以牵着机器人按其意图运动,而不会担心机械臂运动受限。

编辑


ROS API说明

以iiwa为代表的七轴机械臂在高精度的工作中有着很重要的应用,但是作为以java语言为驱动的机械臂,相较于以python为驱动的UR机械臂而言,其上手难度更高,难以去进行二次开发。之前常用的开发主要通过SunriseWorkbench等软件进行的开发。难以满足现有的分布式控制需求。为此也有很多人通过使用ROSjava来对iiwa机器人进行开发。但是ROSjava已在几年前停止了维护。为此本文尝试通过TCP+ROS+Python的搭建方法来满足机械臂的驱动需求。本文为KUKA-iiwa 智能机器人提供了应用程序编程接口(API)。来支持后续的iiwa开发工作。该API建立在KUKA iiwa内核安全性的基础上,可实现紧密的工作并与操作员进行交互。它将功能引入了机器人操作系统(ROS),后者提供了一个分布式开发环境,同时允许多种新的设备形式轻松地进行接口。


API架构

开发的API设计得很简单,通过TCP通讯建立出一套方便与ROS交互开发的平台。API体系结构侧重于突破通常在Smartpad上运行的KUKA Sunrise控制器中可用的功能。通过使用下图所示的通用结构,可以看到该体系结构扩展了KUKA LBR iiwa的功能。API公开了在机器网络上操作的接口。这允许在KUKA LBR iiwa的操作中轻松部署和利用不同的传感方法和额外的计算资源。
编辑


KUKA-iiwa的守护程序还处理一些低级但通用和关键的控制任务,例如碰撞检测。这样的操作可以给我们的二次开发提供基础的安全保障。ROS-KUKA节点也以Python脚本语言实现,通过订阅ROS节点来使KUKA守护程序和ROS主节点之间起到中间接口的作用。通过python订阅来自其他控制ROS节点的命令,并将它们传递给KUKA服务端。这样可以实现良好的外部扩展。同样,它从KUKA服务端接收感官和状态信息,并通过ROS将其其发布到python中。从而实现在计算机上不安装KUKA Sunrise OS即可外部运行此ROS-KUKA节点,这意味着无需修改KUKA Sunrise Cabinet。因此,保留了KUKA提供的安全协议,并且添加了功能而不是对其进行了更改。无需在Sunrise OS上安装第三方软件(例如ROS),只需使用基于标准Sunrise的应用程序就可以设置KUKA iiwa ROS接口。

下表列出了可通过API调用的ROS主题以读取KUKA-iiwa内部的参数

订阅主题名称 描述 例子
JointPosition [A1,A2,A3,A4,A5,A6,A7]time 对应了iiwa7个自由度 JointPosition [0.0, 0.17, 0.0, 1.92, 0.0,0.35, 0.0] 1459253274.1
ToolPosition [X, Y, Z, A, B, C] time 工具末端的位置以及三个旋转量 ToolPosition [433.59711426170867,0.028881929589094864,
601.4449734558293,3.1414002368275726,
1.0471367465304213,3.141453681799645] 1459253274.11
ToolForce [X, Y, Z] time 力模式施加的力 ToolForce [13.485958070668463,0.3785658886199012,
5.964988607372689] 1459253274.11’
ToolTorque [A, B, C] time 设置对应的三个扭矩参数 ToolTorque [13.485958070668463,
0.3785658886199012,
5.964988607372689] 1459253274.11’
JointAcceleration Float time joint关节加速度值 JointAcceleration 0.4 1459253274.11’
JointVelocity Float time joint关节速度值 JointVelocity 1.0 1459253274.11’
JointJerk Float time 关节选取最优的jerk JointJerk 1.0 1459253274.11’
isCompliance Boolean time 判断机器人状态是否符合规范 isCompliance off 1459253274.11’
isReadyToMove Boolean time 判断机器人是否执行完所有步骤 isReadyToMove true 1459253274.11’
isCollision Boolean time 检测是否碰撞 isCollision false 1459253274.11’
isMastered Boolean time 是否为主程序 isMastered true 1459253274.11’
isJointOutOfRange Boolean time 是否超出设定值范围 isJointOutOfRange false 1459253274.11’

另外一个表列出了可通过字符串调用的ROS主题以向KUKA-iiwa发送指令

订阅主题名称 描述 例子
setJointAcceleration F 设定/变更关节加速度值 ’setJointAcceleration 0.4’
setJointVelocity F 设定/更改关节速度值 ’setJointVelocity 1.0’
setJointJerk F 设置/更改关节Jerk速度值 ’setJointJerk 1.0’
setPosition A1 A2 A3 A4 A5 A6 A7 ptp/lin 根据关节位置移动机器人手臂。可以选择点对点(ptp)或线性(lin)运动。float类型的角度值(以度为单位)可以在A1-7中替换。如果不需要移动任何轴,可以使用-代替值。该示例为除A2不变的每个轴分配新位置。 ’setPosition 0 21 0 -100 0 60 0 ptp’
setPositionXYZABC X Y Z A B C ptp/lin 在机器人笛卡尔空间中移动机器人末端执行器。可以选择点对点(ptp)或线性(lin)运动。这会将机器人末端执行器移动到特定位置[x,y,z]方向[a,b,c](浮点中的值)。如果不需要更改任何参数,可以使用-代替值。 ’setPositionXYZABC 700 0 290 - 180 0 -180 lin’
MoveXYZABC X Y Z A B C 仅通过点对点(ptp)运动在机器人笛卡尔空间中移动机器人末端执行器。对于给定值(以毫米和度为单位),这会将机器人末端执行器沿特定方向[x,y,z]和/或方向[a,b,c]移动。 MoveXYZABC 10 20 0 30 0 0
MoveCirc X1 Y1 Z1 A1 B1 C1 X2 Y2 Z2 A2 B2 C2 BlendingOri 以给定的混合值将机器人末端执行器从第一个位置( [x1 y1 z1 a1 b1c1])的当前位置以弧形/圆周运动从其当前位置移动到第二个位置([x2y2 z2 a2 b2 c2]) 。 MoveCirc 700 0 290 -180 0 -180 710 0 300 -180 0 -180 0.1
setCompliance X Y Z Z B C 在每个x,y,z,a,b和c中具有特定刚度的情况下激活机器人的Compliance模式。给定的示例仅在x和y直角坐标系中以非常低的刚度激活Compliance。 ’setCompliance 10 10 5000 300 300 300’
resetCompliance 停用机器人的“合规性”模式 ’resetCompliance’
resetCollision 如果检测到任何碰撞,则重置碰撞 ’resetCollision’
forceStop 停止机器人并删除所有等待执行的机器人运动队列 ’forceStop’
setWorkspace xmin ymin zmin xmax ymax zmax 定义工作区边界 ‘SetWorkspace 100 -300 0 600 300 500’

ROS环境搭建

.........详情请参考古月居文章

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。