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 | 在機器人笛卡爾空間中移動機器人末端執行器??梢赃x擇點對點(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编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用mindmanager总结的vb系统常
- 下一篇: 前端网页字体科普