目录

背景介绍

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环境搭建

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

ROS 之 KUKA iiwa编程相关推荐

  1. 库卡机器人编程权限_那位大神帮我解读下KUKA的程序,或者买本KUKA机器人编程词汇手册...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是视觉系统INOS的fitting test程序,还有好几个需要解读的,我愿意付酬劳,或者或者买本KUKA机器人编程词汇手册给我自己研究也行,网上的编程 ...

  2. python机器人编程教程入门_机器人操作系统(ROS)入门必备:机器人编程一学就会

    本书是针对机器人操作系统(ROS)初学者的入门教程,从基础的如何安装ROS,到ROS的框架介绍和C/C++.Python编程基础概念介绍,直至完整搭建一个机器人项目,每一个部分都有详细的操作过程和相应 ...

  3. halt库卡_库卡kuka机器人编程词汇手册.pdf

    库卡kuka机器人编程词汇手册 软件 KRC... 附录 KUKA系统软件(KSS) 试行版4.1 发行:2004.01.09 版本:06 第 1 页 共 33 页 @ 版权KUKA Roboter ...

  4. 【RK3399Pro学习笔记】九、ROS客户端Client的编程实现

    目录 如何实现一个客户端 C++ 创建功能包 编写程序 配置CMakeLists.txt 编译并运行 python 创建并编写脚本 运行 平台:华硕 Thinker Edge R 瑞芯微 RK3399 ...

  5. 【RK3399Pro学习笔记】六、ROS发布者Publisher的编程实现

    目录 如何实现一个发布者 C++ 创建功能包 编写程序 配置CMakeLists.txt 编译并运行发布者 python 创建并编写脚本 运行 平台:华硕 Thinker Edge R 瑞芯微 RK3 ...

  6. ROS移动机器人——ROS基础知识与编程

    此文章基于冰达机器人进行笔记整理,使用的环境为其配套环境,可结合之前的ROS,赵虚左老师的文章结合进行观看,后期也会进行整合 同时建议观看cn/ROS/Tutorials - ROS Wiki 官方教 ...

  7. 我的自学ROS历程7.2-RoboWare编程

    RoboWare编程 RoboWare topic_demo (1) 首先在工作空间建立ROS(功能)包 (2)设置依赖 (3)建立talker节点 (4)建立listener节点 (5)测试 Rob ...

  8. 用ROS控制KUKA youbot 的5自由度机械臂和夹子

    1. 修改配置文件 在这里首先要说明的是,youbot的机械臂不需要底座也可以用电脑来控制.也就是说机械臂的驱动和控制都在那个机械臂内,另外一点,它的eth0和eth1的口是不能同时插在两个电脑上的, ...

  9. 古月居ROS入门21讲-编程基础(1)

    视频链接:bilibili 搜 古月居 源代码:关注古月居公众号,回复ROS入门21讲 文章目录 1 创建工作空间和功能包 1.1 工作空间 1.2 功能包 2 发布者Publisher的编程实现 2 ...

最新文章

  1. C++中的转换构造函数和类型转换函数
  2. SecureCRT上传和下载文件(下载默认目录)
  3. 做一个有梦想的咸鱼!
  4. matlab函数参数命令,matlab函数文件中的输出参数如何不在命令窗口显示
  5. Gcd HDU - 6545 (基础数论)
  6. Hadoop Kerberos 认证下 Sentry 安装 + Sentry 权限设置使用
  7. BugkuCTF-WEB题计算器
  8. spring thymeleaf 自定义标签
  9. mysql手动同步_MySql数据库主从手动同步
  10. 防止页面的重复提交,刷新
  11. Hibernate3动态条件查询
  12. IIS无法启动计算机上的服务W3SVC如何修复、万维网发布服务(w3svc)已停止解决办法
  13. 浏览器阻挡cookies_浏览器需要阻止第三方cookie吗?
  14. “汇新杯”科技+文化艺术专项赛介绍
  15. 英伟达创始人出生 | 历史上的今天
  16. 喜欢艾弗森,退役了。。。
  17. Problem I. Hall of Fame (2014 Syria ICPC)
  18. 大话西游究竟讲了一个什么故事
  19. Storyboard 解析
  20. 23-TCP 协议(紧急标志)

热门文章

  1. 关于数据挖掘的文献综述
  2. spark求共同好友
  3. ubuntu18.04 禁止nouveau 并安装NVIDIA显卡驱动
  4. 飞桨领航团表彰来了!
  5. 修复好一个超赢软件数据库
  6. 软件工程 | 第一章 软件工程概论
  7. 无线通信网络学习之E-UTRAN与EPC篇(20141209)
  8. 【JavaScript面试】forEach,for in,for of循环的用法
  9. Android:关闭软键盘自动弹出的解决方案
  10. java key锁 实现对某个key(字符串)加同步锁 带详细注释