日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ROS 之 KUKA iiwa编程

發(fā)布時(shí)間:2024/3/26 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS 之 KUKA iiwa编程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

?

背景介紹

ROS API說明

ROS環(huán)境搭建


背景介紹

目前,市面上大多數(shù)的拖動(dòng)試教機(jī)器人是UR的協(xié)作機(jī)器人和DLR-KUKA的iiwa機(jī)器人,相比于UR機(jī)器人,iiwa機(jī)器人在結(jié)構(gòu)上有一點(diǎn)重要的不同。

UR在每個(gè)關(guān)節(jié)上采取的是雙編碼器的方式,分別測(cè)量電機(jī)角度和連桿角度。而iiwa機(jī)器人在每個(gè)關(guān)節(jié)上還加入了一個(gè)單軸力矩傳感器(一般位于減速器輸出端與末端連桿間),用于測(cè)量每個(gè)關(guān)節(jié)的輸出力矩。如圖所示,iiwa在牽引拖動(dòng)時(shí)表現(xiàn)更好,同時(shí)iiwa機(jī)器人擁有更小的運(yùn)動(dòng)盲區(qū)。用戶可以施加更小的力就可以牽著機(jī)器人按其意圖運(yùn)動(dòng),而不會(huì)擔(dān)心機(jī)械臂運(yùn)動(dòng)受限。

?

ROS API說明

以iiwa為代表的七軸機(jī)械臂在高精度的工作中有著很重要的應(yīng)用,但是作為以java語言為驅(qū)動(dòng)的機(jī)械臂,相較于以python為驅(qū)動(dòng)的UR機(jī)械臂而言,其上手難度更高,難以去進(jìn)行二次開發(fā)。之前常用的開發(fā)主要通過SunriseWorkbench等軟件進(jìn)行的開發(fā)。難以滿足現(xiàn)有的分布式控制需求。為此也有很多人通過使用ROSjava來對(duì)iiwa機(jī)器人進(jìn)行開發(fā)。但是ROSjava已在幾年前停止了維護(hù)。為此本文嘗試通過TCP+ROS+Python的搭建方法來滿足機(jī)械臂的驅(qū)動(dòng)需求。本文為KUKA-iiwa 智能機(jī)器人提供了應(yīng)用程序編程接口(API)。來支持后續(xù)的iiwa開發(fā)工作。該API建立在KUKA iiwa內(nèi)核安全性的基礎(chǔ)上,可實(shí)現(xiàn)緊密的工作并與操作員進(jìn)行交互。它將功能引入了機(jī)器人操作系統(tǒng)(ROS),后者提供了一個(gè)分布式開發(fā)環(huán)境,同時(shí)允許多種新的設(shè)備形式輕松地進(jìn)行接口。

?

API架構(gòu)

開發(fā)的API設(shè)計(jì)得很簡單,通過TCP通訊建立出一套方便與ROS交互開發(fā)的平臺(tái)。API體系結(jié)構(gòu)側(cè)重于突破通常在Smartpad上運(yùn)行的KUKA Sunrise控制器中可用的功能。通過使用下圖所示的通用結(jié)構(gòu),可以看到該體系結(jié)構(gòu)擴(kuò)展了KUKA LBR iiwa的功能。API公開了在機(jī)器網(wǎng)絡(luò)上操作的接口。這允許在KUKA LBR iiwa的操作中輕松部署和利用不同的傳感方法和額外的計(jì)算資源。

?

KUKA-iiwa的守護(hù)程序還處理一些低級(jí)但通用和關(guān)鍵的控制任務(wù),例如碰撞檢測(cè)。這樣的操作可以給我們的二次開發(fā)提供基礎(chǔ)的安全保障。ROS-KUKA節(jié)點(diǎn)也以Python腳本語言實(shí)現(xiàn),通過訂閱ROS節(jié)點(diǎn)來使KUKA守護(hù)程序和ROS主節(jié)點(diǎn)之間起到中間接口的作用。通過python訂閱來自其他控制ROS節(jié)點(diǎn)的命令,并將它們傳遞給KUKA服務(wù)端。這樣可以實(shí)現(xiàn)良好的外部擴(kuò)展。同樣,它從KUKA服務(wù)端接收感官和狀態(tài)信息,并通過ROS將其其發(fā)布到python中。從而實(shí)現(xiàn)在計(jì)算機(jī)上不安裝KUKA Sunrise OS即可外部運(yùn)行此ROS-KUKA節(jié)點(diǎn),這意味著無需修改KUKA Sunrise Cabinet。因此,保留了KUKA提供的安全協(xié)議,并且添加了功能而不是對(duì)其進(jìn)行了更改。無需在Sunrise OS上安裝第三方軟件(例如ROS),只需使用基于標(biāo)準(zhǔn)Sunrise的應(yīng)用程序就可以設(shè)置KUKA iiwa ROS接口。

