ROS 之 KUKA 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环境搭建
.........详情请参考古月居文章
ROS 之 KUKA iiwa编程相关推荐
- 库卡机器人编程权限_那位大神帮我解读下KUKA的程序,或者买本KUKA机器人编程词汇手册...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是视觉系统INOS的fitting test程序,还有好几个需要解读的,我愿意付酬劳,或者或者买本KUKA机器人编程词汇手册给我自己研究也行,网上的编程 ...
- python机器人编程教程入门_机器人操作系统(ROS)入门必备:机器人编程一学就会
本书是针对机器人操作系统(ROS)初学者的入门教程,从基础的如何安装ROS,到ROS的框架介绍和C/C++.Python编程基础概念介绍,直至完整搭建一个机器人项目,每一个部分都有详细的操作过程和相应 ...
- halt库卡_库卡kuka机器人编程词汇手册.pdf
库卡kuka机器人编程词汇手册 软件 KRC... 附录 KUKA系统软件(KSS) 试行版4.1 发行:2004.01.09 版本:06 第 1 页 共 33 页 @ 版权KUKA Roboter ...
- 【RK3399Pro学习笔记】九、ROS客户端Client的编程实现
目录 如何实现一个客户端 C++ 创建功能包 编写程序 配置CMakeLists.txt 编译并运行 python 创建并编写脚本 运行 平台:华硕 Thinker Edge R 瑞芯微 RK3399 ...
- 【RK3399Pro学习笔记】六、ROS发布者Publisher的编程实现
目录 如何实现一个发布者 C++ 创建功能包 编写程序 配置CMakeLists.txt 编译并运行发布者 python 创建并编写脚本 运行 平台:华硕 Thinker Edge R 瑞芯微 RK3 ...
- ROS移动机器人——ROS基础知识与编程
此文章基于冰达机器人进行笔记整理,使用的环境为其配套环境,可结合之前的ROS,赵虚左老师的文章结合进行观看,后期也会进行整合 同时建议观看cn/ROS/Tutorials - ROS Wiki 官方教 ...
- 我的自学ROS历程7.2-RoboWare编程
RoboWare编程 RoboWare topic_demo (1) 首先在工作空间建立ROS(功能)包 (2)设置依赖 (3)建立talker节点 (4)建立listener节点 (5)测试 Rob ...
- 用ROS控制KUKA youbot 的5自由度机械臂和夹子
1. 修改配置文件 在这里首先要说明的是,youbot的机械臂不需要底座也可以用电脑来控制.也就是说机械臂的驱动和控制都在那个机械臂内,另外一点,它的eth0和eth1的口是不能同时插在两个电脑上的, ...
- 古月居ROS入门21讲-编程基础(1)
视频链接:bilibili 搜 古月居 源代码:关注古月居公众号,回复ROS入门21讲 文章目录 1 创建工作空间和功能包 1.1 工作空间 1.2 功能包 2 发布者Publisher的编程实现 2 ...
最新文章
- C++中的转换构造函数和类型转换函数
- SecureCRT上传和下载文件(下载默认目录)
- 做一个有梦想的咸鱼!
- matlab函数参数命令,matlab函数文件中的输出参数如何不在命令窗口显示
- Gcd HDU - 6545 (基础数论)
- Hadoop Kerberos 认证下 Sentry 安装 + Sentry 权限设置使用
- BugkuCTF-WEB题计算器
- spring thymeleaf 自定义标签
- mysql手动同步_MySql数据库主从手动同步
- 防止页面的重复提交,刷新
- Hibernate3动态条件查询
- IIS无法启动计算机上的服务W3SVC如何修复、万维网发布服务(w3svc)已停止解决办法
- 浏览器阻挡cookies_浏览器需要阻止第三方cookie吗?
- “汇新杯”科技+文化艺术专项赛介绍
- 英伟达创始人出生 | 历史上的今天
- 喜欢艾弗森,退役了。。。
- Problem I. Hall of Fame (2014 Syria ICPC)
- 大话西游究竟讲了一个什么故事
- Storyboard 解析
- 23-TCP 协议(紧急标志)