下表列出了可通過API調(diào)用的ROS主題以讀取KUKA-iiwa內(nèi)部的參數(shù)

訂閱主題名稱描述例子
JointPosition [A1,A2,A3,A4,A5,A6,A7]time對(duì)應(yīng)了iiwa7個(gè)自由度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工具末端的位置以及三個(gè)旋轉(zhuǎn)量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設(shè)置對(duì)應(yīng)的三個(gè)扭矩參數(shù)ToolTorque [13.485958070668463,
0.3785658886199012,
5.964988607372689] 1459253274.11’
JointAcceleration Float timejoint關(guān)節(jié)加速度值JointAcceleration 0.4 1459253274.11’
JointVelocity Float timejoint關(guān)節(jié)速度值JointVelocity 1.0 1459253274.11’
JointJerk Float time關(guān)節(jié)選取最優(yōu)的jerkJointJerk 1.0 1459253274.11’
isCompliance Boolean time判斷機(jī)器人狀態(tài)是否符合規(guī)范isCompliance off 1459253274.11’
isReadyToMove Boolean time判斷機(jī)器人是否執(zhí)行完所有步驟isReadyToMove true 1459253274.11’
isCollision Boolean time檢測(cè)是否碰撞isCollision false 1459253274.11’
isMastered Boolean time是否為主程序isMastered true 1459253274.11’
isJointOutOfRange Boolean time是否超出設(shè)定值范圍isJointOutOfRange false 1459253274.11’

另外一個(gè)表列出了可通過字符串調(diào)用的ROS主題以向KUKA-iiwa發(fā)送指令

訂閱主題名稱描述例子
setJointAcceleration F設(shè)定/變更關(guān)節(jié)加速度值’setJointAcceleration 0.4’
setJointVelocity F設(shè)定/更改關(guān)節(jié)速度值’setJointVelocity 1.0’
setJointJerk F設(shè)置/更改關(guān)節(jié)Jerk速度值’setJointJerk 1.0’
setPosition A1 A2 A3 A4 A5 A6 A7 ptp/lin根據(jù)關(guān)節(jié)位置移動(dòng)機(jī)器人手臂。可以選擇點(diǎn)對(duì)點(diǎn)(ptp)或線性(lin)運(yùn)動(dòng)。float類型的角度值(以度為單位)可以在A1-7中替換。如果不需要移動(dòng)任何軸,可以使用-代替值。該示例為除A2不變的每個(gè)軸分配新位置。’setPosition 0 21 0 -100 0 60 0 ptp’
setPositionXYZABC X Y Z A B C ptp/lin在機(jī)器人笛卡爾空間中移動(dòng)機(jī)器人末端執(zhí)行器。可以選擇點(diǎn)對(duì)點(diǎn)(ptp)或線性(lin)運(yùn)動(dòng)。這會(huì)將機(jī)器人末端執(zhí)行器移動(dòng)到特定位置[x,y,z]方向[a,b,c](浮點(diǎn)中的值)。如果不需要更改任何參數(shù),可以使用-代替值。’setPositionXYZABC 700 0 290 - 180 0 -180 lin’
MoveXYZABC X Y Z A B C僅通過點(diǎn)對(duì)點(diǎn)(ptp)運(yùn)動(dòng)在機(jī)器人笛卡爾空間中移動(dòng)機(jī)器人末端執(zhí)行器。對(duì)于給定值(以毫米和度為單位),這會(huì)將機(jī)器人末端執(zhí)行器沿特定方向[x,y,z]和/或方向[a,b,c]移動(dòng)。MoveXYZABC 10 20 0 30 0 0
MoveCirc X1 Y1 Z1 A1 B1 C1 X2 Y2 Z2 A2 B2 C2 BlendingOri以給定的混合值將機(jī)器人末端執(zhí)行器從第一個(gè)位置( [x1 y1 z1 a1 b1c1])的當(dāng)前位置以弧形/圓周運(yùn)動(dòng)從其當(dāng)前位置移動(dòng)到第二個(gè)位置([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在每個(gè)x,y,z,a,b和c中具有特定剛度的情況下激活機(jī)器人的Compliance模式。給定的示例僅在x和y直角坐標(biāo)系中以非常低的剛度激活Compliance。’setCompliance 10 10 5000 300 300 300’
resetCompliance停用機(jī)器人的“合規(guī)性”模式’resetCompliance’
resetCollision如果檢測(cè)到任何碰撞,則重置碰撞’resetCollision’
forceStop停止機(jī)器人并刪除所有等待執(zhí)行的機(jī)器人運(yùn)動(dòng)隊(duì)列’forceStop’
setWorkspace xmin ymin zmin xmax ymax zmax定義工作區(qū)邊界‘SetWorkspace 100 -300 0 600 300 500’

ROS環(huán)境搭建

.........詳情請(qǐng)參考古月居文章

總結(jié)

以上是生活随笔為你收集整理的ROS 之 KUKA iiwa编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。